demio-ui 1.0.24 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/types/src/components/ScrollArea/ScrollArea.d.ts +6 -0
- package/dist/cjs/types/src/components/ScrollArea/index.d.ts +1 -0
- package/dist/cjs/types/src/icons/index.d.ts +9 -8
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/types/src/components/ScrollArea/ScrollArea.d.ts +6 -0
- package/dist/esm/types/src/components/ScrollArea/index.d.ts +1 -0
- package/dist/esm/types/src/icons/index.d.ts +9 -8
- package/dist/types.d.ts +109 -95
- package/package.json +1 -1
- package/dist/.DS_Store +0 -0
package/dist/cjs/index.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
Copyright (c) 2018 Jed Watson.
|
|
4
4
|
Licensed under the MIT License (MIT), see
|
|
5
5
|
http://jedwatson.github.io/classnames
|
|
6
|
-
*/c=s,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var l=t.apply(null,o);l&&n.push(l)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var i in o)e.call(o,i)&&o[i]&&n.push(i)}}}return n.join(" ")}c.exports?(t.default=t,c.exports=t):window.classNames=t}();var u=i(s.exports),d={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},f=e.forwardRef((function(t,n){var r,o=t.disabled,i=void 0!==o&&o,c=t.children,s=t.onClick,f=t.size,p=void 0===f?"medium":f,m=t.variant,v=void 0===m?"primary":m,h=t.type,g=void 0===h?"button":h,w=t.prefix,y=void 0===w?"":w,b=t.suffix,E=void 0===b?"":b,_=t.className,x=void 0===_?"":_,C=t.fullWidth,O=void 0!==C&&C,S=l(t,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth"]);return e.createElement("button",a({ref:n,type:g,disabled:i,className:u(d.button,(r={},r[x]=x,r[d[p]]=p,r[d[v]]=v,r[d.fullWidth]=O,r)),onClick:s},S),y&&e.createElement("span",{className:d.prefix},y),c,E&&e.createElement("span",{className:d.suffix},E))}));function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function m(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}function v(...e){return t=>e.forEach((e=>function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}(e,t)))}function h(...t){return e.useCallback(v(...t),t)}function g(t,n=[]){let r=[];const o=()=>{const n=r.map((t=>e.createContext(t)));return function(r){const o=(null==r?void 0:r[t])||n;return e.useMemo((()=>({[`__scope${t}`]:{...r,[t]:o}})),[r,o])}};return o.scopeName=t,[function(n,o){const a=e.createContext(o),l=r.length;function i(n){const{scope:r,children:o,...i}=n,c=(null==r?void 0:r[t][l])||a,s=e.useMemo((()=>i),Object.values(i));return e.createElement(c.Provider,{value:s},o)}return r=[...r,o],i.displayName=n+"Provider",[i,function(r,i){const c=(null==i?void 0:i[t][l])||a,s=e.useContext(c);if(s)return s;if(void 0!==o)return o;throw new Error(`\`${r}\` must be used within \`${n}\``)}]},w(o,...n)]}function w(...t){const n=t[0];if(1===t.length)return n;const r=()=>{const r=t.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(t){const o=r.reduce(((e,{useScope:n,scopeName:r})=>({...e,...n(t)[`__scope${r}`]})),{});return e.useMemo((()=>({[`__scope${n.scopeName}`]:o})),[o])}};return r.scopeName=n.scopeName,r}const y=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?e.useLayoutEffect:()=>{},b=r["useId".toString()]||(()=>{});let E=0;function _(e){const[t,n]=r.useState(b());return y((()=>{e||n((e=>null!=e?e:String(E++)))}),[e]),e||(t?`radix-${t}`:"")}function x(t){const n=e.useRef(t);return e.useEffect((()=>{n.current=t})),e.useMemo((()=>(...e)=>{var t;return null===(t=n.current)||void 0===t?void 0:t.call(n,...e)}),[])}function C({prop:t,defaultProp:n,onChange:r=(()=>{})}){const[o,a]=function({defaultProp:t,onChange:n}){const r=e.useState(t),[o]=r,a=e.useRef(o),l=x(n);return e.useEffect((()=>{a.current!==o&&(l(o),a.current=o)}),[o,a,l]),r}({defaultProp:n,onChange:r}),l=void 0!==t,i=l?t:o,c=x(r);return[i,e.useCallback((e=>{if(l){const n="function"==typeof e?e(t):e;n!==t&&c(n)}else a(e)}),[l,t,a,c])]}const O=e.forwardRef(((t,n)=>{const{children:r,...o}=t,a=e.Children.toArray(r),l=a.find(D);if(l){const t=l.props.children,r=a.map((n=>n===l?e.Children.count(t)>1?e.Children.only(null):e.isValidElement(t)?t.props.children:null:n));return e.createElement(S,p({},o,{ref:n}),e.isValidElement(t)?e.cloneElement(t,void 0,r):null)}return e.createElement(S,p({},o,{ref:n}),r)}));O.displayName="Slot";const S=e.forwardRef(((t,n)=>{const{children:r,...o}=t;return e.isValidElement(r)?e.cloneElement(r,{...T(o,r.props),ref:n?v(n,r.ref):r.ref}):e.Children.count(r)>1?e.Children.only(null):null}));S.displayName="SlotClone";const k=({children:t})=>e.createElement(e.Fragment,null,t);function D(t){return e.isValidElement(t)&&t.type===k}function T(e,t){const n={...t};for(const r in t){const o=e[r],a=t[r];/^on[A-Z]/.test(r)?o&&a?n[r]=(...e)=>{a(...e),o(...e)}:o&&(n[r]=o):"style"===r?n[r]={...o,...a}:"className"===r&&(n[r]=[o,a].filter(Boolean).join(" "))}return{...e,...n}}const R=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((t,n)=>{const r=e.forwardRef(((t,r)=>{const{asChild:o,...a}=t,l=o?O:n;return e.useEffect((()=>{window[Symbol.for("radix-ui")]=!0}),[]),e.createElement(l,p({},a,{ref:r}))}));return r.displayName=`Primitive.${n}`,{...t,[n]:r}}),{});const A="dismissableLayer.update",P="dismissableLayer.pointerDownOutside",M="dismissableLayer.focusOutside";let I;const L=e.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),N=e.forwardRef(((t,n)=>{var r;const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:i,onInteractOutside:c,onDismiss:s,...u}=t,d=e.useContext(L),[f,v]=e.useState(null),g=null!==(r=null==f?void 0:f.ownerDocument)&&void 0!==r?r:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,w]=e.useState({}),y=h(n,(e=>v(e))),b=Array.from(d.layers),[E]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),_=b.indexOf(E),C=f?b.indexOf(f):-1,O=d.layersWithOutsidePointerEventsDisabled.size>0,S=C>=_,k=function(t,n=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const r=x(t),o=e.useRef(!1),a=e.useRef((()=>{}));return e.useEffect((()=>{const e=e=>{if(e.target&&!o.current){const t={originalEvent:e};function l(){H(P,r,t,{discrete:!0})}"touch"===e.pointerType?(n.removeEventListener("click",a.current),a.current=l,n.addEventListener("click",a.current,{once:!0})):l()}o.current=!1},t=window.setTimeout((()=>{n.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",a.current)}}),[n,r]),{onPointerDownCapture:()=>o.current=!0}}((e=>{const t=e.target,n=[...d.branches].some((e=>e.contains(t)));S&&!n&&(null==l||l(e),null==c||c(e),e.defaultPrevented||null==s||s())}),g),D=function(t,n=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const r=x(t),o=e.useRef(!1);return e.useEffect((()=>{const e=e=>{if(e.target&&!o.current){H(M,r,{originalEvent:e},{discrete:!1})}};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)}),[n,r]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}((e=>{const t=e.target;[...d.branches].some((e=>e.contains(t)))||(null==i||i(e),null==c||c(e),e.defaultPrevented||null==s||s())}),g);return function(t,n=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const r=x(t);e.useEffect((()=>{const e=e=>{"Escape"===e.key&&r(e)};return n.addEventListener("keydown",e),()=>n.removeEventListener("keydown",e)}),[r,n])}((e=>{C===d.layers.size-1&&(null==a||a(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))}),g),e.useEffect((()=>{if(f)return o&&(0===d.layersWithOutsidePointerEventsDisabled.size&&(I=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),j(),()=>{o&&1===d.layersWithOutsidePointerEventsDisabled.size&&(g.body.style.pointerEvents=I)}}),[f,g,o,d]),e.useEffect((()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),j())}),[f,d]),e.useEffect((()=>{const e=()=>w({});return document.addEventListener(A,e),()=>document.removeEventListener(A,e)}),[]),e.createElement(R.div,p({},u,{ref:y,style:{pointerEvents:O?S?"auto":"none":void 0,...t.style},onFocusCapture:m(t.onFocusCapture,D.onFocusCapture),onBlurCapture:m(t.onBlurCapture,D.onBlurCapture),onPointerDownCapture:m(t.onPointerDownCapture,k.onPointerDownCapture)}))}));function j(){const e=new CustomEvent(A);document.dispatchEvent(e)}function H(e,n,r,{discrete:o}){const a=r.originalEvent.target,l=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});n&&a.addEventListener(e,n,{once:!0}),o?function(e,n){e&&t.flushSync((()=>e.dispatchEvent(n)))}(a,l):a.dispatchEvent(l)}const F="focusScope.autoFocusOnMount",Z="focusScope.autoFocusOnUnmount",V={bubbles:!1,cancelable:!0},U=e.forwardRef(((t,n)=>{const{loop:r=!1,trapped:o=!1,onMountAutoFocus:a,onUnmountAutoFocus:l,...i}=t,[c,s]=e.useState(null),u=x(a),d=x(l),f=e.useRef(null),m=h(n,(e=>s(e))),v=e.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;e.useEffect((()=>{if(o){function e(e){if(v.paused||!c)return;const t=e.target;c.contains(t)?f.current=t:K(f.current,{select:!0})}function t(e){if(v.paused||!c)return;const t=e.relatedTarget;null!==t&&(c.contains(t)||K(f.current,{select:!0}))}function n(e){const t=document.activeElement;for(const n of e)n.removedNodes.length>0&&(null!=c&&c.contains(t)||K(c))}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),r.disconnect()}}}),[o,c,v.paused]),e.useEffect((()=>{if(c){$.add(v);const t=document.activeElement;if(!c.contains(t)){const n=new CustomEvent(F,V);c.addEventListener(F,u),c.dispatchEvent(n),n.defaultPrevented||(!function(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(K(r,{select:t}),document.activeElement!==n)return}((e=B(c),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&K(c))}return()=>{c.removeEventListener(F,u),setTimeout((()=>{const e=new CustomEvent(Z,V);c.addEventListener(Z,d),c.dispatchEvent(e),e.defaultPrevented||K(null!=t?t:document.body,{select:!0}),c.removeEventListener(Z,d),$.remove(v)}),0)}}var e}),[c,u,d,v]);const g=e.useCallback((e=>{if(!r&&!o)return;if(v.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=document.activeElement;if(t&&n){const t=e.currentTarget,[o,a]=function(e){const t=B(e),n=W(t,e),r=W(t.reverse(),e);return[n,r]}(t);o&&a?e.shiftKey||n!==a?e.shiftKey&&n===o&&(e.preventDefault(),r&&K(a,{select:!0})):(e.preventDefault(),r&&K(o,{select:!0})):n===t&&e.preventDefault()}}),[r,o,v.paused]);return e.createElement(R.div,p({tabIndex:-1},i,{ref:m,onKeyDown:g}))}));function B(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function W(e,t){for(const n of e)if(!z(n,{upTo:t}))return n}function z(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function K(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const $=function(){let e=[];return{add(t){const n=e[0];t!==n&&(null==n||n.pause()),e=q(e,t),e.unshift(t)},remove(t){var n;e=q(e,t),null===(n=e[0])||void 0===n||n.resume()}}}();function q(e,t){const n=[...e],r=n.indexOf(t);return-1!==r&&n.splice(r,1),n}const G=e.forwardRef(((n,r)=>{var o;const{container:a=(null===globalThis||void 0===globalThis||null===(o=globalThis.document)||void 0===o?void 0:o.body),...l}=n;return a?t.createPortal(e.createElement(R.div,p({},l,{ref:r})),a):null}));const X=n=>{const{present:r,children:o}=n,a=function(n){const[r,o]=e.useState(),a=e.useRef({}),l=e.useRef(n),i=e.useRef("none"),c=n?"mounted":"unmounted",[s,u]=function(t,n){return e.useReducer(((e,t)=>{const r=n[e][t];return null!=r?r:e}),t)}(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return e.useEffect((()=>{const e=Y(a.current);i.current="mounted"===s?e:"none"}),[s]),y((()=>{const e=a.current,t=l.current;if(t!==n){const r=i.current,o=Y(e);if(n)u("MOUNT");else if("none"===o||"none"===(null==e?void 0:e.display))u("UNMOUNT");else{u(t&&r!==o?"ANIMATION_OUT":"UNMOUNT")}l.current=n}}),[n,u]),y((()=>{if(r){const e=e=>{const n=Y(a.current).includes(e.animationName);e.target===r&&n&&t.flushSync((()=>u("ANIMATION_END")))},n=e=>{e.target===r&&(i.current=Y(a.current))};return r.addEventListener("animationstart",n),r.addEventListener("animationcancel",e),r.addEventListener("animationend",e),()=>{r.removeEventListener("animationstart",n),r.removeEventListener("animationcancel",e),r.removeEventListener("animationend",e)}}u("ANIMATION_END")}),[r,u]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:e.useCallback((e=>{e&&(a.current=getComputedStyle(e)),o(e)}),[])}}(r),l="function"==typeof o?o({present:a.isPresent}):e.Children.only(o),i=h(a.ref,l.ref);return"function"==typeof o||a.isPresent?e.cloneElement(l,{ref:i}):null};function Y(e){return(null==e?void 0:e.animationName)||"none"}X.displayName="Presence";let J=0;function Q(){e.useEffect((()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=n[0])&&void 0!==e?e:ee()),document.body.insertAdjacentElement("beforeend",null!==(t=n[1])&&void 0!==t?t:ee()),J++,()=>{1===J&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),J--}}),[])}function ee(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var te="right-scroll-bar-position",ne="width-before-scroll-bar";function re(t,n){return r=n||null,o=function(e){return t.forEach((function(t){return function(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}(t,e)}))},(a=e.useState((function(){return{value:r,callback:o,facade:{get current(){return a.value},set current(e){var t=a.value;t!==e&&(a.value=e,a.callback(e,t))}}}}))[0]).callback=o,a.facade;var r,o,a}function oe(e){return e}var ae=function(e){var t=e.sideCar,n=l(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=t.read();if(!o)throw new Error("Sidecar medium not found");return r.createElement(o,a({},n))};ae.isSideCarExport=!0;var le=function(e){void 0===e&&(e={});var t=function(e,t){void 0===t&&(t=oe);var n=[],r=!1;return{read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var o=t(e,r);return n.push(o),function(){n=n.filter((function(e){return e!==o}))}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var o=n;n=[],o.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},l=function(){return Promise.resolve().then(a)};l(),n={push:function(e){t.push(e),l()},filter:function(e){return t=t.filter(e),n}}}}}(null);return t.options=a({async:!0,ssr:!1},e),t}(),ie=function(){},ce=r.forwardRef((function(e,t){var n=r.useRef(null),o=r.useState({onScrollCapture:ie,onWheelCapture:ie,onTouchMoveCapture:ie}),i=o[0],c=o[1],s=e.forwardProps,u=e.children,d=e.className,f=e.removeScrollBar,p=e.enabled,m=e.shards,v=e.sideCar,h=e.noIsolation,g=e.inert,w=e.allowPinchZoom,y=e.as,b=void 0===y?"div":y,E=l(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),_=v,x=re([n,t]),C=a(a({},E),i);return r.createElement(r.Fragment,null,p&&r.createElement(_,{sideCar:le,removeScrollBar:f,shards:m,noIsolation:h,inert:g,setCallbacks:c,allowPinchZoom:!!w,lockRef:n}),s?r.cloneElement(r.Children.only(u),a(a({},C),{ref:x})):r.createElement(b,a({},C,{className:d,ref:x}),u))}));ce.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},ce.classNames={fullWidth:ne,zeroRight:te};function se(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=function(){if("undefined"!=typeof __webpack_nonce__)return __webpack_nonce__}();return t&&e.setAttribute("nonce",t),e}var ue=function(){var e=0,t=null;return{add:function(n){var r,o;0==e&&(t=se())&&(o=n,(r=t).styleSheet?r.styleSheet.cssText=o:r.appendChild(document.createTextNode(o)),function(e){(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}(t)),e++},remove:function(){!--e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},de=function(){var e,t=(e=ue(),function(t,n){r.useEffect((function(){return e.add(t),function(){e.remove()}}),[t&&n])});return function(e){var n=e.styles,r=e.dynamic;return t(n,r),null}},fe={left:0,top:0,right:0,gap:0},pe=function(e){return parseInt(e||"",10)||0},me=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return fe;var t=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[pe(n),pe(r),pe(o)]}(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},ve=de(),he=function(e,t,n,r){var o=e.left,a=e.top,l=e.right,i=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(i,"px ").concat(r,";\n }\n body {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(l,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(i,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(i,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(te," {\n right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(ne," {\n margin-right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(te," .").concat(te," {\n right: 0 ").concat(r,";\n }\n \n .").concat(ne," .").concat(ne," {\n margin-right: 0 ").concat(r,";\n }\n \n body {\n ").concat("--removed-body-scroll-bar-size",": ").concat(i,"px;\n }\n")},ge=function(e){var t=e.noRelative,n=e.noImportant,o=e.gapMode,a=void 0===o?"margin":o,l=r.useMemo((function(){return me(a)}),[a]);return r.createElement(ve,{styles:he(l,!t,a,n?"":"!important")})},we=!1;if("undefined"!=typeof window)try{var ye=Object.defineProperty({},"passive",{get:function(){return we=!0,!0}});window.addEventListener("test",ye,ye),window.removeEventListener("test",ye,ye)}catch(e){we=!1}var be=!!we&&{passive:!1},Ee=function(e,t){var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&!function(e){return"TEXTAREA"===e.tagName}(e)&&"visible"===n[t])},_e=function(e,t){var n=t;do{if("undefined"!=typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),xe(e,n)){var r=Ce(e,n);if(r[1]>r[2])return!0}n=n.parentNode}while(n&&n!==document.body);return!1},xe=function(e,t){return"v"===e?function(e){return Ee(e,"overflowY")}(t):function(e){return Ee(e,"overflowX")}(t)},Ce=function(e,t){return"v"===e?[(n=t).scrollTop,n.scrollHeight,n.clientHeight]:function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]}(t);var n},Oe=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Se=function(e){return[e.deltaX,e.deltaY]},ke=function(e){return e&&"current"in e?e.current:e},De=function(e){return"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")},Te=0,Re=[];var Ae,Pe=(Ae=function(e){var t=r.useRef([]),n=r.useRef([0,0]),o=r.useRef(),a=r.useState(Te++)[0],l=r.useState((function(){return de()}))[0],i=r.useRef(e);r.useEffect((function(){i.current=e}),[e]),r.useEffect((function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var t=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}([e.lockRef.current],(e.shards||[]).map(ke),!0).filter(Boolean);return t.forEach((function(e){return e.classList.add("allow-interactivity-".concat(a))})),function(){document.body.classList.remove("block-interactivity-".concat(a)),t.forEach((function(e){return e.classList.remove("allow-interactivity-".concat(a))}))}}}),[e.inert,e.lockRef.current,e.shards]);var c=r.useCallback((function(e,t){if("touches"in e&&2===e.touches.length)return!i.current.allowPinchZoom;var r,a=Oe(e),l=n.current,c="deltaX"in e?e.deltaX:l[0]-a[0],s="deltaY"in e?e.deltaY:l[1]-a[1],u=e.target,d=Math.abs(c)>Math.abs(s)?"h":"v";if("touches"in e&&"h"===d&&"range"===u.type)return!1;var f=_e(d,u);if(!f)return!0;if(f?r=d:(r="v"===d?"h":"v",f=_e(d,u)),!f)return!1;if(!o.current&&"changedTouches"in e&&(c||s)&&(o.current=r),!r)return!0;var p=o.current||r;return function(e,t,n,r,o){var a=function(e,t){return"h"===e&&"rtl"===t?-1:1}(e,window.getComputedStyle(t).direction),l=a*r,i=n.target,c=t.contains(i),s=!1,u=l>0,d=0,f=0;do{var p=Ce(e,i),m=p[0],v=p[1]-p[2]-a*m;(m||v)&&xe(e,i)&&(d+=v,f+=m),i=i.parentNode}while(!c&&i!==document.body||c&&(t.contains(i)||t===i));return(u&&(o&&0===d||!o&&l>d)||!u&&(o&&0===f||!o&&-l>f))&&(s=!0),s}(p,t,e,"h"===p?c:s,!0)}),[]),s=r.useCallback((function(e){var n=e;if(Re.length&&Re[Re.length-1]===l){var r="deltaY"in n?Se(n):Oe(n),o=t.current.filter((function(e){return e.name===n.type&&e.target===n.target&&(t=e.delta,o=r,t[0]===o[0]&&t[1]===o[1]);var t,o}))[0];if(o&&o.should)n.cancelable&&n.preventDefault();else if(!o){var a=(i.current.shards||[]).map(ke).filter(Boolean).filter((function(e){return e.contains(n.target)}));(a.length>0?c(n,a[0]):!i.current.noIsolation)&&n.cancelable&&n.preventDefault()}}}),[]),u=r.useCallback((function(e,n,r,o){var a={name:e,delta:n,target:r,should:o};t.current.push(a),setTimeout((function(){t.current=t.current.filter((function(e){return e!==a}))}),1)}),[]),d=r.useCallback((function(e){n.current=Oe(e),o.current=void 0}),[]),f=r.useCallback((function(t){u(t.type,Se(t),t.target,c(t,e.lockRef.current))}),[]),p=r.useCallback((function(t){u(t.type,Oe(t),t.target,c(t,e.lockRef.current))}),[]);r.useEffect((function(){return Re.push(l),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener("wheel",s,be),document.addEventListener("touchmove",s,be),document.addEventListener("touchstart",d,be),function(){Re=Re.filter((function(e){return e!==l})),document.removeEventListener("wheel",s,be),document.removeEventListener("touchmove",s,be),document.removeEventListener("touchstart",d,be)}}),[]);var m=e.removeScrollBar,v=e.inert;return r.createElement(r.Fragment,null,v?r.createElement(l,{styles:De(a)}):null,m?r.createElement(ge,{gapMode:"margin"}):null)},le.useMedium(Ae),ae),Me=r.forwardRef((function(e,t){return r.createElement(ce,a({},e,{ref:t,sideCar:Pe}))}));Me.classNames=ce.classNames;var Ie=Me,Le=new WeakMap,Ne=new WeakMap,je={},He=0,Fe=function(e){return e&&(e.host||Fe(e.parentNode))},Ze=function(e,t,n,r){var o=function(e,t){return t.map((function(t){if(e.contains(t))return t;var n=Fe(t);return n&&e.contains(n)?n:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);je[n]||(je[n]=new WeakMap);var a=je[n],l=[],i=new Set,c=new Set(o),s=function(e){e&&!i.has(e)&&(i.add(e),s(e.parentNode))};o.forEach(s);var u=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(i.has(e))u(e);else{var t=e.getAttribute(r),o=null!==t&&"false"!==t,c=(Le.get(e)||0)+1,s=(a.get(e)||0)+1;Le.set(e,c),a.set(e,s),l.push(e),1===c&&o&&Ne.set(e,!0),1===s&&e.setAttribute(n,"true"),o||e.setAttribute(r,"true")}}))};return u(t),i.clear(),He++,function(){l.forEach((function(e){var t=Le.get(e)-1,o=a.get(e)-1;Le.set(e,t),a.set(e,o),t||(Ne.has(e)||e.removeAttribute(r),Ne.delete(e)),o||e.removeAttribute(n)})),--He||(Le=new WeakMap,Le=new WeakMap,Ne=new WeakMap,je={})}},Ve=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body}(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),Ze(r,o,n,"aria-hidden")):function(){return null}};const Ue="Dialog",[Be,We]=g(Ue),[ze,Ke]=Be(Ue),$e="DialogPortal",[qe,Ge]=Be($e,{forceMount:void 0}),Xe="DialogOverlay",Ye=e.forwardRef(((t,n)=>{const r=Ge(Xe,t.__scopeDialog),{forceMount:o=r.forceMount,...a}=t,l=Ke(Xe,t.__scopeDialog);return l.modal?e.createElement(X,{present:o||l.open},e.createElement(Je,p({},a,{ref:n}))):null})),Je=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke(Xe,r);return e.createElement(Ie,{as:O,allowPinchZoom:!0,shards:[a.contentRef]},e.createElement(R.div,p({"data-state":ct(a.open)},o,{ref:n,style:{pointerEvents:"auto",...o.style}})))})),Qe="DialogContent",et=e.forwardRef(((t,n)=>{const r=Ge(Qe,t.__scopeDialog),{forceMount:o=r.forceMount,...a}=t,l=Ke(Qe,t.__scopeDialog);return e.createElement(X,{present:o||l.open},l.modal?e.createElement(tt,p({},a,{ref:n})):e.createElement(nt,p({},a,{ref:n})))})),tt=e.forwardRef(((t,n)=>{const r=Ke(Qe,t.__scopeDialog),o=e.useRef(null),a=h(n,r.contentRef,o);return e.useEffect((()=>{const e=o.current;if(e)return Ve(e)}),[]),e.createElement(rt,p({},t,{ref:a,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:m(t.onCloseAutoFocus,(e=>{var t;e.preventDefault(),null===(t=r.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:m(t.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()})),onFocusOutside:m(t.onFocusOutside,(e=>e.preventDefault()))}))})),nt=e.forwardRef(((t,n)=>{const r=Ke(Qe,t.__scopeDialog),o=e.useRef(!1),a=e.useRef(!1);return e.createElement(rt,p({},t,{ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:e=>{var n,l;(null===(n=t.onCloseAutoFocus)||void 0===n||n.call(t,e),e.defaultPrevented)||(o.current||null===(l=r.triggerRef.current)||void 0===l||l.focus(),e.preventDefault());o.current=!1,a.current=!1},onInteractOutside:e=>{var n,l;null===(n=t.onInteractOutside)||void 0===n||n.call(t,e),e.defaultPrevented||(o.current=!0,"pointerdown"===e.detail.originalEvent.type&&(a.current=!0));const i=e.target;(null===(l=r.triggerRef.current)||void 0===l?void 0:l.contains(i))&&e.preventDefault(),"focusin"===e.detail.originalEvent.type&&a.current&&e.preventDefault()}}))})),rt=e.forwardRef(((t,n)=>{const{__scopeDialog:r,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:l,...i}=t,c=Ke(Qe,r),s=h(n,e.useRef(null));return Q(),e.createElement(e.Fragment,null,e.createElement(U,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:l},e.createElement(N,p({role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":ct(c.open)},i,{ref:s,onDismiss:()=>c.onOpenChange(!1)}))),!1)})),ot="DialogTitle",at=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke(ot,r);return e.createElement(R.h2,p({id:a.titleId},o,{ref:n}))})),lt=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke("DialogDescription",r);return e.createElement(R.p,p({id:a.descriptionId},o,{ref:n}))})),it=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke("DialogClose",r);return e.createElement(R.button,p({type:"button"},o,{ref:n,onClick:m(t.onClick,(()=>a.onOpenChange(!1)))}))}));function ct(e){return e?"open":"closed"}const[st,ut]=function(t,n){const r=e.createContext(n);function o(t){const{children:n,...o}=t,a=e.useMemo((()=>o),Object.values(o));return e.createElement(r.Provider,{value:a},n)}return o.displayName=t+"Provider",[o,function(o){const a=e.useContext(r);if(a)return a;if(void 0!==n)return n;throw new Error(`\`${o}\` must be used within \`${t}\``)}]}("DialogTitleWarning",{contentName:Qe,titleName:ot,docsSlug:"dialog"}),dt=t=>{const{__scopeDialog:n,children:r,open:o,defaultOpen:a,onOpenChange:l,modal:i=!0}=t,c=e.useRef(null),s=e.useRef(null),[u=!1,d]=C({prop:o,defaultProp:a,onChange:l});return e.createElement(ze,{scope:n,triggerRef:c,contentRef:s,contentId:_(),titleId:_(),descriptionId:_(),open:u,onOpenChange:d,onOpenToggle:e.useCallback((()=>d((e=>!e))),[d]),modal:i},r)},ft=t=>{const{__scopeDialog:n,forceMount:r,children:o,container:a}=t,l=Ke($e,n);return e.createElement(qe,{scope:n,forceMount:r},e.Children.map(o,(t=>e.createElement(X,{present:r||l.open},e.createElement(G,{asChild:!0,container:a},t)))))},pt=Ye,mt=et,vt=at,ht=lt,gt=it;var wt,yt,bt="Modal-modules_overlay__V-vTn",Et="Modal-modules_header__-dxAm",_t="Modal-modules_close__CwIjR",xt="Modal-modules_title__3ehge",Ct="Modal-modules_titleCentered__Qqy8u",Ot="Modal-modules_content__sK9HS",St="Modal-modules_body__8Khpx";function kt(){return kt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kt.apply(this,arguments)}var Dt=function(e){return r.createElement("svg",kt({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wt||(wt=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yt||(yt=r.createElement("g",{mask:"url(#close_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))};function Tt(t){const n=t+"CollectionProvider",[r,o]=g(n),[a,l]=r(n,{collectionRef:{current:null},itemMap:new Map}),i=t+"CollectionSlot",c=t+"CollectionItemSlot",s="data-radix-collection-item";return[{Provider:t=>{const{scope:n,children:r}=t,o=e.useRef(null),l=e.useRef(new Map).current;return e.createElement(a,{scope:n,itemMap:l,collectionRef:o},r)},Slot:e.forwardRef(((t,n)=>{const{scope:r,children:o}=t,a=h(n,l(i,r).collectionRef);return e.createElement(O,{ref:a},o)})),ItemSlot:e.forwardRef(((t,n)=>{const{scope:r,children:o,...a}=t,i=e.useRef(null),u=h(n,i),d=l(c,r);return e.useEffect((()=>(d.itemMap.set(i,{ref:i,...a}),()=>{d.itemMap.delete(i)}))),e.createElement(O,{[s]:"",ref:u},o)}))},function(n){const r=l(t+"CollectionConsumer",n);return e.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${s}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const Rt=e.createContext(void 0);function At(t){const n=e.useContext(Rt);return t||n||"ltr"}const Pt="rovingFocusGroup.onEntryFocus",Mt={bubbles:!1,cancelable:!0},It="RovingFocusGroup",[Lt,Nt,jt]=Tt(It),[Ht,Ft]=g(It,[jt]),[Zt,Vt]=Ht(It),Ut=e.forwardRef(((t,n)=>e.createElement(Lt.Provider,{scope:t.__scopeRovingFocusGroup},e.createElement(Lt.Slot,{scope:t.__scopeRovingFocusGroup},e.createElement(Bt,p({},t,{ref:n})))))),Bt=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:a=!1,dir:l,currentTabStopId:i,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:s,onEntryFocus:u,...d}=t,f=e.useRef(null),v=h(n,f),g=At(l),[w=null,y]=C({prop:i,defaultProp:c,onChange:s}),[b,E]=e.useState(!1),_=x(u),O=Nt(r),S=e.useRef(!1),[k,D]=e.useState(0);return e.useEffect((()=>{const e=f.current;if(e)return e.addEventListener(Pt,_),()=>e.removeEventListener(Pt,_)}),[_]),e.createElement(Zt,{scope:r,orientation:o,dir:g,loop:a,currentTabStopId:w,onItemFocus:e.useCallback((e=>y(e)),[y]),onItemShiftTab:e.useCallback((()=>E(!0)),[]),onFocusableItemAdd:e.useCallback((()=>D((e=>e+1))),[]),onFocusableItemRemove:e.useCallback((()=>D((e=>e-1))),[])},e.createElement(R.div,p({tabIndex:b||0===k?-1:0,"data-orientation":o},d,{ref:v,style:{outline:"none",...t.style},onMouseDown:m(t.onMouseDown,(()=>{S.current=!0})),onFocus:m(t.onFocus,(e=>{const t=!S.current;if(e.target===e.currentTarget&&t&&!b){const t=new CustomEvent(Pt,Mt);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=O().filter((e=>e.focusable));Kt([e.find((e=>e.active)),e.find((e=>e.id===w)),...e].filter(Boolean).map((e=>e.ref.current)))}}S.current=!1})),onBlur:m(t.onBlur,(()=>E(!1)))})))})),Wt=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,focusable:o=!0,active:a=!1,tabStopId:l,...i}=t,c=_(),s=l||c,u=Vt("RovingFocusGroupItem",r),d=u.currentTabStopId===s,f=Nt(r),{onFocusableItemAdd:v,onFocusableItemRemove:h}=u;return e.useEffect((()=>{if(o)return v(),()=>h()}),[o,v,h]),e.createElement(Lt.ItemSlot,{scope:r,id:s,focusable:o,active:a},e.createElement(R.span,p({tabIndex:d?0:-1,"data-orientation":u.orientation},i,{ref:n,onMouseDown:m(t.onMouseDown,(e=>{o?u.onItemFocus(s):e.preventDefault()})),onFocus:m(t.onFocus,(()=>u.onItemFocus(s))),onKeyDown:m(t.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void u.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:zt[r]}(e,u.orientation,u.dir);if(void 0!==t){e.preventDefault();let o=f().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=u.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>Kt(o)))}var n,r}))})))})),zt={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Kt(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const $t=Ut,qt=Wt,Gt="Tabs",[Xt,Yt]=g(Gt,[Ft]),Jt=Ft(),[Qt,en]=Xt(Gt);function tn(e,t){return`${e}-trigger-${t}`}function nn(e,t){return`${e}-content-${t}`}const rn=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,onValueChange:a,defaultValue:l,orientation:i="horizontal",dir:c,activationMode:s="automatic",...u}=t,d=At(c),[f,m]=C({prop:o,onChange:a,defaultProp:l});return e.createElement(Qt,{scope:r,baseId:_(),value:f,onValueChange:m,orientation:i,dir:d,activationMode:s},e.createElement(R.div,p({dir:d,"data-orientation":i},u,{ref:n})))})),on=e.forwardRef(((t,n)=>{const{__scopeTabs:r,loop:o=!0,...a}=t,l=en("TabsList",r),i=Jt(r);return e.createElement($t,p({asChild:!0},i,{orientation:l.orientation,dir:l.dir,loop:o}),e.createElement(R.div,p({role:"tablist","aria-orientation":l.orientation},a,{ref:n})))})),an=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,disabled:a=!1,...l}=t,i=en("TabsTrigger",r),c=Jt(r),s=tn(i.baseId,o),u=nn(i.baseId,o),d=o===i.value;return e.createElement(qt,p({asChild:!0},c,{focusable:!a,active:d}),e.createElement(R.button,p({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:s},l,{ref:n,onMouseDown:m(t.onMouseDown,(e=>{a||0!==e.button||!1!==e.ctrlKey?e.preventDefault():i.onValueChange(o)})),onKeyDown:m(t.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&i.onValueChange(o)})),onFocus:m(t.onFocus,(()=>{const e="manual"!==i.activationMode;d||a||!e||i.onValueChange(o)}))})))})),ln=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,forceMount:a,children:l,...i}=t,c=en("TabsContent",r),s=tn(c.baseId,o),u=nn(c.baseId,o),d=o===c.value,f=e.useRef(d);return e.useEffect((()=>{const e=requestAnimationFrame((()=>f.current=!1));return()=>cancelAnimationFrame(e)}),[]),e.createElement(X,{present:a||d},(({present:r})=>e.createElement(R.div,p({"data-state":d?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":s,hidden:!r,id:u,tabIndex:0},i,{ref:n,style:{...t.style,animationDuration:f.current?"0s":void 0}}),r&&l)))}));var cn="Tabs-modules_root__TvYE1",sn="Tabs-modules_list__G3KVd",un="Tabs-modules_tab__-FuG6",dn="Tabs-modules_content__X0OLh";function fn(t){const n=e.useRef({value:t,previous:t});return e.useMemo((()=>(n.current.value!==t&&(n.current.previous=n.current.value,n.current.value=t),n.current.previous)),[t])}function pn(t){const[n,r]=e.useState(void 0);return y((()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const e=new ResizeObserver((e=>{if(!Array.isArray(e))return;if(!e.length)return;const n=e[0];let o,a;if("borderBoxSize"in n){const e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=t.offsetWidth,a=t.offsetHeight;r({width:o,height:a})}));return e.observe(t,{box:"border-box"}),()=>e.unobserve(t)}r(void 0)}),[t]),n}const mn="Switch",[vn,hn]=g(mn),[gn,wn]=vn(mn),yn=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,name:o,checked:a,defaultChecked:l,required:i,disabled:c,value:s="on",onCheckedChange:u,...d}=t,[f,v]=e.useState(null),g=h(n,(e=>v(e))),w=e.useRef(!1),y=!f||Boolean(f.closest("form")),[b=!1,E]=C({prop:a,defaultProp:l,onChange:u});return e.createElement(gn,{scope:r,checked:b,disabled:c},e.createElement(R.button,p({type:"button",role:"switch","aria-checked":b,"aria-required":i,"data-state":En(b),"data-disabled":c?"":void 0,disabled:c,value:s},d,{ref:g,onClick:m(t.onClick,(e=>{E((e=>!e)),y&&(w.current=e.isPropagationStopped(),w.current||e.stopPropagation())}))})),y&&e.createElement(bn,{control:f,bubbles:!w.current,name:o,value:s,checked:b,required:i,disabled:c,style:{transform:"translateX(-100%)"}}))})),bn=t=>{const{control:n,checked:r,bubbles:o=!0,...a}=t,l=e.useRef(null),i=fn(r),c=pn(n);return e.useEffect((()=>{const e=l.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(i!==r&&n){const t=new Event("click",{bubbles:o});n.call(e,r),e.dispatchEvent(t)}}),[i,r,o]),e.createElement("input",p({type:"checkbox","aria-hidden":!0,defaultChecked:r},a,{tabIndex:-1,ref:l,style:{...t.style,...c,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function En(e){return e?"checked":"unchecked"}const _n=yn,xn=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,...o}=t,a=wn("SwitchThumb",r);return e.createElement(R.span,p({"data-state":En(a.checked),"data-disabled":a.disabled?"":void 0},o,{ref:n}))}));var Cn="Switch-modules_root__V5S6a",On="Switch-modules_thumb__PZ-lR";function Sn(e){return e.split("-")[1]}function kn(e){return"y"===e?"height":"width"}function Dn(e){return e.split("-")[0]}function Tn(e){return["top","bottom"].includes(Dn(e))?"x":"y"}function Rn(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,l=r.y+r.height/2-o.height/2,i=Tn(t),c=kn(i),s=r[c]/2-o[c]/2,u="x"===i;let d;switch(Dn(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:l};break;case"left":d={x:r.x-o.width,y:l};break;default:d={x:r.x,y:r.y}}switch(Sn(t)){case"start":d[i]-=s*(n&&u?-1:1);break;case"end":d[i]+=s*(n&&u?-1:1)}return d}function An(e,t){return"function"==typeof e?e(t):e}function Pn(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Mn(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function In(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:l,elements:i,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=An(t,e),m=Pn(p),v=i[f?"floating"===d?"reference":"floating":d],h=Mn(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(i.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...l.floating,x:r,y:o}:l.reference,w=await(null==a.getOffsetParent?void 0:a.getOffsetParent(i.floating)),y=await(null==a.isElement?void 0:a.isElement(w))&&await(null==a.getScale?void 0:a.getScale(w))||{x:1,y:1},b=Mn(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:w,strategy:c}):g);return{top:(h.top-b.top+m.top)/y.y,bottom:(b.bottom-h.bottom+m.bottom)/y.y,left:(h.left-b.left+m.left)/y.x,right:(b.right-h.right+m.right)/y.x}}const Ln=Math.min,Nn=Math.max;function jn(e,t,n){return Nn(e,Ln(t,n))}const Hn=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:l,elements:i}=t,{element:c,padding:s=0}=An(e,t)||{};if(null==c)return{};const u=Pn(s),d={x:n,y:r},f=Tn(o),p=kn(f),m=await l.getDimensions(c),v="y"===f,h=v?"top":"left",g=v?"bottom":"right",w=v?"clientHeight":"clientWidth",y=a.reference[p]+a.reference[f]-d[f]-a.floating[p],b=d[f]-a.reference[f],E=await(null==l.getOffsetParent?void 0:l.getOffsetParent(c));let _=E?E[w]:0;_&&await(null==l.isElement?void 0:l.isElement(E))||(_=i.floating[w]||a.floating[p]);const x=y/2-b/2,C=_/2-m[p]/2-1,O=Ln(u[h],C),S=Ln(u[g],C),k=O,D=_-m[p]-S,T=_/2-m[p]/2+x,R=jn(k,T,D),A=null!=Sn(o)&&T!=R&&a.reference[p]/2-(T<k?O:S)-m[p]/2<0;return{[f]:d[f]-(A?T<k?k-T:D-T:0),data:{[f]:R,centerOffset:T-R}}}}),Fn=["top","right","bottom","left"],Zn={left:"right",right:"left",bottom:"top",top:"bottom"};function Vn(e){return e.replace(/left|right|bottom|top/g,(e=>Zn[e]))}const Un={start:"end",end:"start"};function Bn(e){return e.replace(/start|end/g,(e=>Un[e]))}const Wn=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:l,platform:i,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:m=!0,...v}=An(e,t),h=Dn(r),g=Dn(l)===l,w=await(null==i.isRTL?void 0:i.isRTL(c.floating)),y=d||(g||!m?[Vn(l)]:function(e){const t=Vn(e);return[Bn(e),t,Bn(t)]}(l));d||"none"===p||y.push(...function(e,t,n,r){const o=Sn(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:l;default:return[]}}(Dn(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(Bn)))),a}(l,m,p,w));const b=[l,...y],E=await In(t,v),_=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&_.push(E[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=Sn(e),o=Tn(e),a=kn(o);let l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(l=Vn(l)),{main:l,cross:Vn(l)}}(r,a,w);_.push(E[e],E[t])}if(x=[...x,{placement:r,overflows:_}],!_.every((e=>e<=0))){var C,O;const e=((null==(C=o.flip)?void 0:C.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(O=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(f){case"bestFit":{var S;const e=null==(S=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:S[0];e&&(n=e);break}case"initialPlacement":n=l}if(r!==n)return{reset:{placement:n}}}return{}}}};function zn(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Kn(e){return Fn.some((t=>e[t]>=0))}const $n=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=An(e,t);switch(r){case"referenceHidden":{const e=zn(await In(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Kn(e)}}}case"escaped":{const e=zn(await In(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Kn(e)}}}default:return{}}}}};const qn=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),l=Dn(n),i=Sn(n),c="x"===Tn(n),s=["left","top"].includes(l)?-1:1,u=a&&c?-1:1,d=An(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return i&&"number"==typeof m&&(p="end"===i?-1*m:m),c?{x:p*u,y:f*s}:{x:f*s,y:p*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function Gn(e){return"x"===e?"y":"x"}const Xn=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:i={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=An(e,t),s={x:n,y:r},u=await In(t,c),d=Tn(Dn(o)),f=Gn(d);let p=s[d],m=s[f];if(a){const e="y"===d?"bottom":"right";p=jn(p+u["y"===d?"top":"left"],p,p-u[e])}if(l){const e="y"===f?"bottom":"right";m=jn(m+u["y"===f?"top":"left"],m,m-u[e])}const v=i.fn({...t,[d]:p,[f]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},Yn=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:l}=t,{offset:i=0,mainAxis:c=!0,crossAxis:s=!0}=An(e,t),u={x:n,y:r},d=Tn(o),f=Gn(d);let p=u[d],m=u[f];const v=An(i,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;p<t?p=t:p>n&&(p=n)}if(s){var g,w;const e="y"===d?"width":"height",t=["top","left"].includes(Dn(o)),n=a.reference[f]-a.floating[e]+(t&&(null==(g=l.offset)?void 0:g[f])||0)+(t?0:h.crossAxis),r=a.reference[f]+a.reference[e]+(t?0:(null==(w=l.offset)?void 0:w[f])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:p,[f]:m}}}},Jn=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:l=(()=>{}),...i}=An(e,t),c=await In(t,i),s=Dn(n),u=Sn(n),d="x"===Tn(n),{width:f,height:p}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=p-c[m],g=f-c[v],w=!t.middlewareData.shift;let y=h,b=g;if(d){const e=f-c.left-c.right;b=u||w?Ln(g,e):e}else{const e=p-c.top-c.bottom;y=u||w?Ln(h,e):e}if(w&&!u){const e=Nn(c.left,0),t=Nn(c.right,0),n=Nn(c.top,0),r=Nn(c.bottom,0);d?b=f-2*(0!==e||0!==t?e+t:Nn(c.left,c.right)):y=p-2*(0!==n||0!==r?n+r:Nn(c.top,c.bottom))}await l({...t,availableWidth:b,availableHeight:y});const E=await o.getDimensions(a.floating);return f!==E.width||p!==E.height?{reset:{rects:!0}}:{}}}};function Qn(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function er(e){return Qn(e).getComputedStyle(e)}function tr(e){return e instanceof Qn(e).Node}function nr(e){return tr(e)?(e.nodeName||"").toLowerCase():""}function rr(e){return e instanceof Qn(e).HTMLElement}function or(e){return e instanceof Qn(e).Element}function ar(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof Qn(e).ShadowRoot||e instanceof ShadowRoot}function lr(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=er(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function ir(e){return["table","td","th"].includes(nr(e))}function cr(e){const t=sr(),n=er(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function sr(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function ur(e){return["html","body","#document"].includes(nr(e))}const dr=Math.min,fr=Math.max,pr=Math.round;function mr(e){const t=er(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=rr(e),a=o?e.offsetWidth:n,l=o?e.offsetHeight:r,i=pr(n)!==a||pr(r)!==l;return i&&(n=a,r=l),{width:n,height:r,fallback:i}}function vr(e){return or(e)?e:e.contextElement}const hr={x:1,y:1};function gr(e){const t=vr(e);if(!rr(t))return hr;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=mr(t);let l=(a?pr(n.width):n.width)/r,i=(a?pr(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),i&&Number.isFinite(i)||(i=1),{x:l,y:i}}const wr={x:0,y:0};function yr(e,t,n){var r,o;if(void 0===t&&(t=!0),!sr())return wr;const a=e?Qn(e):window;return!n||t&&n!==a?wr:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function br(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=vr(e);let l=hr;t&&(r?or(r)&&(l=gr(r)):l=gr(e));const i=yr(a,n,r);let c=(o.left+i.x)/l.x,s=(o.top+i.y)/l.y,u=o.width/l.x,d=o.height/l.y;if(a){const e=Qn(a),t=r&&or(r)?Qn(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=gr(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=Qn(n).frameElement}}return Mn({width:u,height:d,x:c,y:s})}function Er(e){return((tr(e)?e.ownerDocument:e.document)||window.document).documentElement}function _r(e){return or(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function xr(e){return br(Er(e)).left+_r(e).scrollLeft}function Cr(e){if("html"===nr(e))return e;const t=e.assignedSlot||e.parentNode||ar(e)&&e.host||Er(e);return ar(t)?t.host:t}function Or(e){const t=Cr(e);return ur(t)?t.ownerDocument.body:rr(t)&&lr(t)?t:Or(t)}function Sr(e,t){var n;void 0===t&&(t=[]);const r=Or(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=Qn(r);return o?t.concat(a,a.visualViewport||[],lr(r)?r:[]):t.concat(r,Sr(r))}function kr(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=Qn(e),r=Er(e),o=n.visualViewport;let a=r.clientWidth,l=r.clientHeight,i=0,c=0;if(o){a=o.width,l=o.height;const e=sr();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,c=o.offsetTop)}return{width:a,height:l,x:i,y:c}}(e,n);else if("document"===t)r=function(e){const t=Er(e),n=_r(e),r=e.ownerDocument.body,o=fr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=fr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+xr(e);const i=-n.scrollTop;return"rtl"===er(r).direction&&(l+=fr(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:l,y:i}}(Er(e));else if(or(t))r=function(e,t){const n=br(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=rr(e)?gr(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=yr(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return Mn(r)}function Dr(e,t){const n=Cr(e);return!(n===t||!or(n)||ur(n))&&("fixed"===er(n).position||Dr(n,t))}function Tr(e,t){return rr(e)&&"fixed"!==er(e).position?t?t(e):e.offsetParent:null}function Rr(e,t){const n=Qn(e);if(!rr(e))return n;let r=Tr(e,t);for(;r&&ir(r)&&"static"===er(r).position;)r=Tr(r,t);return r&&("html"===nr(r)||"body"===nr(r)&&"static"===er(r).position&&!cr(r))?n:r||function(e){let t=Cr(e);for(;rr(t)&&!ur(t);){if(cr(t))return t;t=Cr(t)}return null}(e)||n}function Ar(e,t,n){const r=rr(t),o=Er(t),a="fixed"===n,l=br(e,!0,a,t);let i={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==nr(t)||lr(o))&&(i=_r(t)),rr(t)){const e=br(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=xr(o));return{x:l.left+i.scrollLeft-c.x,y:l.top+i.scrollTop-c.y,width:l.width,height:l.height}}const Pr={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=Sr(e).filter((e=>or(e)&&"body"!==nr(e))),o=null;const a="fixed"===er(e).position;let l=a?Cr(e):e;for(;or(l)&&!ur(l);){const t=er(l),n=cr(l);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||lr(l)&&!n&&Dr(e,l))?r=r.filter((e=>e!==l)):o=t,l=Cr(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],l=a[0],i=a.reduce(((e,n)=>{const r=kr(t,n,o);return e.top=fr(r.top,e.top),e.right=dr(r.right,e.right),e.bottom=dr(r.bottom,e.bottom),e.left=fr(r.left,e.left),e}),kr(t,l,o));return{width:i.right-i.left,height:i.bottom-i.top,x:i.left,y:i.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=rr(n),a=Er(n);if(n===a)return t;let l={scrollLeft:0,scrollTop:0},i={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==nr(n)||lr(a))&&(l=_r(n)),rr(n))){const e=br(n);i=gr(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*i.x,height:t.height*i.y,x:t.x*i.x-l.scrollLeft*i.x+c.x,y:t.y*i.y-l.scrollTop*i.y+c.y}},isElement:or,getDimensions:function(e){return mr(e)},getOffsetParent:Rr,getDocumentElement:Er,getScale:gr,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||Rr,a=this.getDimensions;return{reference:Ar(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===er(e).direction};function Mr(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:l=!0,animationFrame:i=!1}=r,c=o||a?[...or(e)?Sr(e):e.contextElement?Sr(e.contextElement):[],...Sr(t)]:[];c.forEach((e=>{const t=!or(e)&&e.toString().includes("V");!o||i&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;l&&(u=new ResizeObserver((()=>{n()})),or(e)&&!i&&u.observe(e),or(e)||!e.contextElement||i||u.observe(e.contextElement),u.observe(t));let d=i?br(e):null;return i&&function t(){const r=br(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,i&&cancelAnimationFrame(s)}}const Ir=(e,t,n)=>{const r=new Map,o={platform:Pr,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:l}=n,i=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(t));let s=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=Rn(s,r,c),f=r,p={},m=0;for(let n=0;n<i.length;n++){const{name:a,fn:v}=i[n],{x:h,y:g,data:w,reset:y}=await v({x:u,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:l,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,p={...p,[a]:{...p[a],...w}},y&&m<=50&&(m++,"object"==typeof y&&(y.placement&&(f=y.placement),y.rects&&(s=!0===y.rects?await l.getElementRects({reference:e,floating:t,strategy:o}):y.rects),({x:u,y:d}=Rn(s,f,c))),n=-1)}return{x:u,y:d,placement:f,strategy:o,middlewareData:p}})(e,t,{...o,platform:a})},Lr=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?Hn({element:n.current,padding:r}).fn(t):{}:n?Hn({element:n,padding:r}).fn(t):{};var o}});var Nr="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function jr(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!jr(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!jr(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function Hr(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Fr(e,t){const n=Hr(e);return Math.round(t*n)/n}function Zr(e){const t=r.useRef(e);return Nr((()=>{t.current=e})),t}const Vr=e.forwardRef(((t,n)=>{const{children:r,width:o=10,height:a=5,...l}=t;return e.createElement(R.svg,p({},l,{ref:n,width:o,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),t.asChild?r:e.createElement("polygon",{points:"0,0 30,0 15,10"}))})),Ur="Popper",[Br,Wr]=g(Ur),[zr,Kr]=Br(Ur),$r=e.forwardRef(((t,n)=>{const{__scopePopper:r,virtualRef:o,...a}=t,l=Kr("PopperAnchor",r),i=e.useRef(null),c=h(n,i);return e.useEffect((()=>{l.onAnchorChange((null==o?void 0:o.current)||i.current)})),o?null:e.createElement(R.div,p({},a,{ref:c}))})),qr="PopperContent",[Gr,Xr]=Br(qr),Yr=e.forwardRef(((t,n)=>{var a,l,i,c,s,u,d,f;const{__scopePopper:m,side:v="bottom",sideOffset:g=0,align:w="center",alignOffset:b=0,arrowPadding:E=0,collisionBoundary:_=[],collisionPadding:C=0,sticky:O="partial",hideWhenDetached:S=!1,avoidCollisions:k=!0,onPlaced:D,...T}=t,A=Kr(qr,m),[P,M]=e.useState(null),I=h(n,(e=>M(e))),[L,N]=e.useState(null),j=pn(L),H=null!==(a=null==j?void 0:j.width)&&void 0!==a?a:0,F=null!==(l=null==j?void 0:j.height)&&void 0!==l?l:0,Z=v+("center"!==w?"-"+w:""),V="number"==typeof C?C:{top:0,right:0,bottom:0,left:0,...C},U=Array.isArray(_)?_:[_],B=U.length>0,W={padding:V,boundary:U.filter(Qr),altBoundary:B},{refs:z,floatingStyles:K,placement:$,isPositioned:q,middlewareData:G}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:a=[],platform:l,elements:{reference:i,floating:c}={},transform:s=!0,whileElementsMounted:u,open:d}=e,[f,p]=r.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[m,v]=r.useState(a);jr(m,a)||v(a);const[h,g]=r.useState(null),[w,y]=r.useState(null),b=r.useCallback((e=>{e!=C.current&&(C.current=e,g(e))}),[g]),E=r.useCallback((e=>{e!==O.current&&(O.current=e,y(e))}),[y]),_=i||h,x=c||w,C=r.useRef(null),O=r.useRef(null),S=r.useRef(f),k=Zr(u),D=Zr(l),T=r.useCallback((()=>{if(!C.current||!O.current)return;const e={placement:t,strategy:n,middleware:m};D.current&&(e.platform=D.current),Ir(C.current,O.current,e).then((e=>{const t={...e,isPositioned:!0};R.current&&!jr(S.current,t)&&(S.current=t,o.flushSync((()=>{p(t)})))}))}),[m,t,n,D]);Nr((()=>{!1===d&&S.current.isPositioned&&(S.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[d]);const R=r.useRef(!1);Nr((()=>(R.current=!0,()=>{R.current=!1})),[]),Nr((()=>{if(_&&(C.current=_),x&&(O.current=x),_&&x){if(k.current)return k.current(_,x,T);T()}}),[_,x,T,k]);const A=r.useMemo((()=>({reference:C,floating:O,setReference:b,setFloating:E})),[b,E]),P=r.useMemo((()=>({reference:_,floating:x})),[_,x]),M=r.useMemo((()=>{const e={position:n,left:0,top:0};if(!P.floating)return e;const t=Fr(P.floating,f.x),r=Fr(P.floating,f.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...Hr(P.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,s,P.floating,f.x,f.y]);return r.useMemo((()=>({...f,update:T,refs:A,elements:P,floatingStyles:M})),[f,T,A,P,M])}({strategy:"fixed",placement:Z,whileElementsMounted:Mr,elements:{reference:A.anchor},middleware:[qn({mainAxis:g+F,alignmentAxis:b}),k&&Xn({mainAxis:!0,crossAxis:!1,limiter:"partial"===O?Yn():void 0,...W}),k&&Wn({...W}),Jn({...W,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,l=e.floating.style;l.setProperty("--radix-popper-available-width",`${n}px`),l.setProperty("--radix-popper-available-height",`${r}px`),l.setProperty("--radix-popper-anchor-width",`${o}px`),l.setProperty("--radix-popper-anchor-height",`${a}px`)}}),L&&Lr({element:L,padding:E}),eo({arrowWidth:H,arrowHeight:F}),S&&$n({strategy:"referenceHidden"})]}),[X,Y]=to($),J=x(D);y((()=>{q&&(null==J||J())}),[q,J]);const Q=null===(i=G.arrow)||void 0===i?void 0:i.x,ee=null===(c=G.arrow)||void 0===c?void 0:c.y,te=0!==(null===(s=G.arrow)||void 0===s?void 0:s.centerOffset),[ne,re]=e.useState();return y((()=>{P&&re(window.getComputedStyle(P).zIndex)}),[P]),e.createElement("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:q?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ne,"--radix-popper-transform-origin":[null===(u=G.transformOrigin)||void 0===u?void 0:u.x,null===(d=G.transformOrigin)||void 0===d?void 0:d.y].join(" ")},dir:t.dir},e.createElement(Gr,{scope:m,placedSide:X,onArrowChange:N,arrowX:Q,arrowY:ee,shouldHideArrow:te},e.createElement(R.div,p({"data-side":X,"data-align":Y},T,{ref:I,style:{...T.style,animation:q?void 0:"none",opacity:null!==(f=G.hide)&&void 0!==f&&f.referenceHidden?0:void 0}}))))})),Jr={top:"bottom",right:"left",bottom:"top",left:"right"};function Qr(e){return null!==e}const eo=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,l;const{placement:i,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[p,m]=to(i),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(l=s.arrow)||void 0===l?void 0:l.y)&&void 0!==a?a:0)+f/2;let w="",y="";return"bottom"===p?(w=u?v:`${h}px`,y=-f+"px"):"top"===p?(w=u?v:`${h}px`,y=`${c.floating.height+f}px`):"right"===p?(w=-f+"px",y=u?v:`${g}px`):"left"===p&&(w=`${c.floating.width+f}px`,y=u?v:`${g}px`),{data:{x:w,y:y}}}});function to(e){const[t,n="center"]=e.split("-");return[t,n]}const no=t=>{const{__scopePopper:n,children:r}=t,[o,a]=e.useState(null);return e.createElement(zr,{scope:n,anchor:o,onAnchorChange:a},r)},ro=$r,oo=Yr,ao=e.forwardRef((function(t,n){const{__scopePopper:r,...o}=t,a=Xr("PopperArrow",r),l=Jr[a.placedSide];return e.createElement("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0}},e.createElement(Vr,p({},o,{ref:n,style:{...o.style,display:"block"}})))})),lo=e.forwardRef(((t,n)=>e.createElement(R.span,p({},t,{ref:n,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...t.style}})))),io=lo,[co,so]=g("Tooltip",[Wr]),uo=Wr(),fo=700,po="tooltip.open",[mo,vo]=co("TooltipProvider"),ho="Tooltip",[go,wo]=co(ho),yo="TooltipTrigger",bo=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,a=wo(yo,r),l=vo(yo,r),i=uo(r),c=h(n,e.useRef(null),a.onTriggerChange),s=e.useRef(!1),u=e.useRef(!1),d=e.useCallback((()=>s.current=!1),[]);return e.useEffect((()=>()=>document.removeEventListener("pointerup",d)),[d]),e.createElement(ro,p({asChild:!0},i),e.createElement(R.button,p({"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute},o,{ref:c,onPointerMove:m(t.onPointerMove,(e=>{"touch"!==e.pointerType&&(u.current||l.isPointerInTransitRef.current||(a.onTriggerEnter(),u.current=!0))})),onPointerLeave:m(t.onPointerLeave,(()=>{a.onTriggerLeave(),u.current=!1})),onPointerDown:m(t.onPointerDown,(()=>{s.current=!0,document.addEventListener("pointerup",d,{once:!0})})),onFocus:m(t.onFocus,(()=>{s.current||a.onOpen()})),onBlur:m(t.onBlur,a.onClose),onClick:m(t.onClick,a.onClose)})))})),Eo="TooltipPortal",[_o,xo]=co(Eo,{forceMount:void 0}),Co="TooltipContent",Oo=e.forwardRef(((t,n)=>{const r=xo(Co,t.__scopeTooltip),{forceMount:o=r.forceMount,side:a="top",...l}=t,i=wo(Co,t.__scopeTooltip);return e.createElement(X,{present:o||i.open},i.disableHoverableContent?e.createElement(To,p({side:a},l,{ref:n})):e.createElement(So,p({side:a},l,{ref:n})))})),So=e.forwardRef(((t,n)=>{const r=wo(Co,t.__scopeTooltip),o=vo(Co,t.__scopeTooltip),a=e.useRef(null),l=h(n,a),[i,c]=e.useState(null),{trigger:s,onClose:u}=r,d=a.current,{onPointerInTransitChange:f}=o,m=e.useCallback((()=>{c(null),f(!1)}),[f]),v=e.useCallback(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);c(a),f(!0)}),[f]);return e.useEffect((()=>()=>m()),[m]),e.useEffect((()=>{if(s&&d){const e=e=>v(e,d),t=e=>v(e,s);return s.addEventListener("pointerleave",e),d.addEventListener("pointerleave",t),()=>{s.removeEventListener("pointerleave",e),d.removeEventListener("pointerleave",t)}}}),[s,d,v,m]),e.useEffect((()=>{if(i){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==s?void 0:s.contains(t))||(null==d?void 0:d.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const l=t[e].x,i=t[e].y,c=t[a].x,s=t[a].y;i>r!=s>r&&n<(c-l)*(r-i)/(s-i)+l&&(o=!o)}return o}(n,i);r?m():o&&(m(),u())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[s,d,i,u,m]),e.createElement(To,p({},t,{ref:l}))})),[ko,Do]=co(ho,{isInside:!1}),To=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,children:o,"aria-label":a,onEscapeKeyDown:l,onPointerDownOutside:i,...c}=t,s=wo(Co,r),u=uo(r),{onClose:d}=s;return e.useEffect((()=>(document.addEventListener(po,d),()=>document.removeEventListener(po,d))),[d]),e.useEffect((()=>{if(s.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(s.trigger)&&d()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[s.trigger,d]),e.createElement(N,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:i,onFocusOutside:e=>e.preventDefault(),onDismiss:d},e.createElement(oo,p({"data-state":s.stateAttribute},u,c,{ref:n,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),e.createElement(k,null,o),e.createElement(ko,{scope:r,isInside:!0},e.createElement(io,{id:s.contentId,role:"tooltip"},a||o))))}));const Ro=t=>{const{__scopeTooltip:n,delayDuration:r=fo,skipDelayDuration:o=300,disableHoverableContent:a=!1,children:l}=t,[i,c]=e.useState(!0),s=e.useRef(!1),u=e.useRef(0);return e.useEffect((()=>{const e=u.current;return()=>window.clearTimeout(e)}),[]),e.createElement(mo,{scope:n,isOpenDelayed:i,delayDuration:r,onOpen:e.useCallback((()=>{window.clearTimeout(u.current),c(!1)}),[]),onClose:e.useCallback((()=>{window.clearTimeout(u.current),u.current=window.setTimeout((()=>c(!0)),o)}),[o]),isPointerInTransitRef:s,onPointerInTransitChange:e.useCallback((e=>{s.current=e}),[]),disableHoverableContent:a},l)},Ao=t=>{const{__scopeTooltip:n,children:r,open:o,defaultOpen:a=!1,onOpenChange:l,disableHoverableContent:i,delayDuration:c}=t,s=vo(ho,t.__scopeTooltip),u=uo(n),[d,f]=e.useState(null),p=_(),m=e.useRef(0),v=null!=i?i:s.disableHoverableContent,h=null!=c?c:s.delayDuration,g=e.useRef(!1),[w=!1,y]=C({prop:o,defaultProp:a,onChange:e=>{e?(s.onOpen(),document.dispatchEvent(new CustomEvent(po))):s.onClose(),null==l||l(e)}}),b=e.useMemo((()=>w?g.current?"delayed-open":"instant-open":"closed"),[w]),E=e.useCallback((()=>{window.clearTimeout(m.current),g.current=!1,y(!0)}),[y]),x=e.useCallback((()=>{window.clearTimeout(m.current),y(!1)}),[y]),O=e.useCallback((()=>{window.clearTimeout(m.current),m.current=window.setTimeout((()=>{g.current=!0,y(!0)}),h)}),[h,y]);return e.useEffect((()=>()=>window.clearTimeout(m.current)),[]),e.createElement(no,u,e.createElement(go,{scope:n,contentId:p,open:w,stateAttribute:b,trigger:d,onTriggerChange:f,onTriggerEnter:e.useCallback((()=>{s.isOpenDelayed?O():E()}),[s.isOpenDelayed,O,E]),onTriggerLeave:e.useCallback((()=>{v?x():window.clearTimeout(m.current)}),[x,v]),onOpen:E,onClose:x,disableHoverableContent:v},r))},Po=bo,Mo=t=>{const{__scopeTooltip:n,forceMount:r,children:o,container:a}=t,l=wo(Eo,n);return e.createElement(_o,{scope:n,forceMount:r},e.createElement(X,{present:r||l.open},e.createElement(G,{asChild:!0,container:a},o)))},Io=Oo,Lo=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,a=uo(r);return Do("TooltipArrow",r).isInside?null:e.createElement(ao,p({},a,o,{ref:n}))}));var No="Tooltip-modules_content__--tK0",jo="Tooltip-modules_arrow__4vjj8";function Ho(e,[t,n]){return Math.min(n,Math.max(t,e))}const Fo=[" ","Enter","ArrowUp","ArrowDown"],Zo=[" ","Enter"],Vo="Select",[Uo,Bo,Wo]=Tt(Vo),[zo,Ko]=g(Vo,[Wo,Wr]),$o=Wr(),[qo,Go]=zo(Vo),[Xo,Yo]=zo(Vo),Jo=e.forwardRef(((t,n)=>{const{__scopeSelect:r,disabled:o=!1,...a}=t,l=$o(r),i=Go("SelectTrigger",r),c=i.disabled||o,s=h(n,i.onTriggerChange),u=Bo(r),[d,f,v]=Oa((e=>{const t=u().filter((e=>!e.disabled)),n=t.find((e=>e.value===i.value)),r=Sa(t,e,n);void 0!==r&&i.onValueChange(r.value)})),g=()=>{c||(i.onOpenChange(!0),v())};return e.createElement(ro,p({asChild:!0},l),e.createElement(R.button,p({type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":void 0===i.value?"":void 0},a,{ref:s,onClick:m(a.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:m(a.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(g(),i.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:m(a.onKeyDown,(e=>{const t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||f(e.key),t&&" "===e.key||Fo.includes(e.key)&&(g(),e.preventDefault())}))})))})),Qo=e.forwardRef(((t,n)=>{const{__scopeSelect:r,className:o,style:a,children:l,placeholder:i,...c}=t,s=Go("SelectValue",r),{onValueNodeHasChildrenChange:u}=s,d=void 0!==l,f=h(n,s.onValueNodeChange);return y((()=>{u(d)}),[u,d]),e.createElement(R.span,p({},c,{ref:f,style:{pointerEvents:"none"}}),void 0===s.value&&void 0!==i?i:l)})),ea=e.forwardRef(((t,n)=>{const{__scopeSelect:r,children:o,...a}=t;return e.createElement(R.span,p({"aria-hidden":!0},a,{ref:n}),o||"▼")})),ta="SelectContent",na=e.forwardRef(((n,r)=>{const o=Go(ta,n.__scopeSelect),[a,l]=e.useState();if(y((()=>{l(new DocumentFragment)}),[]),!o.open){const r=a;return r?t.createPortal(e.createElement(oa,{scope:n.__scopeSelect},e.createElement(Uo.Slot,{scope:n.__scopeSelect},e.createElement("div",null,n.children))),r):null}return e.createElement(la,p({},n,{ref:r}))})),ra=10,[oa,aa]=zo(ta),la=e.forwardRef(((t,n)=>{const{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:l,onPointerDownOutside:i,side:c,sideOffset:s,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:v,collisionPadding:g,sticky:w,hideWhenDetached:y,avoidCollisions:b,...E}=t,_=Go(ta,r),[x,C]=e.useState(null),[S,k]=e.useState(null),D=h(n,(e=>C(e))),[T,R]=e.useState(null),[A,P]=e.useState(null),M=Bo(r),[I,L]=e.useState(!1),j=e.useRef(!1);e.useEffect((()=>{if(x)return Ve(x)}),[x]),Q();const H=e.useCallback((e=>{const[t,...n]=M().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[M,S]),F=e.useCallback((()=>H([T,x])),[H,T,x]);e.useEffect((()=>{I&&F()}),[I,F]);const{onOpenChange:Z,triggerPointerDownPosRef:V}=_;e.useEffect((()=>{if(x){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=V.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=V.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():x.contains(n.target)||Z(!1),document.removeEventListener("pointermove",t),V.current=null};return null!==V.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[x,Z,V]),e.useEffect((()=>{const e=()=>Z(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[Z]);const[B,W]=Oa((e=>{const t=M().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=Sa(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),z=e.useCallback(((e,t,n)=>{const r=!j.current&&!n;(void 0!==_.value&&_.value===t||r)&&(R(e),r&&(j.current=!0))}),[_.value]),K=e.useCallback((()=>null==x?void 0:x.focus()),[x]),$=e.useCallback(((e,t,n)=>{const r=!j.current&&!n;(void 0!==_.value&&_.value===t||r)&&P(e)}),[_.value]),q="popper"===o?ca:ia,G=q===ca?{side:c,sideOffset:s,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:v,collisionPadding:g,sticky:w,hideWhenDetached:y,avoidCollisions:b}:{};return e.createElement(oa,{scope:r,content:x,viewport:S,onViewportChange:k,itemRefCallback:z,selectedItem:T,onItemLeave:K,itemTextRefCallback:$,focusSelectedItem:F,selectedItemText:A,position:o,isPositioned:I,searchRef:B},e.createElement(Ie,{as:O,allowPinchZoom:!0},e.createElement(U,{asChild:!0,trapped:_.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:m(a,(e=>{var t;null===(t=_.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},e.createElement(N,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:i,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>_.onOpenChange(!1)},e.createElement(q,p({role:"listbox",id:_.contentId,"data-state":_.open?"open":"closed",dir:_.dir,onContextMenu:e=>e.preventDefault()},E,G,{onPlaced:()=>L(!0),ref:D,style:{display:"flex",flexDirection:"column",outline:"none",...E.style},onKeyDown:m(E.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||W(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=M().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>H(t))),e.preventDefault()}}))}))))))})),ia=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onPlaced:o,...a}=t,l=Go(ta,r),i=aa(ta,r),[c,s]=e.useState(null),[u,d]=e.useState(null),f=h(n,(e=>d(e))),m=Bo(r),v=e.useRef(!1),g=e.useRef(!0),{viewport:w,selectedItem:b,selectedItemText:E,focusSelectedItem:_}=i,x=e.useCallback((()=>{if(l.trigger&&l.valueNode&&c&&u&&w&&b&&E){const e=l.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=l.valueNode.getBoundingClientRect(),r=E.getBoundingClientRect();if("rtl"!==l.dir){const o=r.left-t.left,a=n.left-o,l=e.left-a,i=e.width+l,s=Math.max(i,t.width),u=window.innerWidth-ra,d=Ho(a,[ra,u-s]);c.style.minWidth=i+"px",c.style.left=d+"px"}else{const o=t.right-r.right,a=window.innerWidth-n.right-o,l=window.innerWidth-e.right-a,i=e.width+l,s=Math.max(i,t.width),u=window.innerWidth-ra,d=Ho(a,[ra,u-s]);c.style.minWidth=i+"px",c.style.right=d+"px"}const a=m(),i=window.innerHeight-2*ra,s=w.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),p=parseInt(d.paddingTop,10),h=parseInt(d.borderBottomWidth,10),g=f+p+s+parseInt(d.paddingBottom,10)+h,y=Math.min(5*b.offsetHeight,g),_=window.getComputedStyle(w),x=parseInt(_.paddingTop,10),C=parseInt(_.paddingBottom,10),O=e.top+e.height/2-ra,S=i-O,k=b.offsetHeight/2,D=f+p+(b.offsetTop+k),T=g-D;if(D<=O){const e=b===a[a.length-1].ref.current;c.style.bottom="0px";const t=u.clientHeight-w.offsetTop-w.offsetHeight,n=D+Math.max(S,k+(e?C:0)+t+h);c.style.height=n+"px"}else{const e=b===a[0].ref.current;c.style.top="0px";const t=Math.max(O,f+w.offsetTop+(e?x:0)+k)+T;c.style.height=t+"px",w.scrollTop=D-O+w.offsetTop}c.style.margin=`${ra}px 0`,c.style.minHeight=y+"px",c.style.maxHeight=i+"px",null==o||o(),requestAnimationFrame((()=>v.current=!0))}}),[m,l.trigger,l.valueNode,c,u,w,b,E,l.dir,o]);y((()=>x()),[x]);const[C,O]=e.useState();y((()=>{u&&O(window.getComputedStyle(u).zIndex)}),[u]);const S=e.useCallback((e=>{e&&!0===g.current&&(x(),null==_||_(),g.current=!1)}),[x,_]);return e.createElement(sa,{scope:r,contentWrapper:c,shouldExpandOnScrollRef:v,onScrollButtonChange:S},e.createElement("div",{ref:s,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:C}},e.createElement(R.div,p({},a,{ref:f,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}}))))})),ca=e.forwardRef(((t,n)=>{const{__scopeSelect:r,align:o="start",collisionPadding:a=ra,...l}=t,i=$o(r);return e.createElement(oo,p({},i,l,{ref:n,align:o,collisionPadding:a,style:{boxSizing:"border-box",...l.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[sa,ua]=zo(ta,{}),da="SelectViewport",fa=e.forwardRef(((t,n)=>{const{__scopeSelect:r,...o}=t,a=aa(da,r),l=ua(da,r),i=h(n,a.onViewportChange),c=e.useRef(0);return e.createElement(e.Fragment,null,e.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),e.createElement(Uo.Slot,{scope:r},e.createElement(R.div,p({"data-radix-select-viewport":"",role:"presentation"},o,{ref:i,style:{position:"relative",flex:1,overflow:"auto",...o.style},onScroll:m(o.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=l;if(null!=r&&r.current&&n){const e=Math.abs(c.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*ra,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),l=Math.max(o,a);if(l<r){const o=l+e,a=Math.min(r,o),i=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=i>0?i:0,n.style.justifyContent="flex-end")}}}c.current=t.scrollTop}))}))))}));zo("SelectGroup");const pa="SelectItem",[ma,va]=zo(pa),ha=e.forwardRef(((t,n)=>{const{__scopeSelect:r,value:o,disabled:a=!1,textValue:l,...i}=t,c=Go(pa,r),s=aa(pa,r),u=c.value===o,[d,f]=e.useState(null!=l?l:""),[v,g]=e.useState(!1),w=h(n,(e=>{var t;return null===(t=s.itemRefCallback)||void 0===t?void 0:t.call(s,e,o,a)})),y=_(),b=()=>{a||(c.onValueChange(o),c.onOpenChange(!1))};return e.createElement(ma,{scope:r,value:o,disabled:a,textId:y,isSelected:u,onItemTextChange:e.useCallback((e=>{f((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},e.createElement(Uo.ItemSlot,{scope:r,value:o,disabled:a,textValue:d},e.createElement(R.div,p({role:"option","aria-labelledby":y,"data-highlighted":v?"":void 0,"aria-selected":u&&v,"data-state":u?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1},i,{ref:w,onFocus:m(i.onFocus,(()=>g(!0))),onBlur:m(i.onBlur,(()=>g(!1))),onPointerUp:m(i.onPointerUp,b),onPointerMove:m(i.onPointerMove,(e=>{var t;a?null===(t=s.onItemLeave)||void 0===t||t.call(s):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:m(i.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=s.onItemLeave)||void 0===t||t.call(s))})),onKeyDown:m(i.onKeyDown,(e=>{var t;""!==(null===(t=s.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(Zo.includes(e.key)&&b()," "===e.key&&e.preventDefault())}))}))))})),ga="SelectItemText",wa=e.forwardRef(((n,r)=>{const{__scopeSelect:o,className:a,style:l,...i}=n,c=Go(ga,o),s=aa(ga,o),u=va(ga,o),d=Yo(ga,o),[f,m]=e.useState(null),v=h(r,(e=>m(e)),u.onItemTextChange,(e=>{var t;return null===(t=s.itemTextRefCallback)||void 0===t?void 0:t.call(s,e,u.value,u.disabled)})),g=null==f?void 0:f.textContent,w=e.useMemo((()=>e.createElement("option",{key:u.value,value:u.value,disabled:u.disabled},g)),[u.disabled,u.value,g]),{onNativeOptionAdd:b,onNativeOptionRemove:E}=d;return y((()=>(b(w),()=>E(w))),[b,E,w]),e.createElement(e.Fragment,null,e.createElement(R.span,p({id:u.textId},i,{ref:v})),u.isSelected&&c.valueNode&&!c.valueNodeHasChildren?t.createPortal(i.children,c.valueNode):null)})),ya="SelectScrollUpButton",ba=e.forwardRef(((t,n)=>{const r=aa(ya,t.__scopeSelect),o=ua(ya,t.__scopeSelect),[a,l]=e.useState(!1),i=h(n,o.onScrollButtonChange);return y((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollTop>0;l(t)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),a?e.createElement(xa,p({},t,{ref:i,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),Ea="SelectScrollDownButton",_a=e.forwardRef(((t,n)=>{const r=aa(Ea,t.__scopeSelect),o=ua(Ea,t.__scopeSelect),[a,l]=e.useState(!1),i=h(n,o.onScrollButtonChange);return y((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollHeight-e.clientHeight,n=Math.ceil(e.scrollTop)<t;l(n)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),a?e.createElement(xa,p({},t,{ref:i,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),xa=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onAutoScroll:o,...a}=t,l=aa("SelectScrollButton",r),i=e.useRef(null),c=Bo(r),s=e.useCallback((()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)}),[]);return e.useEffect((()=>()=>s()),[s]),y((()=>{var e;const t=c().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[c]),e.createElement(R.div,p({"aria-hidden":!0},a,{ref:n,style:{flexShrink:0,...a.style},onPointerDown:m(a.onPointerDown,(()=>{null===i.current&&(i.current=window.setInterval(o,50))})),onPointerMove:m(a.onPointerMove,(()=>{var e;null===(e=l.onItemLeave)||void 0===e||e.call(l),null===i.current&&(i.current=window.setInterval(o,50))})),onPointerLeave:m(a.onPointerLeave,(()=>{s()}))}))})),Ca=e.forwardRef(((t,n)=>{const{value:r,...o}=t,a=e.useRef(null),l=h(n,a),i=fn(r);return e.useEffect((()=>{const e=a.current,t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,"value").set;if(i!==r&&n){const t=new Event("change",{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}}),[i,r]),e.createElement(lo,{asChild:!0},e.createElement("select",p({},o,{ref:l,defaultValue:r})))}));function Oa(t){const n=x(t),r=e.useRef(""),o=e.useRef(0),a=e.useCallback((e=>{const t=r.current+e;n(t),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout((()=>e("")),1e3))}(t)}),[n]),l=e.useCallback((()=>{r.current="",window.clearTimeout(o.current)}),[]);return e.useEffect((()=>()=>window.clearTimeout(o.current)),[]),[r,a,l]}function Sa(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(l=e,i=Math.max(o,0),l.map(((e,t)=>l[(i+t)%l.length])));var l,i;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}Ca.displayName="BubbleSelect";const ka=t=>{const{__scopeSelect:n,children:r,open:o,defaultOpen:a,onOpenChange:l,value:i,defaultValue:c,onValueChange:s,dir:u,name:d,autoComplete:f,disabled:p,required:m}=t,v=$o(n),[h,g]=e.useState(null),[w,y]=e.useState(null),[b,E]=e.useState(!1),x=At(u),[O=!1,S]=C({prop:o,defaultProp:a,onChange:l}),[k,D]=C({prop:i,defaultProp:c,onChange:s}),T=e.useRef(null),R=!h||Boolean(h.closest("form")),[A,P]=e.useState(new Set),M=Array.from(A).map((e=>e.props.value)).join(";");return e.createElement(no,v,e.createElement(qo,{required:m,scope:n,trigger:h,onTriggerChange:g,valueNode:w,onValueNodeChange:y,valueNodeHasChildren:b,onValueNodeHasChildrenChange:E,contentId:_(),value:k,onValueChange:D,open:O,onOpenChange:S,dir:x,triggerPointerDownPosRef:T,disabled:p},e.createElement(Uo.Provider,{scope:n},e.createElement(Xo,{scope:t.__scopeSelect,onNativeOptionAdd:e.useCallback((e=>{P((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:e.useCallback((e=>{P((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},r)),R?e.createElement(Ca,{key:M,"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:f,value:k,onChange:e=>D(e.target.value),disabled:p},void 0===k?e.createElement("option",{value:""}):null,Array.from(A)):null))},Da=Jo,Ta=Qo,Ra=ea,Aa=na,Pa=fa,Ma=ha,Ia=wa,La=ba,Na=_a;var ja,Ha;function Fa(){return Fa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fa.apply(this,arguments)}var Za,Va;function Ua(){return Ua=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ua.apply(this,arguments)}var Ba,Wa;function za(){return za=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},za.apply(this,arguments)}var Ka,$a;function qa(){return qa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qa.apply(this,arguments)}var Ga,Xa;function Ya(){return Ya=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ya.apply(this,arguments)}var Ja,Qa;function el(){return el=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},el.apply(this,arguments)}var tl,nl;function rl(){return rl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rl.apply(this,arguments)}var ol,al;function ll(){return ll=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ll.apply(this,arguments)}var il,cl;function sl(){return sl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sl.apply(this,arguments)}var ul,dl,fl=function(e){return r.createElement("svg",sl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},il||(il=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),cl||(cl=r.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function pl(){return pl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pl.apply(this,arguments)}var ml,vl;function hl(){return hl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},hl.apply(this,arguments)}var gl,wl;function yl(){return yl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yl.apply(this,arguments)}var bl,El;function _l(){return _l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_l.apply(this,arguments)}var xl,Cl;function Ol(){return Ol=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ol.apply(this,arguments)}var Sl,kl;function Dl(){return Dl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Dl.apply(this,arguments)}var Tl,Rl;function Al(){return Al=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Al.apply(this,arguments)}var Pl,Ml;function Il(){return Il=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Il.apply(this,arguments)}var Ll,Nl;function jl(){return jl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},jl.apply(this,arguments)}var Hl,Fl;function Zl(){return Zl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Zl.apply(this,arguments)}var Vl,Ul;function Bl(){return Bl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Bl.apply(this,arguments)}var Wl,zl;function Kl(){return Kl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kl.apply(this,arguments)}var $l,ql;function Gl(){return Gl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Gl.apply(this,arguments)}var Xl,Yl;function Jl(){return Jl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jl.apply(this,arguments)}var Ql=Object.freeze({__proto__:null,AddIcon:function(e){return r.createElement("svg",Fa({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ja||(ja=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ha||(Ha=r.createElement("g",{mask:"url(#add_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:fl,BlockIcon:function(e){return r.createElement("svg",Ua({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Za||(Za=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Va||(Va=r.createElement("g",{mask:"url(#block_svg__a)"},r.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(e){return r.createElement("svg",za({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ba||(Ba=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Wa||(Wa=r.createElement("g",{mask:"url(#blur_on_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(e){return r.createElement("svg",qa({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ka||(Ka=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),$a||($a=r.createElement("g",{mask:"url(#cached_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CheckCircleIcon:function(e){return r.createElement("svg",Ya({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ga||(Ga=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xa||(Xa=r.createElement("g",{mask:"url(#check_circle_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CloseIcon:Dt,DeleteIcon:function(e){return r.createElement("svg",el({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ja||(Ja=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Qa||(Qa=r.createElement("g",{mask:"url(#delete_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},InfoIcon:function(e){return r.createElement("svg",rl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},tl||(tl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),nl||(nl=r.createElement("g",{mask:"url(#info_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(e){return r.createElement("svg",ll({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ol||(ol=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),al||(al=r.createElement("g",{mask:"url(#info-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MicOffIcon:function(e){return r.createElement("svg",yl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},gl||(gl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),wl||(wl=r.createElement("g",{mask:"url(#mic_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(e){return r.createElement("svg",_l({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},bl||(bl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),El||(El=r.createElement("g",{mask:"url(#mic_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(e){return r.createElement("svg",pl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ul||(ul=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),dl||(dl=r.createElement("g",{mask:"url(#mic-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(e){return r.createElement("svg",hl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ml||(ml=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vl||(vl=r.createElement("g",{mask:"url(#mic_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},VideoCamOffIcon:function(e){return r.createElement("svg",Il({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Pl||(Pl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ml||(Ml=r.createElement("g",{mask:"url(#videocam_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(e){return r.createElement("svg",Al({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Tl||(Tl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Rl||(Rl=r.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(e){return r.createElement("svg",Dl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Sl||(Sl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),kl||(kl=r.createElement("g",{mask:"url(#videocam_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(e){return r.createElement("svg",Ol({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},xl||(xl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Cl||(Cl=r.createElement("g",{mask:"url(#videocam-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(e){return r.createElement("svg",jl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ll||(Ll=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Nl||(Nl=r.createElement("g",{mask:"url(#volume_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(e){return r.createElement("svg",Zl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Hl||(Hl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Fl||(Fl=r.createElement("g",{mask:"url(#volume_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(e){return r.createElement("svg",Bl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Vl||(Vl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ul||(Ul=r.createElement("g",{mask:"url(#volume_up-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(e){return r.createElement("svg",Kl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Wl||(Wl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),zl||(zl=r.createElement("g",{mask:"url(#volume_up_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(e){return r.createElement("svg",Jl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Xl||(Xl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Yl||(Yl=r.createElement("g",{mask:"url(#warning-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(e){return r.createElement("svg",Gl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$l||($l=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ql||(ql=r.createElement("g",{mask:"url(#warning_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}}),ei="Select-modules_trigger__dS9Dx",ti="Select-modules_icon__sgRRc",ni="Select-modules_startIcon__kohMV",ri="Select-modules_value__h6Q4Z",oi="Select-modules_content__YuAqS",ai="Select-modules_item__cTAIm",li=e.forwardRef((function(t,n){var r=t.children,o=t.sideOffset,i=void 0===o?4:o,c=t.position,s=void 0===c?"popper":c,u=t.disabled,d=void 0!==u&&u,f=t.value,p=void 0===f?"":f,m=t.id,v=t.icon,h=void 0===v?null:v,g=t.placeholder,w=void 0===g?"":g,y=l(t,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return e.createElement(ka,a({value:p||void 0,disabled:d},y),e.createElement(Da,{id:m,ref:n,className:ei},h&&e.createElement("span",{className:ni},h),e.createElement("span",{className:ri},e.createElement(Ta,{placeholder:w})),e.createElement(Ra,{className:ti},e.createElement(fl,null))),e.createElement(Aa,{position:s,className:oi,sideOffset:i},e.createElement(Pa,null,e.createElement(La,null,"ChevronUpIcon"),e.createElement(Pa,null,r),e.createElement(Na,null,"ChevronDownIcon"))))})),ii=e.forwardRef((function(t,n){var r=t.children,o=t.disabled,i=void 0!==o&&o,c=l(t,["children","disabled"]);return e.createElement(Ma,a({},c,{ref:n,className:ai,disabled:i}),r)})),ci=Ia;const si=e.forwardRef(((t,n)=>e.createElement(R.label,p({},t,{ref:n,onMouseDown:e=>{var n;null===(n=t.onMouseDown)||void 0===n||n.call(t,e),!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}))));var ui="Label-modules_label__rXO6J";var di={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};const fi="Progress",pi=100,[mi,vi]=g(fi),[hi,gi]=mi(fi),wi=e.forwardRef(((t,n)=>{const{__scopeProgress:r,value:o,max:a,getValueLabel:l=yi,...i}=t,c=_i(a)?a:pi,s=xi(o,c)?o:null,u=Ei(s)?l(s,c):void 0;return e.createElement(hi,{scope:r,value:s,max:c},e.createElement(R.div,p({"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":Ei(s)?s:void 0,"aria-valuetext":u,role:"progressbar","data-state":bi(s,c),"data-value":null!=s?s:void 0,"data-max":c},i,{ref:n})))}));wi.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!_i(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=_i(e.max)?e.max:pi;return null==r||xi(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function yi(e,t){return`${Math.round(e/t*100)}%`}function bi(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Ei(e){return"number"==typeof e}function _i(e){return Ei(e)&&!isNaN(e)&&e>0}function xi(e,t){return Ei(e)&&!isNaN(e)&&e<=t&&e>=0}const Ci=wi,Oi=e.forwardRef(((t,n)=>{var r;const{__scopeProgress:o,...a}=t,l=gi("ProgressIndicator",o);return e.createElement(R.div,p({"data-state":bi(l.value,l.max),"data-value":null!==(r=l.value)&&void 0!==r?r:void 0,"data-max":l.max},a,{ref:n}))}));var Si="Progress-modules_root__E0rHH",ki="Progress-modules_indicator__qpwRi";const[Di,Ti]=g("AlertDialog",[We]),Ri=We(),Ai=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Ri(r);return e.createElement(pt,p({},a,o,{ref:n}))})),Pi="AlertDialogContent",[Mi,Ii]=Di(Pi),Li=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,children:o,...a}=t,l=Ri(r),i=h(n,e.useRef(null)),c=e.useRef(null);return e.createElement(st,{contentName:Pi,titleName:Ni,docsSlug:"alert-dialog"},e.createElement(Mi,{scope:r,cancelRef:c},e.createElement(mt,p({role:"alertdialog"},l,a,{ref:i,onOpenAutoFocus:m(a.onOpenAutoFocus,(e=>{var t;e.preventDefault(),null===(t=c.current)||void 0===t||t.focus({preventScroll:!0})})),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault()}),e.createElement(k,null,o),!1)))})),Ni="AlertDialogTitle",ji=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Ri(r);return e.createElement(vt,p({},a,o,{ref:n}))})),Hi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Ri(r);return e.createElement(ht,p({},a,o,{ref:n}))})),Fi=t=>{const{__scopeAlertDialog:n,...r}=t,o=Ri(n);return e.createElement(dt,p({},o,r,{modal:!0}))},Zi=t=>{const{__scopeAlertDialog:n,...r}=t,o=Ri(n);return e.createElement(ft,p({},o,r))},Vi=Ai,Ui=Li,Bi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Ri(r);return e.createElement(gt,p({},a,o,{ref:n}))})),Wi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,{cancelRef:a}=Ii("AlertDialogCancel",r),l=Ri(r),i=h(n,a);return e.createElement(gt,p({},l,o,{ref:i}))})),zi=ji,Ki=Hi;var $i={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"};exports.Alert=function(t){var n=t.onOpenChange,r=t.open,o=t.actionText,a=void 0===o?"OK":o,l=t.onActionClick,i=t.cancelText,c=void 0===i?"Cancel":i,s=t.onCancelClick,u=t.title,d=t.description,p=void 0===d?"":d;return e.createElement(Fi,{open:r,onOpenChange:n},e.createElement(Zi,{className:$i.portal},e.createElement(Vi,{className:$i.overlay}),e.createElement(Ui,{className:$i.content},e.createElement("button",{className:$i.close,onClick:function(){return n(!1)},"data-testid":"close-button"},e.createElement(Dt,null)),e.createElement(zi,{className:$i.title},u),p&&e.createElement(Ki,{className:$i.description},p),e.createElement("div",{className:$i.buttons},e.createElement(Wi,{asChild:!0},e.createElement(f,{onClick:s,variant:"outline"},c)),e.createElement(Bi,{asChild:!0},e.createElement(f,{onClick:l,variant:"danger"},a))))))},exports.Button=f,exports.FormGroup=function(t){var n,r=t.children,o=t.position,a=void 0===o?"vertical":o,l=t.justify,i=void 0===l?"start":l,c=t.alignItems,s=void 0===c?"start":c;return e.createElement("div",{className:u(di.formGroup,(n={},n[di.horizontal]="horizontal"===a,n[di.vertical]="vertical"===a,n[di[i]]=!!i,n[di["".concat(s,"AlignItems")]]=!!s,n))},r)},exports.Label=function(t){var n=t.htmlFor,r=t.children;return e.createElement(si,{htmlFor:n,className:ui},r)},exports.Modal=function(t){var n,r,o=t.children,a=t.open,l=t.onOpenChange,i=t.title,c=t.hideCloseButton,s=void 0!==c&&c,d=t.contentClassName,f=void 0===d?"":d,p=t.maxHeight,m=void 0===p?"auto":p,v=t.width,h=void 0===v?"432px":v;return e.createElement(dt,{open:a,onOpenChange:l},e.createElement(ft,null,e.createElement(pt,{className:bt},e.createElement(mt,{className:u(Ot,(n={},n[f]=!!f,n)),style:{maxHeight:m,width:h}},e.createElement("div",{className:Et},i&&e.createElement(vt,{className:u(xt,(r={},r[Ct]=!!s,r))},i),!s&&e.createElement(gt,{className:_t},e.createElement(Dt,null))),e.createElement("div",{className:St},o)))))},exports.Progress=function(t){var n=t.max,r=void 0===n?100:n,o=t.progress,i=void 0===o?0:o,c=l(t,["max","progress"]),s=i>r?"100%":"".concat(i/r*100,"%");return e.createElement(Ci,a({className:Si,value:i>r?r:i,max:r},c),e.createElement(Oi,{className:ki,style:{width:s}}))},exports.Select=li,exports.SelectItem=ii,exports.SelectItemText=ci,exports.Switch=function(t){var n,r=t.className,o=void 0===r?"":r,i=t.id,c=void 0===i?"":i,s=t.disabled,d=void 0!==s&&s,f=t.required,p=void 0!==f&&f,m=t.name,v=l(t,["className","id","disabled","required","name"]);return e.createElement(_n,a({className:u(Cn,(n={},n[o]=o,n)),disabled:d,required:p,name:m,id:c||m},v),e.createElement(xn,{className:On}))},exports.Tab=function(t){var n,r=t.children,o=t.className,i=void 0===o?"":o,c=l(t,["children","className"]);return e.createElement(an,a({},c,{className:u(un,(n={},n[i]=i,n))}),r)},exports.TabsContent=function(t){var n,r=t.children,o=t.value,a=t.className,l=void 0===a?"":a;return e.createElement(ln,{value:o,className:u(dn,(n={},n[l]=l,n))},r)},exports.TabsList=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o;return e.createElement(on,{className:u(sn,(n={},n[a]=a,n))},r)},exports.TabsRoot=function(t){var n,r=t.children,o=t.className,i=void 0===o?"":o,c=l(t,["children","className"]);return e.createElement(rn,a({},c,{className:u(cn,(n={},n[i]=i,n))}),r)},exports.Tooltip=function(t){var n,r=t.children,o=t.content,i=t.open,c=t.defaultOpen,s=t.onOpenChange,d=t.side,f=void 0===d?"top":d,p=t.align,m=void 0===p?"center":p,v=t.className,h=void 0===v?"":v,g=t.delayDuration,w=void 0===g?200:g,y=t.sideOffset,b=void 0===y?4:y,E=t.isPortal,_=void 0!==E&&E,x=l(t,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),C=e.createElement(Io,a({sideOffset:b,side:f,align:m},x,{className:u(No,(n={},n[h]=h,n))}),o,e.createElement(Lo,{className:jo,width:11,height:5}));return o?e.createElement(Ro,null,e.createElement(Ao,{delayDuration:w,open:i,defaultOpen:c,onOpenChange:s},e.createElement(Po,{asChild:!0},r),_?e.createElement(Mo,null,C):C)):r},exports.icons=Ql;
|
|
7
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtaWQvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNsb3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93bi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcnRhbC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2UvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkcy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VNZXJnZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L3VzZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L2Fzc2lnblJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2Utc2lkZWNhci9kaXN0L2VzMjAxNS9tZWRpdW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLXNpZGVjYXIvZGlzdC9lczIwMTUvZXhwb3J0cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L21lZGl1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1VJLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9zaW5nbGV0b24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2V0LW5vbmNlL2Rpc3QvZXMyMDE1L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2hvb2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvdXRpbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvY29tcG9uZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvYWdncmVzaXZlQ2FwdHVyZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L2hhbmRsZVNjcm9sbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1NpZGVFZmZlY3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9zaWRlY2FyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvQ29tYmluYXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJpYS1oaWRkZW4vZGlzdC9lczIwMTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9jbG9zZS5zdmciLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtcm92aW5nLWZvY3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10YWJzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zd2l0Y2gvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QtZG9tL2Rpc3QvZmxvYXRpbmctdWkucmVhY3QtZG9tLmVzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtYXJyb3cvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcHBlci9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10b29sdGlwL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9udW1iZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9hZGQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2Jsb2NrLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9ibHVyX29uLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jYWNoZWQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2NoZWNrX2NpcmNsZS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvZGVsZXRlLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9pbmZvLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9pbmZvLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2tleWJvYXJkX2Fycm93X2Rvd24uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pYy0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWMuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pY19vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljX29mZi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW0tMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW0uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtX29mZi0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92aWRlb2NhbV9vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX29mZi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX3VwLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV91cC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvd2FybmluZy5zdmciLCIuLi8uLi9zcmMvaWNvbnMvd2FybmluZy0xLnN2ZyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3QudHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1sYWJlbC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJvZ3Jlc3MvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFsZXJ0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FsZXJ0L0FsZXJ0LnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0Zvcm1Hcm91cC9Gb3JtR3JvdXAudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTGFiZWwvTGFiZWwudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUHJvZ3Jlc3MvUHJvZ3Jlc3MudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UYWJzL1RhYnMudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVG9vbHRpcC9Ub29sdGlwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbixcclxuICAgIF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtLFxyXG4gICAgX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXMsXHJcbiAgICBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG59O1xyXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIixudWxsLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJmdW5jdGlvbiAkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMChvcmlnaW5hbEV2ZW50SGFuZGxlciwgb3VyRXZlbnRIYW5kbGVyLCB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSB2b2lkIDAgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIG91ckV2ZW50SGFuZGxlciA9PT0gbnVsbCB8fCBvdXJFdmVudEhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG91ckV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCBhcyBjb21wb3NlRXZlbnRIYW5kbGVyc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICQzdnFtciR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBTZXQgYSBnaXZlbiByZWYgdG8gYSBnaXZlbiB2YWx1ZVxuICogVGhpcyB1dGlsaXR5IHRha2VzIGNhcmUgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHJlZnM6IGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYodmFsdWUpO1xuICAgIGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbi8qKlxuICogQSB1dGlsaXR5IHRvIGNvbXBvc2UgbXVsdGlwbGUgcmVmcyB0b2dldGhlclxuICogQWNjZXB0cyBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSB7XG4gICAgcmV0dXJuIChub2RlKT0+cmVmcy5mb3JFYWNoKChyZWYpPT4kNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgbm9kZSlcbiAgICAgICAgKVxuICAgIDtcbn1cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbXBvc2VzIG11bHRpcGxlIHJlZnNcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUoLi4ucmVmcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICByZXR1cm4gJDN2cW1yJHVzZUNhbGxiYWNrKCQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmKC4uLnJlZnMpLCByZWZzKTtcbn1cblxuXG5cblxuZXhwb3J0IHskNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiBhcyBjb21wb3NlUmVmcywgJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUgYXMgdXNlQ29tcG9zZWRSZWZzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkM2JrQUskY3JlYXRlQ29udGV4dCwgdXNlTWVtbyBhcyAkM2JrQUskdXNlTWVtbywgY3JlYXRlRWxlbWVudCBhcyAkM2JrQUskY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkM2JrQUskdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gICAgY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGV4dCB9ID0gcHJvcHM7IC8vIE9ubHkgcmUtbWVtb2l6ZSB3aGVuIHByb3AgdmFsdWVzIGNoYW5nZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIGNvbnN0IHZhbHVlID0gJDNia0FLJHVzZU1lbW8oKCk9PmNvbnRleHRcbiAgICAgICAgLCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dChjb25zdW1lck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7IC8vIGlmIGEgZGVmYXVsdENvbnRleHQgd2Fzbid0IHNwZWNpZmllZCwgaXQncyBhIHJlcXVpcmVkIGNvbnRleHQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArICdQcm92aWRlcic7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUHJvdmlkZXIsXG4gICAgICAgIHVzZUNvbnRleHRcbiAgICBdO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogY3JlYXRlQ29udGV4dFNjb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogY3JlYXRlQ29udGV4dFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOShyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgQmFzZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgICAgICBkZWZhdWx0Q29udGV4dHMgPSBbXG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGV4dHMsXG4gICAgICAgICAgICBkZWZhdWx0Q29udGV4dFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgICAgICAgIGNvbnN0IENvbnRleHQgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV1baW5kZXhdKSB8fCBCYXNlQ29udGV4dDsgLy8gT25seSByZS1tZW1vaXplIHdoZW4gcHJvcCB2YWx1ZXMgY2hhbmdlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICQzYmtBSyR1c2VNZW1vKCgpPT5jb250ZXh0XG4gICAgICAgICAgICAsIE9iamVjdC52YWx1ZXMoY29udGV4dCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVzZUNvbnRleHQoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgQ29udGV4dCA9IChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGVbc2NvcGVOYW1lXVtpbmRleF0pIHx8IEJhc2VDb250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29udGV4dDsgLy8gaWYgYSBkZWZhdWx0Q29udGV4dCB3YXNuJ3Qgc3BlY2lmaWVkLCBpdCdzIGEgcmVxdWlyZWQgY29udGV4dC5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9IHJvb3RDb21wb25lbnROYW1lICsgJ1Byb3ZpZGVyJztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3ZpZGVyLFxuICAgICAgICAgICAgdXNlQ29udGV4dFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBjcmVhdGVTY29wZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBjcmVhdGVTY29wZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCk9PntcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHMgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV0pIHx8IHNjb3BlQ29udGV4dHM7XG4gICAgICAgICAgICByZXR1cm4gJDNia0FLJHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY29wZU5hbWVdOiBjb250ZXh0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGNvbnRleHRzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgICByZXR1cm4gW1xuICAgICAgICAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOSxcbiAgICAgICAgJGM1MTJjMjdhYjAyZWY4OTUkdmFyJGNvbXBvc2VDb250ZXh0U2NvcGVzKGNyZWF0ZVNjb3BlLCAuLi5jcmVhdGVDb250ZXh0U2NvcGVEZXBzKVxuICAgIF07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBjb21wb3NlQ29udGV4dFNjb3Blc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gICAgY29uc3QgYmFzZVNjb3BlID0gc2NvcGVzWzBdO1xuICAgIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICAgIGNvbnN0IGNyZWF0ZVNjb3BlMSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZSk9Pih7XG4gICAgICAgICAgICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlKCksXG4gICAgICAgICAgICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZS5zY29wZU5hbWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNjb3BlczEgPSBzY29wZUhvb2tzLnJlZHVjZSgobmV4dFNjb3BlcywgeyB1c2VTY29wZTogdXNlU2NvcGUgLCBzY29wZU5hbWU6IHNjb3BlTmFtZSAgfSk9PntcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY2FsbGluZyBhIGhvb2sgaW5zaWRlIGEgY2FsbGJhY2sgd2hpY2ggUmVhY3Qgd2FybnMgYWdhaW5zdCB0byBhdm9pZCBpbmNvbnNpc3RlbnRcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJzLCBob3dldmVyLCBzY29waW5nIGRvZXNuJ3QgaGF2ZSByZW5kZXIgc2lkZSBlZmZlY3RzIHNvIHdlIGlnbm9yZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZSA9IHNjb3BlUHJvcHNbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5uZXh0U2NvcGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U2NvcGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgcmV0dXJuICQzYmtBSyR1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgICAgICAgICBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIG5leHRTY29wZXMxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlMS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICAgIHJldHVybiBjcmVhdGVTY29wZTE7XG59XG5cblxuXG5cbmV4cG9ydCB7JGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkgYXMgY3JlYXRlQ29udGV4dCwgJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSBhcyBjcmVhdGVDb250ZXh0U2NvcGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGR4bHdIJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBPbiB0aGUgc2VydmVyLCBSZWFjdCBlbWl0cyBhIHdhcm5pbmcgd2hlbiBjYWxsaW5nIGB1c2VMYXlvdXRFZmZlY3RgLlxuICogVGhpcyBpcyBiZWNhdXNlIG5laXRoZXIgYHVzZUxheW91dEVmZmVjdGAgbm9yIGB1c2VFZmZlY3RgIHJ1biBvbiB0aGUgc2VydmVyLlxuICogV2UgdXNlIHRoaXMgc2FmZSB2ZXJzaW9uIHdoaWNoIHN1cHByZXNzZXMgdGhlIHdhcm5pbmcgYnkgcmVwbGFjaW5nIGl0IHdpdGggYSBub29wIG9uIHRoZSBzZXJ2ZXIuXG4gKlxuICogU2VlOiBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlbGF5b3V0ZWZmZWN0XG4gKi8gY29uc3QgJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgPSBCb29sZWFuKGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkgPyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IDogKCk9Pnt9O1xuXG5cblxuXG5leHBvcnQgeyQ5Zjc5NjU5ODg2OTQ2YzE2JGV4cG9ydCRlNWM1YTVmOTE3YTU4NzFjIGFzIHVzZUxheW91dEVmZmVjdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgKiBhcyAkMkFPRHgkcmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5jb25zdCAkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCA9ICQyQU9EeCRyZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldIHx8ICgoKT0+dW5kZWZpbmVkXG4pO1xubGV0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyhkZXRlcm1pbmlzdGljSWQpIHtcbiAgICBjb25zdCBbaWQsIHNldElkXSA9ICQyQU9EeCRyZWFjdC51c2VTdGF0ZSgkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCgpKTsgLy8gUmVhY3QgdmVyc2lvbnMgb2xkZXIgdGhhbiAxOCB3aWxsIGhhdmUgY2xpZW50LXNpZGUgaWRzIG9ubHkuXG4gICAgJDJBT0R4JHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoIWRldGVybWluaXN0aWNJZCkgc2V0SWQoKHJlYWN0SWQpPT5yZWFjdElkICE9PSBudWxsICYmIHJlYWN0SWQgIT09IHZvaWQgMCA/IHJlYWN0SWQgOiBTdHJpbmcoJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50KyspXG4gICAgICAgICk7XG4gICAgfSwgW1xuICAgICAgICBkZXRlcm1pbmlzdGljSWRcbiAgICBdKTtcbiAgICByZXR1cm4gZGV0ZXJtaW5pc3RpY0lkIHx8IChpZCA/IGByYWRpeC0ke2lkfWAgOiAnJyk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzcgYXMgdXNlSWR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VSZWYgYXMgJGx3aVdqJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRsd2lXaiR1c2VFZmZlY3QsIHVzZU1lbW8gYXMgJGx3aVdqJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbnZlcnRzIGEgY2FsbGJhY2sgdG8gYSByZWYgdG8gYXZvaWQgdHJpZ2dlcmluZyByZS1yZW5kZXJzIHdoZW4gcGFzc2VkIGFzIGFcbiAqIHByb3Agb3IgYXZvaWQgcmUtZXhlY3V0aW5nIGVmZmVjdHMgd2hlbiBwYXNzZWQgYXMgYSBkZXBlbmRlbmN5XG4gKi8gZnVuY3Rpb24gJGIxYjIzMTRmNWY5YTFkODQkZXhwb3J0JDI1YmVjOGM2ZjU0ZWU3OWEoY2FsbGJhY2spIHtcbiAgICBjb25zdCBjYWxsYmFja1JlZiA9ICRsd2lXaiR1c2VSZWYoY2FsbGJhY2spO1xuICAgICRsd2lXaiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGNhbGxiYWNrO1xuICAgIH0pOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MjQwXG4gICAgcmV0dXJuICRsd2lXaiR1c2VNZW1vKCgpPT4oLi4uYXJncyk9PntcbiAgICAgICAgICAgIHZhciBfY2FsbGJhY2tSZWYkY3VycmVudDtcbiAgICAgICAgICAgIHJldHVybiAoX2NhbGxiYWNrUmVmJGN1cnJlbnQgPSBjYWxsYmFja1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY2FsbGJhY2tSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NhbGxiYWNrUmVmJGN1cnJlbnQuY2FsbChjYWxsYmFja1JlZiwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAsIFtdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YSBhcyB1c2VDYWxsYmFja1JlZn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICRiblB3OSR1c2VDYWxsYmFjaywgdXNlU3RhdGUgYXMgJGJuUHc5JHVzZVN0YXRlLCB1c2VSZWYgYXMgJGJuUHc5JHVzZVJlZiwgdXNlRWZmZWN0IGFzICRiblB3OSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkYm5QdzkkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuZnVuY3Rpb24gJDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyh7IHByb3A6IHByb3AgLCBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgPSAoKT0+e30gIH0pIHtcbiAgICBjb25zdCBbdW5jb250cm9sbGVkUHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcF0gPSAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoe1xuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHByb3AgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2YWx1ZTEgPSBpc0NvbnRyb2xsZWQgPyBwcm9wIDogdW5jb250cm9sbGVkUHJvcDtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAkYm5QdzkkdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICAgIGNvbnN0IHNldFZhbHVlID0gJGJuUHc5JHVzZUNhbGxiYWNrKChuZXh0VmFsdWUpPT57XG4gICAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRlciA9IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIG5leHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHNldHRlcihwcm9wKSA6IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gcHJvcCkgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHNldFVuY29udHJvbGxlZFByb3AobmV4dFZhbHVlKTtcbiAgICB9LCBbXG4gICAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgc2V0VW5jb250cm9sbGVkUHJvcCxcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgdmFsdWUxLFxuICAgICAgICBzZXRWYWx1ZVxuICAgIF07XG59XG5mdW5jdGlvbiAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoeyBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgIH0pIHtcbiAgICBjb25zdCB1bmNvbnRyb2xsZWRTdGF0ZSA9ICRiblB3OSR1c2VTdGF0ZShkZWZhdWx0UHJvcCk7XG4gICAgY29uc3QgW3ZhbHVlXSA9IHVuY29udHJvbGxlZFN0YXRlO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9ICRiblB3OSR1c2VSZWYodmFsdWUpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICRiblB3OSR1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gICAgJGJuUHc5JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAocHJldlZhbHVlUmVmLmN1cnJlbnQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHByZXZWYWx1ZVJlZixcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIHVuY29udHJvbGxlZFN0YXRlO1xufVxuXG5cblxuXG5leHBvcnQgeyQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMgYXMgdXNlQ29udHJvbGxhYmxlU3RhdGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ5SXJqWCRmb3J3YXJkUmVmLCBDaGlsZHJlbiBhcyAkOUlyalgkQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50IGFzICQ5SXJqWCRpc1ZhbGlkRWxlbWVudCwgY3JlYXRlRWxlbWVudCBhcyAkOUlyalgkY3JlYXRlRWxlbWVudCwgY2xvbmVFbGVtZW50IGFzICQ5SXJqWCRjbG9uZUVsZW1lbnQsIEZyYWdtZW50IGFzICQ5SXJqWCRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VSZWZzIGFzICQ5SXJqWCRjb21wb3NlUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCA9IC8qI19fUFVSRV9fKi8gJDlJcmpYJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSAkOUlyalgkQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gICAgY29uc3Qgc2xvdHRhYmxlID0gY2hpbGRyZW5BcnJheS5maW5kKCQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZSk7XG4gICAgaWYgKHNsb3R0YWJsZSkge1xuICAgICAgICAvLyB0aGUgbmV3IGVsZW1lbnQgdG8gcmVuZGVyIGlzIHRoZSBvbmUgcGFzc2VkIGFzIGEgY2hpbGQgb2YgYFNsb3R0YWJsZWBcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IHNsb3R0YWJsZS5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbkFycmF5Lm1hcCgoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoY2hpbGQgPT09IHNsb3R0YWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIG5ldyBlbGVtZW50IHdpbGwgYmUgdGhlIG9uZSByZW5kZXJlZCwgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgIC8vIGluIGdyYWJiaW5nIGl0cyBjaGlsZHJlbiAoYG5ld0VsZW1lbnQucHJvcHMuY2hpbGRyZW5gKVxuICAgICAgICAgICAgICAgIGlmICgkOUlyalgkQ2hpbGRyZW4uY291bnQobmV3RWxlbWVudCkgPiAxKSByZXR1cm4gJDlJcmpYJENoaWxkcmVuLm9ubHkobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGNyZWF0ZUVsZW1lbnQoJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSwgJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBzbG90UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IC8qI19fUFVSRV9fKi8gJDlJcmpYJGNsb25lRWxlbWVudChuZXdFbGVtZW50LCB1bmRlZmluZWQsIG5ld0NoaWxkcmVuKSA6IG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lLCAkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNsb3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbik7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwLmRpc3BsYXlOYW1lID0gJ1Nsb3QnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdENsb25lXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUgPSAvKiNfX1BVUkVfXyovICQ5SXJqWCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uc2xvdFByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAoLyojX19QVVJFX18qLyAkOUlyalgkaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIC4uLiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRyZW4ucHJvcHMpLFxuICAgICAgICByZWY6IGZvcndhcmRlZFJlZiA/ICQ5SXJqWCRjb21wb3NlUmVmcyhmb3J3YXJkZWRSZWYsIGNoaWxkcmVuLnJlZikgOiBjaGlsZHJlbi5yZWZcbiAgICB9KTtcbiAgICByZXR1cm4gJDlJcmpYJENoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA+IDEgPyAkOUlyalgkQ2hpbGRyZW4ub25seShudWxsKSA6IG51bGw7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUuZGlzcGxheU5hbWUgPSAnU2xvdENsb25lJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNsb3R0YWJsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSA9ICh7IGNoaWxkcmVuOiBjaGlsZHJlbiAgfSk9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkOUlyalgkRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZShjaGlsZCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgY2hpbGQudHlwZSA9PT0gJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDU7XG59XG5mdW5jdGlvbiAkNWU2M2M5NjFmYzFjZTIxMSR2YXIkbWVyZ2VQcm9wcyhzbG90UHJvcHMsIGNoaWxkUHJvcHMpIHtcbiAgICAvLyBhbGwgY2hpbGQgcHJvcHMgc2hvdWxkIG92ZXJyaWRlXG4gICAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHtcbiAgICAgICAgLi4uY2hpbGRQcm9wc1xuICAgIH07XG4gICAgZm9yKGNvbnN0IHByb3BOYW1lIGluIGNoaWxkUHJvcHMpe1xuICAgICAgICBjb25zdCBzbG90UHJvcFZhbHVlID0gc2xvdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgaXNIYW5kbGVyID0gL15vbltBLVpdLy50ZXN0KHByb3BOYW1lKTtcbiAgICAgICAgaWYgKGlzSGFuZGxlcikge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGhhbmRsZXIgZXhpc3RzIG9uIGJvdGgsIHdlIGNvbXBvc2UgdGhlbVxuICAgICAgICAgICAgaWYgKHNsb3RQcm9wVmFsdWUgJiYgY2hpbGRQcm9wVmFsdWUpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgc2xvdFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbHNlIGlmIChzbG90UHJvcFZhbHVlKSBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHNsb3RQcm9wVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09ICdzdHlsZScpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0ge1xuICAgICAgICAgICAgLi4uc2xvdFByb3BWYWx1ZSxcbiAgICAgICAgICAgIC4uLmNoaWxkUHJvcFZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIGVsc2UgaWYgKHByb3BOYW1lID09PSAnY2xhc3NOYW1lJykgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbXG4gICAgICAgICAgICBzbG90UHJvcFZhbHVlLFxuICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWVcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5zbG90UHJvcHMsXG4gICAgICAgIC4uLm92ZXJyaWRlUHJvcHNcbiAgICB9O1xufVxuY29uc3QgJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MDtcblxuXG5cblxuZXhwb3J0IHskNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCBhcyBTbG90LCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSBhcyBTbG90dGFibGUsICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ0cTVGcSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ0cTVGcSRmb3J3YXJkUmVmLCB1c2VFZmZlY3QgYXMgJDRxNUZxJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkNHE1RnEkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkNHE1RnEkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDRxNUZxJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cbmNvbnN0ICQ4OTI3ZjZmMmFjYzRmMzg2JHZhciROT0RFUyA9IFtcbiAgICAnYScsXG4gICAgJ2J1dHRvbicsXG4gICAgJ2RpdicsXG4gICAgJ2Zvcm0nLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaW1nJyxcbiAgICAnaW5wdXQnLFxuICAgICdsYWJlbCcsXG4gICAgJ2xpJyxcbiAgICAnbmF2JyxcbiAgICAnb2wnLFxuICAgICdwJyxcbiAgICAnc3BhbicsXG4gICAgJ3N2ZycsXG4gICAgJ3VsJ1xuXTsgLy8gVGVtcG9yYXJ5IHdoaWxlIHdlIGF3YWl0IG1lcmdlIG9mIHRoaXMgZml4OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvcHVsbC81NTM5NlxuLy8gcHJldHRpZXItaWdub3JlXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQcmltaXRpdmVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQgPSAkODkyN2Y2ZjJhY2M0ZjM4NiR2YXIkTk9ERVMucmVkdWNlKChwcmltaXRpdmUsIG5vZGUpPT57XG4gICAgY29uc3QgTm9kZSA9IC8qI19fUFVSRV9fKi8gJDRxNUZxJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgYXNDaGlsZDogYXNDaGlsZCAsIC4uLnByaW1pdGl2ZVByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyAkNHE1RnEkU2xvdCA6IG5vZGU7XG4gICAgICAgICQ0cTVGcSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIHdpbmRvd1tTeW1ib2wuZm9yKCdyYWRpeC11aScpXSA9IHRydWU7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRxNUZxJGNyZWF0ZUVsZW1lbnQoQ29tcCwgJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcmltaXRpdmVQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICAgICAgfSkpO1xuICAgIH0pO1xuICAgIE5vZGUuZGlzcGxheU5hbWUgPSBgUHJpbWl0aXZlLiR7bm9kZX1gO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByaW1pdGl2ZSxcbiAgICAgICAgW25vZGVdOiBOb2RlXG4gICAgfTtcbn0sIHt9KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogRmx1c2ggY3VzdG9tIGV2ZW50IGRpc3BhdGNoXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9wdWxsLzEzNzhcbiAqXG4gKiBSZWFjdCBiYXRjaGVzICphbGwqIGV2ZW50IGhhbmRsZXJzIHNpbmNlIHZlcnNpb24gMTgsIHRoaXMgaW50cm9kdWNlcyBjZXJ0YWluIGNvbnNpZGVyYXRpb25zIHdoZW4gdXNpbmcgY3VzdG9tIGV2ZW50IHR5cGVzLlxuICpcbiAqIEludGVybmFsbHksIFJlYWN0IHByaW9yaXRpc2VzIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogIC0gZGlzY3JldGVcbiAqICAtIGNvbnRpbnVvdXNcbiAqICAtIGRlZmF1bHRcbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9hOGE0NzQyZjFjNTQ0OTNkZjAwZGE2NDhhM2Y5ZDI2ZTNkYjljOGI1L3BhY2thZ2VzL3JlYWN0LWRvbS9zcmMvZXZlbnRzL1JlYWN0RE9NRXZlbnRMaXN0ZW5lci5qcyNMMjk0LUwzNTBcbiAqXG4gKiBgZGlzY3JldGVgIGlzIGFuICBpbXBvcnRhbnQgZGlzdGluY3Rpb24gYXMgdXBkYXRlcyB3aXRoaW4gdGhlc2UgZXZlbnRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LlxuICogUmVhY3QgaG93ZXZlciwgaXMgbm90IGFibGUgdG8gaW5mZXIgdGhlIHByaW9yaXR5IG9mIGN1c3RvbSBldmVudCB0eXBlcyBkdWUgdG8gaG93IHRoZXkgYXJlIGRldGVjdGVkIGludGVybmFsbHkuXG4gKiBCZWNhdXNlIG9mIHRoaXMsIGl0J3MgcG9zc2libGUgZm9yIHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIHRvIGJlIHVuZXhwZWN0ZWRseSBiYXRjaGVkIHdoZW5cbiAqIGRpc3BhdGNoZWQgYnkgYW5vdGhlciBgZGlzY3JldGVgIGV2ZW50LlxuICpcbiAqIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIGFyZSBhcHBsaWVkIHByZWRpY3RhYmx5LCB3ZSBuZWVkIHRvIG1hbnVhbGx5IGZsdXNoIHRoZSBiYXRjaC5cbiAqIFRoaXMgdXRpbGl0eSBzaG91bGQgYmUgdXNlZCB3aGVuIGRpc3BhdGNoaW5nIGEgY3VzdG9tIGV2ZW50IGZyb20gd2l0aGluIGFub3RoZXIgYGRpc2NyZXRlYCBldmVudCwgdGhpcyB1dGlsaXR5XG4gKiBpcyBub3QgbmVzc2VzYXJ5IHdoZW4gZGlzcGF0Y2hpbmcga25vd24gZXZlbnQgdHlwZXMsIG9yIGlmIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgaW5zaWRlIGEgbm9uLWRpc2NyZXRlIGV2ZW50LlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBrbm93biBjbGljayDwn5GOXG4gKiB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQo4oCYY2xpY2vigJkpKVxuICpcbiAqIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgd2l0aGluIGEgbm9uLWRpc2NyZXRlIGV2ZW50IPCfkY5cbiAqIG9uU2Nyb2xsPXsoZXZlbnQpID0+IGV2ZW50LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCjigJhjdXN0b21UeXBl4oCZKSl9XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSB3aXRoaW4gYSBgZGlzY3JldGVgIGV2ZW50IPCfkY1cbiAqIG9uUG9pbnRlckRvd249eyhldmVudCkgPT4gZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KGV2ZW50LnRhcmdldCwgbmV3IEN1c3RvbUV2ZW50KOKAmGN1c3RvbVR5cGXigJkpKX1cbiAqXG4gKiBOb3RlOiB0aG91Z2ggUmVhY3QgY2xhc3NpZmllcyBgZm9jdXNgLCBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIGFzIGBkaXNjcmV0ZWAsIGl0J3MgIG5vdCByZWNvbW1lbmRlZCB0byB1c2VcbiAqIHRoaXMgdXRpbGl0eSB3aXRoIHRoZW0uIFRoaXMgaXMgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIGZvciB0aG9zZSBoYW5kbGVycyB0byBiZSBjYWxsZWQgaW1wbGljaXRseSBkdXJpbmcgcmVuZGVyXG4gKiBlLmcuIHdoZW4gZm9jdXMgaXMgd2l0aGluIGEgY29tcG9uZW50IGFzIGl0IGlzIHVubW91bnRlZCwgb3Igd2hlbiBtYW5hZ2luZyBmb2N1cyBvbiBtb3VudC5cbiAqLyBmdW5jdGlvbiAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkNmQxYTAzMTdiZGU3ZGU3Zih0YXJnZXQsIGV2ZW50KSB7XG4gICAgaWYgKHRhcmdldCkgJDRxNUZxJGZsdXNoU3luYygoKT0+dGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gICAgKTtcbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNDtcblxuXG5cblxuZXhwb3J0IHskODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCBhcyBQcmltaXRpdmUsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQ2ZDFhMDMxN2JkZTdkZTdmIGFzIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHQgYXMgJGtxd3BIJGNyZWF0ZUNvbnRleHQsIGZvcndhcmRSZWYgYXMgJGtxd3BIJGZvcndhcmRSZWYsIHVzZUNvbnRleHQgYXMgJGtxd3BIJHVzZUNvbnRleHQsIHVzZVN0YXRlIGFzICRrcXdwSCR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICRrcXdwSCR1c2VFZmZlY3QsIGNyZWF0ZUVsZW1lbnQgYXMgJGtxd3BIJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAka3F3cEgkdXNlUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGtxd3BIJFByaW1pdGl2ZSwgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50IGFzICRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka3F3cEgkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka3F3cEgkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VFc2NhcGVLZXlkb3duIGFzICRrcXdwSCR1c2VFc2NhcGVLZXlkb3dufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93blwiO1xuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpc21pc3NhYmxlTGF5ZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUUgPSAnRGlzbWlzc2FibGVMYXllcic7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUgPSAnZGlzbWlzc2FibGVMYXllci51cGRhdGUnO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIucG9pbnRlckRvd25PdXRzaWRlJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlJztcbmxldCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUNvbnRleHQoe1xuICAgIGxheWVyczogbmV3IFNldCgpLFxuICAgIGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOiBuZXcgU2V0KCksXG4gICAgYnJhbmNoZXM6IG5ldyBTZXQoKVxufSk7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgY29uc3QgeyBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCBvbkZvY3VzT3V0c2lkZTogb25Gb2N1c091dHNpZGUgLCBvbkludGVyYWN0T3V0c2lkZTogb25JbnRlcmFjdE91dHNpZGUgLCBvbkRpc21pc3M6IG9uRGlzbWlzcyAsIC4uLmxheWVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAka3F3cEgkdXNlQ29udGV4dCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRGlzbWlzc2FibGVMYXllckNvbnRleHQpO1xuICAgIGNvbnN0IFtub2RlMSwgc2V0Tm9kZV0gPSAka3F3cEgkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZTEgPT09IG51bGwgfHwgbm9kZTEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUxLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlJG93bmVyRG9jdW1lbnQgIT09IHZvaWQgMCA/IF9ub2RlJG93bmVyRG9jdW1lbnQgOiBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG4gICAgY29uc3QgWywgZm9yY2VdID0gJGtxd3BIJHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXROb2RlKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBsYXllcnMgPSBBcnJheS5mcm9tKGNvbnRleHQubGF5ZXJzKTtcbiAgICBjb25zdCBbaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdID0gW1xuICAgICAgICAuLi5jb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkXG4gICAgXS5zbGljZSgtMSk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXggPSBsYXllcnMuaW5kZXhPZihoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGluZGV4ID0gbm9kZTEgPyBsYXllcnMuaW5kZXhPZihub2RlMSkgOiAtMTtcbiAgICBjb25zdCBpc0JvZHlQb2ludGVyRXZlbnRzRGlzYWJsZWQgPSBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPiAwO1xuICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPSBpbmRleCA+PSBoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4O1xuICAgIGNvbnN0IHBvaW50ZXJEb3duT3V0c2lkZSA9ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUoKGV2ZW50KT0+e1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckRvd25PbkJyYW5jaCA9IFtcbiAgICAgICAgICAgIC4uLmNvbnRleHQuYnJhbmNoZXNcbiAgICAgICAgXS5zb21lKChicmFuY2gpPT5icmFuY2guY29udGFpbnModGFyZ2V0KVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWlzUG9pbnRlckV2ZW50c0VuYWJsZWQgfHwgaXNQb2ludGVyRG93bk9uQnJhbmNoKSByZXR1cm47XG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlID09PSBudWxsIHx8IG9uUG9pbnRlckRvd25PdXRzaWRlID09PSB2b2lkIDAgfHwgb25Qb2ludGVyRG93bk91dHNpZGUoZXZlbnQpO1xuICAgICAgICBvbkludGVyYWN0T3V0c2lkZSA9PT0gbnVsbCB8fCBvbkludGVyYWN0T3V0c2lkZSA9PT0gdm9pZCAwIHx8IG9uSW50ZXJhY3RPdXRzaWRlKGV2ZW50KTtcbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSBvbkRpc21pc3MgPT09IG51bGwgfHwgb25EaXNtaXNzID09PSB2b2lkIDAgfHwgb25EaXNtaXNzKCk7XG4gICAgfSwgb3duZXJEb2N1bWVudCk7XG4gICAgY29uc3QgZm9jdXNPdXRzaWRlID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZSgoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgaXNGb2N1c0luQnJhbmNoID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dC5icmFuY2hlc1xuICAgICAgICBdLnNvbWUoKGJyYW5jaCk9PmJyYW5jaC5jb250YWlucyh0YXJnZXQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpc0ZvY3VzSW5CcmFuY2gpIHJldHVybjtcbiAgICAgICAgb25Gb2N1c091dHNpZGUgPT09IG51bGwgfHwgb25Gb2N1c091dHNpZGUgPT09IHZvaWQgMCB8fCBvbkZvY3VzT3V0c2lkZShldmVudCk7XG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlID09PSBudWxsIHx8IG9uSW50ZXJhY3RPdXRzaWRlID09PSB2b2lkIDAgfHwgb25JbnRlcmFjdE91dHNpZGUoZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCB8fCBvbkRpc21pc3MoKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRXNjYXBlS2V5ZG93bigoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IGlzSGlnaGVzdExheWVyID0gaW5kZXggPT09IGNvbnRleHQubGF5ZXJzLnNpemUgLSAxO1xuICAgICAgICBpZiAoIWlzSGlnaGVzdExheWVyKSByZXR1cm47XG4gICAgICAgIG9uRXNjYXBlS2V5RG93biA9PT0gbnVsbCB8fCBvbkVzY2FwZUtleURvd24gPT09IHZvaWQgMCB8fCBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgb25EaXNtaXNzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgb25EaXNtaXNzKCk7XG4gICAgICAgIH1cbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghbm9kZTEpIHJldHVybjtcbiAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cykge1xuICAgICAgICAgICAgaWYgKGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzID0gb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM7XG4gICAgICAgICAgICAgICAgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmFkZChub2RlMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5sYXllcnMuYWRkKG5vZGUxKTtcbiAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyAmJiBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPT09IDEpIG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICBjb250ZXh0XG4gICAgXSk7XG4gICAgLyoqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBwcmV2ZW50IGNvbWJpbmluZyB0aGlzIGVmZmVjdCB3aXRoIHRoZSBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCBlZmZlY3RcbiAgICogYmVjYXVzZSBhIGNoYW5nZSB0byBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCB3b3VsZCByZW1vdmUgdGhpcyBsYXllciBmcm9tIHRoZSBzdGFja1xuICAgKiBhbmQgYWRkIGl0IHRvIHRoZSBlbmQgYWdhaW4gc28gdGhlIGxheWVyaW5nIG9yZGVyIHdvdWxkbid0IGJlIF9jcmVhdGlvbiBvcmRlcl8uXG4gICAqIFdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSBjb250ZXh0IHN0YWNrcyB3aGVuIHVubW91bnRlZC5cbiAgICovICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoIW5vZGUxKSByZXR1cm47XG4gICAgICAgICAgICBjb250ZXh0LmxheWVycy5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgY29udGV4dFxuICAgIF0pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlVXBkYXRlID0gKCk9PmZvcmNlKHt9KVxuICAgICAgICA7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpO1xuICAgICAgICByZXR1cm4gKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgbGF5ZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCA/IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPyAnYXV0bycgOiAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXNDYXB0dXJlLCBmb2N1c091dHNpZGUub25Gb2N1c0NhcHR1cmUpLFxuICAgICAgICBvbkJsdXJDYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyQ2FwdHVyZSwgZm9jdXNPdXRzaWRlLm9uQmx1ckNhcHR1cmUpLFxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25DYXB0dXJlLCBwb2ludGVyRG93bk91dHNpZGUub25Qb2ludGVyRG93bkNhcHR1cmUpXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllckJyYW5jaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUUgPSAnRGlzbWlzc2FibGVMYXllckJyYW5jaCc7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRrcXdwSCR1c2VDb250ZXh0KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG4gICAgY29uc3QgcmVmID0gJGtxd3BIJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGNvbnRleHQuYnJhbmNoZXMuYWRkKG5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgY29udGV4dC5icmFuY2hlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LmJyYW5jaGVzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIExpc3RlbnMgZm9yIGBwb2ludGVyZG93bmAgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuIFdlIHVzZSBgcG9pbnRlcmRvd25gIHJhdGhlciB0aGFuIGBwb2ludGVydXBgXG4gKiB0byBtaW1pYyBsYXllciBkaXNtaXNzaW5nIGJlaGF2aW91ciBwcmVzZW50IGluIE9TLlxuICogUmV0dXJucyBwcm9wcyB0byBwYXNzIHRvIHRoZSBub2RlIHdlIHdhbnQgdG8gY2hlY2sgZm9yIG91dHNpZGUgZXZlbnRzLlxuICovIGZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUob25Qb2ludGVyRG93bk91dHNpZGUsIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQpIHtcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAka3F3cEgkdXNlQ2FsbGJhY2tSZWYob25Qb2ludGVyRG93bk91dHNpZGUpO1xuICAgIGNvbnN0IGlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrUmVmID0gJGtxd3BIJHVzZVJlZigoKT0+e30pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmV0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIE9uIHRvdWNoIGRldmljZXMsIHdlIG5lZWQgdG8gd2FpdCBmb3IgYSBjbGljayBldmVudCBiZWNhdXNlIGJyb3dzZXJzIGltcGxlbWVudFxuICAgICAgICAgKiBhIH4zNTBtcyBkZWxheSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSB1c2VyIHN0b3BzIHRvdWNoaW5nIHRoZSBkaXNwbGF5IGFuZCB3aGVuIHRoZVxuICAgICAgICAgKiBicm93c2VyIGV4ZWN1dHJlcyBldmVudHMuIFdlIG5lZWQgdG8gZW5zdXJlIHdlIGRvbid0IHJlYWN0aXZhdGUgcG9pbnRlci1ldmVudHMgd2l0aGluXG4gICAgICAgICAqIHRoaXMgdGltZWZyYW1lIG90aGVyd2lzZSB0aGUgYnJvd3NlciBtYXkgZXhlY3V0ZSBldmVudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHByZXZlbnRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQWRkaXRpb25hbGx5LCB0aGlzIGFsc28gbGV0cyB1cyBkZWFsIGF1dG9tYXRpY2FsbHkgd2l0aCBjYW5jZWxsYXRpb25zIHdoZW4gYSBjbGljayBldmVudFxuICAgICAgICAgKiBpc24ndCByYWlzZWQgYmVjYXVzZSB0aGUgcGFnZSB3YXMgY29uc2lkZXJlZCBzY3JvbGxlZC9kcmFnLXNjcm9sbGVkLCBsb25nLXByZXNzZWQsIGV0Yy5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhpcyBpcyB3aHkgd2UgYWxzbyBjb250aW51b3VzbHkgcmVtb3ZlIHRoZSBwcmV2aW91cyBsaXN0ZW5lciwgYmVjYXVzZSB3ZSBjYW5ub3QgYmVcbiAgICAgICAgICogY2VydGFpbiB0aGF0IGl0IHdhcyByYWlzZWQsIGFuZCB0aGVyZWZvcmUgY2xlYW5lZC11cC5cbiAgICAgICAgICovIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQgPSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICogaWYgdGhpcyBob29rIGV4ZWN1dGVzIGluIGEgY29tcG9uZW50IHRoYXQgbW91bnRzIHZpYSBhIGBwb2ludGVyZG93bmAgZXZlbnQsIHRoZSBldmVudFxuICAgICAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgZG9jdW1lbnQgYW5kIHRyaWdnZXIgYSBgcG9pbnRlckRvd25PdXRzaWRlYCBldmVudC4gV2UgYXZvaWRcbiAgICAgKiB0aGlzIGJ5IGRlbGF5aW5nIHRoZSBldmVudCBsaXN0ZW5lciByZWdpc3RyYXRpb24gb24gdGhlIGRvY3VtZW50LlxuICAgICAqIFRoaXMgaXMgbm90IFJlYWN0IHNwZWNpZmljLCBidXQgcmF0aGVyIGhvdyB0aGUgRE9NIHdvcmtzLCBpZTpcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZygnSSB3aWxsIGxvZycpO1xuICAgICAqICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdJIHdpbGwgYWxzbyBsb2cnKTtcbiAgICAgKiAgIH0pXG4gICAgICogfSk7XG4gICAgICovIGNvbnN0IHRpbWVySWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBvd25lckRvY3VtZW50LFxuICAgICAgICBoYW5kbGVQb2ludGVyRG93bk91dHNpZGVcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBlbnN1cmVzIHdlIGNoZWNrIFJlYWN0IGNvbXBvbmVudCB0cmVlIChub3QganVzdCBET00gdHJlZSlcbiAgICAgICAgb25Qb2ludGVyRG93bkNhcHR1cmU6ICgpPT5pc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9O1xufVxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIGZvY3VzIGhhcHBlbnMgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIHJvb3QgKG5vZGUpIG9mIHRoZSBzdWJ0cmVlIHdlIHdhbnQgdG8gY2hlY2suXG4gKi8gZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZShvbkZvY3VzT3V0c2lkZSwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzT3V0c2lkZSA9ICRrcXdwSCR1c2VDYWxsYmFja1JlZihvbkZvY3VzT3V0c2lkZSk7XG4gICAgY29uc3QgaXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudERldGFpbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFLCBoYW5kbGVGb2N1c091dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc2NyZXRlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1cyk7XG4gICAgICAgIHJldHVybiAoKT0+b3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXMpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAgIGhhbmRsZUZvY3VzT3V0c2lkZVxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9uRm9jdXNDYXB0dXJlOiAoKT0+aXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAsXG4gICAgICAgIG9uQmx1ckNhcHR1cmU6ICgpPT5pc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH07XG59XG5mdW5jdGlvbiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKSB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFKTtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn1cbmZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KG5hbWUsIGhhbmRsZXIsIGRldGFpbCwgeyBkaXNjcmV0ZTogZGlzY3JldGUgIH0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSBkZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQ7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiBkZXRhaWxcbiAgICB9KTtcbiAgICBpZiAoaGFuZGxlcikgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlciwge1xuICAgICAgICBvbmNlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGRpc2NyZXRlKSAka3F3cEgkZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KHRhcmdldCwgZXZlbnQpO1xuICAgIGVsc2UgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMjtcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCRhZWNiMmRkY2I1NWM5NWJlID0gJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjg7XG5cblxuXG5cbmV4cG9ydCB7JDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIgYXMgRGlzbWlzc2FibGVMYXllciwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjggYXMgRGlzbWlzc2FibGVMYXllckJyYW5jaCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGFlY2IyZGRjYjU1Yzk1YmUgYXMgQnJhbmNofTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlRWZmZWN0IGFzICRoUFNRNSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkaFBTUTUkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIHRoZSBlc2NhcGUga2V5IGlzIGRvd25cbiAqLyBmdW5jdGlvbiAkYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NShvbkVzY2FwZUtleURvd25Qcm9wLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSB7XG4gICAgY29uc3Qgb25Fc2NhcGVLZXlEb3duID0gJGhQU1E1JHVzZUNhbGxiYWNrUmVmKG9uRXNjYXBlS2V5RG93blByb3ApO1xuICAgICRoUFNRNSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgICAgICAgcmV0dXJuICgpPT5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG93bmVyRG9jdW1lbnRcbiAgICBdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NSBhcyB1c2VFc2NhcGVLZXlkb3dufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkNDVRSHYkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJDQ1UUh2JHVzZVN0YXRlLCB1c2VSZWYgYXMgJDQ1UUh2JHVzZVJlZiwgdXNlRWZmZWN0IGFzICQ0NVFIdiR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ0NVFIdiR1c2VDYWxsYmFjaywgY3JlYXRlRWxlbWVudCBhcyAkNDVRSHYkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkNDVRSHYkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDQ1UUh2JFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDQ1UUh2JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cblxuXG5cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQgPSAnZm9jdXNTY29wZS5hdXRvRm9jdXNPbk1vdW50JztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCc7XG5jb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyA9IHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlXG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRm9jdXNTY29wZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRSA9ICdGb2N1c1Njb3BlJztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2ID0gLyojX19QVVJFX18qLyAkNDVRSHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGxvb3A6IGxvb3AgPSBmYWxzZSAsIHRyYXBwZWQ6IHRyYXBwZWQgPSBmYWxzZSAsIG9uTW91bnRBdXRvRm9jdXM6IG9uTW91bnRBdXRvRm9jdXNQcm9wICwgb25Vbm1vdW50QXV0b0ZvY3VzOiBvblVubW91bnRBdXRvRm9jdXNQcm9wICwgLi4uc2NvcGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2NvbnRhaW5lcjEsIHNldENvbnRhaW5lcl0gPSAkNDVRSHYkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb25Nb3VudEF1dG9Gb2N1cyA9ICQ0NVFIdiR1c2VDYWxsYmFja1JlZihvbk1vdW50QXV0b0ZvY3VzUHJvcCk7XG4gICAgY29uc3Qgb25Vbm1vdW50QXV0b0ZvY3VzID0gJDQ1UUh2JHVzZUNhbGxiYWNrUmVmKG9uVW5tb3VudEF1dG9Gb2N1c1Byb3ApO1xuICAgIGNvbnN0IGxhc3RGb2N1c2VkRWxlbWVudFJlZiA9ICQ0NVFIdiR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGFpbmVyKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBmb2N1c1Njb3BlID0gJDQ1UUh2JHVzZVJlZih7XG4gICAgICAgIHBhdXNlZDogZmFsc2UsXG4gICAgICAgIHBhdXNlICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdW1lICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KS5jdXJyZW50OyAvLyBUYWtlcyBjYXJlIG9mIHRyYXBwaW5nIGZvY3VzIGlmIGZvY3VzIGlzIG1vdmVkIG91dHNpZGUgcHJvZ3JhbW1hdGljYWxseSBmb3IgZXhhbXBsZVxuICAgICQ0NVFIdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRyYXBwZWQpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzSW4oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQgfHwgIWNvbnRhaW5lcjEpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEuY29udGFpbnModGFyZ2V0KSkgbGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgZWxzZSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMobGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1c091dChldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCB8fCAhY29udGFpbmVyMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0OyAvLyBBIGBmb2N1c291dGAgZXZlbnQgd2l0aCBhIGBudWxsYCBgcmVsYXRlZFRhcmdldGAgd2lsbCBoYXBwZW4gaW4gYXQgbGVhc3QgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMS4gV2hlbiB0aGUgdXNlciBzd2l0Y2hlcyBhcHAvdGFicy93aW5kb3dzL3RoZSBicm93c2VyIGl0c2VsZiBsb3NlcyBmb2N1cy5cbiAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCB3aGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBXZSBsZXQgdGhlIGJyb3dzZXIgZG8gaXRzIHRoaW5nIGhlcmUgYmVjYXVzZTpcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBicm93c2VyIGFscmVhZHkga2VlcHMgYSBtZW1vcnkgb2Ygd2hhdCdzIGZvY3VzZWQgZm9yIHdoZW4gdGhlIHBhZ2UgZ2V0cyByZWZvY3VzZWQuXG4gICAgICAgICAgICAgICAgLy8gMi4gSW4gR29vZ2xlIENocm9tZSwgaWYgd2UgdHJ5IHRvIGZvY3VzIHRoZSBkZWxldGVkIGZvY3VzZWQgZWxlbWVudCAoYXMgcGVyIGJlbG93KSwgaXRcbiAgICAgICAgICAgICAgICAvLyAgICB0aHJvd3MgdGhlIENQVSB0byAxMDAlLCBzbyB3ZSBhdm9pZCBkb2luZyBhbnl0aGluZyBmb3IgdGhpcyByZWFzb24gaGVyZSB0b28uXG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHJldHVybjsgLy8gSWYgdGhlIGZvY3VzIGhhcyBtb3ZlZCB0byBhbiBhY3R1YWwgbGVnaXRpbWF0ZSBlbGVtZW50IChgcmVsYXRlZFRhcmdldCAhPT0gbnVsbGApXG4gICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250YWluZXIsIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGxhc3QgdmFsaWQgZm9jdXNlZCBlbGVtZW50IGluc2lkZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcjEuY29udGFpbnMocmVsYXRlZFRhcmdldCkpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gLy8gV2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGJyb3dzZXJzIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIC8vIGJhY2sgdG8gdGhlIGRvY3VtZW50LmJvZHkuIEluIHRoaXMgY2FzZSwgd2UgbW92ZSBmb2N1cyB0byB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICAvLyB0byBrZWVwIGZvY3VzIHRyYXBwZWQgY29ycmVjdGx5LlxuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlTXV0YXRpb25zKG11dGF0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyl7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY29udGFpbmVyMSAhPT0gbnVsbCAmJiBjb250YWluZXIxICE9PSB2b2lkIDAgJiYgY29udGFpbmVyMS5jb250YWlucyhmb2N1c2VkRWxlbWVudCkpKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY29udGFpbmVyMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0KTtcbiAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEpIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIxLCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICAgICAgICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJhcHBlZCxcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgZm9jdXNTY29wZS5wYXVzZWRcbiAgICBdKTtcbiAgICAkNDVRSHYkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250YWluZXIxKSB7XG4gICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNTY29wZXNTdGFjay5hZGQoZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaGFzRm9jdXNlZENhbmRpZGF0ZSA9IGNvbnRhaW5lcjEuY29udGFpbnMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghaGFzRm9jdXNlZENhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuYWRkRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFtb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKCRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyMSkpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjb250YWluZXIxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgb25Nb3VudEF1dG9Gb2N1cyk7IC8vIFdlIGhpdCBhIHJlYWN0IGJ1ZyAoZml4ZWQgaW4gdjE3KSB3aXRoIGZvY3VzaW5nIGluIHVubW91bnQuXG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBkZWxheSB0aGUgZm9jdXMgYSBsaXR0bGUgdG8gZ2V0IGFyb3VuZCBpdCBmb3Igbm93LlxuICAgICAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNzg5NFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmFkZEV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQodW5tb3VudEV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1bm1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAhPT0gbnVsbCAmJiBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgIT09IHZvaWQgMCA/IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA6IGRvY3VtZW50LmJvZHksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lciBhZnRlciB3ZSBgZGlzcGF0Y2hFdmVudGBcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyMS5yZW1vdmVFdmVudExpc3RlbmVyKCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgb25Vbm1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2sucmVtb3ZlKGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzLFxuICAgICAgICBmb2N1c1Njb3BlXG4gICAgXSk7IC8vIFRha2VzIGNhcmUgb2YgbG9vcGluZyBmb2N1cyAod2hlbiB0YWJiaW5nIHdoaWxzdCBhdCB0aGUgZWRnZXMpXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICQ0NVFIdiR1c2VDYWxsYmFjaygoZXZlbnQpPT57XG4gICAgICAgIGlmICghbG9vcCAmJiAhdHJhcHBlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNUYWJLZXkgPSBldmVudC5rZXkgPT09ICdUYWInICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXk7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGlzVGFiS2V5ICYmIGZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCBsYXN0XSA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcik7XG4gICAgICAgICAgICBjb25zdCBoYXNUYWJiYWJsZUVsZW1lbnRzSW5zaWRlID0gZmlyc3QgJiYgbGFzdDsgLy8gd2UgY2FuIG9ubHkgd3JhcCBmb2N1cyBpZiB3ZSBoYXZlIHRhYmJhYmxlIGVkZ2VzXG4gICAgICAgICAgICBpZiAoIWhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgPT09IGNvbnRhaW5lcikgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGZpcnN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3ApICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBsb29wLFxuICAgICAgICB0cmFwcGVkLFxuICAgICAgICBmb2N1c1Njb3BlLnBhdXNlZFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0NVFIdiRjcmVhdGVFbGVtZW50KCQ0NVFIdiRQcmltaXRpdmUuZGl2LCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogLTFcbiAgICB9LCBzY29wZVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBVdGlsc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIEF0dGVtcHRzIGZvY3VzaW5nIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgbGlzdCBvZiBjYW5kaWRhdGVzLlxuICogU3RvcHMgd2hlbiBmb2N1cyBoYXMgYWN0dWFsbHkgbW92ZWQuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlcywgeyBzZWxlY3Q6IHNlbGVjdCA9IGZhbHNlICB9ID0ge30pIHtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY2FuZGlkYXRlLCB7XG4gICAgICAgICAgICBzZWxlY3Q6IHNlbGVjdFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkgcmV0dXJuO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYW5kIGxhc3QgdGFiYmFibGUgZWxlbWVudHMgaW5zaWRlIGEgY29udGFpbmVyLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcik7XG4gICAgY29uc3QgZmlyc3QgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUoY2FuZGlkYXRlcywgY29udGFpbmVyKTtcbiAgICBjb25zdCBsYXN0ID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZpbmRWaXNpYmxlKGNhbmRpZGF0ZXMucmV2ZXJzZSgpLCBjb250YWluZXIpO1xuICAgIHJldHVybiBbXG4gICAgICAgIGZpcnN0LFxuICAgICAgICBsYXN0XG4gICAgXTtcbn1cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgcG90ZW50aWFsIHRhYmJhYmxlIGNhbmRpZGF0ZXMuXG4gKlxuICogTk9URTogVGhpcyBpcyBvbmx5IGEgY2xvc2UgYXBwcm94aW1hdGlvbi4gRm9yIGV4YW1wbGUgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCBjYXNlcyBsaWtlIHdoZW5cbiAqIGVsZW1lbnRzIGFyZSBub3QgdmlzaWJsZS4gVGhpcyBjYW5ub3QgYmUgd29ya2VkIG91dCBlYXNpbHkgYnkganVzdCByZWFkaW5nIGEgcHJvcGVydHksIGJ1dCByYXRoZXJcbiAqIG5lY2Vzc2l0YXRlIHJ1bnRpbWUga25vd2xlZGdlIChjb21wdXRlZCBzdHlsZXMsIGV0YykuIFdlIGRlYWwgd2l0aCB0aGVzZSBjYXNlcyBzZXBhcmF0ZWx5LlxuICpcbiAqIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1RyZWVXYWxrZXJcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2Rpc2NvcmQvZm9jdXMtbGF5ZXJzL2Jsb2IvbWFzdGVyL3NyYy91dGlsL3dyYXBGb2N1cy50c3gjTDFcbiAqLyBmdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihjb250YWluZXIsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7XG4gICAgICAgIGFjY2VwdE5vZGU6IChub2RlKT0+e1xuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW5JbnB1dCA9IG5vZGUudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiBub2RlLnR5cGUgPT09ICdoaWRkZW4nO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGlzYWJsZWQgfHwgbm9kZS5oaWRkZW4gfHwgaXNIaWRkZW5JbnB1dCkgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7IC8vIGAudGFiSW5kZXhgIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuIEl0IHdvcmtzIG9uIHRoZVxuICAgICAgICAgICAgLy8gcnVudGltZSdzIHVuZGVyc3RhbmRpbmcgb2YgdGFiYmFiaWxpdHksIHNvIHRoaXMgYXV0b21hdGljYWxseSBhY2NvdW50c1xuICAgICAgICAgICAgLy8gZm9yIGFueSBraW5kIG9mIGVsZW1lbnQgdGhhdCBjb3VsZCBiZSB0YWJiZWQgdG8uXG4gICAgICAgICAgICByZXR1cm4gbm9kZS50YWJJbmRleCA+PSAwID8gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUIDogTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHdoaWxlKHdhbGtlci5uZXh0Tm9kZSgpKW5vZGVzLnB1c2god2Fsa2VyLmN1cnJlbnROb2RlKTsgLy8gd2UgZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBvcmRlciBvZiBub2RlcyB3aXRoIHBvc2l0aXZlIGB0YWJJbmRleGAgYXMgaXRcbiAgICAvLyBoaW5kZXJzIGFjY2Vzc2liaWxpdHkgdG8gaGF2ZSB0YWIgb3JkZXIgZGlmZmVyZW50IGZyb20gdmlzdWFsIG9yZGVyLlxuICAgIHJldHVybiBub2Rlcztcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgdmlzaWJsZSBlbGVtZW50IGluIGEgbGlzdC5cbiAqIE5PVEU6IE9ubHkgY2hlY2tzIHZpc2liaWxpdHkgdXAgdG8gdGhlIGBjb250YWluZXJgLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZShlbGVtZW50cywgY29udGFpbmVyKSB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKXtcbiAgICAgICAgLy8gd2Ugc3RvcCBjaGVja2luZyBpZiBpdCdzIGhpZGRlbiBhdCB0aGUgYGNvbnRhaW5lcmAgbGV2ZWwgKGV4Y2x1ZGluZylcbiAgICAgICAgaWYgKCEkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4oZWxlbWVudCwge1xuICAgICAgICAgICAgdXBUbzogY29udGFpbmVyXG4gICAgICAgIH0pKSByZXR1cm4gZWxlbWVudDtcbiAgICB9XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4obm9kZSwgeyB1cFRvOiB1cFRvICB9KSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbicpIHJldHVybiB0cnVlO1xuICAgIHdoaWxlKG5vZGUpe1xuICAgICAgICAvLyB3ZSBzdG9wIGF0IGB1cFRvYCAoZXhjbHVkaW5nIGl0KVxuICAgICAgICBpZiAodXBUbyAhPT0gdW5kZWZpbmVkICYmIG5vZGUgPT09IHVwVG8pIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkuZGlzcGxheSA9PT0gJ25vbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgJ3NlbGVjdCcgaW4gZWxlbWVudDtcbn1cbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhlbGVtZW50LCB7IHNlbGVjdDogc2VsZWN0ID0gZmFsc2UgIH0gPSB7fSkge1xuICAgIC8vIG9ubHkgZm9jdXMgaWYgdGhhdCBlbGVtZW50IGlzIGZvY3VzYWJsZVxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsgLy8gTk9URTogd2UgcHJldmVudCBzY3JvbGxpbmcgb24gZm9jdXMsIHRvIG1pbmltaXplIGphcnJpbmcgdHJhbnNpdGlvbnMgZm9yIHVzZXJzXG4gICAgICAgIGVsZW1lbnQuZm9jdXMoe1xuICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICB9KTsgLy8gb25seSBzZWxlY3QgaWYgaXRzIG5vdCB0aGUgc2FtZSBlbGVtZW50LCBpdCBzdXBwb3J0cyBzZWxlY3Rpb24gYW5kIHdlIG5lZWQgdG8gc2VsZWN0XG4gICAgICAgIGlmIChlbGVtZW50ICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgJiYgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpICYmIHNlbGVjdCkgZWxlbWVudC5zZWxlY3QoKTtcbiAgICB9XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlIHN0YWNrXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKTtcbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRjcmVhdGVGb2N1c1Njb3Blc1N0YWNrKCkge1xuICAgIC8qKiBBIHN0YWNrIG9mIGZvY3VzIHNjb3Blcywgd2l0aCB0aGUgYWN0aXZlIG9uZSBhdCB0aGUgdG9wICovIGxldCBzdGFjayA9IFtdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFkZCAoZm9jdXNTY29wZSkge1xuICAgICAgICAgICAgLy8gcGF1c2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgZm9jdXMgc2NvcGUgKGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrKVxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRm9jdXNTY29wZSA9IHN0YWNrWzBdO1xuICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUgIT09IGFjdGl2ZUZvY3VzU2NvcGUpIGFjdGl2ZUZvY3VzU2NvcGUgPT09IG51bGwgfHwgYWN0aXZlRm9jdXNTY29wZSA9PT0gdm9pZCAwIHx8IGFjdGl2ZUZvY3VzU2NvcGUucGF1c2UoKTtcbiAgICAgICAgICAgICAvLyByZW1vdmUgaW4gY2FzZSBpdCBhbHJlYWR5IGV4aXN0cyAoYmVjYXVzZSB3ZSdsbCByZS1hZGQgaXQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICAgICAgICBzdGFjayA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBzdGFjay51bnNoaWZ0KGZvY3VzU2NvcGUpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmUgKGZvY3VzU2NvcGUpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2skO1xuICAgICAgICAgICAgc3RhY2sgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkYXJyYXlSZW1vdmUoc3RhY2ssIGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgKF9zdGFjayQgPSBzdGFja1swXSkgPT09IG51bGwgfHwgX3N0YWNrJCA9PT0gdm9pZCAwIHx8IF9zdGFjayQucmVzdW1lKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlKGFycmF5LCBpdGVtKSB7XG4gICAgY29uc3QgdXBkYXRlZEFycmF5ID0gW1xuICAgICAgICAuLi5hcnJheVxuICAgIF07XG4gICAgY29uc3QgaW5kZXggPSB1cGRhdGVkQXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB1cGRhdGVkQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdXBkYXRlZEFycmF5O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSk9Pml0ZW0udGFnTmFtZSAhPT0gJ0EnXG4gICAgKTtcbn1cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjY7XG5cblxuXG5cbmV4cG9ydCB7JGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjYgYXMgRm9jdXNTY29wZSwgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDdTWGwyJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDdTWGwyJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICQ3U1hsMiRyZWFjdGRvbSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1NYbDIkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjE3MDFiZWFlMDgzZGJhZSR2YXIkUE9SVEFMX05BTUUgPSAnUG9ydGFsJztcbmNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gLyojX19QVVJFX18qLyAkN1NYbDIkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX2dsb2JhbFRoaXMkZG9jdW1lbnQ7XG4gICAgY29uc3QgeyBjb250YWluZXI6IGNvbnRhaW5lciA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9nbG9iYWxUaGlzJGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudCkgPT09IG51bGwgfHwgX2dsb2JhbFRoaXMkZG9jdW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nbG9iYWxUaGlzJGRvY3VtZW50LmJvZHkgLCAuLi5wb3J0YWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIGNvbnRhaW5lciA/IC8qI19fUFVSRV9fKi8gJDdTWGwyJHJlYWN0ZG9tLmNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQ3U1hsMiRjcmVhdGVFbGVtZW50KCQ3U1hsMiRQcmltaXRpdmUuZGl2LCAkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcnRhbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpLCBjb250YWluZXIpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjLCB7XG4gICAgZGlzcGxheU5hbWU6ICRmMTcwMWJlYWUwODNkYmFlJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmM7XG5cblxuXG5cbmV4cG9ydCB7JGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Q2hpbGRyZW4gYXMgJGlxcTNyJENoaWxkcmVuLCBjbG9uZUVsZW1lbnQgYXMgJGlxcTNyJGNsb25lRWxlbWVudCwgdXNlU3RhdGUgYXMgJGlxcTNyJHVzZVN0YXRlLCB1c2VSZWYgYXMgJGlxcTNyJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRpcXEzciR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICRpcXEzciR1c2VDYWxsYmFjaywgdXNlUmVkdWNlciBhcyAkaXFxM3IkdXNlUmVkdWNlcn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkaXFxM3IkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkaXFxM3IkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGlxcTNyJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuXG5cblxuXG5cblxuZnVuY3Rpb24gJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYoaW5pdGlhbFN0YXRlLCBtYWNoaW5lKSB7XG4gICAgcmV0dXJuICRpcXEzciR1c2VSZWR1Y2VyKChzdGF0ZSwgZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IG1hY2hpbmVbc3RhdGVdW2V2ZW50XTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGF0ZSAhPT0gbnVsbCAmJiBuZXh0U3RhdGUgIT09IHZvaWQgMCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xuICAgIH0sIGluaXRpYWxTdGF0ZSk7XG59XG5cblxuY29uc3QgJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBwcmVzZW50OiBwcmVzZW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJlc2VuY2UgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkdXNlUHJlc2VuY2UocHJlc2VudCk7XG4gICAgY29uc3QgY2hpbGQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbih7XG4gICAgICAgIHByZXNlbnQ6IHByZXNlbmNlLmlzUHJlc2VudFxuICAgIH0pIDogJGlxcTNyJENoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgIGNvbnN0IHJlZiA9ICRpcXEzciR1c2VDb21wb3NlZFJlZnMocHJlc2VuY2UucmVmLCBjaGlsZC5yZWYpO1xuICAgIGNvbnN0IGZvcmNlTW91bnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbic7XG4gICAgcmV0dXJuIGZvcmNlTW91bnQgfHwgcHJlc2VuY2UuaXNQcmVzZW50ID8gLyojX19QVVJFX18qLyAkaXFxM3IkY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIHJlZjogcmVmXG4gICAgfSkgOiBudWxsO1xufTtcbiQ5MjFhODg5Y2VlNmRmN2U4JGV4cG9ydCQ5OWMyYjc3OWFhNGU4YjhiLmRpc3BsYXlOYW1lID0gJ1ByZXNlbmNlJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIHVzZVByZXNlbmNlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZShwcmVzZW50KSB7XG4gICAgY29uc3QgW25vZGUxLCBzZXROb2RlXSA9ICRpcXEzciR1c2VTdGF0ZSgpO1xuICAgIGNvbnN0IHN0eWxlc1JlZiA9ICRpcXEzciR1c2VSZWYoe30pO1xuICAgIGNvbnN0IHByZXZQcmVzZW50UmVmID0gJGlxcTNyJHVzZVJlZihwcmVzZW50KTtcbiAgICBjb25zdCBwcmV2QW5pbWF0aW9uTmFtZVJlZiA9ICRpcXEzciR1c2VSZWYoJ25vbmUnKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBwcmVzZW50ID8gJ21vdW50ZWQnIDogJ3VubW91bnRlZCc7XG4gICAgY29uc3QgW3N0YXRlLCBzZW5kXSA9ICRmZTk2M2IzNTUzNDdjYzY4JGV4cG9ydCQzZTY1NDNkZTE0Zjg2MTRmKGluaXRpYWxTdGF0ZSwge1xuICAgICAgICBtb3VudGVkOiB7XG4gICAgICAgICAgICBVTk1PVU5UOiAndW5tb3VudGVkJyxcbiAgICAgICAgICAgIEFOSU1BVElPTl9PVVQ6ICd1bm1vdW50U3VzcGVuZGVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bm1vdW50U3VzcGVuZGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnLFxuICAgICAgICAgICAgQU5JTUFUSU9OX0VORDogJ3VubW91bnRlZCdcbiAgICAgICAgfSxcbiAgICAgICAgdW5tb3VudGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAkaXFxM3IkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gc3RhdGUgPT09ICdtb3VudGVkJyA/IGN1cnJlbnRBbmltYXRpb25OYW1lIDogJ25vbmUnO1xuICAgIH0sIFtcbiAgICAgICAgc3RhdGVcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCB3YXNQcmVzZW50ID0gcHJldlByZXNlbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaGFzUHJlc2VudENoYW5nZWQgPSB3YXNQcmVzZW50ICE9PSBwcmVzZW50O1xuICAgICAgICBpZiAoaGFzUHJlc2VudENoYW5nZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZBbmltYXRpb25OYW1lID0gcHJldkFuaW1hdGlvbk5hbWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzKTtcbiAgICAgICAgICAgIGlmIChwcmVzZW50KSBzZW5kKCdNT1VOVCcpO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEFuaW1hdGlvbk5hbWUgPT09ICdub25lJyB8fCAoc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmRpc3BsYXkpID09PSAnbm9uZScpIC8vIElmIHRoZXJlIGlzIG5vIGV4aXQgYW5pbWF0aW9uIG9yIHRoZSBlbGVtZW50IGlzIGhpZGRlbiwgYW5pbWF0aW9ucyB3b24ndCBydW5cbiAgICAgICAgICAgIC8vIHNvIHdlIHVubW91bnQgaW5zdGFudGx5XG4gICAgICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiBgcHJlc2VudGAgY2hhbmdlcyB0byBgZmFsc2VgLCB3ZSBjaGVjayBjaGFuZ2VzIHRvIGFuaW1hdGlvbi1uYW1lIHRvXG4gICAgICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4gV2UgY2hvc2UgdGhpcyBhcHByb2FjaCAocmVhZGluZ1xuICAgICAgICAgKiBjb21wdXRlZCBzdHlsZXMpIGJlY2F1c2UgdGhlcmUgaXMgbm8gYGFuaW1hdGlvbnJ1bmAgZXZlbnQgYW5kIGBhbmltYXRpb25zdGFydGBcbiAgICAgICAgICogZmlyZXMgYWZ0ZXIgYGFuaW1hdGlvbi1kZWxheWAgaGFzIGV4cGlyZWQgd2hpY2ggd291bGQgYmUgdG9vIGxhdGUuXG4gICAgICAgICAqLyBjb25zdCBpc0FuaW1hdGluZyA9IHByZXZBbmltYXRpb25OYW1lICE9PSBjdXJyZW50QW5pbWF0aW9uTmFtZTtcbiAgICAgICAgICAgICAgICBpZiAod2FzUHJlc2VudCAmJiBpc0FuaW1hdGluZykgc2VuZCgnQU5JTUFUSU9OX09VVCcpO1xuICAgICAgICAgICAgICAgIGVsc2Ugc2VuZCgnVU5NT1VOVCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldlByZXNlbnRSZWYuY3VycmVudCA9IHByZXNlbnQ7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXNlbnQsXG4gICAgICAgIHNlbmRcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChub2RlMSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgKiBUcmlnZ2VyaW5nIGFuIEFOSU1BVElPTl9PVVQgZHVyaW5nIGFuIEFOSU1BVElPTl9JTiB3aWxsIGZpcmUgYW4gYGFuaW1hdGlvbmNhbmNlbGBcbiAgICAgICAqIGV2ZW50IGZvciBBTklNQVRJT05fSU4gYWZ0ZXIgd2UgaGF2ZSBlbnRlcmVkIGB1bm1vdW50U3VzcGVuZGVkYCBzdGF0ZS4gU28sIHdlXG4gICAgICAgKiBtYWtlIHN1cmUgd2Ugb25seSB0cmlnZ2VyIEFOSU1BVElPTl9FTkQgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGFuaW1hdGlvbi5cbiAgICAgICAqLyBjb25zdCBoYW5kbGVBbmltYXRpb25FbmQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50QW5pbWF0aW9uID0gY3VycmVudEFuaW1hdGlvbk5hbWUuaW5jbHVkZXMoZXZlbnQuYW5pbWF0aW9uTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEgJiYgaXNDdXJyZW50QW5pbWF0aW9uKSAvLyBXaXRoIFJlYWN0IDE4IGNvbmN1cnJlbmN5IHRoaXMgdXBkYXRlIGlzIGFwcGxpZWRcbiAgICAgICAgICAgICAgICAvLyBhIGZyYW1lIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcywgY3JlYXRpbmcgYSBmbGFzaCBvZiB2aXNpYmxlIGNvbnRlbnQuXG4gICAgICAgICAgICAgICAgLy8gQnkgbWFudWFsbHkgZmx1c2hpbmcgd2UgZW5zdXJlIHRoZXkgc3luYyB3aXRoaW4gYSBmcmFtZSwgcmVtb3ZpbmcgdGhlIGZsYXNoLlxuICAgICAgICAgICAgICAgICRpcXEzciRmbHVzaFN5bmMoKCk9PnNlbmQoJ0FOSU1BVElPTl9FTkQnKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQW5pbWF0aW9uU3RhcnQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEpIC8vIGlmIGFuaW1hdGlvbiBvY2N1cnJlZCwgc3RvcmUgaXRzIG5hbWUgYXMgdGhlIHByZXZpb3VzIGFuaW1hdGlvbi5cbiAgICAgICAgICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uY2FuY2VsJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25zdGFydCcsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgLy8gVHJhbnNpdGlvbiB0byB0aGUgdW5tb3VudGVkIHN0YXRlIGlmIHRoZSBub2RlIGlzIHJlbW92ZWQgcHJlbWF0dXJlbHkuXG4gICAgICAgIC8vIFdlIGF2b2lkIGRvaW5nIHNvIGR1cmluZyBjbGVhbnVwIGFzIHRoZSBub2RlIG1heSBjaGFuZ2UgYnV0IHN0aWxsIGV4aXN0LlxuICAgICAgICBzZW5kKCdBTklNQVRJT05fRU5EJyk7XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgc2VuZFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudDogW1xuICAgICAgICAgICAgJ21vdW50ZWQnLFxuICAgICAgICAgICAgJ3VubW91bnRTdXNwZW5kZWQnXG4gICAgICAgIF0uaW5jbHVkZXMoc3RhdGUpLFxuICAgICAgICByZWY6ICRpcXEzciR1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgICAgIGlmIChub2RlKSBzdHlsZXNSZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgICAgICBzZXROb2RlKG5vZGUpO1xuICAgICAgICB9LCBbXSlcbiAgICB9O1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXMpIHtcbiAgICByZXR1cm4gKHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5hbmltYXRpb25OYW1lKSB8fCAnbm9uZSc7XG59XG5cblxuXG5cbmV4cG9ydCB7JDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgYXMgUHJlc2VuY2V9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QgYXMgJDF3RXJ6JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqIE51bWJlciBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgcmVxdWVzdGVkIGludGVyZXN0IHRvIGhhdmUgZm9jdXMgZ3VhcmRzICovIGxldCAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPSAwO1xuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGFjNWI1ODA0M2I3OTQ0OWIocHJvcHMpIHtcbiAgICAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpO1xuICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cbi8qKlxuICogSW5qZWN0cyBhIHBhaXIgb2YgZm9jdXMgZ3VhcmRzIGF0IHRoZSBlZGdlcyBvZiB0aGUgd2hvbGUgRE9NIHRyZWVcbiAqIHRvIGVuc3VyZSBgZm9jdXNpbmAgJiBgZm9jdXNvdXRgIGV2ZW50cyBjYW4gYmUgY2F1Z2h0IGNvbnNpc3RlbnRseS5cbiAqLyBmdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpIHtcbiAgICAkMXdFcnokdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfZWRnZUd1YXJkcyQsIF9lZGdlR3VhcmRzJDI7XG4gICAgICAgIGNvbnN0IGVkZ2VHdWFyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCAoX2VkZ2VHdWFyZHMkID0gZWRnZUd1YXJkc1swXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQgOiAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY3JlYXRlRm9jdXNHdWFyZCgpKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWVuZCcsIChfZWRnZUd1YXJkcyQyID0gZWRnZUd1YXJkc1sxXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkMiAhPT0gdm9pZCAwID8gX2VkZ2VHdWFyZHMkMiA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQrKztcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50ID09PSAxKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKS5mb3JFYWNoKChub2RlKT0+bm9kZS5yZW1vdmUoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudC0tO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbn1cbmZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmFkaXgtZm9jdXMtZ3VhcmQnLCAnJyk7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gJ291dGxpbmU6IG5vbmU7IG9wYWNpdHk6IDA7IHBvc2l0aW9uOiBmaXhlZDsgcG9pbnRlci1ldmVudHM6IG5vbmUnO1xuICAgIHJldHVybiBlbGVtZW50O1xufVxuY29uc3QgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YjtcblxuXG5cblxuZXhwb3J0IHskM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YiBhcyBGb2N1c0d1YXJkcywgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMgYXMgdXNlRm9jdXNHdWFyZHN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiZXhwb3J0IHZhciB6ZXJvUmlnaHRDbGFzc05hbWUgPSAncmlnaHQtc2Nyb2xsLWJhci1wb3NpdGlvbic7XG5leHBvcnQgdmFyIGZ1bGxXaWR0aENsYXNzTmFtZSA9ICd3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhcic7XG5leHBvcnQgdmFyIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSA9ICd3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbic7XG4vKipcbiAqIE5hbWUgb2YgYSBDU1MgdmFyaWFibGUgY29udGFpbmluZyB0aGUgYW1vdW50IG9mIFwiaGlkZGVuXCIgc2Nyb2xsYmFyXG4gKiAhIG1pZ2h0IGJlIHVuZGVmaW5lZCAhIHVzZSB3aWxsIGZhbGxiYWNrIVxuICovXG5leHBvcnQgdmFyIHJlbW92ZWRCYXJTaXplVmFyaWFibGUgPSAnLS1yZW1vdmVkLWJvZHktc2Nyb2xsLWJhci1zaXplJztcbiIsImltcG9ydCB7IGFzc2lnblJlZiB9IGZyb20gJy4vYXNzaWduUmVmJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnLi91c2VSZWYnO1xuLyoqXG4gKiBNZXJnZXMgdHdvIG9yIG1vcmUgcmVmcyB0b2dldGhlciBwcm92aWRpbmcgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIHNldCB0aGVpciB2YWx1ZVxuICogQHBhcmFtIHtSZWZPYmplY3R8UmVmfSByZWZzXG4gKiBAcmV0dXJucyB7TXV0YWJsZVJlZk9iamVjdH0gLSBhIG5ldyByZWYsIHdoaWNoIHRyYW5zbGF0ZXMgYWxsIGNoYW5nZXMgdG8ge3JlZnN9XG4gKlxuICogQHNlZSB7QGxpbmsgbWVyZ2VSZWZzfSBhIHZlcnNpb24gd2l0aG91dCBidWl0LWluIG1lbW9pemF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VtZXJnZXJlZnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IG93blJlZiA9IHVzZVJlZigpO1xuICogICBjb25zdCBkb21SZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgb3duUmVmXSk7IC8vIPCfkYggbWVyZ2UgdG9nZXRoZXJcbiAqICAgcmV0dXJuIDxkaXYgcmVmPXtkb21SZWZ9Pi4uLjwvZGl2PlxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiB1c2VDYWxsYmFja1JlZihkZWZhdWx0VmFsdWUgfHwgbnVsbCwgZnVuY3Rpb24gKG5ld1ZhbHVlKSB7IHJldHVybiByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gYXNzaWduUmVmKHJlZiwgbmV3VmFsdWUpOyB9KTsgfSk7XG59XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogY3JlYXRlcyBhIE11dGFibGVSZWYgd2l0aCByZWYgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIC0gaW5pdGlhbCByZWYgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gYSBjYWxsYmFjayB0byBydW4gd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlZiA9IHVzZUNhbGxiYWNrUmVmKDAsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IGNvbnNvbGUubG9nKG9sZFZhbHVlLCAnLT4nLCBuZXdWYWx1ZSk7XG4gKiByZWYuY3VycmVudCA9IDE7XG4gKiAvLyBwcmludHMgMCAtPiAxXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlcmVmXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VjYWxsYmFja3JlZi0tLXRvLXJlcGxhY2UtcmVhY3R1c2VyZWZcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoaW5pdGlhbFZhbHVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZWYgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAvLyB2YWx1ZVxuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAvLyBsYXN0IGNhbGxiYWNrXG4gICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgLy8gXCJtZW1vaXplZFwiIHB1YmxpYyBpbnRlcmZhY2VcbiAgICAgICAgZmFjYWRlOiB7XG4gICAgICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmLnZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBjdXJyZW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByZWYudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWYuY2FsbGJhY2sodmFsdWUsIGxhc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7IH0pWzBdO1xuICAgIC8vIHVwZGF0ZSBjYWxsYmFja1xuICAgIHJlZi5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiByZWYuZmFjYWRlO1xufVxuIiwiLyoqXG4gKiBBc3NpZ25zIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcmVmLCBubyBtYXR0ZXIgb2YgdGhlIHJlZiBmb3JtYXRcbiAqIEBwYXJhbSB7UmVmT2JqZWN0fSByZWYgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIHJlZiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZSAtIGEgbmV3IHZhbHVlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L3VzZS1jYWxsYmFjay1yZWYjYXNzaWducmVmXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmT2JqZWN0ID0gdXNlUmVmKCk7XG4gKiBjb25zdCByZWZGbiA9IChyZWYpID0+IHsuLi4ufVxuICpcbiAqIGFzc2lnblJlZihyZWZPYmplY3QsIFwicmVmVmFsdWVcIik7XG4gKiBhc3NpZ25SZWYocmVmRm4sIFwicmVmVmFsdWVcIik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25SZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZih2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmZ1bmN0aW9uIEl0b0koYSkge1xuICAgIHJldHVybiBhO1xufVxuZnVuY3Rpb24gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpIHtcbiAgICBpZiAobWlkZGxld2FyZSA9PT0gdm9pZCAwKSB7IG1pZGRsZXdhcmUgPSBJdG9JOyB9XG4gICAgdmFyIGJ1ZmZlciA9IFtdO1xuICAgIHZhciBhc3NpZ25lZCA9IGZhbHNlO1xuICAgIHZhciBtZWRpdW0gPSB7XG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhc3NpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhcjogY291bGQgbm90IGByZWFkYCBmcm9tIGFuIGBhc3NpZ25lZGAgbWVkaXVtLiBgcmVhZGAgY291bGQgYmUgdXNlZCBvbmx5IHdpdGggYHVzZU1lZGl1bWAuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgICAgICB9LFxuICAgICAgICB1c2VNZWRpdW06IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IG1pZGRsZXdhcmUoZGF0YSwgYXNzaWduZWQpO1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggIT09IGl0ZW07IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYXNzaWduU3luY01lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0ge1xuICAgICAgICAgICAgICAgIHB1c2g6IGZ1bmN0aW9uICh4KSB7IHJldHVybiBjYih4KTsgfSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJ1ZmZlcjsgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGFzc2lnbk1lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGVuZGluZ1F1ZXVlID0gW107XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBleGVjdXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IHBlbmRpbmdRdWV1ZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGN5Y2xlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihleGVjdXRlUXVldWUpOyB9O1xuICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgIGJ1ZmZlciA9IHtcbiAgICAgICAgICAgICAgICBwdXNoOiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBwZW5kaW5nUXVldWUuZmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbWVkaXVtO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSkge1xuICAgIGlmIChtaWRkbGV3YXJlID09PSB2b2lkIDApIHsgbWlkZGxld2FyZSA9IEl0b0k7IH1cbiAgICByZXR1cm4gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaWRlY2FyTWVkaXVtKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBtZWRpdW0gPSBpbm5lckNyZWF0ZU1lZGl1bShudWxsKTtcbiAgICBtZWRpdW0ub3B0aW9ucyA9IF9fYXNzaWduKHsgYXN5bmM6IHRydWUsIHNzcjogZmFsc2UgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG1lZGl1bTtcbn1cbiIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBTaWRlQ2FyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNpZGVDYXIgPSBfYS5zaWRlQ2FyLCByZXN0ID0gX19yZXN0KF9hLCBbXCJzaWRlQ2FyXCJdKTtcbiAgICBpZiAoIXNpZGVDYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXInKTtcbiAgICB9XG4gICAgdmFyIFRhcmdldCA9IHNpZGVDYXIucmVhZCgpO1xuICAgIGlmICghVGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhciBtZWRpdW0gbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhcmdldCwgX19hc3NpZ24oe30sIHJlc3QpKTtcbn07XG5TaWRlQ2FyLmlzU2lkZUNhckV4cG9ydCA9IHRydWU7XG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2lkZWNhcihtZWRpdW0sIGV4cG9ydGVkKSB7XG4gICAgbWVkaXVtLnVzZU1lZGl1bShleHBvcnRlZCk7XG4gICAgcmV0dXJuIFNpZGVDYXI7XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVTaWRlY2FyTWVkaXVtIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuZXhwb3J0IHZhciBlZmZlY3RDYXIgPSBjcmVhdGVTaWRlY2FyTWVkaXVtKCk7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSB9IGZyb20gJ3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VNZXJnZVJlZnMgfSBmcm9tICd1c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbnZhciBub3RoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybjtcbn07XG4vKipcbiAqIFJlbW92ZXMgc2Nyb2xsYmFyIGZyb20gdGhlIHBhZ2UgYW5kIGNvbnRhaW4gdGhlIHNjcm9sbCB3aXRoaW4gdGhlIExvY2tcbiAqL1xudmFyIFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBwYXJlbnRSZWYpIHtcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvbldoZWVsQ2FwdHVyZTogbm90aGluZyxcbiAgICAgICAgb25Ub3VjaE1vdmVDYXB0dXJlOiBub3RoaW5nLFxuICAgIH0pLCBjYWxsYmFja3MgPSBfYVswXSwgc2V0Q2FsbGJhY2tzID0gX2FbMV07XG4gICAgdmFyIGZvcndhcmRQcm9wcyA9IHByb3BzLmZvcndhcmRQcm9wcywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGVuYWJsZWQgPSBwcm9wcy5lbmFibGVkLCBzaGFyZHMgPSBwcm9wcy5zaGFyZHMsIHNpZGVDYXIgPSBwcm9wcy5zaWRlQ2FyLCBub0lzb2xhdGlvbiA9IHByb3BzLm5vSXNvbGF0aW9uLCBpbmVydCA9IHByb3BzLmluZXJ0LCBhbGxvd1BpbmNoWm9vbSA9IHByb3BzLmFsbG93UGluY2hab29tLCBfYiA9IHByb3BzLmFzLCBDb250YWluZXIgPSBfYiA9PT0gdm9pZCAwID8gJ2RpdicgOiBfYiwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZm9yd2FyZFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJyZW1vdmVTY3JvbGxCYXJcIiwgXCJlbmFibGVkXCIsIFwic2hhcmRzXCIsIFwic2lkZUNhclwiLCBcIm5vSXNvbGF0aW9uXCIsIFwiaW5lcnRcIiwgXCJhbGxvd1BpbmNoWm9vbVwiLCBcImFzXCJdKTtcbiAgICB2YXIgU2lkZUNhciA9IHNpZGVDYXI7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBwYXJlbnRSZWZdKTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdCksIGNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBlbmFibGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVDYXIsIHsgc2lkZUNhcjogZWZmZWN0Q2FyLCByZW1vdmVTY3JvbGxCYXI6IHJlbW92ZVNjcm9sbEJhciwgc2hhcmRzOiBzaGFyZHMsIG5vSXNvbGF0aW9uOiBub0lzb2xhdGlvbiwgaW5lcnQ6IGluZXJ0LCBzZXRDYWxsYmFja3M6IHNldENhbGxiYWNrcywgYWxsb3dQaW5jaFpvb206ICEhYWxsb3dQaW5jaFpvb20sIGxvY2tSZWY6IHJlZiB9KSksXG4gICAgICAgIGZvcndhcmRQcm9wcyA/IChSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcyksIHsgcmVmOiBjb250YWluZXJSZWYgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByZWY6IGNvbnRhaW5lclJlZiB9KSwgY2hpbGRyZW4pKSkpO1xufSk7XG5SZW1vdmVTY3JvbGwuZGVmYXVsdFByb3BzID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcmVtb3ZlU2Nyb2xsQmFyOiB0cnVlLFxuICAgIGluZXJ0OiBmYWxzZSxcbn07XG5SZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IHtcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aENsYXNzTmFtZSxcbiAgICB6ZXJvUmlnaHQ6IHplcm9SaWdodENsYXNzTmFtZSxcbn07XG5leHBvcnQgeyBSZW1vdmVTY3JvbGwgfTtcbiIsImltcG9ydCB7IGdldE5vbmNlIH0gZnJvbSAnZ2V0LW5vbmNlJztcbmZ1bmN0aW9uIG1ha2VTdHlsZVRhZygpIHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0YWcudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBub25jZSk7XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiBpbmplY3RTdHlsZXModGFnLCBjc3MpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhZy5zdHlsZVNoZWV0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnRTdHlsZVRhZyh0YWcpIHtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHRhZyk7XG59XG5leHBvcnQgdmFyIHN0eWxlc2hlZXRTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoc3R5bGVzaGVldCA9IG1ha2VTdHlsZVRhZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXMoc3R5bGVzaGVldCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTdHlsZVRhZyhzdHlsZXNoZWV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgaWYgKCFjb3VudGVyICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LnBhcmVudE5vZGUgJiYgc3R5bGVzaGVldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuIiwidmFyIGN1cnJlbnROb25jZTtcbmV4cG9ydCB2YXIgc2V0Tm9uY2UgPSBmdW5jdGlvbiAobm9uY2UpIHtcbiAgICBjdXJyZW50Tm9uY2UgPSBub25jZTtcbn07XG5leHBvcnQgdmFyIGdldE5vbmNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Tm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb25jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9fd2VicGFja19ub25jZV9fO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsImltcG9ydCB7IHN0eWxlSG9va1NpbmdsZXRvbiB9IGZyb20gJy4vaG9vayc7XG4vKipcbiAqIGNyZWF0ZSBhIENvbXBvbmVudCB0byBhZGQgc3R5bGVzIG9uIGRlbWFuZFxuICogLSBzdHlsZXMgYXJlIGFkZGVkIHdoZW4gZmlyc3QgaW5zdGFuY2UgaXMgbW91bnRlZFxuICogLSBzdHlsZXMgYXJlIHJlbW92ZWQgd2hlbiB0aGUgbGFzdCBpbnN0YW5jZSBpcyB1bm1vdW50ZWRcbiAqIC0gY2hhbmdpbmcgc3R5bGVzIGluIHJ1bnRpbWUgZG9lcyBub3RoaW5nIHVubGVzcyBkeW5hbWljIGlzIHNldC4gQnV0IHdpdGggbXVsdGlwbGUgY29tcG9uZW50cyB0aGF0IGNhbiBsZWFkIHRvIHRoZSB1bmRlZmluZWQgYmVoYXZpb3JcbiAqL1xuZXhwb3J0IHZhciBzdHlsZVNpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdXNlU3R5bGUgPSBzdHlsZUhvb2tTaW5nbGV0b24oKTtcbiAgICB2YXIgU2hlZXQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHN0eWxlcyA9IF9hLnN0eWxlcywgZHluYW1pYyA9IF9hLmR5bmFtaWM7XG4gICAgICAgIHVzZVN0eWxlKHN0eWxlcywgZHluYW1pYyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFNoZWV0O1xufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlc2hlZXRTaW5nbGV0b24gfSBmcm9tICcuL3NpbmdsZXRvbic7XG4vKipcbiAqIGNyZWF0ZXMgYSBob29rIHRvIGNvbnRyb2wgc3R5bGUgc2luZ2xldG9uXG4gKiBAc2VlIHtAbGluayBzdHlsZVNpbmdsZXRvbn0gZm9yIGEgc2FmZXIgY29tcG9uZW50IHZlcnNpb25cbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHVzZVN0eWxlID0gc3R5bGVIb29rU2luZ2xldG9uKCk7XG4gKiAvLy9cbiAqIHVzZVN0eWxlKCdib2R5IHsgb3ZlcmZsb3c6IGhpZGRlbn0nKTtcbiAqL1xuZXhwb3J0IHZhciBzdHlsZUhvb2tTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0ID0gc3R5bGVzaGVldFNpbmdsZXRvbigpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3R5bGVzLCBpc0R5bmFtaWMpIHtcbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNoZWV0LmFkZChzdHlsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaGVldC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtzdHlsZXMgJiYgaXNEeW5hbWljXSk7XG4gICAgfTtcbn07XG4iLCJleHBvcnQgdmFyIHplcm9HYXAgPSB7XG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgZ2FwOiAwLFxufTtcbnZhciBwYXJzZSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiBwYXJzZUludCh4IHx8ICcnLCAxMCkgfHwgMDsgfTtcbnZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiAoZ2FwTW9kZSkge1xuICAgIHZhciBjcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpO1xuICAgIHZhciBsZWZ0ID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdMZWZ0JyA6ICdtYXJnaW5MZWZ0J107XG4gICAgdmFyIHRvcCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nVG9wJyA6ICdtYXJnaW5Ub3AnXTtcbiAgICB2YXIgcmlnaHQgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ1JpZ2h0JyA6ICdtYXJnaW5SaWdodCddO1xuICAgIHJldHVybiBbcGFyc2UobGVmdCksIHBhcnNlKHRvcCksIHBhcnNlKHJpZ2h0KV07XG59O1xuZXhwb3J0IHZhciBnZXRHYXBXaWR0aCA9IGZ1bmN0aW9uIChnYXBNb2RlKSB7XG4gICAgaWYgKGdhcE1vZGUgPT09IHZvaWQgMCkgeyBnYXBNb2RlID0gJ21hcmdpbic7IH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHplcm9HYXA7XG4gICAgfVxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0KGdhcE1vZGUpO1xuICAgIHZhciBkb2N1bWVudFdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IG9mZnNldHNbMF0sXG4gICAgICAgIHRvcDogb2Zmc2V0c1sxXSxcbiAgICAgICAgcmlnaHQ6IG9mZnNldHNbMl0sXG4gICAgICAgIGdhcDogTWF0aC5tYXgoMCwgd2luZG93V2lkdGggLSBkb2N1bWVudFdpZHRoICsgb2Zmc2V0c1syXSAtIG9mZnNldHNbMF0pLFxuICAgIH07XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgZnVsbFdpZHRoQ2xhc3NOYW1lLCB6ZXJvUmlnaHRDbGFzc05hbWUsIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEdhcFdpZHRoIH0gZnJvbSAnLi91dGlscyc7XG52YXIgU3R5bGUgPSBzdHlsZVNpbmdsZXRvbigpO1xuLy8gaW1wb3J0YW50IHRpcCAtIG9uY2Ugd2UgbWVhc3VyZSBzY3JvbGxCYXIgd2lkdGggYW5kIHJlbW92ZSB0aGVtXG4vLyB3ZSBjb3VsZCBub3QgcmVwZWF0IHRoaXMgb3BlcmF0aW9uXG4vLyB0aHVzIHdlIGFyZSB1c2luZyBzdHlsZS1zaW5nbGV0b24gLSBvbmx5IHRoZSBmaXJzdCBcInlldCBjb3JyZWN0XCIgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChfYSwgYWxsb3dSZWxhdGl2ZSwgZ2FwTW9kZSwgaW1wb3J0YW50KSB7XG4gICAgdmFyIGxlZnQgPSBfYS5sZWZ0LCB0b3AgPSBfYS50b3AsIHJpZ2h0ID0gX2EucmlnaHQsIGdhcCA9IF9hLmdhcDtcbiAgICBpZiAoZ2FwTW9kZSA9PT0gdm9pZCAwKSB7IGdhcE1vZGUgPSAnbWFyZ2luJzsgfVxuICAgIHJldHVybiBcIlxcbiAgLlwiLmNvbmNhdChub1Njcm9sbGJhcnNDbGFzc05hbWUsIFwiIHtcXG4gICBvdmVyZmxvdzogaGlkZGVuIFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICBwYWRkaW5nLXJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBib2R5IHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XFxuICAgIFwiKS5jb25jYXQoW1xuICAgICAgICBhbGxvd1JlbGF0aXZlICYmIFwicG9zaXRpb246IHJlbGF0aXZlIFwiLmNvbmNhdChpbXBvcnRhbnQsIFwiO1wiKSxcbiAgICAgICAgZ2FwTW9kZSA9PT0gJ21hcmdpbicgJiZcbiAgICAgICAgICAgIFwiXFxuICAgIHBhZGRpbmctbGVmdDogXCIuY29uY2F0KGxlZnQsIFwicHg7XFxuICAgIHBhZGRpbmctdG9wOiBcIikuY29uY2F0KHRvcCwgXCJweDtcXG4gICAgcGFkZGluZy1yaWdodDogXCIpLmNvbmNhdChyaWdodCwgXCJweDtcXG4gICAgbWFyZ2luLWxlZnQ6MDtcXG4gICAgbWFyZ2luLXRvcDowO1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICAgXCIpLFxuICAgICAgICBnYXBNb2RlID09PSAncGFkZGluZycgJiYgXCJwYWRkaW5nLXJpZ2h0OiBcIi5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcIiksXG4gICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcnKSwgXCJcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiB7XFxuICAgIHJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIHtcXG4gICAgcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdChmdWxsV2lkdGhDbGFzc05hbWUsIFwiIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICBib2R5IHtcXG4gICAgXCIpLmNvbmNhdChyZW1vdmVkQmFyU2l6ZVZhcmlhYmxlLCBcIjogXCIpLmNvbmNhdChnYXAsIFwicHg7XFxuICB9XFxuXCIpO1xufTtcbi8qKlxuICogUmVtb3ZlcyBwYWdlIHNjcm9sbGJhciBhbmQgYmxvY2tzIHBhZ2Ugc2Nyb2xsIHdoZW4gbW91bnRlZFxuICovXG5leHBvcnQgdmFyIFJlbW92ZVNjcm9sbEJhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBub1JlbGF0aXZlID0gcHJvcHMubm9SZWxhdGl2ZSwgbm9JbXBvcnRhbnQgPSBwcm9wcy5ub0ltcG9ydGFudCwgX2EgPSBwcm9wcy5nYXBNb2RlLCBnYXBNb2RlID0gX2EgPT09IHZvaWQgMCA/ICdtYXJnaW4nIDogX2E7XG4gICAgLypcbiAgICAgZ2FwIHdpbGwgYmUgbWVhc3VyZWQgb24gZXZlcnkgY29tcG9uZW50IG1vdW50XG4gICAgIGhvd2V2ZXIgaXQgd2lsbCBiZSB1c2VkIG9ubHkgYnkgdGhlIFwiZmlyc3RcIiBpbnZvY2F0aW9uXG4gICAgIGR1ZSB0byBzaW5nbGV0b24gbmF0dXJlIG9mIDxTdHlsZVxuICAgICAqL1xuICAgIHZhciBnYXAgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldEdhcFdpZHRoKGdhcE1vZGUpOyB9LCBbZ2FwTW9kZV0pO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlLCB7IHN0eWxlczogZ2V0U3R5bGVzKGdhcCwgIW5vUmVsYXRpdmUsIGdhcE1vZGUsICFub0ltcG9ydGFudCA/ICchaW1wb3J0YW50JyA6ICcnKSB9KTtcbn07XG4iLCJ2YXIgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCB2YXIgbm9uUGFzc2l2ZSA9IHBhc3NpdmVTdXBwb3J0ZWQgPyB7IHBhc3NpdmU6IGZhbHNlIH0gOiBmYWxzZTtcbiIsInZhciBhbHdheXNDb250YWluc1Njcm9sbCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gdGV4dGFyZWEgd2lsbCBhbHdheXMgX2NvbnRhaW5fIHNjcm9sbCBpbnNpZGUgc2VsZi4gSXQgb25seSBjYW4gYmUgaGlkZGVuXG4gICAgcmV0dXJuIG5vZGUudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJztcbn07XG52YXIgZWxlbWVudENhbkJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSwgb3ZlcmZsb3cpIHtcbiAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgcmV0dXJuIChcbiAgICAvLyBub3Qtbm90LXNjcm9sbGFibGVcbiAgICBzdHlsZXNbb3ZlcmZsb3ddICE9PSAnaGlkZGVuJyAmJlxuICAgICAgICAvLyBjb250YWlucyBzY3JvbGwgaW5zaWRlIHNlbGZcbiAgICAgICAgIShzdHlsZXMub3ZlcmZsb3dZID09PSBzdHlsZXMub3ZlcmZsb3dYICYmICFhbHdheXNDb250YWluc1Njcm9sbChub2RlKSAmJiBzdHlsZXNbb3ZlcmZsb3ddID09PSAndmlzaWJsZScpKTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVWU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSkgeyByZXR1cm4gZWxlbWVudENhbkJlU2Nyb2xsZWQobm9kZSwgJ292ZXJmbG93WScpOyB9O1xudmFyIGVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkID0gZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIGVsZW1lbnRDYW5CZVNjcm9sbGVkKG5vZGUsICdvdmVyZmxvd1gnKTsgfTtcbmV4cG9ydCB2YXIgbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAoYXhpcywgbm9kZSkge1xuICAgIHZhciBjdXJyZW50ID0gbm9kZTtcbiAgICBkbyB7XG4gICAgICAgIC8vIFNraXAgb3ZlciBzaGFkb3cgcm9vdFxuICAgICAgICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgIT09ICd1bmRlZmluZWQnICYmIGN1cnJlbnQgaW5zdGFuY2VvZiBTaGFkb3dSb290KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5ob3N0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1Njcm9sbGFibGUgPSBlbGVtZW50Q291bGRCZVNjcm9sbGVkKGF4aXMsIGN1cnJlbnQpO1xuICAgICAgICBpZiAoaXNTY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBnZXRTY3JvbGxWYXJpYWJsZXMoYXhpcywgY3VycmVudCksIHMgPSBfYVsxXSwgZCA9IF9hWzJdO1xuICAgICAgICAgICAgaWYgKHMgPiBkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQgIT09IGRvY3VtZW50LmJvZHkpO1xuICAgIHJldHVybiBmYWxzZTtcbn07XG52YXIgZ2V0VlNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxUb3AgPSBfYS5zY3JvbGxUb3AsIHNjcm9sbEhlaWdodCA9IF9hLnNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0ID0gX2EuY2xpZW50SGVpZ2h0O1xuICAgIHJldHVybiBbXG4gICAgICAgIHNjcm9sbFRvcCxcbiAgICAgICAgc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBjbGllbnRIZWlnaHQsXG4gICAgXTtcbn07XG52YXIgZ2V0SFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxMZWZ0ID0gX2Euc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGggPSBfYS5zY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggPSBfYS5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gW1xuICAgICAgICBzY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxXaWR0aCxcbiAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgXTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkKG5vZGUpIDogZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQobm9kZSk7XG59O1xudmFyIGdldFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGdldFZTY3JvbGxWYXJpYWJsZXMobm9kZSkgOiBnZXRIU2Nyb2xsVmFyaWFibGVzKG5vZGUpO1xufTtcbnZhciBnZXREaXJlY3Rpb25GYWN0b3IgPSBmdW5jdGlvbiAoYXhpcywgZGlyZWN0aW9uKSB7XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb24gaXMgcnRsIChyaWdodC10by1sZWZ0KSwgdGhlbiBzY3JvbGxMZWZ0IGlzIDAgd2hlbiB0aGUgc2Nyb2xsYmFyIGlzIGF0IGl0cyByaWdodG1vc3QgcG9zaXRpb24sXG4gICAgICogYW5kIHRoZW4gaW5jcmVhc2luZ2x5IG5lZ2F0aXZlIGFzIHlvdSBzY3JvbGwgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBjb250ZW50LlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvc2Nyb2xsTGVmdFxuICAgICAqL1xuICAgIHJldHVybiBheGlzID09PSAnaCcgJiYgZGlyZWN0aW9uID09PSAncnRsJyA/IC0xIDogMTtcbn07XG5leHBvcnQgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uIChheGlzLCBlbmRUYXJnZXQsIGV2ZW50LCBzb3VyY2VEZWx0YSwgbm9PdmVyc2Nyb2xsKSB7XG4gICAgdmFyIGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihheGlzLCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbmRUYXJnZXQpLmRpcmVjdGlvbik7XG4gICAgdmFyIGRlbHRhID0gZGlyZWN0aW9uRmFjdG9yICogc291cmNlRGVsdGE7XG4gICAgLy8gZmluZCBzY3JvbGxhYmxlIHRhcmdldFxuICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHRhcmdldEluTG9jayA9IGVuZFRhcmdldC5jb250YWlucyh0YXJnZXQpO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGxUb3AgPSAwO1xuICAgIGRvIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0U2Nyb2xsVmFyaWFibGVzKGF4aXMsIHRhcmdldCksIHBvc2l0aW9uID0gX2FbMF0sIHNjcm9sbF8xID0gX2FbMV0sIGNhcGFjaXR5ID0gX2FbMl07XG4gICAgICAgIHZhciBlbGVtZW50U2Nyb2xsID0gc2Nyb2xsXzEgLSBjYXBhY2l0eSAtIGRpcmVjdGlvbkZhY3RvciAqIHBvc2l0aW9uO1xuICAgICAgICBpZiAocG9zaXRpb24gfHwgZWxlbWVudFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQoYXhpcywgdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbCArPSBlbGVtZW50U2Nyb2xsO1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbFRvcCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChcbiAgICAvLyBwb3J0YWxlZCBjb250ZW50XG4gICAgKCF0YXJnZXRJbkxvY2sgJiYgdGFyZ2V0ICE9PSBkb2N1bWVudC5ib2R5KSB8fFxuICAgICAgICAvLyBzZWxmIGNvbnRlbnRcbiAgICAgICAgKHRhcmdldEluTG9jayAmJiAoZW5kVGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgZW5kVGFyZ2V0ID09PSB0YXJnZXQpKSk7XG4gICAgaWYgKGlzRGVsdGFQb3NpdGl2ZSAmJiAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGwgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSkpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzRGVsdGFQb3NpdGl2ZSAmJlxuICAgICAgICAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGxUb3AgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIC1kZWx0YSA+IGF2YWlsYWJsZVNjcm9sbFRvcCkpKSB7XG4gICAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaG91bGRDYW5jZWxTY3JvbGw7XG59O1xuIiwiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsQmFyIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXInO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgbm9uUGFzc2l2ZSB9IGZyb20gJy4vYWdncmVzaXZlQ2FwdHVyZSc7XG5pbXBvcnQgeyBoYW5kbGVTY3JvbGwsIGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIH0gZnJvbSAnLi9oYW5kbGVTY3JvbGwnO1xuZXhwb3J0IHZhciBnZXRUb3VjaFhZID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdjaGFuZ2VkVG91Y2hlcycgaW4gZXZlbnQgPyBbZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WV0gOiBbMCwgMF07XG59O1xuZXhwb3J0IHZhciBnZXREZWx0YVhZID0gZnVuY3Rpb24gKGV2ZW50KSB7IHJldHVybiBbZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0YVldOyB9O1xudmFyIGV4dHJhY3RSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgcmV0dXJuIHJlZiAmJiAnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWY7XG59O1xudmFyIGRlbHRhQ29tcGFyZSA9IGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4WzBdID09PSB5WzBdICYmIHhbMV0gPT09IHlbMV07IH07XG52YXIgZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gXCJcXG4gIC5ibG9jay1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCwgXCIge3BvaW50ZXItZXZlbnRzOiBub25lO31cXG4gIC5hbGxvdy1pbnRlcmFjdGl2aXR5LVwiKS5jb25jYXQoaWQsIFwiIHtwb2ludGVyLWV2ZW50czogYWxsO31cXG5cIik7IH07XG52YXIgaWRDb3VudGVyID0gMDtcbnZhciBsb2NrU3RhY2sgPSBbXTtcbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVTY3JvbGxTaWRlQ2FyKHByb3BzKSB7XG4gICAgdmFyIHNob3VsZFByZXZlbnRRdWV1ZSA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgdmFyIHRvdWNoU3RhcnRSZWYgPSBSZWFjdC51c2VSZWYoWzAsIDBdKTtcbiAgICB2YXIgYWN0aXZlQXhpcyA9IFJlYWN0LnVzZVJlZigpO1xuICAgIHZhciBpZCA9IFJlYWN0LnVzZVN0YXRlKGlkQ291bnRlcisrKVswXTtcbiAgICB2YXIgU3R5bGUgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiBzdHlsZVNpbmdsZXRvbigpOyB9KVswXTtcbiAgICB2YXIgbGFzdFByb3BzID0gUmVhY3QudXNlUmVmKHByb3BzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0UHJvcHMuY3VycmVudCA9IHByb3BzO1xuICAgIH0sIFtwcm9wc10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChwcm9wcy5pbmVydCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiYmxvY2staW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTtcbiAgICAgICAgICAgIHZhciBhbGxvd18xID0gX19zcHJlYWRBcnJheShbcHJvcHMubG9ja1JlZi5jdXJyZW50XSwgKHByb3BzLnNoYXJkcyB8fCBbXSkubWFwKGV4dHJhY3RSZWYpLCB0cnVlKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICBhbGxvd18xLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKFwiYWxsb3ctaW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTsgfSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImJsb2NrLWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7XG4gICAgICAgICAgICAgICAgYWxsb3dfMS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShcImFsbG93LWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSwgW3Byb3BzLmluZXJ0LCBwcm9wcy5sb2NrUmVmLmN1cnJlbnQsIHByb3BzLnNoYXJkc10pO1xuICAgIHZhciBzaG91bGRDYW5jZWxFdmVudCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCwgcGFyZW50KSB7XG4gICAgICAgIGlmICgndG91Y2hlcycgaW4gZXZlbnQgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAhbGFzdFByb3BzLmN1cnJlbnQuYWxsb3dQaW5jaFpvb207XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdWNoID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgICAgIHZhciB0b3VjaFN0YXJ0ID0gdG91Y2hTdGFydFJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgZGVsdGFYID0gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOiB0b3VjaFN0YXJ0WzBdIC0gdG91Y2hbMF07XG4gICAgICAgIHZhciBkZWx0YVkgPSAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IHRvdWNoU3RhcnRbMV0gLSB0b3VjaFsxXTtcbiAgICAgICAgdmFyIGN1cnJlbnRBeGlzO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB2YXIgbW92ZURpcmVjdGlvbiA9IE1hdGguYWJzKGRlbHRhWCkgPiBNYXRoLmFicyhkZWx0YVkpID8gJ2gnIDogJ3YnO1xuICAgICAgICAvLyBhbGxvdyBob3Jpem9udGFsIHRvdWNoIG1vdmUgb24gUmFuZ2UgaW5wdXRzLiBUaGV5IHdpbGwgbm90IGNhdXNlIGFueSBzY3JvbGxcbiAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBldmVudCAmJiBtb3ZlRGlyZWN0aW9uID09PSAnaCcgJiYgdGFyZ2V0LnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgIGlmICghY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbiA9PT0gJ3YnID8gJ2gnIDogJ3YnO1xuICAgICAgICAgICAgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgICAgICAvLyBvdGhlciBheGlzIG1pZ2h0IGJlIG5vdCBzY3JvbGxhYmxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY3RpdmVBeGlzLmN1cnJlbnQgJiYgJ2NoYW5nZWRUb3VjaGVzJyBpbiBldmVudCAmJiAoZGVsdGFYIHx8IGRlbHRhWSkpIHtcbiAgICAgICAgICAgIGFjdGl2ZUF4aXMuY3VycmVudCA9IGN1cnJlbnRBeGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VycmVudEF4aXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxpbmdBeGlzID0gYWN0aXZlQXhpcy5jdXJyZW50IHx8IGN1cnJlbnRBeGlzO1xuICAgICAgICByZXR1cm4gaGFuZGxlU2Nyb2xsKGNhbmNlbGluZ0F4aXMsIHBhcmVudCwgZXZlbnQsIGNhbmNlbGluZ0F4aXMgPT09ICdoJyA/IGRlbHRhWCA6IGRlbHRhWSwgdHJ1ZSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRQcmV2ZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKF9ldmVudCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBfZXZlbnQ7XG4gICAgICAgIGlmICghbG9ja1N0YWNrLmxlbmd0aCB8fCBsb2NrU3RhY2tbbG9ja1N0YWNrLmxlbmd0aCAtIDFdICE9PSBTdHlsZSkge1xuICAgICAgICAgICAgLy8gbm90IHRoZSBsYXN0IGFjdGl2ZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWx0YSA9ICdkZWx0YVknIGluIGV2ZW50ID8gZ2V0RGVsdGFYWShldmVudCkgOiBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICAgICAgdmFyIHNvdXJjZUV2ZW50ID0gc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLm5hbWUgPT09IGV2ZW50LnR5cGUgJiYgZS50YXJnZXQgPT09IGV2ZW50LnRhcmdldCAmJiBkZWx0YUNvbXBhcmUoZS5kZWx0YSwgZGVsdGEpOyB9KVswXTtcbiAgICAgICAgLy8gc2VsZiBldmVudCwgYW5kIHNob3VsZCBiZSBjYW5jZWxlZFxuICAgICAgICBpZiAoc291cmNlRXZlbnQgJiYgc291cmNlRXZlbnQuc2hvdWxkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3V0c2lkZSBvciBzaGFyZCBldmVudFxuICAgICAgICBpZiAoIXNvdXJjZUV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgc2hhcmROb2RlcyA9IChsYXN0UHJvcHMuY3VycmVudC5zaGFyZHMgfHwgW10pXG4gICAgICAgICAgICAgICAgLm1hcChleHRyYWN0UmVmKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7IH0pO1xuICAgICAgICAgICAgdmFyIHNob3VsZFN0b3AgPSBzaGFyZE5vZGVzLmxlbmd0aCA+IDAgPyBzaG91bGRDYW5jZWxFdmVudChldmVudCwgc2hhcmROb2Rlc1swXSkgOiAhbGFzdFByb3BzLmN1cnJlbnQubm9Jc29sYXRpb247XG4gICAgICAgICAgICBpZiAoc2hvdWxkU3RvcCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRDYW5jZWwgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobmFtZSwgZGVsdGEsIHRhcmdldCwgc2hvdWxkKSB7XG4gICAgICAgIHZhciBldmVudCA9IHsgbmFtZTogbmFtZSwgZGVsdGE6IGRlbHRhLCB0YXJnZXQ6IHRhcmdldCwgc2hvdWxkOiBzaG91bGQgfTtcbiAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQucHVzaChldmVudCk7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQgPSBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgIT09IGV2ZW50OyB9KTtcbiAgICAgICAgfSwgMSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxUb3VjaFN0YXJ0ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRvdWNoU3RhcnRSZWYuY3VycmVudCA9IGdldFRvdWNoWFkoZXZlbnQpO1xuICAgICAgICBhY3RpdmVBeGlzLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxXaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBzaG91bGRDYW5jZWwoZXZlbnQudHlwZSwgZ2V0RGVsdGFYWShldmVudCksIGV2ZW50LnRhcmdldCwgc2hvdWxkQ2FuY2VsRXZlbnQoZXZlbnQsIHByb3BzLmxvY2tSZWYuY3VycmVudCkpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgc2Nyb2xsVG91Y2hNb3ZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHNob3VsZENhbmNlbChldmVudC50eXBlLCBnZXRUb3VjaFhZKGV2ZW50KSwgZXZlbnQudGFyZ2V0LCBzaG91bGRDYW5jZWxFdmVudChldmVudCwgcHJvcHMubG9ja1JlZi5jdXJyZW50KSk7XG4gICAgfSwgW10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvY2tTdGFjay5wdXNoKFN0eWxlKTtcbiAgICAgICAgcHJvcHMuc2V0Q2FsbGJhY2tzKHtcbiAgICAgICAgICAgIG9uU2Nyb2xsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvbldoZWVsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvblRvdWNoTW92ZUNhcHR1cmU6IHNjcm9sbFRvdWNoTW92ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NrU3RhY2sgPSBsb2NrU3RhY2suZmlsdGVyKGZ1bmN0aW9uIChpbnN0KSB7IHJldHVybiBpbnN0ICE9PSBTdHlsZTsgfSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHZhciByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGluZXJ0ID0gcHJvcHMuaW5lcnQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBpbmVydCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGUsIHsgc3R5bGVzOiBnZW5lcmF0ZVN0eWxlKGlkKSB9KSA6IG51bGwsXG4gICAgICAgIHJlbW92ZVNjcm9sbEJhciA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsQmFyLCB7IGdhcE1vZGU6IFwibWFyZ2luXCIgfSkgOiBudWxsKSk7XG59XG4iLCJpbXBvcnQgeyBleHBvcnRTaWRlY2FyIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsU2lkZUNhciB9IGZyb20gJy4vU2lkZUVmZmVjdCc7XG5pbXBvcnQgeyBlZmZlY3RDYXIgfSBmcm9tICcuL21lZGl1bSc7XG5leHBvcnQgZGVmYXVsdCBleHBvcnRTaWRlY2FyKGVmZmVjdENhciwgUmVtb3ZlU2Nyb2xsU2lkZUNhcik7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsIH0gZnJvbSAnLi9VSSc7XG5pbXBvcnQgU2lkZUNhciBmcm9tICcuL3NpZGVjYXInO1xudmFyIFJlYWN0UmVtb3ZlU2Nyb2xsID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgcmVmOiByZWYsIHNpZGVDYXI6IFNpZGVDYXIgfSkpKTsgfSk7XG5SZWFjdFJlbW92ZVNjcm9sbC5jbGFzc05hbWVzID0gUmVtb3ZlU2Nyb2xsLmNsYXNzTmFtZXM7XG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlbW92ZVNjcm9sbDtcbiIsInZhciBnZXREZWZhdWx0UGFyZW50ID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzYW1wbGVUYXJnZXQgPSBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0WzBdIDogb3JpZ2luYWxUYXJnZXQ7XG4gICAgcmV0dXJuIHNhbXBsZVRhcmdldC5vd25lckRvY3VtZW50LmJvZHk7XG59O1xudmFyIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xudmFyIHVuY29udHJvbGxlZE5vZGVzID0gbmV3IFdlYWtNYXAoKTtcbnZhciBtYXJrZXJNYXAgPSB7fTtcbnZhciBsb2NrQ291bnQgPSAwO1xudmFyIHVud3JhcEhvc3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlICYmIChub2RlLmhvc3QgfHwgdW53cmFwSG9zdChub2RlLnBhcmVudE5vZGUpKTtcbn07XG52YXIgY29ycmVjdFRhcmdldHMgPSBmdW5jdGlvbiAocGFyZW50LCB0YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRhcmdldHNcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIGlmIChwYXJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29ycmVjdGVkVGFyZ2V0ID0gdW53cmFwSG9zdCh0YXJnZXQpO1xuICAgICAgICBpZiAoY29ycmVjdGVkVGFyZ2V0ICYmIHBhcmVudC5jb250YWlucyhjb3JyZWN0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29ycmVjdGVkVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FyaWEtaGlkZGVuJywgdGFyZ2V0LCAnaW4gbm90IGNvbnRhaW5lZCBpbnNpZGUnLCBwYXJlbnQsICcuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4gQm9vbGVhbih4KTsgfSk7XG59O1xuLyoqXG4gKiBNYXJrcyBldmVyeXRoaW5nIGV4Y2VwdCBnaXZlbiBub2RlKG9yIG5vZGVzKSBhcyBhcmlhLWhpZGRlblxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2NvbnRyb2xBdHRyaWJ1dGVdIC0gaHRtbCBBdHRyaWJ1dGUgdG8gY29udHJvbFxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbnZhciBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lLCBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgdmFyIHRhcmdldHMgPSBjb3JyZWN0VGFyZ2V0cyhwYXJlbnROb2RlLCBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICAgICAgbWFya2VyTWFwW21hcmtlck5hbWVdID0gbmV3IFdlYWtNYXAoKTtcbiAgICB9XG4gICAgdmFyIG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gICAgdmFyIGhpZGRlbk5vZGVzID0gW107XG4gICAgdmFyIGVsZW1lbnRzVG9LZWVwID0gbmV3IFNldCgpO1xuICAgIHZhciBlbGVtZW50c1RvU3RvcCA9IG5ldyBTZXQodGFyZ2V0cyk7XG4gICAgdmFyIGtlZXAgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgaWYgKCFlbCB8fCBlbGVtZW50c1RvS2VlcC5oYXMoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudHNUb0tlZXAuYWRkKGVsKTtcbiAgICAgICAga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgICB9O1xuICAgIHRhcmdldHMuZm9yRWFjaChrZWVwKTtcbiAgICB2YXIgZGVlcCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKCFwYXJlbnQgfHwgZWxlbWVudHNUb1N0b3AuaGFzKHBhcmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHBhcmVudC5jaGlsZHJlbiwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1RvS2VlcC5oYXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgYWxyZWFkeUhpZGRlbiA9IGF0dHIgIT09IG51bGwgJiYgYXR0ciAhPT0gJ2ZhbHNlJztcbiAgICAgICAgICAgICAgICB2YXIgY291bnRlclZhbHVlID0gKGNvdW50ZXJNYXAuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgICAgICAgICB2YXIgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJWYWx1ZSA9PT0gMSAmJiBhbHJlYWR5SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuY29udHJvbGxlZE5vZGVzLnNldChub2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG1hcmtlck5hbWUsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBkZWVwKHBhcmVudE5vZGUpO1xuICAgIGVsZW1lbnRzVG9LZWVwLmNsZWFyKCk7XG4gICAgbG9ja0NvdW50Kys7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaGlkZGVuTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXJWYWx1ZSA9IGNvdW50ZXJNYXAuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIHZhciBtYXJrZXJWYWx1ZSA9IG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWNvdW50ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdW5jb250cm9sbGVkTm9kZXMuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1bmNvbnRyb2xsZWROb2Rlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobWFya2VyTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsb2NrQ291bnQtLTtcbiAgICAgICAgaWYgKCFsb2NrQ291bnQpIHtcbiAgICAgICAgICAgIC8vIGNsZWFyXG4gICAgICAgICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgdW5jb250cm9sbGVkTm9kZXMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgbWFya2VyTWFwID0ge307XG4gICAgICAgIH1cbiAgICB9O1xufTtcbi8qKlxuICogTWFya3MgZXZlcnl0aGluZyBleGNlcHQgZ2l2ZW4gbm9kZShvciBub2RlcykgYXMgYXJpYS1oaWRkZW5cbiAqIEBwYXJhbSB7RWxlbWVudCB8IEVsZW1lbnRbXX0gb3JpZ2luYWxUYXJnZXQgLSBlbGVtZW50cyB0byBrZWVwIG9uIHRoZSBwYWdlXG4gKiBAcGFyYW0gW3BhcmVudE5vZGVdIC0gdG9wIGVsZW1lbnQsIGRlZmF1bHRzIHRvIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbWFya2VyTmFtZV0gLSBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgZXZlcnkgbm9kZVxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbmV4cG9ydCB2YXIgaGlkZU90aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLWFyaWEtaGlkZGVuJzsgfVxuICAgIHZhciB0YXJnZXRzID0gQXJyYXkuZnJvbShBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgLy8gd2Ugc2hvdWxkIG5vdCBoaWRlIGFyaWFMaXZlIGVsZW1lbnRzIC0gaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS9hcmlhLWhpZGRlbi9pc3N1ZXMvMTBcbiAgICB0YXJnZXRzLnB1c2guYXBwbHkodGFyZ2V0cywgQXJyYXkuZnJvbShhY3RpdmVQYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKTtcbiAgICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh0YXJnZXRzLCBhY3RpdmVQYXJlbnROb2RlLCBtYXJrZXJOYW1lLCAnYXJpYS1oaWRkZW4nKTtcbn07XG4vKipcbiAqIE1hcmtzIGV2ZXJ5dGhpbmcgZXhjZXB0IGdpdmVuIG5vZGUob3Igbm9kZXMpIGFzIGluZXJ0XG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEByZXR1cm4ge1VuZG99IHVuZG8gY29tbWFuZFxuICovXG5leHBvcnQgdmFyIGluZXJ0T3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtaW5lcnQtZWQnOyB9XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMob3JpZ2luYWxUYXJnZXQsIGFjdGl2ZVBhcmVudE5vZGUsIG1hcmtlck5hbWUsICdpbmVydCcpO1xufTtcbi8qKlxuICogQHJldHVybnMgaWYgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIGluZXJ0XG4gKi9cbmV4cG9ydCB2YXIgc3VwcG9ydHNJbmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ2luZXJ0Jyk7XG59O1xuLyoqXG4gKiBBdXRvbWF0aWMgZnVuY3Rpb24gdG8gXCJzdXBwcmVzc1wiIERPTSBlbGVtZW50cyAtIF9oaWRlXyBvciBfaW5lcnRfIGluIHRoZSBiZXN0IHBvc3NpYmxlIHdheVxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xuZXhwb3J0IHZhciBzdXBwcmVzc090aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLXN1cHByZXNzZWQnOyB9XG4gICAgcmV0dXJuIChzdXBwb3J0c0luZXJ0KCkgPyBpbmVydE90aGVycyA6IGhpZGVPdGhlcnMpKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKTtcbn07XG4iLCJpbXBvcnQgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVJlZiBhcyAkNjdVSG0kdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ2N1VIbSRjcmVhdGVFbGVtZW50LCB1c2VDYWxsYmFjayBhcyAkNjdVSG0kdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgYXMgJDY3VUhtJGZvcndhcmRSZWYsIENoaWxkcmVuIGFzICQ2N1VIbSRDaGlsZHJlbiwgdXNlRWZmZWN0IGFzICQ2N1VIbSR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQ2N1VIbSRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ2N1VIbSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlLCBjcmVhdGVDb250ZXh0IGFzICQ2N1VIbSRjcmVhdGVDb250ZXh0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDY3VUhtJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDY3VUhtJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7Rm9jdXNTY29wZSBhcyAkNjdVSG0kRm9jdXNTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1zY29wZVwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDY3VUhtJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDY3VUhtJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkNjdVSG0kUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VGb2N1c0d1YXJkcyBhcyAkNjdVSG0kdXNlRm9jdXNHdWFyZHN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzXCI7XG5pbXBvcnQge1JlbW92ZVNjcm9sbCBhcyAkNjdVSG0kUmVtb3ZlU2Nyb2xsfSBmcm9tIFwicmVhY3QtcmVtb3ZlLXNjcm9sbFwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQ2N1VIbSRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7U2xvdCBhcyAkNjdVSG0kU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSA9ICdEaWFsb2cnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRjcmVhdGVEaWFsb2dDb250ZXh0LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkY2M3MDI3NzNiOGVhM2U0MV0gPSAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlKCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSk7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ1Byb3ZpZGVyLCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dF0gPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUpO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIG1vZGFsOiBtb2RhbCA9IHRydWUgIH0gPSBwcm9wcztcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbb3BlbiA9IGZhbHNlLCBzZXRPcGVuXSA9ICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVEaWFsb2csXG4gICAgICAgIHRyaWdnZXJSZWY6IHRyaWdnZXJSZWYsXG4gICAgICAgIGNvbnRlbnRSZWY6IGNvbnRlbnRSZWYsXG4gICAgICAgIGNvbnRlbnRJZDogJDY3VUhtJHVzZUlkKCksXG4gICAgICAgIHRpdGxlSWQ6ICQ2N1VIbSR1c2VJZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbklkOiAkNjdVSG0kdXNlSWQoKSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBvbk9wZW5Ub2dnbGU6ICQ2N1VIbSR1c2VDYWxsYmFjaygoKT0+c2V0T3BlbigocHJldk9wZW4pPT4hcHJldk9wZW5cbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXG4gICAgICAgICAgICBzZXRPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBtb2RhbDogbW9kYWxcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzZGRmMmQxNzRjZTAxMTUzLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUUgPSAnRGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMmUxZTExMjJjZjBjYmE4OCA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgY29tcG9zZWRUcmlnZ2VyUmVmID0gJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQudHJpZ2dlclJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5idXR0b24sICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImRpYWxvZ1wiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogY29udGV4dC5vcGVuLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkVHJpZ2dlclJlZixcbiAgICAgICAgb25DbGljazogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIGNvbnRleHQub25PcGVuVG9nZ2xlKVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSA9ICdEaWFsb2dQb3J0YWwnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FLCB7XG4gICAgZm9yY2VNb3VudDogdW5kZWZpbmVkXG59KTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkUE9SVEFMX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZURpYWxvZyxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sICQ2N1VIbSRDaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCk9Pi8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByZXNlbmNlLCB7XG4gICAgICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQb3J0YWwsIHtcbiAgICAgICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgICAgICB9LCBjaGlsZCkpXG4gICAgKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dPdmVybGF5XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUgPSAnRGlhbG9nT3ZlcmxheSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dPdmVybGF5SW1wbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUVcbn0pO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkT1ZFUkxBWV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4oLyojX19QVVJFX18qLyAvLyBNYWtlIHN1cmUgYENvbnRlbnRgIGlzIHNjcm9sbGFibGUgZXZlbiB3aGVuIGl0IGRvZXNuJ3QgbGl2ZSBpbnNpZGUgYFJlbW92ZVNjcm9sbGBcbiAgICAvLyBpZS4gd2hlbiBgT3ZlcmxheWAgYW5kIGBDb250ZW50YCBhcmUgc2libGluZ3NcbiAgICAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkNjdVSG0kU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWUsXG4gICAgICAgIHNoYXJkczogW1xuICAgICAgICAgICAgY29udGV4dC5jb250ZW50UmVmXG4gICAgICAgIF1cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuZGl2LCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlKGNvbnRleHQub3BlbilcbiAgICB9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYgLy8gV2UgcmUtZW5hYmxlIHBvaW50ZXItZXZlbnRzIHByZXZlbnRlZCBieSBgRGlhbG9nLkNvbnRlbnRgIHRvIGFsbG93IHNjcm9sbGluZyB0aGUgb3ZlcmxheS5cbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICAgICAgICAgICAgLi4ub3ZlcmxheVByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FID0gJ0RpYWxvZ0NvbnRlbnQnO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHBvcnRhbENvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlUG9ydGFsQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCB7IGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgPSBwb3J0YWxDb250ZXh0LmZvcmNlTW91bnQgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50TW9kYWwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNjdVSG0kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb250ZW50UmVmLCBjb250ZW50UmVmKTsgLy8gYXJpYS1oaWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjb250ZW50IChiZXR0ZXIgc3VwcG9ydGVkIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBhcmlhLW1vZGFsKVxuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGNvbnRlbnQpIHJldHVybiAkNjdVSG0kaGlkZU90aGVycyhjb250ZW50KTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIHdlIG1ha2Ugc3VyZSBmb2N1cyBpc24ndCB0cmFwcGVkIG9uY2UgYERpYWxvZ0NvbnRlbnRgIGhhcyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBGb2N1czogY29udGV4dC5vcGVuLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlclJlZiRjO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyUmVmJGMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjLmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25PdXRzaWRlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQ7XG4gICAgICAgICAgICBjb25zdCBjdHJsTGVmdENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDAgJiYgb3JpZ2luYWxFdmVudC5jdHJsS2V5ID09PSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNSaWdodENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDIgfHwgY3RybExlZnRDbGljazsgLy8gSWYgdGhlIGV2ZW50IGlzIGEgcmlnaHQtY2xpY2ssIHdlIHNob3VsZG4ndCBjbG9zZSBiZWNhdXNlXG4gICAgICAgICAgICAvLyBpdCBpcyBlZmZlY3RpdmVseSBhcyBpZiB3ZSByaWdodC1jbGlja2VkIHRoZSBgT3ZlcmxheWAuXG4gICAgICAgICAgICBpZiAoaXNSaWdodENsaWNrKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgYGZvY3Vzb3V0YCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c091dHNpZGUsIChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgKVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE5vbk1vZGFsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHRyYXBGb2N1czogZmFsc2UsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25DbG9zZUF1dG9Gb2M7XG4gICAgICAgICAgICAoX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID0gcHJvcHMub25DbG9zZUF1dG9Gb2N1cykgPT09IG51bGwgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGMyO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCkgKF9jb250ZXh0JHRyaWdnZXJSZWYkYzIgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzIuZm9jdXMoKTsgLy8gQWx3YXlzIHByZXZlbnQgYXV0byBmb2N1cyBiZWNhdXNlIHdlIGVpdGhlciBmb2N1cyBtYW51YWxseSBvciB3YW50IHVzZXIgYWdlbnQgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25JbnRlcmFjdE91dHMsIF9jb250ZXh0JHRyaWdnZXJSZWYkYzM7XG4gICAgICAgICAgICAoX3Byb3BzJG9uSW50ZXJhY3RPdXRzID0gcHJvcHMub25JbnRlcmFjdE91dHNpZGUpID09PSBudWxsIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cyA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cy5jYWxsKHByb3BzLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJykgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSAvLyBQcmV2ZW50IGRpc21pc3Npbmcgd2hlbiBjbGlja2luZyB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGlzIGFscmVhZHkgc2V0dXAgdG8gY2xvc2UsIHdpdGhvdXQgZG9pbmcgc28gd291bGRcbiAgICAgICAgICAgIC8vIGNhdXNlIGl0IHRvIGNsb3NlIGFuZCBpbW1lZGlhdGVseSBvcGVuLlxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0SXNUcmlnZ2VyID0gKF9jb250ZXh0JHRyaWdnZXJSZWYkYzMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRleHQkdHJpZ2dlclJlZiRjMy5jb250YWlucyh0YXJnZXQpO1xuICAgICAgICAgICAgaWYgKHRhcmdldElzVHJpZ2dlcikgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT24gU2FmYXJpIGlmIHRoZSB0cmlnZ2VyIGlzIGluc2lkZSBhIGNvbnRhaW5lciB3aXRoIHRhYkluZGV4PXswfSwgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICAvLyB3ZSB3aWxsIGdldCB0aGUgcG9pbnRlciBkb3duIG91dHNpZGUgZXZlbnQgb24gdGhlIHRyaWdnZXIsIGJ1dCB0aGVuIGEgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gZm9jdXMgb3V0c2lkZSBldmVudCBvbiB0aGUgY29udGFpbmVyLCB3ZSBpZ25vcmUgYW55IGZvY3VzIG91dHNpZGUgZXZlbnQgd2hlbiB3ZSd2ZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYWQgYSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudC5cbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAnZm9jdXNpbicgJiYgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCB0cmFwRm9jdXM6IHRyYXBGb2N1cyAsIG9uT3BlbkF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2N1VIbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBEaWFsb2dgIHdpbGwgYmVcbiAgICAvLyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBET00gKGJlYWN1c2Ugb2YgdGhlIGBQb3J0YWxgKVxuICAgICQ2N1VIbSR1c2VGb2N1c0d1YXJkcygpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRm9jdXNTY29wZSwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB0cmFwcGVkOiB0cmFwRm9jdXMsXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IG9uT3BlbkF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzXG4gICAgfSwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRGlzbWlzc2FibGVMYXllciwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgaWQ6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogY29udGV4dC5kZXNjcmlwdGlvbklkLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBjb250ZXh0LnRpdGxlSWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSkpKSwgZmFsc2UpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVElUTEVfTkFNRSA9ICdEaWFsb2dUaXRsZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udGl0bGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmgyLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogY29udGV4dC50aXRsZUlkXG4gICAgfSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ0Rlc2NyaXB0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5kZXNjcmlwdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERFU0NSSVBUSU9OX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUucCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGNvbnRleHQuZGVzY3JpcHRpb25JZFxuICAgIH0sIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dDbG9zZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRSA9ICdEaWFsb2dDbG9zZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4uY2xvc2VQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmJ1dHRvbiwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgIH0sIGNsb3NlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uQ2xpY2s6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShvcGVuKSB7XG4gICAgcmV0dXJuIG9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJztcbn1cbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUgPSAnRGlhbG9nVGl0bGVXYXJuaW5nJztcbmNvbnN0IFskNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0XSA9ICQ2N1VIbSRjcmVhdGVDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUsIHtcbiAgICBjb250ZW50TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSxcbiAgICB0aXRsZU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLFxuICAgIGRvY3NTbHVnOiAnZGlhbG9nJ1xufSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVGl0bGVXYXJuaW5nID0gKHsgdGl0bGVJZDogdGl0bGVJZCAgfSk9PntcbiAgICBjb25zdCB0aXRsZVdhcm5pbmdDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUpO1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LmNvbnRlbnROYW1lfVxcYCByZXF1aXJlcyBhIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbklmIHlvdSB3YW50IHRvIGhpZGUgdGhlIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgLCB5b3UgY2FuIHdyYXAgaXQgd2l0aCBvdXIgVmlzdWFsbHlIaWRkZW4gY29tcG9uZW50LlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcmFkaXgtdWkuY29tL3ByaW1pdGl2ZXMvZG9jcy9jb21wb25lbnRzLyR7dGl0bGVXYXJuaW5nQ29udGV4dC5kb2NzU2x1Z31gO1xuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRpdGxlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGl0bGVJZCk7XG4gICAgICAgICAgICBpZiAoIWhhc1RpdGxlKSB0aHJvdyBuZXcgRXJyb3IoTUVTU0FHRSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIE1FU1NBR0UsXG4gICAgICAgIHRpdGxlSWRcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uV2FybmluZyc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGVzY3JpcHRpb25XYXJuaW5nID0gKHsgY29udGVudFJlZjogY29udGVudFJlZiAsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQgIH0pPT57XG4gICAgY29uc3QgZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VXYXJuaW5nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FKTtcbiAgICBjb25zdCBNRVNTQUdFID0gYFdhcm5pbmc6IE1pc3NpbmcgXFxgRGVzY3JpcHRpb25cXGAgb3IgXFxgYXJpYS1kZXNjcmliZWRieT17dW5kZWZpbmVkfVxcYCBmb3IgeyR7ZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dC5jb250ZW50TmFtZX19LmA7XG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRSZWYkY3VycmVudDtcbiAgICAgICAgY29uc3QgZGVzY3JpYmVkQnlJZCA9IChfY29udGVudFJlZiRjdXJyZW50ID0gY29udGVudFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGVudFJlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudFJlZiRjdXJyZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpOyAvLyBpZiB3ZSBoYXZlIGFuIGlkIGFuZCB0aGUgdXNlciBoYXNuJ3Qgc2V0IGFyaWEtZGVzY3JpYmVkYnk9e3VuZGVmaW5lZH1cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uSWQgJiYgZGVzY3JpYmVkQnlJZCkge1xuICAgICAgICAgICAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXNjcmlwdGlvbklkKTtcbiAgICAgICAgICAgIGlmICghaGFzRGVzY3JpcHRpb24pIGNvbnNvbGUud2FybihNRVNTQUdFKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgTUVTU0FHRSxcbiAgICAgICAgY29udGVudFJlZixcbiAgICAgICAgZGVzY3JpcHRpb25JZFxuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTM7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZGFkN2M5NTU0MmJhY2NlMDtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiNmQ5NTY1ZGUxZTA2OGNmO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDU7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjO1xuXG5cblxuXG5leHBvcnQgeyQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIGFzIGNyZWF0ZURpYWxvZ1Njb3BlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MyBhcyBEaWFsb2csICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4IGFzIERpYWxvZ1RyaWdnZXIsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwIGFzIERpYWxvZ1BvcnRhbCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTcgYXMgRGlhbG9nT3ZlcmxheSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgYXMgRGlhbG9nQ29udGVudCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDkgYXMgRGlhbG9nVGl0bGUsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IGFzIERpYWxvZ0Rlc2NyaXB0aW9uLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyBhcyBEaWFsb2dDbG9zZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCBhcyBUaXRsZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgYXMgRGVzY3JpcHRpb24sICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIGFzIENsb3NlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiBhcyBXYXJuaW5nUHJvdmlkZXJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4MlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4MilcIj5cbjxwYXRoIGQ9XCJNMTIgMTMuMDUzOEw2LjkyNjg5IDE4LjEyNjlDNi43ODg0NCAxOC4yNjU0IDYuNjE0NCAxOC4zMzYyIDYuNDA0NzkgMTguMzM5NEM2LjE5NTE5IDE4LjM0MjYgNi4wMTc5NSAxOC4yNzE4IDUuODczMDkgMTguMTI2OUM1LjcyODIgMTcuOTgyIDUuNjU1NzYgMTcuODA2NCA1LjY1NTc2IDE3LjZDNS42NTU3NiAxNy4zOTM2IDUuNzI4MiAxNy4yMTggNS44NzMwOSAxNy4wNzMxTDEwLjk0NjIgMTJMNS44NzMwOSA2LjkyNjg5QzUuNzM0NjIgNi43ODg0NCA1LjY2Mzc5IDYuNjE0NCA1LjY2MDU5IDYuNDA0NzlDNS42NTczNyA2LjE5NTE5IDUuNzI4MiA2LjAxNzk1IDUuODczMDkgNS44NzMwOUM2LjAxNzk1IDUuNzI4MiA2LjE5MzU5IDUuNjU1NzYgNi4zOTk5OSA1LjY1NTc2QzYuNjA2MzkgNS42NTU3NiA2Ljc4MjAyIDUuNzI4MiA2LjkyNjg5IDUuODczMDlMMTIgMTAuOTQ2MkwxNy4wNzMxIDUuODczMDlDMTcuMjExNSA1LjczNDYyIDE3LjM4NTYgNS42NjM3OSAxNy41OTUyIDUuNjYwNTlDMTcuODA0OCA1LjY1NzM3IDE3Ljk4MiA1LjcyODIgMTguMTI2OSA1Ljg3MzA5QzE4LjI3MTggNi4wMTc5NSAxOC4zNDQyIDYuMTkzNTkgMTguMzQ0MiA2LjM5OTk5QzE4LjM0NDIgNi42MDYzOSAxOC4yNzE4IDYuNzgyMDIgMTguMTI2OSA2LjkyNjg5TDEzLjA1MzggMTJMMTguMTI2OSAxNy4wNzMxQzE4LjI2NTQgMTcuMjExNSAxOC4zMzYyIDE3LjM4NTYgMTguMzM5NCAxNy41OTUyQzE4LjM0MjYgMTcuODA0OCAxOC4yNzE4IDE3Ljk4MiAxOC4xMjY5IDE4LjEyNjlDMTcuOTgyIDE4LjI3MTggMTcuODA2NCAxOC4zNDQyIDE3LjYgMTguMzQ0MkMxNy4zOTM2IDE4LjM0NDIgMTcuMjE4IDE4LjI3MTggMTcuMDczMSAxOC4xMjY5TDEyIDEzLjA1MzhaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsImltcG9ydCAkNnZZaFUkcmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNnZZaFUkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ2dlloVSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDZ2WWhVJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cbi8vIFdlIGhhdmUgcmVzb3J0ZWQgdG8gcmV0dXJuaW5nIHNsb3RzIGRpcmVjdGx5IHJhdGhlciB0aGFuIGV4cG9zaW5nIHByaW1pdGl2ZXMgdGhhdCBjYW4gdGhlblxuLy8gYmUgc2xvdHRlZCBsaWtlIGA8Q29sbGVjdGlvbkl0ZW0gYXM9e1Nsb3R9PuKApjwvQ29sbGVjdGlvbkl0ZW0+YC5cbi8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBpc3N1ZXMgd2l0aCBnZW5lcmljIHR5cGVzIHRoYXQgY2Fubm90IGJlIHN0YXRpY2FsbHkgYW5hbHlzZWRcbi8vIGR1ZSB0byBjcmVhdGluZyB0aGVtIGR5bmFtaWNhbGx5IHZpYSBjcmVhdGVDb2xsZWN0aW9uLlxuZnVuY3Rpb24gJGUwMmE3ZDljYjFkYzEyOGMkZXhwb3J0JGM3NDEyNWE4ZTNhZjZiYjIobmFtZSkge1xuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25Qcm92aWRlclxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBQUk9WSURFUl9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uUHJvdmlkZXInO1xuICAgIGNvbnN0IFtjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCwgY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUoUFJPVklERVJfTkFNRSk7XG4gICAgY29uc3QgW0NvbGxlY3Rpb25Qcm92aWRlckltcGwsIHVzZUNvbGxlY3Rpb25Db250ZXh0XSA9IGNyZWF0ZUNvbGxlY3Rpb25Db250ZXh0KFBST1ZJREVSX05BTUUsIHtcbiAgICAgICAgY29sbGVjdGlvblJlZjoge1xuICAgICAgICAgICAgY3VycmVudDogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBpdGVtTWFwOiBuZXcgTWFwKClcbiAgICB9KTtcbiAgICBjb25zdCBDb2xsZWN0aW9uUHJvdmlkZXIgPSAocHJvcHMpPT57XG4gICAgICAgIGNvbnN0IHsgc2NvcGU6IHNjb3BlICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHJlZiA9ICQ2dlloVSRyZWFjdC51c2VSZWYobnVsbCk7XG4gICAgICAgIGNvbnN0IGl0ZW1NYXAgPSAkNnZZaFUkcmVhY3QudXNlUmVmKG5ldyBNYXAoKSkuY3VycmVudDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29sbGVjdGlvblByb3ZpZGVySW1wbCwge1xuICAgICAgICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgICAgICAgaXRlbU1hcDogaXRlbU1hcCxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWY6IHJlZlxuICAgICAgICB9LCBjaGlsZHJlbik7XG4gICAgfTtcbiAgICAvKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oQ29sbGVjdGlvblByb3ZpZGVyLCB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBQUk9WSURFUl9OQU1FXG4gICAgfSk7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvblNsb3RcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgQ09MTEVDVElPTl9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25TbG90JztcbiAgICBjb25zdCBDb2xsZWN0aW9uU2xvdCA9IC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgc2NvcGU6IHNjb3BlICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChDT0xMRUNUSU9OX1NMT1RfTkFNRSwgc2NvcGUpO1xuICAgICAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNnZZaFUkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb2xsZWN0aW9uUmVmKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmNyZWF0ZUVsZW1lbnQoJDZ2WWhVJFNsb3QsIHtcbiAgICAgICAgICAgIHJlZjogY29tcG9zZWRSZWZzXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgICAvKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oQ29sbGVjdGlvblNsb3QsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IENPTExFQ1RJT05fU0xPVF9OQU1FXG4gICAgfSk7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvbkl0ZW1cbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgSVRFTV9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25JdGVtU2xvdCc7XG4gICAgY29uc3QgSVRFTV9EQVRBX0FUVFIgPSAnZGF0YS1yYWRpeC1jb2xsZWN0aW9uLWl0ZW0nO1xuICAgIGNvbnN0IENvbGxlY3Rpb25JdGVtU2xvdCA9IC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgc2NvcGU6IHNjb3BlICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uaXRlbURhdGEgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCByZWYgPSAkNnZZaFUkcmVhY3QudXNlUmVmKG51bGwpO1xuICAgICAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNnZZaFUkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KElURU1fU0xPVF9OQU1FLCBzY29wZSk7XG4gICAgICAgICQ2dlloVSRyZWFjdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIGNvbnRleHQuaXRlbU1hcC5zZXQocmVmLCB7XG4gICAgICAgICAgICAgICAgcmVmOiByZWYsXG4gICAgICAgICAgICAgICAgLi4uaXRlbURhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52b2lkIGNvbnRleHQuaXRlbU1hcC5kZWxldGUocmVmKVxuICAgICAgICAgICAgO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmNyZWF0ZUVsZW1lbnQoJDZ2WWhVJFNsb3QsIHtcbiAgICAgICAgICAgIFtJVEVNX0RBVEFfQVRUUl06ICcnLFxuICAgICAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH0pO1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uSXRlbVNsb3QsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IElURU1fU0xPVF9OQU1FXG4gICAgfSk7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogdXNlQ29sbGVjdGlvblxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiB1c2VDb2xsZWN0aW9uKHNjb3BlKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChuYW1lICsgJ0NvbGxlY3Rpb25Db25zdW1lcicsIHNjb3BlKTtcbiAgICAgICAgY29uc3QgZ2V0SXRlbXMgPSAkNnZZaFUkcmVhY3QudXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25Ob2RlID0gY29udGV4dC5jb2xsZWN0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25Ob2RlKSByZXR1cm4gW107XG4gICAgICAgICAgICBjb25zdCBvcmRlcmVkTm9kZXMgPSBBcnJheS5mcm9tKGNvbGxlY3Rpb25Ob2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0lURU1fREFUQV9BVFRSfV1gKSk7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IEFycmF5LmZyb20oY29udGV4dC5pdGVtTWFwLnZhbHVlcygpKTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyZWRJdGVtcyA9IGl0ZW1zLnNvcnQoKGEsIGIpPT5vcmRlcmVkTm9kZXMuaW5kZXhPZihhLnJlZi5jdXJyZW50KSAtIG9yZGVyZWROb2Rlcy5pbmRleE9mKGIucmVmLmN1cnJlbnQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG9yZGVyZWRJdGVtcztcbiAgICAgICAgfSwgW1xuICAgICAgICAgICAgY29udGV4dC5jb2xsZWN0aW9uUmVmLFxuICAgICAgICAgICAgY29udGV4dC5pdGVtTWFwXG4gICAgICAgIF0pO1xuICAgICAgICByZXR1cm4gZ2V0SXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIFByb3ZpZGVyOiBDb2xsZWN0aW9uUHJvdmlkZXIsXG4gICAgICAgICAgICBTbG90OiBDb2xsZWN0aW9uU2xvdCxcbiAgICAgICAgICAgIEl0ZW1TbG90OiBDb2xsZWN0aW9uSXRlbVNsb3RcbiAgICAgICAgfSxcbiAgICAgICAgdXNlQ29sbGVjdGlvbixcbiAgICAgICAgY3JlYXRlQ29sbGVjdGlvblNjb3BlXG4gICAgXTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiBhcyBjcmVhdGVDb2xsZWN0aW9ufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkN0dqY2QkY3JlYXRlQ29udGV4dCwgY3JlYXRlRWxlbWVudCBhcyAkN0dqY2QkY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkN0dqY2QkdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXJlY3Rpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGM3NjBjMDlmZGQ1NTgzNTEgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBkaXI6IGRpciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVFbGVtZW50KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBkaXJcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyhsb2NhbERpcikge1xuICAgIGNvbnN0IGdsb2JhbERpciA9ICQ3R2pjZCR1c2VDb250ZXh0KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0KTtcbiAgICByZXR1cm4gbG9jYWxEaXIgfHwgZ2xvYmFsRGlyIHx8ICdsdHInO1xufVxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MTtcblxuXG5cblxuZXhwb3J0IHskZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyBhcyB1c2VEaXJlY3Rpb24sICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhIGFzIFByb3ZpZGVyLCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSBhcyBEaXJlY3Rpb25Qcm92aWRlcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDk4SXllJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDk4SXllJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAkOThJeWUkdXNlUmVmLCB1c2VTdGF0ZSBhcyAkOThJeWUkdXNlU3RhdGUsIHVzZUVmZmVjdCBhcyAkOThJeWUkdXNlRWZmZWN0LCB1c2VDYWxsYmFjayBhcyAkOThJeWUkdXNlQ2FsbGJhY2t9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge2NyZWF0ZUNvbGxlY3Rpb24gYXMgJDk4SXllJGNyZWF0ZUNvbGxlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvblwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDk4SXllJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ5OEl5ZSRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkOThJeWUkdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ5OEl5ZSRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICQ5OEl5ZSR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ5OEl5ZSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkOThJeWUkdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTID0gJ3JvdmluZ0ZvY3VzR3JvdXAub25FbnRyeUZvY3VzJztcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRFVkVOVF9PUFRJT05TID0ge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNhbmNlbGFibGU6IHRydWVcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSb3ZpbmdGb2N1c0dyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FID0gJ1JvdmluZ0ZvY3VzR3JvdXAnO1xuY29uc3QgWyRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbiwgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSAkOThJeWUkY3JlYXRlQ29sbGVjdGlvbigkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSk7XG5jb25zdCBbJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBDb250ZXh0LCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYzcxMDk0ODk1NTFhNGY0XSA9ICQ5OEl5ZSRjcmVhdGVDb250ZXh0U2NvcGUoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUsIFtcbiAgICAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXG5dKTtcbmNvbnN0IFskZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNQcm92aWRlciwgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZVJvdmluZ0ZvY3VzQ29udGV4dF0gPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUpO1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzggPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLlByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlUm92aW5nRm9jdXNHcm91cFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVJvdmluZ0ZvY3VzR3JvdXBcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c0dyb3VwSW1wbCwgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwgPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXA6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwICwgb3JpZW50YXRpb246IG9yaWVudGF0aW9uICwgbG9vcDogbG9vcCA9IGZhbHNlICwgZGlyOiBkaXIgLCBjdXJyZW50VGFiU3RvcElkOiBjdXJyZW50VGFiU3RvcElkUHJvcCAsIGRlZmF1bHRDdXJyZW50VGFiU3RvcElkOiBkZWZhdWx0Q3VycmVudFRhYlN0b3BJZCAsIG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZTogb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlICwgb25FbnRyeUZvY3VzOiBvbkVudHJ5Rm9jdXMgLCAuLi5ncm91cFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkOThJeWUkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ5OEl5ZSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQ5OEl5ZSR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbY3VycmVudFRhYlN0b3BJZCA9IG51bGwsIHNldEN1cnJlbnRUYWJTdG9wSWRdID0gJDk4SXllJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogY3VycmVudFRhYlN0b3BJZFByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0Q3VycmVudFRhYlN0b3BJZCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IFtpc1RhYmJpbmdCYWNrT3V0LCBzZXRJc1RhYmJpbmdCYWNrT3V0XSA9ICQ5OEl5ZSR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlRW50cnlGb2N1cyA9ICQ5OEl5ZSR1c2VDYWxsYmFja1JlZihvbkVudHJ5Rm9jdXMpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IGlzQ2xpY2tGb2N1c1JlZiA9ICQ5OEl5ZSR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtmb2N1c2FibGVJdGVtc0NvdW50LCBzZXRGb2N1c2FibGVJdGVtc0NvdW50XSA9ICQ5OEl5ZSR1c2VTdGF0ZSgwKTtcbiAgICAkOThJeWUkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcigkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMsIGhhbmRsZUVudHJ5Rm9jdXMpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT5ub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTLCBoYW5kbGVFbnRyeUZvY3VzKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVFbnRyeUZvY3VzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwLFxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG4gICAgICAgIGRpcjogZGlyZWN0aW9uLFxuICAgICAgICBsb29wOiBsb29wLFxuICAgICAgICBjdXJyZW50VGFiU3RvcElkOiBjdXJyZW50VGFiU3RvcElkLFxuICAgICAgICBvbkl0ZW1Gb2N1czogJDk4SXllJHVzZUNhbGxiYWNrKCh0YWJTdG9wSWQpPT5zZXRDdXJyZW50VGFiU3RvcElkKHRhYlN0b3BJZClcbiAgICAgICAgLCBbXG4gICAgICAgICAgICBzZXRDdXJyZW50VGFiU3RvcElkXG4gICAgICAgIF0pLFxuICAgICAgICBvbkl0ZW1TaGlmdFRhYjogJDk4SXllJHVzZUNhbGxiYWNrKCgpPT5zZXRJc1RhYmJpbmdCYWNrT3V0KHRydWUpXG4gICAgICAgICwgW10pLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQ6ICQ5OEl5ZSR1c2VDYWxsYmFjaygoKT0+c2V0Rm9jdXNhYmxlSXRlbXNDb3VudCgocHJldkNvdW50KT0+cHJldkNvdW50ICsgMVxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtdKSxcbiAgICAgICAgb25Gb2N1c2FibGVJdGVtUmVtb3ZlOiAkOThJeWUkdXNlQ2FsbGJhY2soKCk9PnNldEZvY3VzYWJsZUl0ZW1zQ291bnQoKHByZXZDb3VudCk9PnByZXZDb3VudCAtIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXSlcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCQ5OEl5ZSRQcmltaXRpdmUuZGl2LCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogaXNUYWJiaW5nQmFja091dCB8fCBmb2N1c2FibGVJdGVtc0NvdW50ID09PSAwID8gLTEgOiAwLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb25cbiAgICB9LCBncm91cFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25Nb3VzZURvd246ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbk1vdXNlRG93biwgKCk9PntcbiAgICAgICAgICAgIGlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uRm9jdXM6ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXZSBub3JtYWxseSB3b3VsZG4ndCBuZWVkIHRoaXMgY2hlY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja1xuICAgICAgICAgICAgLy8gdGhhdCB0aGUgZm9jdXMgaXMgb24gdGhlIGN1cnJlbnQgdGFyZ2V0IGFuZCBub3QgYnViYmxpbmcgdG8gaXQuXG4gICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2UgU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYnV0dG9ucyB3aGVuIGNsaWNrZWQsIGFuZFxuICAgICAgICAgICAgLy8gaW5zdGVhZCwgdGhlIHdyYXBwZXIgd2lsbCBnZXQgZm9jdXNlZCBhbmQgbm90IHRocm91Z2ggYSBidWJibGluZyBldmVudC5cbiAgICAgICAgICAgIGNvbnN0IGlzS2V5Ym9hcmRGb2N1cyA9ICFpc0NsaWNrRm9jdXNSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNLZXlib2FyZEZvY3VzICYmICFpc1RhYmJpbmdCYWNrT3V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnlGb2N1c0V2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUywgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChlbnRyeUZvY3VzRXZlbnQpO1xuICAgICAgICAgICAgICAgIGlmICghZW50cnlGb2N1c0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9Pml0ZW0uZm9jdXNhYmxlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKT0+aXRlbS5hY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKT0+aXRlbS5pZCA9PT0gY3VycmVudFRhYlN0b3BJZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJdGVtcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVOb2RlcyA9IGNhbmRpZGF0ZUl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkJsdXI6ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkJsdXIsICgpPT5zZXRJc1RhYmJpbmdCYWNrT3V0KGZhbHNlKVxuICAgICAgICApXG4gICAgfSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUm92aW5nRm9jdXNHcm91cEl0ZW1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRSA9ICdSb3ZpbmdGb2N1c0dyb3VwSXRlbSc7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0ID0gLyojX19QVVJFX18qLyAkOThJeWUkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCAsIGZvY3VzYWJsZTogZm9jdXNhYmxlID0gdHJ1ZSAsIGFjdGl2ZTogYWN0aXZlID0gZmFsc2UgLCB0YWJTdG9wSWQ6IHRhYlN0b3BJZCAsIC4uLml0ZW1Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgYXV0b0lkID0gJDk4SXllJHVzZUlkKCk7XG4gICAgY29uc3QgaWQgPSB0YWJTdG9wSWQgfHwgYXV0b0lkO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRJVEVNX05BTUUsIF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwKTtcbiAgICBjb25zdCBpc0N1cnJlbnRUYWJTdG9wID0gY29udGV4dC5jdXJyZW50VGFiU3RvcElkID09PSBpZDtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwKTtcbiAgICBjb25zdCB7IG9uRm9jdXNhYmxlSXRlbUFkZDogb25Gb2N1c2FibGVJdGVtQWRkICwgb25Gb2N1c2FibGVJdGVtUmVtb3ZlOiBvbkZvY3VzYWJsZUl0ZW1SZW1vdmUgIH0gPSBjb250ZXh0O1xuICAgICQ5OEl5ZSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgICAgICAgb25Gb2N1c2FibGVJdGVtQWRkKCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9Pm9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgb25Gb2N1c2FibGVJdGVtQWRkLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1SZW1vdmVcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbi5JdGVtU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgZm9jdXNhYmxlOiBmb2N1c2FibGUsXG4gICAgICAgIGFjdGl2ZTogYWN0aXZlXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkOThJeWUkUHJpbWl0aXZlLnNwYW4sICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiBpc0N1cnJlbnRUYWJTdG9wID8gMCA6IC0xLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogY29udGV4dC5vcmllbnRhdGlvblxuICAgIH0sIGl0ZW1Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25Nb3VzZURvd246ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbk1vdXNlRG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gV2UgcHJldmVudCBmb2N1c2luZyBub24tZm9jdXNhYmxlIGl0ZW1zIG9uIGBtb3VzZWRvd25gLlxuICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGl0ZW0gaGFzIHRhYkluZGV4PXstMX0sIHRoYXQgb25seSBtZWFucyB0YWtlIGl0IG91dCBvZiB0aGUgdGFiIG9yZGVyLlxuICAgICAgICAgICAgaWYgKCFmb2N1c2FibGUpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGEgYnV0dG9uIHdoZW4gY2xpY2tlZCBzbyB3ZSBydW4gb3VyIGxvZ2ljIG9uIG1vdXNlZG93biBhbHNvXG4gICAgICAgICAgICBlbHNlIGNvbnRleHQub25JdGVtRm9jdXMoaWQpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpPT5jb250ZXh0Lm9uSXRlbUZvY3VzKGlkKVxuICAgICAgICApLFxuICAgICAgICBvbktleURvd246ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkl0ZW1TaGlmdFRhYigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzSW50ZW50ID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldEZvY3VzSW50ZW50KGV2ZW50LCBjb250ZXh0Lm9yaWVudGF0aW9uLCBjb250ZXh0LmRpcik7XG4gICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9Pml0ZW0uZm9jdXNhYmxlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgY2FuZGlkYXRlTm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdsYXN0JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvY3VzSW50ZW50ID09PSAncHJldicgfHwgZm9jdXNJbnRlbnQgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVOb2Rlcy5pbmRleE9mKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2RlcyA9IGNvbnRleHQubG9vcCA/ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR3cmFwQXJyYXkoY2FuZGlkYXRlTm9kZXMsIGN1cnJlbnRJbmRleCArIDEpIDogY2FuZGlkYXRlTm9kZXMuc2xpY2UoY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAgICovIHNldFRpbWVvdXQoKCk9PiRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0KGNhbmRpZGF0ZU5vZGVzKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8vIHByZXR0aWVyLWlnbm9yZVxuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJE1BUF9LRVlfVE9fRk9DVVNfSU5URU5UID0ge1xuICAgIEFycm93TGVmdDogJ3ByZXYnLFxuICAgIEFycm93VXA6ICdwcmV2JyxcbiAgICBBcnJvd1JpZ2h0OiAnbmV4dCcsXG4gICAgQXJyb3dEb3duOiAnbmV4dCcsXG4gICAgUGFnZVVwOiAnZmlyc3QnLFxuICAgIEhvbWU6ICdmaXJzdCcsXG4gICAgUGFnZURvd246ICdsYXN0JyxcbiAgICBFbmQ6ICdsYXN0J1xufTtcbmZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXREaXJlY3Rpb25Bd2FyZUtleShrZXksIGRpcikge1xuICAgIGlmIChkaXIgIT09ICdydGwnKSByZXR1cm4ga2V5O1xuICAgIHJldHVybiBrZXkgPT09ICdBcnJvd0xlZnQnID8gJ0Fycm93UmlnaHQnIDoga2V5ID09PSAnQXJyb3dSaWdodCcgPyAnQXJyb3dMZWZ0JyA6IGtleTtcbn1cbmZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXRGb2N1c0ludGVudChldmVudCwgb3JpZW50YXRpb24sIGRpcikge1xuICAgIGNvbnN0IGtleSA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXREaXJlY3Rpb25Bd2FyZUtleShldmVudC5rZXksIGRpcik7XG4gICAgaWYgKG9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIFtcbiAgICAgICAgJ0Fycm93TGVmdCcsXG4gICAgICAgICdBcnJvd1JpZ2h0J1xuICAgIF0uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAob3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiBbXG4gICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgJ0Fycm93RG93bidcbiAgICBdLmluY2x1ZGVzKGtleSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICRkN2JkZmI5ZWIwZmRmMzExJHZhciRNQVBfS0VZX1RPX0ZPQ1VTX0lOVEVOVFtrZXldO1xufVxuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlcykge1xuICAgIGNvbnN0IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKXtcbiAgICAgICAgLy8gaWYgZm9jdXMgaXMgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IHRvIGdvLCB3ZSBkb24ndCB3YW50IHRvIGtlZXAgZ29pbmcgdGhyb3VnaCB0aGUgY2FuZGlkYXRlc1xuICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgICAgICBjYW5kaWRhdGUuZm9jdXMoKTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgfVxufVxuLyoqXG4gKiBXcmFwcyBhbiBhcnJheSBhcm91bmQgaXRzZWxmIGF0IGEgZ2l2ZW4gc3RhcnQgaW5kZXhcbiAqIEV4YW1wbGU6IGB3cmFwQXJyYXkoWydhJywgJ2InLCAnYycsICdkJ10sIDIpID09PSBbJ2MnLCAnZCcsICdhJywgJ2InXWBcbiAqLyBmdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkd3JhcEFycmF5KGFycmF5LCBzdGFydEluZGV4KSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoXywgaW5kZXgpPT5hcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF1cbiAgICApO1xufVxuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzODtcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyID0gJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NDtcblxuXG5cblxuZXhwb3J0IHskZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYzcxMDk0ODk1NTFhNGY0IGFzIGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzggYXMgUm92aW5nRm9jdXNHcm91cCwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCBhcyBSb3ZpbmdGb2N1c0dyb3VwSXRlbSwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgYXMgSXRlbX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDFJSHprJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDFJSHprJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAkMUlIemskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDFJSHprJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQxSUh6ayRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgYXMgJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSwgUm9vdCBhcyAkMUlIemskUm9vdCwgSXRlbSBhcyAkMUlIemskSXRlbX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1yb3ZpbmctZm9jdXNcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDFJSHprJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkMUlIemskUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VEaXJlY3Rpb24gYXMgJDFJSHprJHVzZURpcmVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDFJSHprJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDFJSHprJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUgPSAnVGFicyc7XG5jb25zdCBbJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkMzU1ZjViZDIwOWQ3YjEzYV0gPSAkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlKCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUsIFtcbiAgICAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlXG5dKTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlKCk7XG5jb25zdCBbJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciwgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0XSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRjcmVhdGVUYWJzQ29udGV4dCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FKTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiMjUzOWJlZDUwMjNjMjFjID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZVByb3AgLCBvblZhbHVlQ2hhbmdlOiBvblZhbHVlQ2hhbmdlICwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCcgLCBkaXI6IGRpciAsIGFjdGl2YXRpb25Nb2RlOiBhY3RpdmF0aW9uTW9kZSA9ICdhdXRvbWF0aWMnICwgLi4udGFic1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkMUlIemskdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiB2YWx1ZVByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvblZhbHVlQ2hhbmdlLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlXG4gICAgfSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVRhYnMsXG4gICAgICAgIGJhc2VJZDogJDFJSHprJHVzZUlkKCksXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgb25WYWx1ZUNoYW5nZTogc2V0VmFsdWUsXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGFjdGl2YXRpb25Nb2RlOiBhY3RpdmF0aW9uTW9kZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGRpcjogZGlyZWN0aW9uLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb25cbiAgICB9LCB0YWJzUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzTGlzdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRSA9ICdUYWJzTGlzdCc7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSA9IC8qI19fUFVSRV9fKi8gJDFJSHprJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVGFiczogX19zY29wZVRhYnMgLCBsb29wOiBsb29wID0gdHJ1ZSAsIC4uLmxpc3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VUYWJzQ29udGV4dCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVRhYnMpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRSb290LCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIG9yaWVudGF0aW9uOiBjb250ZXh0Lm9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBsb29wOiBsb29wXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogY29udGV4dC5vcmllbnRhdGlvblxuICAgIH0sIGxpc3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVFJJR0dFUl9OQU1FID0gJ1RhYnNUcmlnZ2VyJztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlKF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZVRyaWdnZXJJZChjb250ZXh0LmJhc2VJZCwgdmFsdWUpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlID09PSBjb250ZXh0LnZhbHVlO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRJdGVtLCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIGZvY3VzYWJsZTogIWRpc2FibGVkLFxuICAgICAgICBhY3RpdmU6IGlzU2VsZWN0ZWRcbiAgICB9KSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmJ1dHRvbiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJ0YWJcIixcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGlzU2VsZWN0ZWQsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICBpZDogdHJpZ2dlcklkXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBvbmx5IGNhbGwgaGFuZGxlciBpZiBpdCdzIHRoZSBsZWZ0IGJ1dHRvbiAobW91c2Vkb3duIGdldHMgdHJpZ2dlcmVkIGJ5IGFsbCBtb3VzZSBidXR0b25zKVxuICAgICAgICAgICAgLy8gYnV0IG5vdCB3aGVuIHRoZSBjb250cm9sIGtleSBpcyBwcmVzc2VkIChhdm9pZGluZyBNYWNPUyByaWdodCBjbGljaylcbiAgICAgICAgICAgIGlmICghZGlzYWJsZWQgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmN0cmxLZXkgPT09IGZhbHNlKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgZWxzZSAvLyBwcmV2ZW50IGZvY3VzIHRvIGF2b2lkIGFjY2lkZW50YWwgYWN0aXZhdGlvblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAnICcsXG4gICAgICAgICAgICAgICAgJ0VudGVyJ1xuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpPT57XG4gICAgICAgICAgICAvLyBoYW5kbGUgXCJhdXRvbWF0aWNcIiBhY3RpdmF0aW9uIGlmIG5lY2Vzc2FyeVxuICAgICAgICAgICAgLy8gaWUuIGFjdGl2YXRlIHRhYiBmb2xsb3dpbmcgZm9jdXNcbiAgICAgICAgICAgIGNvbnN0IGlzQXV0b21hdGljQWN0aXZhdGlvbiA9IGNvbnRleHQuYWN0aXZhdGlvbk1vZGUgIT09ICdtYW51YWwnO1xuICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGVkICYmICFkaXNhYmxlZCAmJiBpc0F1dG9tYXRpY0FjdGl2YXRpb24pIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGFic0NvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRSA9ICdUYWJzQ29udGVudCc7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYiA9IC8qI19fUFVSRV9fKi8gJDFJSHprJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVGFiczogX19zY29wZVRhYnMgLCB2YWx1ZTogdmFsdWUgLCBmb3JjZU1vdW50OiBmb3JjZU1vdW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZVRyaWdnZXJJZChjb250ZXh0LmJhc2VJZCwgdmFsdWUpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlID09PSBjb250ZXh0LnZhbHVlO1xuICAgIGNvbnN0IGlzTW91bnRBbmltYXRpb25QcmV2ZW50ZWRSZWYgPSAkMUlIemskdXNlUmVmKGlzU2VsZWN0ZWQpO1xuICAgICQxSUh6ayR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgckFGID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5pc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gKCk9PmNhbmNlbEFuaW1hdGlvbkZyYW1lKHJBRilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBpc1NlbGVjdGVkXG4gICAgfSwgKHsgcHJlc2VudDogcHJlc2VudCAgfSk9Pi8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgICAgICBcImRhdGEtc3RhdGVcIjogaXNTZWxlY3RlZCA/ICdhY3RpdmUnIDogJ2luYWN0aXZlJyxcbiAgICAgICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uLFxuICAgICAgICAgICAgcm9sZTogXCJ0YWJwYW5lbFwiLFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdHJpZ2dlcklkLFxuICAgICAgICAgICAgaGlkZGVuOiAhcHJlc2VudCxcbiAgICAgICAgICAgIGlkOiBjb250ZW50SWQsXG4gICAgICAgICAgICB0YWJJbmRleDogMFxuICAgICAgICB9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZi5jdXJyZW50ID8gJzBzJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgcHJlc2VudCAmJiBjaGlsZHJlbilcbiAgICApO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGJhc2VJZCwgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7YmFzZUlkfS10cmlnZ2VyLSR7dmFsdWV9YDtcbn1cbmZ1bmN0aW9uICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGJhc2VJZCwgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7YmFzZUlkfS1jb250ZW50LSR7dmFsdWV9YDtcbn1cbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWM7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSA9ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkODExNGI5ZmRmZGY5ZjNiYTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmI7XG5cblxuXG5cbmV4cG9ydCB7JDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EgYXMgY3JlYXRlVGFic1Njb3BlLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYyBhcyBUYWJzLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSBhcyBUYWJzTGlzdCwgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEgYXMgVGFic1RyaWdnZXIsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZDkwNWQ3MGU4ZmQyZWJiIGFzIFRhYnNDb250ZW50LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSBhcyBMaXN0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlUmVmIGFzICQ4THZ2SyR1c2VSZWYsIHVzZU1lbW8gYXMgJDhMdnZLJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbmZ1bmN0aW9uICQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiKHZhbHVlKSB7XG4gICAgY29uc3QgcmVmID0gJDhMdnZLJHVzZVJlZih7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcHJldmlvdXM6IHZhbHVlXG4gICAgfSk7IC8vIFdlIGNvbXBhcmUgdmFsdWVzIGJlZm9yZSBtYWtpbmcgYW4gdXBkYXRlIHRvIGVuc3VyZSB0aGF0XG4gICAgLy8gYSBjaGFuZ2UgaGFzIGJlZW4gbWFkZS4gVGhpcyBlbnN1cmVzIHRoZSBwcmV2aW91cyB2YWx1ZSBpc1xuICAgIC8vIHBlcnNpc3RlZCBjb3JyZWN0bHkgYmV0d2VlbiByZW5kZXJzLlxuICAgIHJldHVybiAkOEx2dkskdXNlTWVtbygoKT0+e1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudC5wcmV2aW91cyA9IHJlZi5jdXJyZW50LnZhbHVlO1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmLmN1cnJlbnQucHJldmlvdXM7XG4gICAgfSwgW1xuICAgICAgICB2YWx1ZVxuICAgIF0pO1xufVxuXG5cblxuXG5leHBvcnQgeyQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIGFzIHVzZVByZXZpb3VzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlU3RhdGUgYXMgJDlneUdSJHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmZ1bmN0aW9uICRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4KGVsZW1lbnQpIHtcbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSAkOWd5R1IkdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBwcm92aWRlIHNpemUgYXMgZWFybHkgYXMgcG9zc2libGVcbiAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgb2JzZXJ2ZSB0aGUgb25lIGVsZW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIHRoZVxuICAgICAgICAgICAgICAgIC8vIGFycmF5XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg7XG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoJ2JvcmRlckJveFNpemUnIGluIGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemVFbnRyeSA9IGVudHJ5Wydib3JkZXJCb3hTaXplJ107IC8vIGlyb24gb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IEFycmF5LmlzQXJyYXkoYm9yZGVyU2l6ZUVudHJ5KSA/IGJvcmRlclNpemVFbnRyeVswXSA6IGJvcmRlclNpemVFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplWydpbmxpbmVTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbJ2Jsb2NrU2l6ZSddO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgYGJvcmRlckJveFNpemVgXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbGN1bGF0ZSBpdCBvdXJzZWx2ZXMgdG8gZ2V0IHRoZSBjb3JyZWN0IGJvcmRlciBib3guXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGJveDogJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+cmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0gZWxzZSAvLyBXZSBvbmx5IHdhbnQgdG8gcmVzZXQgdG8gYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWxlbWVudCBiZWNvbWVzIGBudWxsYCxcbiAgICAgICAgLy8gbm90IGlmIGl0IGNoYW5nZXMgdG8gYW5vdGhlciBlbGVtZW50LlxuICAgICAgICBzZXRTaXplKHVuZGVmaW5lZCk7XG4gICAgfSwgW1xuICAgICAgICBlbGVtZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIHNpemU7XG59XG5cblxuXG5cbmV4cG9ydCB7JGRiNmMzNDg1MTUwYjhlNjYkZXhwb3J0JDFhYjdhZTcxNDY5OGM0YjggYXMgdXNlU2l6ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGlyUElsJGZvcndhcmRSZWYsIHVzZVN0YXRlIGFzICRpclBJbCR1c2VTdGF0ZSwgdXNlUmVmIGFzICRpclBJbCR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGlyUElsJGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCBhcyAkaXJQSWwkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJGlyUElsJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJGlyUElsJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICRpclBJbCRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VQcmV2aW91cyBhcyAkaXJQSWwkdXNlUHJldmlvdXN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzXCI7XG5pbXBvcnQge3VzZVNpemUgYXMgJGlyUElsJHVzZVNpemV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXNpemVcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRpclBJbCRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFN3aXRjaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUgPSAnU3dpdGNoJztcbmNvbnN0IFskNmJlNDk2NmZkOWJiYzY5OCR2YXIkY3JlYXRlU3dpdGNoQ29udGV4dCwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDNdID0gJGlyUElsJGNyZWF0ZUNvbnRleHRTY29wZSgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUpO1xuY29uc3QgWyQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTd2l0Y2hQcm92aWRlciwgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHRdID0gJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGNyZWF0ZVN3aXRjaENvbnRleHQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FKTtcbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyID0gLyojX19QVVJFX18qLyAkaXJQSWwkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTd2l0Y2g6IF9fc2NvcGVTd2l0Y2ggLCBuYW1lOiBuYW1lICwgY2hlY2tlZDogY2hlY2tlZFByb3AgLCBkZWZhdWx0Q2hlY2tlZDogZGVmYXVsdENoZWNrZWQgLCByZXF1aXJlZDogcmVxdWlyZWQgLCBkaXNhYmxlZDogZGlzYWJsZWQgLCB2YWx1ZTogdmFsdWUgPSAnb24nICwgb25DaGVja2VkQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2UgLCAuLi5zd2l0Y2hQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2J1dHRvbiwgc2V0QnV0dG9uXSA9ICRpclBJbCR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkaXJQSWwkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRCdXR0b24obm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmID0gJGlyUElsJHVzZVJlZihmYWxzZSk7IC8vIFdlIHNldCB0aGlzIHRvIHRydWUgYnkgZGVmYXVsdCBzbyB0aGF0IGV2ZW50cyBidWJibGUgdG8gZm9ybXMgd2l0aG91dCBKUyAoU1NSKVxuICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSBidXR0b24gPyBCb29sZWFuKGJ1dHRvbi5jbG9zZXN0KCdmb3JtJykpIDogdHJ1ZTtcbiAgICBjb25zdCBbY2hlY2tlZCA9IGZhbHNlLCBzZXRDaGVja2VkXSA9ICRpclBJbCR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IGNoZWNrZWRQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdENoZWNrZWQsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU3dpdGNoUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTd2l0Y2gsXG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJGlyUElsJFByaW1pdGl2ZS5idXR0b24sICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIHJvbGU6IFwic3dpdGNoXCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWQsXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiByZXF1aXJlZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRnZXRTdGF0ZShjaGVja2VkKSxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGRpc2FibGVkID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfSwgc3dpdGNoUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uQ2xpY2s6ICRpclBJbCRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBzZXRDaGVja2VkKChwcmV2Q2hlY2tlZCk9PiFwcmV2Q2hlY2tlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpc0Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgICAgICAgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCA9IGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7IC8vIGlmIHN3aXRjaCBpcyBpbiBhIGZvcm0sIHN0b3AgcHJvcGFnYXRpb24gZnJvbSB0aGUgYnV0dG9uIHNvIHRoYXQgd2Ugb25seSBwcm9wYWdhdGVcbiAgICAgICAgICAgICAgICAvLyBvbmUgY2xpY2sgZXZlbnQgKGZyb20gdGhlIGlucHV0KS4gV2UgcHJvcGFnYXRlIGNoYW5nZXMgZnJvbSBhbiBpbnB1dCBzbyB0aGF0IG5hdGl2ZVxuICAgICAgICAgICAgICAgIC8vIGZvcm0gdmFsaWRhdGlvbiB3b3JrcyBhbmQgZm9ybSBldmVudHMgcmVmbGVjdCBzd2l0Y2ggdXBkYXRlcy5cbiAgICAgICAgICAgICAgICBpZiAoIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSwgaXNGb3JtQ29udHJvbCAmJiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRCdWJibGVJbnB1dCwge1xuICAgICAgICBjb250cm9sOiBidXR0b24sXG4gICAgICAgIGJ1YmJsZXM6ICFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50LFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkIC8vIFdlIHRyYW5zZm9ybSBiZWNhdXNlIHRoZSBpbnB1dCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYnV0IHdlIGhhdmVcbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2Miwge1xuICAgIGRpc3BsYXlOYW1lOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU3dpdGNoVGh1bWJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFRIVU1CX05BTUUgPSAnU3dpdGNoVGh1bWInO1xuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDYgPSAvKiNfX1BVUkVfXyovICRpclBJbCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVN3aXRjaDogX19zY29wZVN3aXRjaCAsIC4uLnRodW1iUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkdXNlU3dpdGNoQ29udGV4dCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkVEhVTUJfTkFNRSwgX19zY29wZVN3aXRjaCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJGlyUElsJFByaW1pdGl2ZS5zcGFuLCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlKGNvbnRleHQuY2hlY2tlZCksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCB0aHVtYlByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDYsIHtcbiAgICBkaXNwbGF5TmFtZTogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFRIVU1CX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBjb25zdCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkQnViYmxlSW5wdXQgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBjb250cm9sOiBjb250cm9sICwgY2hlY2tlZDogY2hlY2tlZCAsIGJ1YmJsZXM6IGJ1YmJsZXMgPSB0cnVlICwgLi4uaW5wdXRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gJGlyUElsJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2Q2hlY2tlZCA9ICRpclBJbCR1c2VQcmV2aW91cyhjaGVja2VkKTtcbiAgICBjb25zdCBjb250cm9sU2l6ZSA9ICRpclBJbCR1c2VTaXplKGNvbnRyb2wpOyAvLyBCdWJibGUgY2hlY2tlZCBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgICRpclBJbCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaW5wdXQgPSByZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaW5wdXRQcm90byA9IHdpbmRvdy5IVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaW5wdXRQcm90bywgJ2NoZWNrZWQnKTtcbiAgICAgICAgY29uc3Qgc2V0Q2hlY2tlZCA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgICAgICBpZiAocHJldkNoZWNrZWQgIT09IGNoZWNrZWQgJiYgc2V0Q2hlY2tlZCkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJywge1xuICAgICAgICAgICAgICAgIGJ1YmJsZXM6IGJ1YmJsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0Q2hlY2tlZC5jYWxsKGlucHV0LCBjaGVja2VkKTtcbiAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcmV2Q2hlY2tlZCxcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgYnViYmxlc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIGRlZmF1bHRDaGVja2VkOiBjaGVja2VkXG4gICAgfSwgaW5wdXRQcm9wcywge1xuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAuLi5jb250cm9sU2l6ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIG1hcmdpbjogMFxuICAgICAgICB9XG4gICAgfSkpO1xufTtcbmZ1bmN0aW9uICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRnZXRTdGF0ZShjaGVja2VkKSB7XG4gICAgcmV0dXJuIGNoZWNrZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJztcbn1cbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjI7XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNjUyMTQzM2VkMTVhMzRkYiA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2O1xuXG5cblxuXG5leHBvcnQgeyQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRjZjdmNWYxN2Y2OWNiZDQzIGFzIGNyZWF0ZVN3aXRjaFNjb3BlLCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiBhcyBTd2l0Y2gsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2IGFzIFN3aXRjaFRodW1iLCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNjUyMTQzM2VkMTVhMzRkYiBhcyBUaHVtYn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJmdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoRnJvbUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5cbmZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneCcgOiAneSc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1tsZW5ndGhdIC8gMjtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IG1haW5BeGlzID09PSAneCc7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgLi4ucmVjdCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgLi4ucmVjdHMuZmxvYXRpbmcsXG4gICAgeCxcbiAgICB5XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcblxuZnVuY3Rpb24gd2l0aGluKG1pbiQxLCB2YWx1ZSwgbWF4JDEpIHtcbiAgcmV0dXJuIG1heChtaW4kMSwgbWluKHZhbHVlLCBtYXgkMSkpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50c1xuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSB3aXRoaW4obWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRoaXMgc3RvcHMgYHNoaWZ0KClgIGZyb20gdGFraW5nIGFjdGlvbiwgYnV0IGNhblxuICAgIC8vIGJlIHdvcmtlZCBhcm91bmQgYnkgY2FsbGluZyBpdCBhZ2FpbiBhZnRlciB0aGUgYGFycm93KClgIGlmIGRlc2lyZWQuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBtaW4kMSAtIGNlbnRlciA6IG1heCAtIGNlbnRlciA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdIC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxsUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItc3RhcnRcIiwgc2lkZSArIFwiLWVuZFwiKSwgW10pO1xuXG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuXG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogbWFpbkFsaWdubWVudFNpZGUsXG4gICAgY3Jvc3M6IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKVxuICB9O1xufVxuXG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IGFsbFBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IGFsbFBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50c1tjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW4sXG4gICAgICAgIGNyb3NzXG4gICAgICB9ID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHNbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1ttYWluXSwgb3ZlcmZsb3dbY3Jvc3NdXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJykge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG1haW4sXG4gICAgICAgICAgY3Jvc3NcbiAgICAgICAgfSA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W21haW5dLCBvdmVyZmxvd1tjcm9zc10pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkbWFwJHNvO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRtYXAkc28gPSBvdmVyZmxvd3NEYXRhLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRtYXAkc29bMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gJ3gnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkgPT09ICd4JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsLFxuICAgIC4uLnJhd1ZhbHVlXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IGRpZmZDb29yZHNcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Q3Jvc3NBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSB3aXRoaW4obWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gd2l0aGluKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGF4aXMgPT09ICd4JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV07XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVXaWR0aCwgbWF4aW11bUNsaXBwaW5nV2lkdGgpIDogbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0LCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpIDogbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCByZWN0VG9DbGllbnRSZWN0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIHJldHVybiBpc05vZGUobm9kZSkgPyAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6ICcnO1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gQnJvd3NlcnMgd2l0aG91dCBgU2hhZG93Um9vdGAgc3VwcG9ydC5cbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgY29uc3Qgc2FmYXJpID0gaXNTYWZhcmkoKTtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgIXNhZmFyaSAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXNhZmFyaSAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5cbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBmYWxsYmFjazogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmNvbnN0IEZBTExCQUNLX1NDQUxFID0ge1xuICB4OiAxLFxuICB5OiAxXG59O1xuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIEZBTExCQUNLX1NDQUxFO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGZhbGxiYWNrXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9IChmYWxsYmFjayA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoZmFsbGJhY2sgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgdmFyIF93aW4kdmlzdWFsVmlld3BvcnQsIF93aW4kdmlzdWFsVmlld3BvcnQyO1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IHRydWU7XG4gIH1cbiAgaWYgKCFpc1NhZmFyaSgpKSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50ID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93O1xuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IHdpbikge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiAoKF93aW4kdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luJHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQpIHx8IDAsXG4gICAgeTogKChfd2luJHZpc3VhbFZpZXdwb3J0MiA9IHdpbi52aXN1YWxWaWV3cG9ydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW4kdmlzdWFsVmlld3BvcnQyLm9mZnNldFRvcCkgfHwgMFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IEZBTExCQUNLX1NDQUxFO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gd2luLmZyYW1lRWxlbWVudDtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSB3aW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBpZnJhbWVSZWN0LnggKz0gKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgaWZyYW1lUmVjdC55ICs9IChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGlmcmFtZVJlY3QueDtcbiAgICAgIHkgKz0gaWZyYW1lUmVjdC55O1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKS5mcmFtZUVsZW1lbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICByZXR1cm4gKChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnBhZ2VYT2Zmc2V0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5wYWdlWU9mZnNldFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgc3RyYXRlZ3kgIT09ICdmaXhlZCcpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUkMShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIC8vIGBnZXRQYXJlbnROb2RlYCB3aWxsIG5ldmVyIHJldHVybiBhIGBEb2N1bWVudGAgZHVlIHRvIHRoZSBmYWxsYmFja1xuICAgIC8vIGNoZWNrLCBzbyBpdCdzIGVpdGhlciB0aGUgPGh0bWw+IG9yIDxib2R5PiBlbGVtZW50LlxuICAgIHJldHVybiBwYXJlbnROb2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IpKTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1NhZmFyaSgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgLi4uY2xpcHBpbmdBbmNlc3RvcixcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZSQxKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50KS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUkMShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUkMShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgaXNFbGVtZW50LFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0U2NhbGUsXG4gIGFzeW5jIGdldEVsZW1lbnRSZWN0cyhfcmVmKSB7XG4gICAgbGV0IHtcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgc3RyYXRlZ3lcbiAgICB9ID0gX3JlZjtcbiAgICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQocmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihmbG9hdGluZyksIHN0cmF0ZWd5KSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIC4uLihhd2FpdCBnZXREaW1lbnNpb25zRm4oZmxvYXRpbmcpKVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldENsaWVudFJlY3RzOiBlbGVtZW50ID0+IEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKSxcbiAgaXNSVEw6IGVsZW1lbnQgPT4gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCdcbn07XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0cnVlLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAvLyBpZ25vcmVzIFdpbmRvdywgY2hlY2tzIGZvciBbb2JqZWN0IFZpc3VhbFZpZXdwb3J0XVxuICAgIGNvbnN0IGlzVmlzdWFsVmlld3BvcnQgPSAhaXNFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci50b1N0cmluZygpLmluY2x1ZGVzKCdWJyk7XG4gICAgaWYgKGFuY2VzdG9yU2Nyb2xsICYmIChhbmltYXRpb25GcmFtZSA/IGlzVmlzdWFsVmlld3BvcnQgOiB0cnVlKSkge1xuICAgICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICAgIHBhc3NpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgbGV0IG9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpc0VsZW1lbnQocmVmZXJlbmNlKSAmJiAhYW5pbWF0aW9uRnJhbWUgJiYgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UpO1xuICAgIGlmICghaXNFbGVtZW50KHJlZmVyZW5jZSkgJiYgcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpO1xuICAgIH1cbiAgICBvYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX29ic2VydmVyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIChfb2JzZXJ2ZXIgPSBvYnNlcnZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmdcbiAqIHN0cmF0ZWd5LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4ge1xuICBmdW5jdGlvbiBpc1JlZih2YWx1ZSkge1xuICAgIHJldHVybiB7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY3VycmVudCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmdcbiAgICAgIH0gPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMoc3RhdGUpIDogb3B0aW9ucztcbiAgICAgIGlmIChlbGVtZW50ICYmIGlzUmVmKGVsZW1lbnQpKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQuY3VycmVudCxcbiAgICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgICB9KS5mbihzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoLCBpLCBrZXlzO1xuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICghe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmIChrZXkgPT09ICdfb3duZXInICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdFxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIHJlZmVyZW5jZTogZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZzogZXh0ZXJuYWxGbG9hdGluZ1xuICAgIH0gPSB7fSxcbiAgICB0cmFuc2Zvcm0gPSB0cnVlLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkLFxuICAgIG9wZW5cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgc3RyYXRlZ3ksXG4gICAgcGxhY2VtZW50LFxuICAgIG1pZGRsZXdhcmVEYXRhOiB7fSxcbiAgICBpc1Bvc2l0aW9uZWQ6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBbbGF0ZXN0TWlkZGxld2FyZSwgc2V0TGF0ZXN0TWlkZGxld2FyZV0gPSBSZWFjdC51c2VTdGF0ZShtaWRkbGV3YXJlKTtcbiAgaWYgKCFkZWVwRXF1YWwobGF0ZXN0TWlkZGxld2FyZSwgbWlkZGxld2FyZSkpIHtcbiAgICBzZXRMYXRlc3RNaWRkbGV3YXJlKG1pZGRsZXdhcmUpO1xuICB9XG4gIGNvbnN0IFtfcmVmZXJlbmNlLCBfc2V0UmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbX2Zsb2F0aW5nLCBfc2V0RmxvYXRpbmddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9IHJlZmVyZW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICByZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgIH1cbiAgfSwgW19zZXRSZWZlcmVuY2VdKTtcbiAgY29uc3Qgc2V0RmxvYXRpbmcgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgfVxuICB9LCBbX3NldEZsb2F0aW5nXSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gZXh0ZXJuYWxSZWZlcmVuY2UgfHwgX3JlZmVyZW5jZTtcbiAgY29uc3QgZmxvYXRpbmdFbCA9IGV4dGVybmFsRmxvYXRpbmcgfHwgX2Zsb2F0aW5nO1xuICBjb25zdCByZWZlcmVuY2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRhUmVmID0gUmVhY3QudXNlUmVmKGRhdGEpO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiB0cnVlXG4gICAgICB9O1xuICAgICAgaWYgKGlzTW91bnRlZFJlZi5jdXJyZW50ICYmICFkZWVwRXF1YWwoZGF0YVJlZi5jdXJyZW50LCBmdWxsRGF0YSkpIHtcbiAgICAgICAgZGF0YVJlZi5jdXJyZW50ID0gZnVsbERhdGE7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0RGF0YShmdWxsRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbbGF0ZXN0TWlkZGxld2FyZSwgcGxhY2VtZW50LCBzdHJhdGVneSwgcGxhdGZvcm1SZWZdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChvcGVuID09PSBmYWxzZSAmJiBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICBzZXREYXRhKGRhdGEgPT4gKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAocmVmZXJlbmNlRWwpIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlRWw7XG4gICAgaWYgKGZsb2F0aW5nRWwpIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBmbG9hdGluZ0VsO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiBmbG9hdGluZ0VsKSB7XG4gICAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gd2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudChyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsLCB1cGRhdGUsIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmXSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VSZWYsXG4gICAgZmxvYXRpbmc6IGZsb2F0aW5nUmVmLFxuICAgIHNldFJlZmVyZW5jZSxcbiAgICBzZXRGbG9hdGluZ1xuICB9KSwgW3NldFJlZmVyZW5jZSwgc2V0RmxvYXRpbmddKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VFbCxcbiAgICBmbG9hdGluZzogZmxvYXRpbmdFbFxuICB9KSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsXSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDBcbiAgICB9O1xuICAgIGlmICghZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS54KTtcbiAgICBjb25zdCB5ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS55KTtcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZWxlbWVudHMuZmxvYXRpbmcpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiB4LFxuICAgICAgdG9wOiB5XG4gICAgfTtcbiAgfSwgW3N0cmF0ZWd5LCB0cmFuc2Zvcm0sIGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngsIGRhdGEueV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLmRhdGEsXG4gICAgdXBkYXRlLFxuICAgIHJlZnMsXG4gICAgZWxlbWVudHMsXG4gICAgZmxvYXRpbmdTdHlsZXNcbiAgfSksIFtkYXRhLCB1cGRhdGUsIHJlZnMsIGVsZW1lbnRzLCBmbG9hdGluZ1N0eWxlc10pO1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkamJuRXgkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkamJuRXgkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkamJuRXgkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRSA9ICdBcnJvdyc7XG5jb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9IC8qI19fUFVSRV9fKi8gJGpibkV4JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCB3aWR0aDogd2lkdGggPSAxMCAsIGhlaWdodDogaGVpZ2h0ID0gNSAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KCRqYm5FeCRQcmltaXRpdmUuc3ZnLCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDMwIDEwXCIsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IFwibm9uZVwiXG4gICAgfSksIHByb3BzLmFzQ2hpbGQgPyBjaGlsZHJlbiA6IC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgcG9pbnRzOiBcIjAsMCAzMCwwIDE1LDEwXCJcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDU7XG5cblxuXG5cbmV4cG9ydCB7JDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAka1k5M1YkdXNlU3RhdGUsIGNyZWF0ZUVsZW1lbnQgYXMgJGtZOTNWJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJGtZOTNWJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAka1k5M1YkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGtZOTNWJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUZsb2F0aW5nIGFzICRrWTkzViR1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSBhcyAka1k5M1YkYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzICRrWTkzViRvZmZzZXQsIHNoaWZ0IGFzICRrWTkzViRzaGlmdCwgbGltaXRTaGlmdCBhcyAka1k5M1YkbGltaXRTaGlmdCwgZmxpcCBhcyAka1k5M1YkZmxpcCwgc2l6ZSBhcyAka1k5M1Ykc2l6ZSwgYXJyb3cgYXMgJGtZOTNWJGFycm93LCBoaWRlIGFzICRrWTkzViRoaWRlfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHtSb290IGFzICRrWTkzViRSb290fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWFycm93XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka1k5M1YkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka1k5M1YkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka1k5M1YkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGtZOTNWJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0IHt1c2VTaXplIGFzICRrWTkzViR1c2VTaXplfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2ZjAwODZkYTA5YzRiOWYgPSBbXG4gICAgJ3RvcCcsXG4gICAgJ3JpZ2h0JyxcbiAgICAnYm90dG9tJyxcbiAgICAnbGVmdCdcbl07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzY3MWZmYWI3YjMwMmZjOSA9IFtcbiAgICAnc3RhcnQnLFxuICAgICdjZW50ZXInLFxuICAgICdlbmQnXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRSA9ICdQb3BwZXInO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzIyYWFjMTk0YWU5MjNdID0gJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZSgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUpO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHRdID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FKTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFthbmNob3IsIHNldEFuY2hvcl0gPSAka1k5M1YkdXNlU3RhdGUobnVsbCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlclByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBhbmNob3I6IGFuY2hvcixcbiAgICAgICAgb25BbmNob3JDaGFuZ2U6IHNldEFuY2hvclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFuY2hvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQU5DSE9SX05BTUUgPSAnUG9wcGVyQW5jaG9yJztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgPSAvKiNfX1BVUkVfXyovICRrWTkzViRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIHZpcnR1YWxSZWY6IHZpcnR1YWxSZWYgLCAuLi5hbmNob3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgcmVmID0gJGtZOTNWJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka1k5M1YkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka1k5M1YkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIENvbnN1bWVyIGNhbiBhbmNob3IgdGhlIHBvcHBlciB0byBzb21ldGhpbmcgdGhhdCBpc24ndFxuICAgICAgICAvLyBhIERPTSBub2RlIGUuZy4gcG9pbnRlciBwb3NpdGlvbiwgc28gd2Ugb3ZlcnJpZGUgdGhlXG4gICAgICAgIC8vIGBhbmNob3JSZWZgIHdpdGggdGhlaXIgdmlydHVhbCByZWYgaW4gdGhpcyBjYXNlLlxuICAgICAgICBjb250ZXh0Lm9uQW5jaG9yQ2hhbmdlKCh2aXJ0dWFsUmVmID09PSBudWxsIHx8IHZpcnR1YWxSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZpcnR1YWxSZWYuY3VycmVudCkgfHwgcmVmLmN1cnJlbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiB2aXJ0dWFsUmVmID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFByaW1pdGl2ZS5kaXYsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYW5jaG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUgPSAnUG9wcGVyQ29udGVudCc7XG5jb25zdCBbJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlckNvbnRlbnRQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0XSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUpO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9hcnJvd1NpemUkd2lkdGgsIF9hcnJvd1NpemUkaGVpZ2h0LCBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRhcnJvdzIsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzMsIF9taWRkbGV3YXJlRGF0YSR0cmFucywgX21pZGRsZXdhcmVEYXRhJHRyYW5zMiwgX21pZGRsZXdhcmVEYXRhJGhpZGU7XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgc2lkZTogc2lkZSA9ICdib3R0b20nICwgc2lkZU9mZnNldDogc2lkZU9mZnNldCA9IDAgLCBhbGlnbjogYWxpZ24gPSAnY2VudGVyJyAsIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldCA9IDAgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyA9IDAgLCBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnkgPSBbXSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmdQcm9wID0gMCAsIHN0aWNreTogc3RpY2t5ID0gJ3BhcnRpYWwnICwgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCA9IGZhbHNlICwgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnMgPSB0cnVlICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrWTkzViR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFthcnJvdywgc2V0QXJyb3ddID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGFycm93U2l6ZSA9ICRrWTkzViR1c2VTaXplKGFycm93KTtcbiAgICBjb25zdCBhcnJvd1dpZHRoID0gKF9hcnJvd1NpemUkd2lkdGggPSBhcnJvd1NpemUgPT09IG51bGwgfHwgYXJyb3dTaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJvd1NpemUud2lkdGgpICE9PSBudWxsICYmIF9hcnJvd1NpemUkd2lkdGggIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkd2lkdGggOiAwO1xuICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gKF9hcnJvd1NpemUkaGVpZ2h0ID0gYXJyb3dTaXplID09PSBudWxsIHx8IGFycm93U2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dTaXplLmhlaWdodCkgIT09IG51bGwgJiYgX2Fycm93U2l6ZSRoZWlnaHQgIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkaGVpZ2h0IDogMDtcbiAgICBjb25zdCBkZXNpcmVkUGxhY2VtZW50ID0gc2lkZSArIChhbGlnbiAhPT0gJ2NlbnRlcicgPyAnLScgKyBhbGlnbiA6ICcnKTtcbiAgICBjb25zdCBjb2xsaXNpb25QYWRkaW5nID0gdHlwZW9mIGNvbGxpc2lvblBhZGRpbmdQcm9wID09PSAnbnVtYmVyJyA/IGNvbGxpc2lvblBhZGRpbmdQcm9wIDoge1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIC4uLmNvbGxpc2lvblBhZGRpbmdQcm9wXG4gICAgfTtcbiAgICBjb25zdCBib3VuZGFyeSA9IEFycmF5LmlzQXJyYXkoY29sbGlzaW9uQm91bmRhcnkpID8gY29sbGlzaW9uQm91bmRhcnkgOiBbXG4gICAgICAgIGNvbGxpc2lvbkJvdW5kYXJ5XG4gICAgXTtcbiAgICBjb25zdCBoYXNFeHBsaWNpdEJvdW5kYXJpZXMgPSBib3VuZGFyeS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGRldGVjdE92ZXJmbG93T3B0aW9ucyA9IHtcbiAgICAgICAgcGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LmZpbHRlcigkY2YxYWM1ZDlmZTBlODIwNiR2YXIkaXNOb3ROdWxsKSxcbiAgICAgICAgLy8gd2l0aCBgc3RyYXRlZ3k6ICdmaXhlZCdgLCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBnZXQgaXQgdG8gcmVzcGVjdCBib3VuZGFyaWVzXG4gICAgICAgIGFsdEJvdW5kYXJ5OiBoYXNFeHBsaWNpdEJvdW5kYXJpZXNcbiAgICB9O1xuICAgIGNvbnN0IHsgcmVmczogcmVmcyAsIGZsb2F0aW5nU3R5bGVzOiBmbG9hdGluZ1N0eWxlcyAsIHBsYWNlbWVudDogcGxhY2VtZW50ICwgaXNQb3NpdGlvbmVkOiBpc1Bvc2l0aW9uZWQgLCBtaWRkbGV3YXJlRGF0YTogbWlkZGxld2FyZURhdGEgIH0gPSAka1k5M1YkdXNlRmxvYXRpbmcoe1xuICAgICAgICAvLyBkZWZhdWx0IHRvIGBmaXhlZGAgc3RyYXRlZ3kgc28gdXNlcnMgZG9uJ3QgaGF2ZSB0byBwaWNrIGFuZCB3ZSBhbHNvIGF2b2lkIGZvY3VzIHNjcm9sbCBpc3N1ZXNcbiAgICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICAgIHBsYWNlbWVudDogZGVzaXJlZFBsYWNlbWVudCxcbiAgICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6ICRrWTkzViRhdXRvVXBkYXRlLFxuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgcmVmZXJlbmNlOiBjb250ZXh0LmFuY2hvclxuICAgICAgICB9LFxuICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICAka1k5M1Ykb2Zmc2V0KHtcbiAgICAgICAgICAgICAgICBtYWluQXhpczogc2lkZU9mZnNldCArIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgIGFsaWdubWVudEF4aXM6IGFsaWduT2Zmc2V0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGF2b2lkQ29sbGlzaW9ucyAmJiAka1k5M1Ykc2hpZnQoe1xuICAgICAgICAgICAgICAgIG1haW5BeGlzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNyb3NzQXhpczogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGltaXRlcjogc3RpY2t5ID09PSAncGFydGlhbCcgPyAka1k5M1YkbGltaXRTaGlmdCgpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhdm9pZENvbGxpc2lvbnMgJiYgJGtZOTNWJGZsaXAoe1xuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAka1k5M1Ykc2l6ZSh7XG4gICAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICAgIGFwcGx5OiAoeyBlbGVtZW50czogZWxlbWVudHMgLCByZWN0czogcmVjdHMgLCBhdmFpbGFibGVXaWR0aDogYXZhaWxhYmxlV2lkdGggLCBhdmFpbGFibGVIZWlnaHQ6IGF2YWlsYWJsZUhlaWdodCAgfSk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogYW5jaG9yV2lkdGggLCBoZWlnaHQ6IGFuY2hvckhlaWdodCAgfSA9IHJlY3RzLnJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFN0eWxlID0gZWxlbWVudHMuZmxvYXRpbmcuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoJywgYCR7YXZhaWxhYmxlV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoJywgYCR7YW5jaG9yV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0JywgYCR7YW5jaG9ySGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhcnJvdyAmJiAka1k5M1YkYXJyb3coe1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGFycm93LFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IGFycm93UGFkZGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luKHtcbiAgICAgICAgICAgICAgICBhcnJvd1dpZHRoOiBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgIGFycm93SGVpZ2h0OiBhcnJvd0hlaWdodFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoaWRlV2hlbkRldGFjaGVkICYmICRrWTkzViRoaWRlKHtcbiAgICAgICAgICAgICAgICBzdHJhdGVneTogJ3JlZmVyZW5jZUhpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbiAgICBjb25zdCBbcGxhY2VkU2lkZSwgcGxhY2VkQWxpZ25dID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICBjb25zdCBoYW5kbGVQbGFjZWQgPSAka1k5M1YkdXNlQ2FsbGJhY2tSZWYob25QbGFjZWQpO1xuICAgICRrWTkzViR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGlzUG9zaXRpb25lZCkgaGFuZGxlUGxhY2VkID09PSBudWxsIHx8IGhhbmRsZVBsYWNlZCA9PT0gdm9pZCAwIHx8IGhhbmRsZVBsYWNlZCgpO1xuICAgIH0sIFtcbiAgICAgICAgaXNQb3NpdGlvbmVkLFxuICAgICAgICBoYW5kbGVQbGFjZWRcbiAgICBdKTtcbiAgICBjb25zdCBhcnJvd1ggPSAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Lng7XG4gICAgY29uc3QgYXJyb3dZID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzIgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Mi55O1xuICAgIGNvbnN0IGNhbm5vdENlbnRlckFycm93ID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3czID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMuY2VudGVyT2Zmc2V0KSAhPT0gMDtcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAka1k5M1YkdXNlU3RhdGUoKTtcbiAgICAka1k5M1YkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHJlZnMuc2V0RmxvYXRpbmcsXG4gICAgICAgIFwiZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXCI6IFwiXCIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5mbG9hdGluZ1N0eWxlcyxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogaXNQb3NpdGlvbmVkID8gZmxvYXRpbmdTdHlsZXMudHJhbnNmb3JtIDogJ3RyYW5zbGF0ZSgwLCAtMjAwJSknLFxuICAgICAgICAgICAgLy8ga2VlcCBvZmYgdGhlIHBhZ2Ugd2hlbiBtZWFzdXJpbmdcbiAgICAgICAgICAgIG1pbldpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgICAgICAgICAgekluZGV4OiBjb250ZW50WkluZGV4LFxuICAgICAgICAgICAgWyctLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luJ106IFtcbiAgICAgICAgICAgICAgICAoX21pZGRsZXdhcmVEYXRhJHRyYW5zID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSR0cmFucy54LFxuICAgICAgICAgICAgICAgIChfbWlkZGxld2FyZURhdGEkdHJhbnMyID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkdHJhbnMyLnlcbiAgICAgICAgICAgIF0uam9pbignICcpXG4gICAgICAgIH0gLy8gRmxvYXRpbmcgVUkgaW50ZXJhbGx5IGNhbGN1bGF0ZXMgbG9naWNhbCBhbGlnbm1lbnQgYmFzZWQgdGhlIGBkaXJgIGF0dHJpYnV0ZSBvblxuICAgICAgICAsXG4gICAgICAgIGRpcjogcHJvcHMuZGlyXG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBwbGFjZWRTaWRlOiBwbGFjZWRTaWRlLFxuICAgICAgICBvbkFycm93Q2hhbmdlOiBzZXRBcnJvdyxcbiAgICAgICAgYXJyb3dYOiBhcnJvd1gsXG4gICAgICAgIGFycm93WTogYXJyb3dZLFxuICAgICAgICBzaG91bGRIaWRlQXJyb3c6IGNhbm5vdENlbnRlckFycm93XG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgka1k5M1YkUHJpbWl0aXZlLmRpdiwgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXNpZGVcIjogcGxhY2VkU2lkZSxcbiAgICAgICAgXCJkYXRhLWFsaWduXCI6IHBsYWNlZEFsaWduXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLy8gaWYgdGhlIFBvcHBlckNvbnRlbnQgaGFzbid0IGJlZW4gcGxhY2VkIHlldCAobm90IGFsbCBtZWFzdXJlbWVudHMgZG9uZSlcbiAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgYW5pbWF0aW9ucyBzbyB0aGF0IHVzZXJzJ3MgYW5pbWF0aW9uIGRvbid0IGtpY2sgaW4gdG9vIGVhcmx5IHJlZmVycmluZyB3cm9uZyBzaWRlc1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAhaXNQb3NpdGlvbmVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gaGlkZSB0aGUgY29udGVudCBpZiB1c2luZyB0aGUgaGlkZSBtaWRkbGV3YXJlIGFuZCBzaG91bGQgYmUgaGlkZGVuXG4gICAgICAgICAgICBvcGFjaXR5OiAoX21pZGRsZXdhcmVEYXRhJGhpZGUgPSBtaWRkbGV3YXJlRGF0YS5oaWRlKSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkaGlkZSAhPT0gdm9pZCAwICYmIF9taWRkbGV3YXJlRGF0YSRoaWRlLnJlZmVyZW5jZUhpZGRlbiA/IDAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FID0gJ1BvcHBlckFycm93JztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFID0ge1xuICAgIHRvcDogJ2JvdHRvbScsXG4gICAgcmlnaHQ6ICdsZWZ0JyxcbiAgICBib3R0b206ICd0b3AnLFxuICAgIGxlZnQ6ICdyaWdodCdcbn07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FLCBfX3Njb3BlUG9wcGVyKTtcbiAgICBjb25zdCBiYXNlU2lkZSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFW2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdO1xuICAgIHJldHVybigvKiNfX1BVUkVfXyovIC8vIHdlIGhhdmUgdG8gdXNlIGFuIGV4dHJhIHdyYXBwZXIgYmVjYXVzZSBgUmVzaXplT2JzZXJ2ZXJgICh1c2VkIGJ5IGB1c2VTaXplYClcbiAgICAvLyBkb2Vzbid0IHJlcG9ydCBzaXplIGFzIHdlJ2QgZXhwZWN0IG9uIFNWRyBlbGVtZW50cy5cbiAgICAvLyBpdCByZXBvcnRzIHRoZWlyIGJvdW5kaW5nIGJveCB3aGljaCBpcyBlZmZlY3RpdmVseSB0aGUgbGFyZ2VzdCBwYXRoIGluc2lkZSB0aGUgU1ZHLlxuICAgICRrWTkzViRjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIHJlZjogY29udGVudENvbnRleHQub25BcnJvd0NoYW5nZSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgbGVmdDogY29udGVudENvbnRleHQuYXJyb3dYLFxuICAgICAgICAgICAgdG9wOiBjb250ZW50Q29udGV4dC5hcnJvd1ksXG4gICAgICAgICAgICBbYmFzZVNpZGVdOiAwLFxuICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAnJyxcbiAgICAgICAgICAgICAgICByaWdodDogJzAgMCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnY2VudGVyIDAnLFxuICAgICAgICAgICAgICAgIGxlZnQ6ICcxMDAlIDAnXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAndHJhbnNsYXRlWSgxMDAlKScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICd0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpJyxcbiAgICAgICAgICAgICAgICBib3R0b206IGByb3RhdGUoMTgwZGVnKWAsXG4gICAgICAgICAgICAgICAgbGVmdDogJ3RyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSknXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogY29udGVudENvbnRleHQuc2hvdWxkSGlkZUFycm93ID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFJvb3QsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYXJyb3dQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmFycm93UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAvLyBlbnN1cmVzIHRoZSBlbGVtZW50IGNhbiBiZSBtZWFzdXJlZCBjb3JyZWN0bHkgKG1vc3RseSBmb3IgaWYgU1ZHKVxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGw7XG59XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luID0gKG9wdGlvbnMpPT4oe1xuICAgICAgICBuYW1lOiAndHJhbnNmb3JtT3JpZ2luJyxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgZm4gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3c0LCBfbWlkZGxld2FyZURhdGEkYXJyb3c1LCBfbWlkZGxld2FyZURhdGEkYXJyb3c2LCBfbWlkZGxld2FyZURhdGEkYXJyb3c3LCBfbWlkZGxld2FyZURhdGEkYXJyb3c4O1xuICAgICAgICAgICAgY29uc3QgeyBwbGFjZW1lbnQ6IHBsYWNlbWVudCAsIHJlY3RzOiByZWN0cyAsIG1pZGRsZXdhcmVEYXRhOiBtaWRkbGV3YXJlRGF0YSAgfSA9IGRhdGE7XG4gICAgICAgICAgICBjb25zdCBjYW5ub3RDZW50ZXJBcnJvdyA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NCA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3c0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3c0LmNlbnRlck9mZnNldCkgIT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93SGlkZGVuID0gY2Fubm90Q2VudGVyQXJyb3c7XG4gICAgICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gaXNBcnJvd0hpZGRlbiA/IDAgOiBvcHRpb25zLmFycm93V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhcnJvd0hlaWdodCA9IGlzQXJyb3dIaWRkZW4gPyAwIDogb3B0aW9ucy5hcnJvd0hlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IFtwbGFjZWRTaWRlLCBwbGFjZWRBbGlnbl0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgICAgICAgY29uc3Qgbm9BcnJvd0FsaWduID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiAnMCUnLFxuICAgICAgICAgICAgICAgIGNlbnRlcjogJzUwJScsXG4gICAgICAgICAgICAgICAgZW5kOiAnMTAwJSdcbiAgICAgICAgICAgIH1bcGxhY2VkQWxpZ25dO1xuICAgICAgICAgICAgY29uc3QgYXJyb3dYQ2VudGVyID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3c1ID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzYgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93NiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Ni54KSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3c1ICE9PSB2b2lkIDAgPyBfbWlkZGxld2FyZURhdGEkYXJyb3c1IDogMCkgKyBhcnJvd1dpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGFycm93WUNlbnRlciA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NyA9IChfbWlkZGxld2FyZURhdGEkYXJyb3c4ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzgueSkgIT09IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93NyAhPT0gdm9pZCAwID8gX21pZGRsZXdhcmVEYXRhJGFycm93NyA6IDApICsgYXJyb3dIZWlnaHQgLyAyO1xuICAgICAgICAgICAgbGV0IHggPSAnJztcbiAgICAgICAgICAgIGxldCB5ID0gJyc7XG4gICAgICAgICAgICBpZiAocGxhY2VkU2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGAkey1hcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgeCA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1hDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBgJHtyZWN0cy5mbG9hdGluZy5oZWlnaHQgKyBhcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICB4ID0gYCR7LWFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgIHggPSBgJHtyZWN0cy5mbG9hdGluZy53aWR0aCArIGFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgICAgICAgICAgeTogeVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KVxuO1xuZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gICAgY29uc3QgW3NpZGUsIGFsaWduID0gJ2NlbnRlciddID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2lkZSxcbiAgICAgICAgYWxpZ25cbiAgICBdO1xufVxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZDtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDA7XG5cblxuXG5cbmV4cG9ydCB7JGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDcyMmFhYzE5NGFlOTIzIGFzIGNyZWF0ZVBvcHBlclNjb3BlLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOSBhcyBQb3BwZXIsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgYXMgUG9wcGVyQW5jaG9yLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjIGFzIFBvcHBlckNvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwIGFzIFBvcHBlckFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyBhcyBBbmNob3IsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzZmMDA4NmRhMDljNGI5ZiBhcyBTSURFX09QVElPTlMsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNjcxZmZhYjdiMzAyZmM5IGFzIEFMSUdOX09QVElPTlN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRrVndudyRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICRrVndudyRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrVndudyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFZpc3VhbGx5SGlkZGVuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJHZhciROQU1FID0gJ1Zpc3VhbGx5SGlkZGVuJztcbmNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0ID0gLyojX19QVVJFX18qLyAka1Z3bnckZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1Z3bnckY3JlYXRlRWxlbWVudCgka1Z3bnckUHJpbWl0aXZlLnNwYW4sICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9zY3NzL21peGlucy9fc2NyZWVuLXJlYWRlci5zY3NzXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICBjbGlwOiAncmVjdCgwLCAwLCAwLCAwKScsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIHdvcmRXcmFwOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZWExZWY1OTRjZjU3MGQ4MyR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQ7XG5cblxuXG5cbmV4cG9ydCB7JGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQgYXMgVmlzdWFsbHlIaWRkZW4sICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkOHdlcEskdXNlU3RhdGUsIHVzZVJlZiBhcyAkOHdlcEskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDh3ZXBLJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkOHdlcEskY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJDh3ZXBLJHVzZUNhbGxiYWNrLCB1c2VNZW1vIGFzICQ4d2VwSyR1c2VNZW1vLCBmb3J3YXJkUmVmIGFzICQ4d2VwSyRmb3J3YXJkUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDh3ZXBLJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQ4d2VwSyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUlkIGFzICQ4d2VwSyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDh3ZXBLJFJvb3QsIEFuY2hvciBhcyAkOHdlcEskQW5jaG9yLCBDb250ZW50IGFzICQ4d2VwSyRDb250ZW50LCBBcnJvdyBhcyAkOHdlcEskQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkOHdlcEskUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkOHdlcEskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ4d2VwSyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkOHdlcEskU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDh3ZXBLJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7Um9vdCBhcyAkOHdlcEskUm9vdDF9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1XSA9ICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUoJ1Rvb2x0aXAnLCBbXG4gICAgJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZSA9ICQ4d2VwSyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFByb3ZpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FID0gJ1Rvb2x0aXBQcm92aWRlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiA9IDcwMDtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4gPSAndG9vbHRpcC5vcGVuJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBST1ZJREVSX05BTUUpO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCBkZWxheUR1cmF0aW9uOiBkZWxheUR1cmF0aW9uID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04gLCBza2lwRGVsYXlEdXJhdGlvbjogc2tpcERlbGF5RHVyYXRpb24gPSAzMDAgLCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPSBmYWxzZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpc09wZW5EZWxheWVkLCBzZXRJc09wZW5EZWxheWVkXSA9ICQ4d2VwSyR1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBpc1BvaW50ZXJJblRyYW5zaXRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBza2lwRGVsYXlUaW1lclJlZiA9ICQ4d2VwSyR1c2VSZWYoMCk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBza2lwRGVsYXlUaW1lciA9IHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dChza2lwRGVsYXlUaW1lcilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgaXNPcGVuRGVsYXllZDogaXNPcGVuRGVsYXllZCxcbiAgICAgICAgZGVsYXlEdXJhdGlvbjogZGVsYXlEdXJhdGlvbixcbiAgICAgICAgb25PcGVuOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBzZXRJc09wZW5EZWxheWVkKGZhbHNlKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbkNsb3NlOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBza2lwRGVsYXlUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnNldElzT3BlbkRlbGF5ZWQodHJ1ZSlcbiAgICAgICAgICAgICwgc2tpcERlbGF5RHVyYXRpb24pO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBza2lwRGVsYXlEdXJhdGlvblxuICAgICAgICBdKSxcbiAgICAgICAgaXNQb2ludGVySW5UcmFuc2l0UmVmOiBpc1BvaW50ZXJJblRyYW5zaXRSZWYsXG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZTogJDh3ZXBLJHVzZUNhbGxiYWNrKChpblRyYW5zaXQpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJJblRyYW5zaXRSZWYuY3VycmVudCA9IGluVHJhbnNpdDtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSA9ICdUb29sdGlwJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRleHRQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gPSBmYWxzZSAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAsIGRlbGF5RHVyYXRpb246IGRlbGF5RHVyYXRpb25Qcm9wICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJvdmlkZXJDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29udGVudElkID0gJDh3ZXBLJHVzZUlkKCk7XG4gICAgY29uc3Qgb3BlblRpbWVyUmVmID0gJDh3ZXBLJHVzZVJlZigwKTtcbiAgICBjb25zdCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudCA9IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAhPT0gbnVsbCAmJiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgIT09IHZvaWQgMCA/IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCA6IHByb3ZpZGVyQ29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudDtcbiAgICBjb25zdCBkZWxheUR1cmF0aW9uID0gZGVsYXlEdXJhdGlvblByb3AgIT09IG51bGwgJiYgZGVsYXlEdXJhdGlvblByb3AgIT09IHZvaWQgMCA/IGRlbGF5RHVyYXRpb25Qcm9wIDogcHJvdmlkZXJDb250ZXh0LmRlbGF5RHVyYXRpb247XG4gICAgY29uc3Qgd2FzT3BlbkRlbGF5ZWRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBbb3BlbjEgPSBmYWxzZSwgc2V0T3Blbl0gPSAkOHdlcEskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogKG9wZW4pPT57XG4gICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5vbk9wZW4oKTsgLy8gYXMgYG9uQ2hhbmdlYCBpcyBjYWxsZWQgd2l0aGluIGEgbGlmZWN5Y2xlIG1ldGhvZCB3ZVxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGRpc3BhdGNoaW5nIHZpYSBgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50YC5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOKSk7XG4gICAgICAgICAgICB9IGVsc2UgcHJvdmlkZXJDb250ZXh0Lm9uQ2xvc2UoKTtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCB8fCBvbk9wZW5DaGFuZ2Uob3Blbik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZSA9ICQ4d2VwSyR1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBvcGVuMSA/IHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPyAnZGVsYXllZC1vcGVuJyA6ICdpbnN0YW50LW9wZW4nIDogJ2Nsb3NlZCc7XG4gICAgfSwgW1xuICAgICAgICBvcGVuMVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9LCBbXG4gICAgICAgIHNldE9wZW5cbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlRGVsYXllZE9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIG9wZW5UaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICAgICAgfSwgZGVsYXlEdXJhdGlvbik7XG4gICAgfSwgW1xuICAgICAgICBkZWxheUR1cmF0aW9uLFxuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgY29udGVudElkOiBjb250ZW50SWQsXG4gICAgICAgIG9wZW46IG9wZW4xLFxuICAgICAgICBzdGF0ZUF0dHJpYnV0ZTogc3RhdGVBdHRyaWJ1dGUsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyRW50ZXI6ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkKSBoYW5kbGVEZWxheWVkT3BlbigpO1xuICAgICAgICAgICAgZWxzZSBoYW5kbGVPcGVuKCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkLFxuICAgICAgICAgICAgaGFuZGxlRGVsYXllZE9wZW4sXG4gICAgICAgICAgICBoYW5kbGVPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBvblRyaWdnZXJMZWF2ZTogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQpIGhhbmRsZUNsb3NlKCk7XG4gICAgICAgICAgICBlbHNlIC8vIENsZWFyIHRoZSB0aW1lciBpbiBjYXNlIHRoZSBwb2ludGVyIGxlYXZlcyB0aGUgdHJpZ2dlciBiZWZvcmUgdGhlIHRvb2x0aXAgaXMgb3BlbmVkLlxuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlLFxuICAgICAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICAgICAgXSksXG4gICAgICAgIG9uT3BlbjogaGFuZGxlT3BlbixcbiAgICAgICAgb25DbG9zZTogaGFuZGxlQ2xvc2UsXG4gICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50OiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFxuICAgIH0sIGNoaWxkcmVuKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhLCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSA9ICdUb29sdGlwVHJpZ2dlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHByb3ZpZGVyQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgaXNQb2ludGVyRG93blJlZiA9ICQ4d2VwSyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT5pc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICwgW10pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXApXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVBvaW50ZXJVcFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRBbmNob3IsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByaW1pdGl2ZS5idXR0b24sICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIC8vIFdlIHB1cnBvc2VmdWxseSBhdm9pZCBhZGRpbmcgYHR5cGU9YnV0dG9uYCBoZXJlIGJlY2F1c2UgdG9vbHRpcCB0cmlnZ2VycyBhcmUgYWxzb1xuICAgICAgICAvLyBjb21tb25seSBhbmNob3JzIGFuZCB0aGUgYW5jaG9yIGB0eXBlYCBhdHRyaWJ1dGUgc2lnbmlmaWVzIE1JTUUgdHlwZS5cbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGNvbnRleHQub3BlbiA/IGNvbnRleHQuY29udGVudElkIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCFoYXNQb2ludGVyTW92ZU9wZW5lZFJlZi5jdXJyZW50ICYmICFwcm92aWRlckNvbnRleHQuaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uVHJpZ2dlckVudGVyKCk7XG4gICAgICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckxlYXZlLCAoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5vblRyaWdnZXJMZWF2ZSgpO1xuICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIGlmICghaXNQb2ludGVyRG93blJlZi5jdXJyZW50KSBjb250ZXh0Lm9uT3BlbigpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25CbHVyOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCBjb250ZXh0Lm9uQ2xvc2UpLFxuICAgICAgICBvbkNsaWNrOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbkNsb3NlKVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FID0gJ1Rvb2x0aXBQb3J0YWwnO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRQb3J0YWxQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSwge1xuICAgIGZvcmNlTW91bnQ6IHVuZGVmaW5lZFxufSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskUG9ydGFsLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfSwgY2hpbGRyZW4pKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YjM2YjhmOTI1YWI3NDk3LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FID0gJ1Rvb2x0aXBDb250ZW50JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIHNpZGU6IHNpZGUgPSAndG9wJyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgY29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudCA/IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgc2lkZTogc2lkZVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBzaWRlOiBzaWRlXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwcm92aWRlckNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBbcG9pbnRlckdyYWNlQXJlYSwgc2V0UG9pbnRlckdyYWNlQXJlYV0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VyICwgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgY29udGVudCA9IHJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHsgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOiBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UgIH0gPSBwcm92aWRlckNvbnRleHQ7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNldFBvaW50ZXJHcmFjZUFyZWEobnVsbCk7XG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZShmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDcmVhdGVHcmFjZUFyZWEgPSAkOHdlcEskdXNlQ2FsbGJhY2soKGV2ZW50LCBob3ZlclRhcmdldCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IGV4aXRQb2ludCA9IHtcbiAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXRTaWRlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEV4aXRTaWRlRnJvbVJlY3QoZXhpdFBvaW50LCBjdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUpO1xuICAgICAgICBjb25zdCBob3ZlclRhcmdldFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChob3ZlclRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IGdyYWNlQXJlYSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsKFtcbiAgICAgICAgICAgIC4uLnBhZGRlZEV4aXRQb2ludHMsXG4gICAgICAgICAgICAuLi5ob3ZlclRhcmdldFBvaW50c1xuICAgICAgICBdKTtcbiAgICAgICAgc2V0UG9pbnRlckdyYWNlQXJlYShncmFjZUFyZWEpO1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UodHJ1ZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJpZ2dlciAmJiBjb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIGNvbnRlbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVDb250ZW50TGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIHRyaWdnZXIpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZUNvbnRlbnRMZWF2ZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICAgICAgY29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVDb250ZW50TGVhdmUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgaGFuZGxlQ3JlYXRlR3JhY2VBcmVhLFxuICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWFcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwb2ludGVyR3JhY2VBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFbnRlcmVkVGFyZ2V0ID0gKHRyaWdnZXIgPT09IG51bGwgfHwgdHJpZ2dlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHJpZ2dlci5jb250YWlucyh0YXJnZXQpKSB8fCAoY29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUG9pbnRlck91dHNpZGVHcmFjZUFyZWEgPSAhJGEwOTNjN2UxZWMyNWEwNTckdmFyJGlzUG9pbnRJblBvbHlnb24ocG9pbnRlclBvc2l0aW9uLCBwb2ludGVyR3JhY2VBcmVhKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRW50ZXJlZFRhcmdldCkgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQb2ludGVyT3V0c2lkZUdyYWNlQXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWEoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVRyYWNrUG9pbnRlckdyYWNlKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgcG9pbnRlckdyYWNlQXJlYSxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FLCB7XG4gICAgaXNJbnNpZGU6IGZhbHNlXG59KTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ4d2VwSyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7IC8vIENsb3NlIHRoaXMgdG9vbHRpcCBpZiBhbm90aGVyIG9uZSBvcGVuc1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOLCBvbkNsb3NlKTtcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4sIG9uQ2xvc2UpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uQ2xvc2VcbiAgICBdKTsgLy8gQ2xvc2UgdGhlIHRvb2x0aXAgaWYgdGhlIHRyaWdnZXIgaXMgc2Nyb2xsZWRcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHZvaWQgMCAmJiB0YXJnZXQuY29udGFpbnMoY29udGV4dC50cmlnZ2VyKSkgb25DbG9zZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBvbkNsb3NlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLFxuICAgICAgICBvbkRpc21pc3M6IG9uQ2xvc2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRDb250ZW50LCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHBvcHBlclNjb3BlLCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJ1xuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVUb29sdGlwLFxuICAgICAgICBpc0luc2lkZTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QxLCB7XG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgcm9sZTogXCJ0b29sdGlwXCJcbiAgICB9LCBhcmlhTGFiZWwgfHwgY2hpbGRyZW4pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUgPSAnVG9vbHRpcEFycm93JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5ID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB2aXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVUb29sdGlwKTsgLy8gaWYgdGhlIGFycm93IGlzIGluc2lkZSB0aGUgYFZpc3VhbGx5SGlkZGVuYCwgd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgaXQgYWxsIHRvXG4gICAgLy8gcHJldmVudCBpc3N1ZXMgaW4gcG9zaXRpb25pbmcgdGhlIGFycm93IGR1ZSB0byB0aGUgZHVwbGljYXRlXG4gICAgcmV0dXJuIHZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQuaXNJbnNpZGUgPyBudWxsIDogLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQXJyb3csICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0KHBvaW50LCByZWN0KSB7XG4gICAgY29uc3QgdG9wID0gTWF0aC5hYnMocmVjdC50b3AgLSBwb2ludC55KTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmFicyhyZWN0LmJvdHRvbSAtIHBvaW50LnkpO1xuICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5hYnMocmVjdC5yaWdodCAtIHBvaW50LngpO1xuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmFicyhyZWN0LmxlZnQgLSBwb2ludC54KTtcbiAgICBzd2l0Y2goTWF0aC5taW4odG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0KSl7XG4gICAgICAgIGNhc2UgbGVmdDpcbiAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgIGNhc2UgcmlnaHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgY2FzZSB0b3A6XG4gICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGNhc2UgYm90dG9tOlxuICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUsIHBhZGRpbmcgPSA1KSB7XG4gICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9IFtdO1xuICAgIHN3aXRjaChleGl0U2lkZSl7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSArIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55IC0gcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54ICsgcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcGFkZGVkRXhpdFBvaW50cztcbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChyZWN0KSB7XG4gICAgY29uc3QgeyB0b3A6IHRvcCAsIHJpZ2h0OiByaWdodCAsIGJvdHRvbTogYm90dG9tICwgbGVmdDogbGVmdCAgfSA9IHJlY3Q7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IGJvdHRvbVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogYm90dG9tXG4gICAgICAgIH1cbiAgICBdO1xufSAvLyBEZXRlcm1pbmUgaWYgYSBwb2ludCBpcyBpbnNpZGUgb2YgYSBwb2x5Z29uLlxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3N1YnN0YWNrL3BvaW50LWluLXBvbHlnb25cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gICAgY29uc3QgeyB4OiB4ICwgeTogeSAgfSA9IHBvaW50O1xuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspe1xuICAgICAgICBjb25zdCB4aSA9IHBvbHlnb25baV0ueDtcbiAgICAgICAgY29uc3QgeWkgPSBwb2x5Z29uW2ldLnk7XG4gICAgICAgIGNvbnN0IHhqID0gcG9seWdvbltqXS54O1xuICAgICAgICBjb25zdCB5aiA9IHBvbHlnb25bal0ueTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgIGNvbnN0IGludGVyc2VjdCA9IHlpID4geSAhPT0geWogPiB5ICYmIHggPCAoeGogLSB4aSkgKiAoeSAtIHlpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufSAvLyBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGNvbnZleCBodWxsIG9mIHRoZSBnaXZlbiBzZXQgb2YgcG9pbnRzLlxuLy8gaHR0cHM6Ly93d3cubmF5dWtpLmlvL3BhZ2UvY29udmV4LWh1bGwtYWxnb3JpdGhtXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbChwb2ludHMpIHtcbiAgICBjb25zdCBuZXdQb2ludHMgPSBwb2ludHMuc2xpY2UoKTtcbiAgICBuZXdQb2ludHMuc29ydCgoYSwgYik9PntcbiAgICAgICAgaWYgKGEueCA8IGIueCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmIChhLnggPiBiLngpIHJldHVybiAxO1xuICAgICAgICBlbHNlIGlmIChhLnkgPCBiLnkpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAoYS55ID4gYi55KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGxQcmVzb3J0ZWQobmV3UG9pbnRzKTtcbn0gLy8gUmV0dXJucyB0aGUgY29udmV4IGh1bGwsIGFzc3VtaW5nIHRoYXQgZWFjaCBwb2ludHNbaV0gPD0gcG9pbnRzW2kgKyAxXS4gUnVucyBpbiBPKG4pIHRpbWUuXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbFByZXNvcnRlZChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gcG9pbnRzLnNsaWNlKCk7XG4gICAgY29uc3QgdXBwZXJIdWxsID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIHdoaWxlKHVwcGVySHVsbC5sZW5ndGggPj0gMil7XG4gICAgICAgICAgICBjb25zdCBxID0gdXBwZXJIdWxsW3VwcGVySHVsbC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSB1cHBlckh1bGxbdXBwZXJIdWxsLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgaWYgKChxLnggLSByLngpICogKHAueSAtIHIueSkgPj0gKHEueSAtIHIueSkgKiAocC54IC0gci54KSkgdXBwZXJIdWxsLnBvcCgpO1xuICAgICAgICAgICAgZWxzZSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB1cHBlckh1bGwucHVzaChwKTtcbiAgICB9XG4gICAgdXBwZXJIdWxsLnBvcCgpO1xuICAgIGNvbnN0IGxvd2VySHVsbCA9IFtdO1xuICAgIGZvcihsZXQgaTEgPSBwb2ludHMubGVuZ3RoIC0gMTsgaTEgPj0gMDsgaTEtLSl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaTFdO1xuICAgICAgICB3aGlsZShsb3dlckh1bGwubGVuZ3RoID49IDIpe1xuICAgICAgICAgICAgY29uc3QgcSA9IGxvd2VySHVsbFtsb3dlckh1bGwubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCByID0gbG93ZXJIdWxsW2xvd2VySHVsbC5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIGlmICgocS54IC0gci54KSAqIChwLnkgLSByLnkpID49IChxLnkgLSByLnkpICogKHAueCAtIHIueCkpIGxvd2VySHVsbC5wb3AoKTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbG93ZXJIdWxsLnB1c2gocCk7XG4gICAgfVxuICAgIGxvd2VySHVsbC5wb3AoKTtcbiAgICBpZiAodXBwZXJIdWxsLmxlbmd0aCA9PT0gMSAmJiBsb3dlckh1bGwubGVuZ3RoID09PSAxICYmIHVwcGVySHVsbFswXS54ID09PSBsb3dlckh1bGxbMF0ueCAmJiB1cHBlckh1bGxbMF0ueSA9PT0gbG93ZXJIdWxsWzBdLnkpIHJldHVybiB1cHBlckh1bGw7XG4gICAgZWxzZSByZXR1cm4gdXBwZXJIdWxsLmNvbmNhdChsb3dlckh1bGwpO1xufVxuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZjc4NjQ5ZmI5Y2E1NjZiODtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4YzY2MGM2M2I3OTJkZWE7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ4YzYxMDc0NGVmY2Y4YTFkO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjA7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5O1xuXG5cblxuXG5leHBvcnQgeyRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1IGFzIGNyZWF0ZVRvb2x0aXBTY29wZSwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggYXMgVG9vbHRpcFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSBhcyBUb29sdGlwLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCBhcyBUb29sdGlwVHJpZ2dlciwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTcgYXMgVG9vbHRpcFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAgYXMgVG9vbHRpcENvbnRlbnQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5IGFzIFRvb2x0aXBBcnJvdywgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiZnVuY3Rpb24gJGFlNjkzM2U1MzUyNDdkM2QkZXhwb3J0JDdkMTViNjRjZjVhM2E0YzQodmFsdWUsIFttaW4sIG1heF0pIHtcbiAgICByZXR1cm4gTWF0aC5taW4obWF4LCBNYXRoLm1heChtaW4sIHZhbHVlKSk7XG59XG5cblxuXG5cbmV4cG9ydCB7JGFlNjkzM2U1MzUyNDdkM2QkZXhwb3J0JDdkMTViNjRjZjVhM2E0YzQgYXMgY2xhbXB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkMDFiOWMkdXNlU3RhdGUsIHVzZVJlZiBhcyAkMDFiOWMkdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICQwMWI5YyRjcmVhdGVFbGVtZW50LCB1c2VDYWxsYmFjayBhcyAkMDFiOWMkdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgYXMgJDAxYjljJGZvcndhcmRSZWYsIHVzZUVmZmVjdCBhcyAkMDFiOWMkdXNlRWZmZWN0LCBGcmFnbWVudCBhcyAkMDFiOWMkRnJhZ21lbnQsIHVzZU1lbW8gYXMgJDAxYjljJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVQb3J0YWwgYXMgJDAxYjljJGNyZWF0ZVBvcnRhbH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHtjbGFtcCBhcyAkMDFiOWMkY2xhbXB9IGZyb20gXCJAcmFkaXgtdWkvbnVtYmVyXCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29sbGVjdGlvbiBhcyAkMDFiOWMkY3JlYXRlQ29sbGVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkMDFiOWMkdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQwMWI5YyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUZvY3VzR3VhcmRzIGFzICQwMWI5YyR1c2VGb2N1c0d1YXJkc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHNcIjtcbmltcG9ydCB7Rm9jdXNTY29wZSBhcyAkMDFiOWMkRm9jdXNTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1zY29wZVwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkMDFiOWMkdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7Y3JlYXRlUG9wcGVyU2NvcGUgYXMgJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlLCBSb290IGFzICQwMWI5YyRSb290LCBBbmNob3IgYXMgJDAxYjljJEFuY2hvciwgQ29udGVudCBhcyAkMDFiOWMkQ29udGVudCwgQXJyb3cgYXMgJDAxYjljJEFycm93fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcHBlclwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDAxYjljJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQwMWI5YyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDAxYjljJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkMDFiOWMkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJDAxYjljJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0IHt1c2VQcmV2aW91cyBhcyAkMDFiOWMkdXNlUHJldmlvdXN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzXCI7XG5pbXBvcnQge1Zpc3VhbGx5SGlkZGVuIGFzICQwMWI5YyRWaXN1YWxseUhpZGRlbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC12aXN1YWxseS1oaWRkZW5cIjtcbmltcG9ydCB7aGlkZU90aGVycyBhcyAkMDFiOWMkaGlkZU90aGVyc30gZnJvbSBcImFyaWEtaGlkZGVuXCI7XG5pbXBvcnQge1JlbW92ZVNjcm9sbCBhcyAkMDFiOWMkUmVtb3ZlU2Nyb2xsfSBmcm9tIFwicmVhY3QtcmVtb3ZlLXNjcm9sbFwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRPUEVOX0tFWVMgPSBbXG4gICAgJyAnLFxuICAgICdFbnRlcicsXG4gICAgJ0Fycm93VXAnLFxuICAgICdBcnJvd0Rvd24nXG5dO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVElPTl9LRVlTID0gW1xuICAgICcgJyxcbiAgICAnRW50ZXInXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSA9ICdTZWxlY3QnO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbiwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSAkMDFiOWMkY3JlYXRlQ29sbGVjdGlvbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjg2NzI3YTc1ZGMwMzliZF0gPSAkMDFiOWMkY3JlYXRlQ29udGV4dFNjb3BlKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSwgW1xuICAgICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGUsXG4gICAgJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZSA9ICQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FKTtcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0TmF0aXZlT3B0aW9uc1Byb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0TmF0aXZlT3B0aW9uc0NvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZjliMWE1OWU1OTIyODhmID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIG9wZW46IG9wZW5Qcm9wICwgZGVmYXVsdE9wZW46IGRlZmF1bHRPcGVuICwgb25PcGVuQ2hhbmdlOiBvbk9wZW5DaGFuZ2UgLCB2YWx1ZTogdmFsdWVQcm9wICwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgLCBvblZhbHVlQ2hhbmdlOiBvblZhbHVlQ2hhbmdlICwgZGlyOiBkaXIgLCBuYW1lOiBuYW1lICwgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUgLCBkaXNhYmxlZDogZGlzYWJsZWQgLCByZXF1aXJlZDogcmVxdWlyZWQgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3ZhbHVlTm9kZSwgc2V0VmFsdWVOb2RlXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmFsdWVOb2RlSGFzQ2hpbGRyZW4sIHNldFZhbHVlTm9kZUhhc0NoaWxkcmVuXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gJDAxYjljJHVzZURpcmVjdGlvbihkaXIpO1xuICAgIGNvbnN0IFtvcGVuID0gZmFsc2UsIHNldE9wZW5dID0gJDAxYjljJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogb3BlblByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0T3BlbixcbiAgICAgICAgb25DaGFuZ2U6IG9uT3BlbkNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gJDAxYjljJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogdmFsdWVQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlLFxuICAgICAgICBvbkNoYW5nZTogb25WYWx1ZUNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZiA9ICQwMWI5YyR1c2VSZWYobnVsbCk7IC8vIFdlIHNldCB0aGlzIHRvIHRydWUgYnkgZGVmYXVsdCBzbyB0aGF0IGV2ZW50cyBidWJibGUgdG8gZm9ybXMgd2l0aG91dCBKUyAoU1NSKVxuICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSB0cmlnZ2VyID8gQm9vbGVhbih0cmlnZ2VyLmNsb3Nlc3QoJ2Zvcm0nKSkgOiB0cnVlO1xuICAgIGNvbnN0IFtuYXRpdmVPcHRpb25zU2V0LCBzZXROYXRpdmVPcHRpb25zU2V0XSA9ICQwMWI5YyR1c2VTdGF0ZShuZXcgU2V0KCkpOyAvLyBUaGUgbmF0aXZlIGBzZWxlY3RgIG9ubHkgYXNzb2NpYXRlcyB0aGUgY29ycmVjdCBkZWZhdWx0IHZhbHVlIGlmIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgLy8gYG9wdGlvbmAgaXMgcmVuZGVyZWQgYXMgYSBjaGlsZCAqKmF0IHRoZSBzYW1lIHRpbWUqKiBhcyBpdHNlbGYuXG4gICAgLy8gQmVjYXVzZSBpdCBtaWdodCB0YWtlIGEgZmV3IHJlbmRlcnMgZm9yIG91ciBpdGVtcyB0byBnYXRoZXIgdGhlIGluZm9ybWF0aW9uIHRvIGJ1aWxkXG4gICAgLy8gdGhlIG5hdGl2ZSBgb3B0aW9uYChzKSwgd2UgZ2VuZXJhdGUgYSBrZXkgb24gdGhlIGBzZWxlY3RgIHRvIG1ha2Ugc3VyZSBSZWFjdCByZS1idWlsZHMgaXRcbiAgICAvLyBlYWNoIHRpbWUgdGhlIG9wdGlvbnMgY2hhbmdlLlxuICAgIGNvbnN0IG5hdGl2ZVNlbGVjdEtleSA9IEFycmF5LmZyb20obmF0aXZlT3B0aW9uc1NldCkubWFwKChvcHRpb24pPT5vcHRpb24ucHJvcHMudmFsdWVcbiAgICApLmpvaW4oJzsnKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUm9vdCwgcG9wcGVyU2NvcGUsIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFByb3ZpZGVyLCB7XG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgdmFsdWVOb2RlOiB2YWx1ZU5vZGUsXG4gICAgICAgIG9uVmFsdWVOb2RlQ2hhbmdlOiBzZXRWYWx1ZU5vZGUsXG4gICAgICAgIHZhbHVlTm9kZUhhc0NoaWxkcmVuOiB2YWx1ZU5vZGVIYXNDaGlsZHJlbixcbiAgICAgICAgb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZTogc2V0VmFsdWVOb2RlSGFzQ2hpbGRyZW4sXG4gICAgICAgIGNvbnRlbnRJZDogJDAxYjljJHVzZUlkKCksXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgb25WYWx1ZUNoYW5nZTogc2V0VmFsdWUsXG4gICAgICAgIG9wZW46IG9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZTogc2V0T3BlbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjogdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLlByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0XG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0TmF0aXZlT3B0aW9uc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0LFxuICAgICAgICBvbk5hdGl2ZU9wdGlvbkFkZDogJDAxYjljJHVzZUNhbGxiYWNrKChvcHRpb24pPT57XG4gICAgICAgICAgICBzZXROYXRpdmVPcHRpb25zU2V0KChwcmV2KT0+bmV3IFNldChwcmV2KS5hZGQob3B0aW9uKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbk5hdGl2ZU9wdGlvblJlbW92ZTogJDAxYjljJHVzZUNhbGxiYWNrKChvcHRpb24pPT57XG4gICAgICAgICAgICBzZXROYXRpdmVPcHRpb25zU2V0KChwcmV2KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNTZXQgPSBuZXcgU2V0KHByZXYpO1xuICAgICAgICAgICAgICAgIG9wdGlvbnNTZXQuZGVsZXRlKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNTZXQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pXG4gICAgfSwgY2hpbGRyZW4pKSwgaXNGb3JtQ29udHJvbCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEJ1YmJsZVNlbGVjdCwge1xuICAgICAgICBrZXk6IG5hdGl2ZVNlbGVjdEtleSxcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSAvLyBlbmFibGUgZm9ybSBhdXRvZmlsbFxuICAgICAgICAsXG4gICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQpPT5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwge1xuICAgICAgICB2YWx1ZTogXCJcIlxuICAgIH0pIDogbnVsbCwgQXJyYXkuZnJvbShuYXRpdmVPcHRpb25zU2V0KSkgOiBudWxsKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZjliMWE1OWU1OTIyODhmLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRUUklHR0VSX05BTUUgPSAnU2VsZWN0VHJpZ2dlcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBkaXNhYmxlZDogZGlzYWJsZWQgPSBmYWxzZSAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBjb250ZXh0LmRpc2FibGVkIHx8IGRpc2FibGVkO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbc2VhcmNoUmVmLCBoYW5kbGVUeXBlYWhlYWRTZWFyY2gsIHJlc2V0VHlwZWFoZWFkXSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2goKHNlYXJjaCk9PntcbiAgICAgICAgY29uc3QgZW5hYmxlZEl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGVuYWJsZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS52YWx1ZSA9PT0gY29udGV4dC52YWx1ZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0SXRlbSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oZW5hYmxlZEl0ZW1zLCBzZWFyY2gsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgaWYgKG5leHRJdGVtICE9PSB1bmRlZmluZWQpIGNvbnRleHQub25WYWx1ZUNoYW5nZShuZXh0SXRlbS52YWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3BlbiA9ICgpPT57XG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UodHJ1ZSk7IC8vIHJlc2V0IHR5cGVhaGVhZCB3aGVuIHdlIG9wZW5cbiAgICAgICAgICAgIHJlc2V0VHlwZWFoZWFkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRBbmNob3IsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5idXR0b24sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIHJvbGU6IFwiY29tYm9ib3hcIixcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogY29udGV4dC5vcGVuLFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjogY29udGV4dC5yZXF1aXJlZCxcbiAgICAgICAgXCJhcmlhLWF1dG9jb21wbGV0ZVwiOiBcIm5vbmVcIixcbiAgICAgICAgZGlyOiBjb250ZXh0LmRpcixcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQub3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnLFxuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGlzRGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLXBsYWNlaG9sZGVyXCI6IGNvbnRleHQudmFsdWUgPT09IHVuZGVmaW5lZCA/ICcnIDogdW5kZWZpbmVkXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIEVuYWJsZSBjb21wYXRpYmlsaXR5IHdpdGggbmF0aXZlIGxhYmVsIG9yIGN1c3RvbSBgTGFiZWxgIFwiY2xpY2tcIiBmb3IgU2FmYXJpOlxuICAgICAgICAsXG4gICAgICAgIG9uQ2xpY2s6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh0cmlnZ2VyUHJvcHMub25DbGljaywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gV2hpbHN0IGJyb3dzZXJzIGdlbmVyYWxseSBoYXZlIG5vIGlzc3VlIGZvY3VzaW5nIHRoZSB0cmlnZ2VyIHdoZW4gY2xpY2tpbmdcbiAgICAgICAgICAgIC8vIG9uIGEgbGFiZWwsIFNhZmFyaSBzZWVtcyB0byBzdHJ1Z2dsZSB3aXRoIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBubyBgb25DbGlja2AuXG4gICAgICAgICAgICAvLyBXZSBmb3JjZSBgZm9jdXNgIGluIHRoaXMgY2FzZS4gTm90ZTogdGhpcyBkb2Vzbid0IGNyZWF0ZSBhbnkgb3RoZXIgc2lkZS1lZmZlY3RcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgYXJlIHByZXZlbnRpbmcgZGVmYXVsdCBpbiBgb25Qb2ludGVyRG93bmAgc28gZWZmZWN0aXZlbHlcbiAgICAgICAgICAgIC8vIHRoaXMgb25seSBydW5zIGZvciBhIGxhYmVsIFwiY2xpY2tcIlxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5mb2N1cygpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vblBvaW50ZXJEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBwcmV2ZW50IGltcGxpY2l0IHBvaW50ZXIgY2FwdHVyZVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMzLyNpbXBsaWNpdC1wb2ludGVyLWNhcHR1cmVcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSkgdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpO1xuICAgICAgICAgICAgIC8vIG9ubHkgY2FsbCBoYW5kbGVyIGlmIGl0J3MgdGhlIGxlZnQgYnV0dG9uIChtb3VzZWRvd24gZ2V0cyB0cmlnZ2VyZWQgYnkgYWxsIG1vdXNlIGJ1dHRvbnMpXG4gICAgICAgICAgICAvLyBidXQgbm90IHdoZW4gdGhlIGNvbnRyb2wga2V5IGlzIHByZXNzZWQgKGF2b2lkaW5nIE1hY09TIHJpZ2h0IGNsaWNrKVxuICAgICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBldmVudC5jdHJsS2V5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW4oKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VYKSxcbiAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZChldmVudC5wYWdlWSlcbiAgICAgICAgICAgICAgICB9OyAvLyBwcmV2ZW50IHRyaWdnZXIgZnJvbSBzdGVhbGluZyBmb2N1cyBmcm9tIHRoZSBhY3RpdmUgaXRlbSBhZnRlciBvcGVuaW5nLlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvbktleURvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh0cmlnZ2VyUHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBpc1R5cGluZ0FoZWFkID0gc2VhcmNoUmVmLmN1cnJlbnQgIT09ICcnO1xuICAgICAgICAgICAgY29uc3QgaXNNb2RpZmllcktleSA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG4gICAgICAgICAgICBpZiAoIWlzTW9kaWZpZXJLZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgaGFuZGxlVHlwZWFoZWFkU2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBpZiAoaXNUeXBpbmdBaGVhZCAmJiBldmVudC5rZXkgPT09ICcgJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRPUEVOX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW4oKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0VmFsdWVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZBTFVFX05BTUUgPSAnU2VsZWN0VmFsdWUnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIC8vIFdlIGlnbm9yZSBgY2xhc3NOYW1lYCBhbmQgYHN0eWxlYCBhcyB0aGlzIHBhcnQgc2hvdWxkbid0IGJlIHN0eWxlZC5cbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjbGFzc05hbWU6IGNsYXNzTmFtZSAsIHN0eWxlOiBzdHlsZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciAsIC4uLnZhbHVlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgeyBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlOiBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlICB9ID0gY29udGV4dDtcbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9IGNoaWxkcmVuICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQub25WYWx1ZU5vZGVDaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZShoYXNDaGlsZHJlbik7XG4gICAgfSwgW1xuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlLFxuICAgICAgICBoYXNDaGlsZHJlblxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCB2YWx1ZVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIHdlIGRvbid0IHdhbnQgZXZlbnRzIGZyb20gdGhlIHBvcnRhbGxlZCBgU2VsZWN0VmFsdWVgIGNoaWxkcmVuIHRvIGJ1YmJsZVxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZSdcbiAgICAgICAgfVxuICAgIH0pLCBjb250ZXh0LnZhbHVlID09PSB1bmRlZmluZWQgJiYgcGxhY2Vob2xkZXIgIT09IHVuZGVmaW5lZCA/IHBsYWNlaG9sZGVyIDogY2hpbGRyZW4pO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZBTFVFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SWNvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSUNPTl9OQU1FID0gJ1NlbGVjdEljb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDk5YjQwMGNhYmI1OGM1MTUgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLmljb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBpY29uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSwgY2hpbGRyZW4gfHwgJ+KWvCcpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDk5YjQwMGNhYmI1OGM1MTUsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElDT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUlRBTF9OQU1FID0gJ1NlbGVjdFBvcnRhbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMyA9IChwcm9wcyk9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUG9ydGFsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcHJvcHMpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIyYWY2Yzk5NDQyOTYyMTMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdENvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSA9ICdTZWxlY3RDb250ZW50JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2ZyYWdtZW50LCBzZXRGcmFnbWVudF0gPSAkMDFiOWMkdXNlU3RhdGUoKTsgLy8gc2V0dGluZyB0aGUgZnJhZ21lbnQgaW4gYHVzZUxheW91dEVmZmVjdGAgYXMgYERvY3VtZW50RnJhZ21lbnRgIGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHNlcnZlclxuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgc2V0RnJhZ21lbnQobmV3IERvY3VtZW50RnJhZ21lbnQoKSk7XG4gICAgfSwgW10pO1xuICAgIGlmICghY29udGV4dC5vcGVuKSB7XG4gICAgICAgIGNvbnN0IGZyYWcgPSBmcmFnbWVudDtcbiAgICAgICAgcmV0dXJuIGZyYWcgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVQb3J0YWwoLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVNlbGVjdFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLlNsb3QsIHtcbiAgICAgICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgcHJvcHMuY2hpbGRyZW4pKSksIGZyYWcpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RDb250ZW50SW1wbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gPSAxMDtcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9JTVBMX05BTUUgPSAnU2VsZWN0Q29udGVudEltcGwnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBwb3NpdGlvbjogcG9zaXRpb24gPSAnaXRlbS1hbGlnbmVkJyAsIG9uQ2xvc2VBdXRvRm9jdXM6IG9uQ2xvc2VBdXRvRm9jdXMgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIHNpZGU6IC8vXG4gICAgLy8gUG9wcGVyQ29udGVudCBwcm9wc1xuICAgIHNpZGUgLCBzaWRlT2Zmc2V0OiBzaWRlT2Zmc2V0ICwgYWxpZ246IGFsaWduICwgYWxpZ25PZmZzZXQ6IGFsaWduT2Zmc2V0ICwgYXJyb3dQYWRkaW5nOiBhcnJvd1BhZGRpbmcgLCBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnkgLCBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nICwgc3RpY2t5OiBzdGlja3kgLCBoaWRlV2hlbkRldGFjaGVkOiBoaWRlV2hlbkRldGFjaGVkICwgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnMgLCAvL1xuICAgIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtjb250ZW50LCBzZXRDb250ZW50XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmlld3BvcnQsIHNldFZpZXdwb3J0XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRDb250ZW50KG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRJdGVtLCBzZXRTZWxlY3RlZEl0ZW1dID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEl0ZW1UZXh0LCBzZXRTZWxlY3RlZEl0ZW1UZXh0XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtpc1Bvc2l0aW9uZWQsIHNldElzUG9zaXRpb25lZF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZpcnN0VmFsaWRJdGVtRm91bmRSZWYgPSAkMDFiOWMkdXNlUmVmKGZhbHNlKTsgLy8gYXJpYS1oaWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjb250ZW50IChiZXR0ZXIgc3VwcG9ydGVkIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBhcmlhLW1vZGFsKVxuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHJldHVybiAkMDFiOWMkaGlkZU90aGVycyhjb250ZW50KTtcbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBTZWxlY3RgIG1heSBiZVxuICAgIC8vIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIERPTSAoYmVjYXVzZSBvZiB0aGUgYFBvcnRhbGApXG4gICAgJDAxYjljJHVzZUZvY3VzR3VhcmRzKCk7XG4gICAgY29uc3QgZm9jdXNGaXJzdCA9ICQwMWI5YyR1c2VDYWxsYmFjaygoY2FuZGlkYXRlcyk9PntcbiAgICAgICAgY29uc3QgW2ZpcnN0SXRlbSwgLi4ucmVzdEl0ZW1zXSA9IGdldEl0ZW1zKCkubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBbbGFzdEl0ZW1dID0gcmVzdEl0ZW1zLnNsaWNlKC0xKTtcbiAgICAgICAgY29uc3QgUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKXtcbiAgICAgICAgICAgIC8vIGlmIGZvY3VzIGlzIGFscmVhZHkgd2hlcmUgd2Ugd2FudCB0byBnbywgd2UgZG9uJ3Qgd2FudCB0byBrZWVwIGdvaW5nIHRocm91Z2ggdGhlIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgICAgICBjYW5kaWRhdGUgPT09IG51bGwgfHwgY2FuZGlkYXRlID09PSB2b2lkIDAgfHwgY2FuZGlkYXRlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICBibG9jazogJ25lYXJlc3QnXG4gICAgICAgICAgICB9KTsgLy8gdmlld3BvcnQgbWlnaHQgaGF2ZSBwYWRkaW5nIHNvIHNjcm9sbCB0byBpdHMgZWRnZXMgd2hlbiBmb2N1c2luZyBmaXJzdC9sYXN0IGl0ZW1zLlxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gZmlyc3RJdGVtICYmIHZpZXdwb3J0KSB2aWV3cG9ydC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gbGFzdEl0ZW0gJiYgdmlld3BvcnQpIHZpZXdwb3J0LnNjcm9sbFRvcCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNhbmRpZGF0ZSA9PT0gbnVsbCB8fCBjYW5kaWRhdGUgPT09IHZvaWQgMCB8fCBjYW5kaWRhdGUuZm9jdXMoKTtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtcyxcbiAgICAgICAgdmlld3BvcnRcbiAgICBdKTtcbiAgICBjb25zdCBmb2N1c1NlbGVjdGVkSXRlbSA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+Zm9jdXNGaXJzdChbXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgICBjb250ZW50XG4gICAgICAgIF0pXG4gICAgLCBbXG4gICAgICAgIGZvY3VzRmlyc3QsXG4gICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBTaW5jZSB0aGlzIGlzIG5vdCBkZXBlbmRlbnQgb24gbGF5b3V0LCB3ZSB3YW50IHRvIGVuc3VyZSB0aGlzIHJ1bnMgYXQgdGhlIHNhbWUgdGltZSBhc1xuICAgIC8vIG90aGVyIGVmZmVjdHMgYWNyb3NzIGNvbXBvbmVudHMuIEhlbmNlIHdoeSB3ZSBkb24ndCBjYWxsIGBmb2N1c1NlbGVjdGVkSXRlbWAgaW5zaWRlIGBwb3NpdGlvbmAuXG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoaXNQb3NpdGlvbmVkKSBmb2N1c1NlbGVjdGVkSXRlbSgpO1xuICAgIH0sIFtcbiAgICAgICAgaXNQb3NpdGlvbmVkLFxuICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbVxuICAgIF0pOyAvLyBwcmV2ZW50IHNlbGVjdGluZyBpdGVtcyBvbiBgcG9pbnRlcnVwYCBpbiBzb21lIGNhc2VzIGFmdGVyIG9wZW5pbmcgZnJvbSBgcG9pbnRlcmRvd25gXG4gICAgLy8gYW5kIGNsb3NlIG9uIGBwb2ludGVydXBgIG91dHNpZGUuXG4gICAgY29uc3QgeyBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjogdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmICB9ID0gY29udGV4dDtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICBsZXQgcG9pbnRlck1vdmVEZWx0YSA9IHtcbiAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyTW92ZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICB2YXIgX3RyaWdnZXJQb2ludGVyRG93blBvLCBfdHJpZ2dlclBvaW50ZXJEb3duUG8yLCBfdHJpZ2dlclBvaW50ZXJEb3duUG8zLCBfdHJpZ2dlclBvaW50ZXJEb3duUG80O1xuICAgICAgICAgICAgICAgIHBvaW50ZXJNb3ZlRGVsdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6IE1hdGguYWJzKE1hdGgucm91bmQoZXZlbnQucGFnZVgpIC0gKChfdHJpZ2dlclBvaW50ZXJEb3duUG8gPSAoX3RyaWdnZXJQb2ludGVyRG93blBvMiA9IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfdHJpZ2dlclBvaW50ZXJEb3duUG8yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJpZ2dlclBvaW50ZXJEb3duUG8yLngpICE9PSBudWxsICYmIF90cmlnZ2VyUG9pbnRlckRvd25QbyAhPT0gdm9pZCAwID8gX3RyaWdnZXJQb2ludGVyRG93blBvIDogMCkpLFxuICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLmFicyhNYXRoLnJvdW5kKGV2ZW50LnBhZ2VZKSAtICgoX3RyaWdnZXJQb2ludGVyRG93blBvMyA9IChfdHJpZ2dlclBvaW50ZXJEb3duUG80ID0gdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF90cmlnZ2VyUG9pbnRlckRvd25QbzQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmlnZ2VyUG9pbnRlckRvd25QbzQueSkgIT09IG51bGwgJiYgX3RyaWdnZXJQb2ludGVyRG93blBvMyAhPT0gdm9pZCAwID8gX3RyaWdnZXJQb2ludGVyRG93blBvMyA6IDApKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwb2ludGVyIGhhc24ndCBtb3ZlZCBieSBhIGNlcnRhaW4gdGhyZXNob2xkIHRoZW4gd2UgcHJldmVudCBzZWxlY3RpbmcgaXRlbSBvbiBgcG9pbnRlcnVwYC5cbiAgICAgICAgICAgICAgICBpZiAocG9pbnRlck1vdmVEZWx0YS54IDw9IDEwICYmIHBvaW50ZXJNb3ZlRGVsdGEueSA8PSAxMCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBlbHNlIC8vIG90aGVyd2lzZSwgaWYgdGhlIGV2ZW50IHdhcyBvdXRzaWRlIHRoZSBjb250ZW50LCBjbG9zZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVBvaW50ZXJNb3ZlKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyTW92ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlck1vdmUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIGhhbmRsZVBvaW50ZXJVcCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50LFxuICAgICAgICBvbk9wZW5DaGFuZ2UsXG4gICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZlxuICAgIF0pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY2xvc2UgPSAoKT0+b25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgICAgICA7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgY2xvc2UpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2UpO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgY2xvc2UpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG9uT3BlbkNoYW5nZVxuICAgIF0pO1xuICAgIGNvbnN0IFtzZWFyY2hSZWYsIGhhbmRsZVR5cGVhaGVhZFNlYXJjaF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoKChzZWFyY2gpPT57XG4gICAgICAgIGNvbnN0IGVuYWJsZWRJdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+IWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBlbmFibGVkSXRlbXMuZmluZCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtKGVuYWJsZWRJdGVtcywgc2VhcmNoLCBjdXJyZW50SXRlbSk7XG4gICAgICAgIGlmIChuZXh0SXRlbSkgLyoqXG4gICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgKiB0byBhdm9pZCBwb3RlbnRpYWwgYnVncy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzIwMzMyXG4gICAgICAgKi8gc2V0VGltZW91dCgoKT0+bmV4dEl0ZW0ucmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIGNvbnN0IGl0ZW1SZWZDYWxsYmFjayA9ICQwMWI5YyR1c2VDYWxsYmFjaygobm9kZSwgdmFsdWUsIGRpc2FibGVkKT0+e1xuICAgICAgICBjb25zdCBpc0ZpcnN0VmFsaWRJdGVtID0gIWZpcnN0VmFsaWRJdGVtRm91bmRSZWYuY3VycmVudCAmJiAhZGlzYWJsZWQ7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWRJdGVtID0gY29udGV4dC52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQudmFsdWUgPT09IHZhbHVlO1xuICAgICAgICBpZiAoaXNTZWxlY3RlZEl0ZW0gfHwgaXNGaXJzdFZhbGlkSXRlbSkge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRJdGVtKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzRmlyc3RWYWxpZEl0ZW0pIGZpcnN0VmFsaWRJdGVtRm91bmRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRleHQudmFsdWVcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTGVhdmUgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PmNvbnRlbnQgPT09IG51bGwgfHwgY29udGVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGVudC5mb2N1cygpXG4gICAgLCBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTtcbiAgICBjb25zdCBpdGVtVGV4dFJlZkNhbGxiYWNrID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlLCB2YWx1ZSwgZGlzYWJsZWQpPT57XG4gICAgICAgIGNvbnN0IGlzRmlyc3RWYWxpZEl0ZW0gPSAhZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ICYmICFkaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZEl0ZW0gPSBjb250ZXh0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkSXRlbSB8fCBpc0ZpcnN0VmFsaWRJdGVtKSBzZXRTZWxlY3RlZEl0ZW1UZXh0KG5vZGUpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC52YWx1ZVxuICAgIF0pO1xuICAgIGNvbnN0IFNlbGVjdFBvc2l0aW9uID0gcG9zaXRpb24gPT09ICdwb3BwZXInID8gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uIDogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb247IC8vIFNpbGVudGx5IGlnbm9yZSBwcm9wcyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGBTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uYFxuICAgIGNvbnN0IHBvcHBlckNvbnRlbnRQcm9wcyA9IFNlbGVjdFBvc2l0aW9uID09PSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24gPyB7XG4gICAgICAgIHNpZGU6IHNpZGUsXG4gICAgICAgIHNpZGVPZmZzZXQ6IHNpZGVPZmZzZXQsXG4gICAgICAgIGFsaWduOiBhbGlnbixcbiAgICAgICAgYWxpZ25PZmZzZXQ6IGFsaWduT2Zmc2V0LFxuICAgICAgICBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyxcbiAgICAgICAgY29sbGlzaW9uQm91bmRhcnk6IGNvbGxpc2lvbkJvdW5kYXJ5LFxuICAgICAgICBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nLFxuICAgICAgICBzdGlja3k6IHN0aWNreSxcbiAgICAgICAgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCxcbiAgICAgICAgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnNcbiAgICB9IDoge307XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgdmlld3BvcnQ6IHZpZXdwb3J0LFxuICAgICAgICBvblZpZXdwb3J0Q2hhbmdlOiBzZXRWaWV3cG9ydCxcbiAgICAgICAgaXRlbVJlZkNhbGxiYWNrOiBpdGVtUmVmQ2FsbGJhY2ssXG4gICAgICAgIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtLFxuICAgICAgICBvbkl0ZW1MZWF2ZTogaGFuZGxlSXRlbUxlYXZlLFxuICAgICAgICBpdGVtVGV4dFJlZkNhbGxiYWNrOiBpdGVtVGV4dFJlZkNhbGxiYWNrLFxuICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbTogZm9jdXNTZWxlY3RlZEl0ZW0sXG4gICAgICAgIHNlbGVjdGVkSXRlbVRleHQ6IHNlbGVjdGVkSXRlbVRleHQsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBpc1Bvc2l0aW9uZWQsXG4gICAgICAgIHNlYXJjaFJlZjogc2VhcmNoUmVmXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkMDFiOWMkU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGb2N1c1Njb3BlLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUgLy8gd2UgbWFrZSBzdXJlIHdlJ3JlIG5vdCB0cmFwcGluZyBvbmNlIGl0J3MgYmVlbiBjbG9zZWRcbiAgICAgICAgLFxuICAgICAgICB0cmFwcGVkOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgb3BlbiBhdXRvZm9jdXMgYmVjYXVzZSB3ZSBtYW51YWxseSBmb2N1cyB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMob25DbG9zZUF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZXh0JHRyaWdnZXI7XG4gICAgICAgICAgICAoX2NvbnRleHQkdHJpZ2dlciA9IGNvbnRleHQudHJpZ2dlcikgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlciA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXIuZm9jdXMoe1xuICAgICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSlcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyREaXNtaXNzYWJsZUxheWVyLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgZm9jdXNvdXQgZXZlbnQgbWF5IHN0aWxsIGhhcHBlbi5cbiAgICAgICAgLFxuICAgICAgICBvbkZvY3VzT3V0c2lkZTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsXG4gICAgICAgIG9uRGlzbWlzczogKCk9PmNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoU2VsZWN0UG9zaXRpb24sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiLFxuICAgICAgICBpZDogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBjb250ZXh0Lm9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJyxcbiAgICAgICAgZGlyOiBjb250ZXh0LmRpcixcbiAgICAgICAgb25Db250ZXh0TWVudTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH0sIGNvbnRlbnRQcm9wcywgcG9wcGVyQ29udGVudFByb3BzLCB7XG4gICAgICAgIG9uUGxhY2VkOiAoKT0+c2V0SXNQb3NpdGlvbmVkKHRydWUpXG4gICAgICAgICxcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBmbGV4IGxheW91dCBzbyB3ZSBjYW4gcGxhY2UgdGhlIHNjcm9sbCBidXR0b25zIHByb3Blcmx5XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBvdXRsaW5lIGJ5IGRlZmF1bHQgYXMgdGhlIGNvbnRlbnQgTUFZIGdldCBmb2N1c2VkXG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25LZXlEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgY29uc3QgaXNNb2RpZmllcktleSA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50Lm1ldGFLZXk7IC8vIHNlbGVjdCBzaG91bGQgbm90IGJlIG5hdmlnYXRlZCB1c2luZyB0YWIga2V5IHNvIHdlIHByZXZlbnQgaXRcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFpc01vZGlmaWVyS2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIGhhbmRsZVR5cGVhaGVhZFNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICAgICAgICAgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAgICAgJ0hvbWUnLFxuICAgICAgICAgICAgICAgICdFbmQnXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+IWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IGl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChbXG4gICAgICAgICAgICAgICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgICAgICAgICAgICAgJ0VuZCdcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlTm9kZXMuc2xpY2UoKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgICAgICAgICAnQXJyb3dEb3duJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY2FuZGlkYXRlTm9kZXMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlTm9kZXMuc2xpY2UoY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAgICovIHNldFRpbWVvdXQoKCk9PmZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfSU1QTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fQUxJR05FRF9QT1NJVElPTl9OQU1FID0gJ1NlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24gPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIG9uUGxhY2VkOiBvblBsYWNlZCAsIC4uLnBvcHBlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NvbnRlbnRXcmFwcGVyLCBzZXRDb250ZW50V3JhcHBlcl0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYgPSAkMDFiOWMkdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzaG91bGRSZXBvc2l0aW9uUmVmID0gJDAxYjljJHVzZVJlZih0cnVlKTtcbiAgICBjb25zdCB7IHZpZXdwb3J0OiB2aWV3cG9ydCAsIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtICwgc2VsZWN0ZWRJdGVtVGV4dDogc2VsZWN0ZWRJdGVtVGV4dCAsIGZvY3VzU2VsZWN0ZWRJdGVtOiBmb2N1c1NlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgIGNvbnN0IHBvc2l0aW9uID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIgJiYgY29udGV4dC52YWx1ZU5vZGUgJiYgY29udGVudFdyYXBwZXIgJiYgY29udGVudCAmJiB2aWV3cG9ydCAmJiBzZWxlY3RlZEl0ZW0gJiYgc2VsZWN0ZWRJdGVtVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlclJlY3QgPSBjb250ZXh0LnRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyAgSG9yaXpvbnRhbCBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRSZWN0ID0gY29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlTm9kZVJlY3QgPSBjb250ZXh0LnZhbHVlTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1UZXh0UmVjdCA9IHNlbGVjdGVkSXRlbVRleHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZiAoY29udGV4dC5kaXIgIT09ICdydGwnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVRleHRPZmZzZXQgPSBpdGVtVGV4dFJlY3QubGVmdCAtIGNvbnRlbnRSZWN0LmxlZnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IHZhbHVlTm9kZVJlY3QubGVmdCAtIGl0ZW1UZXh0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnREZWx0YSA9IHRyaWdnZXJSZWN0LmxlZnQgLSBsZWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbkNvbnRlbnRXaWR0aCA9IHRyaWdnZXJSZWN0LndpZHRoICsgbGVmdERlbHRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KG1pbkNvbnRlbnRXaWR0aCwgY29udGVudFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0RWRnZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRMZWZ0ID0gJDAxYjljJGNsYW1wKGxlZnQsIFtcbiAgICAgICAgICAgICAgICAgICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOLFxuICAgICAgICAgICAgICAgICAgICByaWdodEVkZ2UgLSBjb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5taW5XaWR0aCA9IG1pbkNvbnRlbnRXaWR0aCArICdweCc7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubGVmdCA9IGNsYW1wZWRMZWZ0ICsgJ3B4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVRleHRPZmZzZXQgPSBjb250ZW50UmVjdC5yaWdodCAtIGl0ZW1UZXh0UmVjdC5yaWdodDtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdmFsdWVOb2RlUmVjdC5yaWdodCAtIGl0ZW1UZXh0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0RGVsdGEgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHRyaWdnZXJSZWN0LnJpZ2h0IC0gcmlnaHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluQ29udGVudFdpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGggKyByaWdodERlbHRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KG1pbkNvbnRlbnRXaWR0aCwgY29udGVudFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRFZGdlID0gd2luZG93LmlubmVyV2lkdGggLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU47XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFJpZ2h0ID0gJDAxYjljJGNsYW1wKHJpZ2h0LCBbXG4gICAgICAgICAgICAgICAgICAgICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTixcbiAgICAgICAgICAgICAgICAgICAgbGVmdEVkZ2UgLSBjb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5taW5XaWR0aCA9IG1pbkNvbnRlbnRXaWR0aCArICdweCc7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUucmlnaHQgPSBjbGFtcGVkUmlnaHQgKyAncHgnO1xuICAgICAgICAgICAgfSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gVmVydGljYWwgcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCk7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gKiAyO1xuICAgICAgICAgICAgY29uc3QgaXRlbXNIZWlnaHQgPSB2aWV3cG9ydC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY29udGVudCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50Qm9yZGVyVG9wV2lkdGggPSBwYXJzZUludChjb250ZW50U3R5bGVzLmJvcmRlclRvcFdpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UGFkZGluZ1RvcCA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMucGFkZGluZ1RvcCwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29udGVudEJvcmRlckJvdHRvbVdpZHRoID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5ib3JkZXJCb3R0b21XaWR0aCwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29udGVudFBhZGRpbmdCb3R0b20gPSBwYXJzZUludChjb250ZW50U3R5bGVzLnBhZGRpbmdCb3R0b20sIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxDb250ZW50SGVpZ2h0ID0gY29udGVudEJvcmRlclRvcFdpZHRoICsgY29udGVudFBhZGRpbmdUb3AgKyBpdGVtc0hlaWdodCArIGNvbnRlbnRQYWRkaW5nQm90dG9tICsgY29udGVudEJvcmRlckJvdHRvbVdpZHRoOyAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IG1pbkNvbnRlbnRIZWlnaHQgPSBNYXRoLm1pbihzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0ICogNSwgZnVsbENvbnRlbnRIZWlnaHQpO1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWV3cG9ydCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFBhZGRpbmdUb3AgPSBwYXJzZUludCh2aWV3cG9ydFN0eWxlcy5wYWRkaW5nVG9wLCAxMCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFBhZGRpbmdCb3R0b20gPSBwYXJzZUludCh2aWV3cG9ydFN0eWxlcy5wYWRkaW5nQm90dG9tLCAxMCk7XG4gICAgICAgICAgICBjb25zdCB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlID0gdHJpZ2dlclJlY3QudG9wICsgdHJpZ2dlclJlY3QuaGVpZ2h0IC8gMiAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTjtcbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UgPSBhdmFpbGFibGVIZWlnaHQgLSB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtSGFsZkhlaWdodCA9IHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3QgaXRlbU9mZnNldE1pZGRsZSA9IHNlbGVjdGVkSXRlbS5vZmZzZXRUb3AgKyBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgY29udGVudFRvcFRvSXRlbU1pZGRsZSA9IGNvbnRlbnRCb3JkZXJUb3BXaWR0aCArIGNvbnRlbnRQYWRkaW5nVG9wICsgaXRlbU9mZnNldE1pZGRsZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1NaWRkbGVUb0NvbnRlbnRCb3R0b20gPSBmdWxsQ29udGVudEhlaWdodCAtIGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGU7XG4gICAgICAgICAgICBjb25zdCB3aWxsQWxpZ25XaXRob3V0VG9wT3ZlcmZsb3cgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlIDw9IHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGU7XG4gICAgICAgICAgICBpZiAod2lsbEFsaWduV2l0aG91dFRvcE92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0SXRlbSA9IHNlbGVjdGVkSXRlbSA9PT0gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0ucmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuYm90dG9tID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydE9mZnNldEJvdHRvbSA9IGNvbnRlbnQuY2xpZW50SGVpZ2h0IC0gdmlld3BvcnQub2Zmc2V0VG9wIC0gdmlld3BvcnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRUcmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlID0gTWF0aC5tYXgodHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSwgc2VsZWN0ZWRJdGVtSGFsZkhlaWdodCArIChpc0xhc3RJdGVtID8gdmlld3BvcnRQYWRkaW5nQm90dG9tIDogMCkgKyB2aWV3cG9ydE9mZnNldEJvdHRvbSArIGNvbnRlbnRCb3JkZXJCb3R0b21XaWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGVudFRvcFRvSXRlbU1pZGRsZSArIGNsYW1wZWRUcmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gc2VsZWN0ZWRJdGVtID09PSBpdGVtc1swXS5yZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRUb3BFZGdlVG9UcmlnZ2VyTWlkZGxlID0gTWF0aC5tYXgodG9wRWRnZVRvVHJpZ2dlck1pZGRsZSwgY29udGVudEJvcmRlclRvcFdpZHRoICsgdmlld3BvcnQub2Zmc2V0VG9wICsgKGlzRmlyc3RJdGVtID8gdmlld3BvcnRQYWRkaW5nVG9wIDogMCkgKyBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjbGFtcGVkVG9wRWRnZVRvVHJpZ2dlck1pZGRsZSArIGl0ZW1NaWRkbGVUb0NvbnRlbnRCb3R0b207XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICB2aWV3cG9ydC5zY3JvbGxUb3AgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlIC0gdG9wRWRnZVRvVHJpZ2dlck1pZGRsZSArIHZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1hcmdpbiA9IGAkeyRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTn1weCAwYDtcbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbkhlaWdodCA9IG1pbkNvbnRlbnRIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWF4SGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0ICsgJ3B4JzsgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIG9uUGxhY2VkID09PSBudWxsIHx8IG9uUGxhY2VkID09PSB2b2lkIDAgfHwgb25QbGFjZWQoKTsgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gYWRqdXN0bWVudCB0byB0cmlnZ2VyIFwiZXhwYW5kIG9uIHNjcm9sbFwiXG4gICAgICAgICAgICAvLyBzbyB3ZSBleHBsaWNpdGx5IHR1cm4gaXQgb24gb25seSBhZnRlciB0aGV5J3ZlIHJlZ2lzdGVyZWQuXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtcyxcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBjb250ZXh0LnZhbHVlTm9kZSxcbiAgICAgICAgY29udGVudFdyYXBwZXIsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIHZpZXdwb3J0LFxuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIHNlbGVjdGVkSXRlbVRleHQsXG4gICAgICAgIGNvbnRleHQuZGlyLFxuICAgICAgICBvblBsYWNlZFxuICAgIF0pO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PnBvc2l0aW9uKClcbiAgICAsIFtcbiAgICAgICAgcG9zaXRpb25cbiAgICBdKTsgLy8gY29weSB6LWluZGV4IGZyb20gY29udGVudCB0byB3cmFwcGVyXG4gICAgY29uc3QgW2NvbnRlbnRaSW5kZXgsIHNldENvbnRlbnRaSW5kZXhdID0gJDAxYjljJHVzZVN0YXRlKCk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkgc2V0Q29udGVudFpJbmRleCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KS56SW5kZXgpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBXaGVuIHRoZSB2aWV3cG9ydCBiZWNvbWVzIHNjcm9sbGFibGUgYXQgdGhlIHRvcCwgdGhlIHNjcm9sbCB1cCBidXR0b24gd2lsbCBtb3VudC5cbiAgICAvLyBCZWNhdXNlIGl0IGlzIHBhcnQgb2YgdGhlIG5vcm1hbCBmbG93LCBpdCB3aWxsIHB1c2ggZG93biB0aGUgdmlld3BvcnQsIHRodXMgdGhyb3dpbmcgb3VyXG4gICAgLy8gdHJpZ2dlciA9PiBzZWxlY3RlZEl0ZW0gYWxpZ25tZW50IG9mZiBieSB0aGUgYW1vdW50IHRoZSB2aWV3cG9ydCB3YXMgcHVzaGVkIGRvd24uXG4gICAgLy8gV2Ugd2FpdCBmb3IgdGhpcyB0byBoYXBwZW4gYW5kIHRoZW4gcmUtcnVuIHRoZSBwb3NpdGluaW5nIGxvZ2ljIG9uZSBtb3JlIHRpbWUgdG8gYWNjb3VudCBmb3IgaXQuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlKT0+e1xuICAgICAgICBpZiAobm9kZSAmJiBzaG91bGRSZXBvc2l0aW9uUmVmLmN1cnJlbnQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uKCk7XG4gICAgICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbSA9PT0gbnVsbCB8fCBmb2N1c1NlbGVjdGVkSXRlbSA9PT0gdm9pZCAwIHx8IGZvY3VzU2VsZWN0ZWRJdGVtKCk7XG4gICAgICAgICAgICBzaG91bGRSZXBvc2l0aW9uUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIGNvbnRlbnRXcmFwcGVyOiBjb250ZW50V3JhcHBlcixcbiAgICAgICAgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWY6IHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmLFxuICAgICAgICBvblNjcm9sbEJ1dHRvbkNoYW5nZTogaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHJlZjogc2V0Q29udGVudFdyYXBwZXIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgekluZGV4OiBjb250ZW50WkluZGV4XG4gICAgICAgIH1cbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCwgaXQgaW5jbHVkZXMgYm9yZGVycy4gSWYgd2Ugd2VyZSB0byBzZXRcbiAgICAgICAgICAgIC8vIHRoZSBoZWlnaHQgd2l0aG91dCBoYXZpbmcgYGJveFNpemluZzogJ2JvcmRlci1ib3gnYCBpdCB3b3VsZCBiZSB0b28gYmlnLlxuICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgY29udGVudCBkb2Vzbid0IGdldCB0YWxsZXIgdGhhbiB0aGUgd3JhcHBlclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAuLi5wb3BwZXJQcm9wcy5zdHlsZVxuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9BTElHTkVEX1BPU0lUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0UG9wcGVyUG9zaXRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUFBFUl9QT1NJVElPTl9OQU1FID0gJ1NlbGVjdFBvcHBlclBvc2l0aW9uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgYWxpZ246IGFsaWduID0gJ3N0YXJ0JyAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gLCAuLi5wb3BwZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJENvbnRlbnQsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIHBvcHBlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBhbGlnbjogYWxpZ24sXG4gICAgICAgIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBFbnN1cmUgYm9yZGVyLWJveCBmb3IgZmxvYXRpbmctdWkgY2FsY3VsYXRpb25zXG4gICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgIC4uLnBvcHBlclByb3BzLnN0eWxlLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCknXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24sIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUFBFUl9QT1NJVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFZpZXdwb3J0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Vmlld3BvcnRQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCB7fSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSA9ICdTZWxlY3RWaWV3cG9ydCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4udmlld3BvcnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50Q29udGV4dC5vblZpZXdwb3J0Q2hhbmdlKTtcbiAgICBjb25zdCBwcmV2U2Nyb2xsVG9wUmVmID0gJDAxYjljJHVzZVJlZigwKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICBfX2h0bWw6IGBbZGF0YS1yYWRpeC1zZWxlY3Qtdmlld3BvcnRde3Njcm9sbGJhci13aWR0aDpub25lOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO31bZGF0YS1yYWRpeC1zZWxlY3Qtdmlld3BvcnRdOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9YFxuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1yYWRpeC1zZWxlY3Qtdmlld3BvcnRcIjogXCJcIixcbiAgICAgICAgcm9sZTogXCJwcmVzZW50YXRpb25cIlxuICAgIH0sIHZpZXdwb3J0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyB3ZSB1c2UgcG9zaXRpb246ICdyZWxhdGl2ZScgaGVyZSBvbiB0aGUgYHZpZXdwb3J0YCBzbyB0aGF0IHdoZW4gd2UgY2FsbFxuICAgICAgICAgICAgLy8gYHNlbGVjdGVkSXRlbS5vZmZzZXRUb3BgIGluIGNhbGN1bGF0aW9ucywgdGhlIG9mZnNldCBpcyByZWxhdGl2ZSB0byB0aGUgdmlld3BvcnRcbiAgICAgICAgICAgIC8vIChpbmRlcGVuZGVudCBvZiB0aGUgc2Nyb2xsVXBCdXR0b24pLlxuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIC4uLnZpZXdwb3J0UHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25TY3JvbGw6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh2aWV3cG9ydFByb3BzLm9uU2Nyb2xsLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICBjb25zdCB7IGNvbnRlbnRXcmFwcGVyOiBjb250ZW50V3JhcHBlciAsIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOiBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiAgfSA9IHZpZXdwb3J0Q29udGV4dDtcbiAgICAgICAgICAgIGlmIChzaG91bGRFeHBhbmRPblNjcm9sbFJlZiAhPT0gbnVsbCAmJiBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiAhPT0gdm9pZCAwICYmIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmLmN1cnJlbnQgJiYgY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxlZEJ5ID0gTWF0aC5hYnMocHJldlNjcm9sbFRvcFJlZi5jdXJyZW50IC0gdmlld3BvcnQuc2Nyb2xsVG9wKTtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsZWRCeSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOICogMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3NzTWluSGVpZ2h0ID0gcGFyc2VGbG9hdChjb250ZW50V3JhcHBlci5zdHlsZS5taW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbnRlbnRXcmFwcGVyLnN0eWxlLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZIZWlnaHQgPSBNYXRoLm1heChjc3NNaW5IZWlnaHQsIGNzc0hlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2SGVpZ2h0IDwgYXZhaWxhYmxlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0SGVpZ2h0ID0gcHJldkhlaWdodCArIHNjcm9sbGVkQnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkTmV4dEhlaWdodCA9IE1hdGgubWluKGF2YWlsYWJsZUhlaWdodCwgbmV4dEhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmID0gbmV4dEhlaWdodCAtIGNsYW1wZWROZXh0SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gY2xhbXBlZE5leHRIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRXcmFwcGVyLnN0eWxlLmJvdHRvbSA9PT0gJzBweCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydC5zY3JvbGxUb3AgPSBoZWlnaHREaWZmID4gMCA/IGhlaWdodERpZmYgOiAwOyAvLyBlbnN1cmUgdGhlIGNvbnRlbnQgc3RheXMgcGlubmVkIHRvIHRoZSBib3R0b21cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdmbGV4LWVuZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSB2aWV3cG9ydC5zY3JvbGxUb3A7XG4gICAgICAgIH0pXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RHcm91cFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkR1JPVVBfTkFNRSA9ICdTZWxlY3RHcm91cCc7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEdyb3VwQ29udGV4dFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0R3JvdXBDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRHUk9VUF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5ncm91cFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBncm91cElkID0gJDAxYjljJHVzZUlkKCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEdyb3VwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICBpZDogZ3JvdXBJZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwiZ3JvdXBcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogZ3JvdXBJZFxuICAgIH0sIGdyb3VwUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEdST1VQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0TGFiZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUUgPSAnU2VsZWN0TGFiZWwnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjggPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmxhYmVsUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGdyb3VwQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RHcm91cENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogZ3JvdXBDb250ZXh0LmlkXG4gICAgfSwgbGFiZWxQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmNjczMzhkMjliZDk3MmY4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRMQUJFTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSA9ICdTZWxlY3RJdGVtJztcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUNvbnRleHRQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIHZhbHVlOiB2YWx1ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgdGV4dFZhbHVlOiB0ZXh0VmFsdWVQcm9wICwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IGNvbnRleHQudmFsdWUgPT09IHZhbHVlO1xuICAgIGNvbnN0IFt0ZXh0VmFsdWUsIHNldFRleHRWYWx1ZV0gPSAkMDFiOWMkdXNlU3RhdGUodGV4dFZhbHVlUHJvcCAhPT0gbnVsbCAmJiB0ZXh0VmFsdWVQcm9wICE9PSB2b2lkIDAgPyB0ZXh0VmFsdWVQcm9wIDogJycpO1xuICAgIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PntcbiAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRpdGVtUjtcbiAgICAgICAgcmV0dXJuIChfY29udGVudENvbnRleHQkaXRlbVIgPSBjb250ZW50Q29udGV4dC5pdGVtUmVmQ2FsbGJhY2spID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRpdGVtUiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRDb250ZXh0JGl0ZW1SLmNhbGwoY29udGVudENvbnRleHQsIG5vZGUsIHZhbHVlLCBkaXNhYmxlZCk7XG4gICAgfSk7XG4gICAgY29uc3QgdGV4dElkID0gJDAxYjljJHVzZUlkKCk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKCk9PntcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgY29udGV4dC5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB0ZXh0SWQ6IHRleHRJZCxcbiAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgb25JdGVtVGV4dENoYW5nZTogJDAxYjljJHVzZUNhbGxiYWNrKChub2RlKT0+e1xuICAgICAgICAgICAgc2V0VGV4dFZhbHVlKChwcmV2VGV4dFZhbHVlKT0+e1xuICAgICAgICAgICAgICAgIHZhciBfbm9kZSR0ZXh0Q29udGVudDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldlRleHRWYWx1ZSB8fCAoKF9ub2RlJHRleHRDb250ZW50ID0gbm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLnRleHRDb250ZW50KSAhPT0gbnVsbCAmJiBfbm9kZSR0ZXh0Q29udGVudCAhPT0gdm9pZCAwID8gX25vZGUkdGV4dENvbnRlbnQgOiAnJykudHJpbSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIFtdKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uSXRlbVNsb3QsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB0ZXh0VmFsdWU6IHRleHRWYWx1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IHRleHRJZCxcbiAgICAgICAgXCJkYXRhLWhpZ2hsaWdodGVkXCI6IGlzRm9jdXNlZCA/ICcnIDogdW5kZWZpbmVkIC8vIGBpc0ZvY3VzZWRgIGNhdmVhdCBmaXhlcyBzdHV0dGVyaW5nIGluIFZvaWNlT3ZlclxuICAgICAgICAsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBpc1NlbGVjdGVkICYmIGlzRm9jdXNlZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGlzU2VsZWN0ZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJyxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGRpc2FibGVkID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IC0xXG4gICAgfSwgaXRlbVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkZvY3VzOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uRm9jdXMsICgpPT5zZXRJc0ZvY3VzZWQodHJ1ZSlcbiAgICAgICAgKSxcbiAgICAgICAgb25CbHVyOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uQmx1ciwgKCk9PnNldElzRm9jdXNlZChmYWxzZSlcbiAgICAgICAgKSxcbiAgICAgICAgb25Qb2ludGVyVXA6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Qb2ludGVyVXAsIGhhbmRsZVNlbGVjdCksXG4gICAgICAgIG9uUG9pbnRlck1vdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Qb2ludGVyTW92ZSwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRvbkl0ZTtcbiAgICAgICAgICAgICAgICAoX2NvbnRlbnRDb250ZXh0JG9uSXRlID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZSA9PT0gdm9pZCAwIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZS5jYWxsKGNvbnRlbnRDb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSAvLyBldmVuIHRob3VnaCBzYWZhcmkgZG9lc24ndCBzdXBwb3J0IHRoaXMgb3B0aW9uLCBpdCdzIGFjY2VwdGFibGVcbiAgICAgICAgICAgIC8vIGFzIGl0IG9ubHkgbWVhbnMgaXQgbWlnaHQgc2Nyb2xsIGEgZmV3IHBpeGVscyB3aGVuIHVzaW5nIHRoZSBwb2ludGVyLlxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJMZWF2ZSwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlMjtcbiAgICAgICAgICAgICAgICAoX2NvbnRlbnRDb250ZXh0JG9uSXRlMiA9IGNvbnRlbnRDb250ZXh0Lm9uSXRlbUxlYXZlKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkb25JdGUyID09PSB2b2lkIDAgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMi5jYWxsKGNvbnRlbnRDb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkc2VhcmM7XG4gICAgICAgICAgICBjb25zdCBpc1R5cGluZ0FoZWFkID0gKChfY29udGVudENvbnRleHQkc2VhcmMgPSBjb250ZW50Q29udGV4dC5zZWFyY2hSZWYpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRzZWFyYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRDb250ZXh0JHNlYXJjLmN1cnJlbnQpICE9PSAnJztcbiAgICAgICAgICAgIGlmIChpc1R5cGluZ0FoZWFkICYmIGV2ZW50LmtleSA9PT0gJyAnKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVElPTl9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkpIGhhbmRsZVNlbGVjdCgpOyAvLyBwcmV2ZW50IHBhZ2Ugc2Nyb2xsIGlmIHVzaW5nIHRoZSBzcGFjZSBrZXkgdG8gc2VsZWN0IGFuIGl0ZW1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSlcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbVRleHRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FID0gJ1NlbGVjdEl0ZW1UZXh0JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAvLyBXZSBpZ25vcmUgYGNsYXNzTmFtZWAgYW5kIGBzdHlsZWAgYXMgdGhpcyBwYXJ0IHNob3VsZG4ndCBiZSBzdHlsZWQuXG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2xhc3NOYW1lOiBjbGFzc05hbWUgLCBzdHlsZTogc3R5bGUgLCAuLi5pdGVtVGV4dFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGl0ZW1Db250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgbmF0aXZlT3B0aW9uc0NvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0TmF0aXZlT3B0aW9uc0NvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbaXRlbVRleHROb2RlLCBzZXRJdGVtVGV4dE5vZGVdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldEl0ZW1UZXh0Tm9kZShub2RlKVxuICAgICwgaXRlbUNvbnRleHQub25JdGVtVGV4dENoYW5nZSwgKG5vZGUpPT57XG4gICAgICAgIHZhciBfY29udGVudENvbnRleHQkaXRlbVQ7XG4gICAgICAgIHJldHVybiAoX2NvbnRlbnRDb250ZXh0JGl0ZW1UID0gY29udGVudENvbnRleHQuaXRlbVRleHRSZWZDYWxsYmFjaykgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JGl0ZW1UID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkaXRlbVQuY2FsbChjb250ZW50Q29udGV4dCwgbm9kZSwgaXRlbUNvbnRleHQudmFsdWUsIGl0ZW1Db250ZXh0LmRpc2FibGVkKTtcbiAgICB9KTtcbiAgICBjb25zdCB0ZXh0Q29udGVudCA9IGl0ZW1UZXh0Tm9kZSA9PT0gbnVsbCB8fCBpdGVtVGV4dE5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1UZXh0Tm9kZS50ZXh0Q29udGVudDtcbiAgICBjb25zdCBuYXRpdmVPcHRpb24gPSAkMDFiOWMkdXNlTWVtbygoKT0+LyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICBrZXk6IGl0ZW1Db250ZXh0LnZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1Db250ZXh0LnZhbHVlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGl0ZW1Db250ZXh0LmRpc2FibGVkXG4gICAgICAgIH0sIHRleHRDb250ZW50KVxuICAgICwgW1xuICAgICAgICBpdGVtQ29udGV4dC5kaXNhYmxlZCxcbiAgICAgICAgaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgIHRleHRDb250ZW50XG4gICAgXSk7XG4gICAgY29uc3QgeyBvbk5hdGl2ZU9wdGlvbkFkZDogb25OYXRpdmVPcHRpb25BZGQgLCBvbk5hdGl2ZU9wdGlvblJlbW92ZTogb25OYXRpdmVPcHRpb25SZW1vdmUgIH0gPSBuYXRpdmVPcHRpb25zQ29udGV4dDtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkKG5hdGl2ZU9wdGlvbik7XG4gICAgICAgIHJldHVybiAoKT0+b25OYXRpdmVPcHRpb25SZW1vdmUobmF0aXZlT3B0aW9uKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbk5hdGl2ZU9wdGlvbkFkZCxcbiAgICAgICAgb25OYXRpdmVPcHRpb25SZW1vdmUsXG4gICAgICAgIG5hdGl2ZU9wdGlvblxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBpdGVtQ29udGV4dC50ZXh0SWRcbiAgICB9LCBpdGVtVGV4dFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzXG4gICAgfSkpLCBpdGVtQ29udGV4dC5pc1NlbGVjdGVkICYmIGNvbnRleHQudmFsdWVOb2RlICYmICFjb250ZXh0LnZhbHVlTm9kZUhhc0NoaWxkcmVuID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlUG9ydGFsKGl0ZW1UZXh0UHJvcHMuY2hpbGRyZW4sIGNvbnRleHQudmFsdWVOb2RlKSA6IG51bGwpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1JbmRpY2F0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fSU5ESUNBVE9SX05BTUUgPSAnU2VsZWN0SXRlbUluZGljYXRvcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4uaXRlbUluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBpdGVtQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RJdGVtQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9JTkRJQ0FUT1JfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIGl0ZW1Db250ZXh0LmlzU2VsZWN0ZWQgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgaXRlbUluZGljYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0lORElDQVRPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFNjcm9sbFVwQnV0dG9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUgPSAnU2VsZWN0U2Nyb2xsVXBCdXR0b24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDcgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NhblNjcm9sbFVwMSwgc2V0Q2FuU2Nyb2xsVXBdID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgdmlld3BvcnRDb250ZXh0Lm9uU2Nyb2xsQnV0dG9uQ2hhbmdlKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50Q29udGV4dC52aWV3cG9ydCAmJiBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gY29udGVudENvbnRleHQudmlld3BvcnQ7XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuU2Nyb2xsVXAgPSB2aWV3cG9ydC5zY3JvbGxUb3AgPiAwO1xuICAgICAgICAgICAgICAgIHNldENhblNjcm9sbFVwKGNhblNjcm9sbFVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbCgpO1xuICAgICAgICAgICAgdmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+dmlld3BvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50Q29udGV4dC52aWV3cG9ydCxcbiAgICAgICAgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkXG4gICAgXSk7XG4gICAgcmV0dXJuIGNhblNjcm9sbFVwMSA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFNjcm9sbEJ1dHRvbkltcGwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uQXV0b1Njcm9sbDogKCk9PntcbiAgICAgICAgICAgIGNvbnN0IHsgdmlld3BvcnQ6IHZpZXdwb3J0ICwgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0gIH0gPSBjb250ZW50Q29udGV4dDtcbiAgICAgICAgICAgIGlmICh2aWV3cG9ydCAmJiBzZWxlY3RlZEl0ZW0pIHZpZXdwb3J0LnNjcm9sbFRvcCA9IHZpZXdwb3J0LnNjcm9sbFRvcCAtIHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDcsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RTY3JvbGxEb3duQnV0dG9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSA9ICdTZWxlY3RTY3JvbGxEb3duQnV0dG9uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODkgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX0RPV05fQlVUVE9OX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtjYW5TY3JvbGxEb3duMSwgc2V0Q2FuU2Nyb2xsRG93bl0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCB2aWV3cG9ydENvbnRleHQub25TY3JvbGxCdXR0b25DaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0ICYmIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZW50Q29udGV4dC52aWV3cG9ydDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhTY3JvbGwgPSB2aWV3cG9ydC5zY3JvbGxIZWlnaHQgLSB2aWV3cG9ydC5jbGllbnRIZWlnaHQ7IC8vIHdlIHVzZSBNYXRoLmNlaWwgaGVyZSBiZWNhdXNlIGlmIHRoZSBVSSBpcyB6b29tZWQtaW5cbiAgICAgICAgICAgICAgICAvLyBgc2Nyb2xsVG9wYCBpcyBub3QgYWx3YXlzIHJlcG9ydGVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5TY3JvbGxEb3duID0gTWF0aC5jZWlsKHZpZXdwb3J0LnNjcm9sbFRvcCkgPCBtYXhTY3JvbGw7XG4gICAgICAgICAgICAgICAgc2V0Q2FuU2Nyb2xsRG93bihjYW5TY3JvbGxEb3duKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbCgpO1xuICAgICAgICAgICAgdmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+dmlld3BvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50Q29udGV4dC52aWV3cG9ydCxcbiAgICAgICAgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkXG4gICAgXSk7XG4gICAgcmV0dXJuIGNhblNjcm9sbERvd24xID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25BdXRvU2Nyb2xsOiAoKT0+e1xuICAgICAgICAgICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnQgLCBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsVG9wICsgc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRVxufSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgb25BdXRvU2Nyb2xsOiBvbkF1dG9TY3JvbGwgLCAuLi5zY3JvbGxJbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJ1NlbGVjdFNjcm9sbEJ1dHRvbicsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGF1dG9TY3JvbGxUaW1lclJlZiA9ICQwMWI5YyR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjbGVhckF1dG9TY3JvbGxUaW1lciA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+Y2xlYXJBdXRvU2Nyb2xsVGltZXIoKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBjbGVhckF1dG9TY3JvbGxUaW1lclxuICAgIF0pOyAvLyBXaGVuIHRoZSB2aWV3cG9ydCBiZWNvbWVzIHNjcm9sbGFibGUgb24gZWl0aGVyIHNpZGUsIHRoZSByZWxldmFudCBzY3JvbGwgYnV0dG9uIHdpbGwgbW91bnQuXG4gICAgLy8gQmVjYXVzZSBpdCBpcyBwYXJ0IG9mIHRoZSBub3JtYWwgZmxvdywgaXQgd2lsbCBwdXNoIGRvd24gKHRvcCBidXR0b24pIG9yIHNocmluayAoYm90dG9tIGJ1dHRvbilcbiAgICAvLyB0aGUgdmlld3BvcnQsIHBvdGVudGlhbGx5IGNhdXNpbmcgdGhlIGFjdGl2ZSBpdGVtIHRvIG5vdyBiZSBwYXJ0aWFsbHkgb3V0IG9mIHZpZXcuXG4gICAgLy8gV2UgcmUtcnVuIHRoZSBgc2Nyb2xsSW50b1ZpZXdgIGxvZ2ljIHRvIG1ha2Ugc3VyZSBpdCBzdGF5cyB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9hY3RpdmVJdGVtJHJlZiRjdXJyZTtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGdldEl0ZW1zKCkuZmluZCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgYWN0aXZlSXRlbSA9PT0gbnVsbCB8fCBhY3RpdmVJdGVtID09PSB2b2lkIDAgfHwgKF9hY3RpdmVJdGVtJHJlZiRjdXJyZSA9IGFjdGl2ZUl0ZW0ucmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHJlZiRjdXJyZSA9PT0gdm9pZCAwIHx8IF9hY3RpdmVJdGVtJHJlZiRjdXJyZS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICBibG9jazogJ25lYXJlc3QnXG4gICAgICAgIH0pO1xuICAgIH0sIFtcbiAgICAgICAgZ2V0SXRlbXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgc2Nyb2xsSW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBmbGV4U2hyaW5rOiAwLFxuICAgICAgICAgICAgLi4uc2Nyb2xsSW5kaWNhdG9yUHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHNjcm9sbEluZGljYXRvclByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPT09IG51bGwpIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldEludGVydmFsKG9uQXV0b1Njcm9sbCwgNTApO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHNjcm9sbEluZGljYXRvclByb3BzLm9uUG9pbnRlck1vdmUsICgpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlMztcbiAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUzID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTMgPT09IHZvaWQgMCB8fCBfY29udGVudENvbnRleHQkb25JdGUzLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID09PSBudWxsKSBhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRJbnRlcnZhbChvbkF1dG9TY3JvbGwsIDUwKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyTGVhdmUsICgpPT57XG4gICAgICAgICAgICBjbGVhckF1dG9TY3JvbGxUaW1lcigpO1xuICAgICAgICB9KVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0U2VwYXJhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRVBBUkFUT1JfTkFNRSA9ICdTZWxlY3RTZXBhcmF0b3InO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMyA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4uc2VwYXJhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBzZXBhcmF0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFUEFSQVRPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FID0gJ1NlbGVjdEFycm93JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5hcnJvd1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gY29udGV4dC5vcGVuICYmIGNvbnRlbnRDb250ZXh0LnBvc2l0aW9uID09PSAncG9wcGVyJyA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEFycm93LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclNjb3BlLCBhcnJvd1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEJ1YmJsZVNlbGVjdCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyB2YWx1ZTogdmFsdWUgLCAuLi5zZWxlY3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gJDAxYjljJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBwcmV2VmFsdWUgPSAkMDFiOWMkdXNlUHJldmlvdXModmFsdWUpOyAvLyBCdWJibGUgdmFsdWUgY2hhbmdlIHRvIHBhcmVudHMgKGUuZyBmb3JtIGNoYW5nZSBldmVudClcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHNlbGVjdCA9IHJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBzZWxlY3RQcm90byA9IHdpbmRvdy5IVE1MU2VsZWN0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGVjdFByb3RvLCAndmFsdWUnKTtcbiAgICAgICAgY29uc3Qgc2V0VmFsdWUgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgICAgaWYgKHByZXZWYWx1ZSAhPT0gdmFsdWUgJiYgc2V0VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRWYWx1ZS5jYWxsKHNlbGVjdCwgdmFsdWUpO1xuICAgICAgICAgICAgc2VsZWN0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcmV2VmFsdWUsXG4gICAgICAgIHZhbHVlXG4gICAgXSk7XG4gICAgLyoqXG4gICAqIFdlIHB1cnBvc2VmdWxseSB1c2UgYSBgc2VsZWN0YCBoZXJlIHRvIHN1cHBvcnQgZm9ybSBhdXRvZmlsbCBhcyBtdWNoXG4gICAqIGFzIHBvc3NpYmxlLlxuICAgKlxuICAgKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGFkZCB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgaGVyZSB0byBhbGxvdyB0aGUgdmFsdWVcbiAgICogdG8gYmUgc2V0IHByb2dyYW1hdGljYWxseSBhbmQgYnViYmxlIHRvIGFueSBwYXJlbnQgZm9ybSBgb25DaGFuZ2VgIGV2ZW50LlxuICAgKiBBZGRpbmcgdGhlIGB2YWx1ZWAgd2lsbCBjYXVzZSBSZWFjdCB0byBjb25zaWRlciB0aGUgcHJvZ3JhbWF0aWNcbiAgICogZGlzcGF0Y2ggYSBkdXBsaWNhdGUgYW5kIGl0IHdpbGwgZ2V0IHN3YWxsb3dlZC5cbiAgICpcbiAgICogV2UgdXNlIGBWaXN1YWxseUhpZGRlbmAgcmF0aGVyIHRoYW4gYGRpc3BsYXk6IFwibm9uZVwiYCBiZWNhdXNlIFNhZmFyaSBhdXRvZmlsbFxuICAgKiB3b24ndCB3b3JrIG90aGVyd2lzZS5cbiAgICovIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRWaXN1YWxseUhpZGRlbiwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcInNlbGVjdFwiLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNlbGVjdFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHZhbHVlXG4gICAgfSkpKTtcbn0pO1xuJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEJ1YmJsZVNlbGVjdC5kaXNwbGF5TmFtZSA9ICdCdWJibGVTZWxlY3QnO1xuZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaChvblNlYXJjaENoYW5nZSkge1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9ICQwMWI5YyR1c2VDYWxsYmFja1JlZihvblNlYXJjaENoYW5nZSk7XG4gICAgY29uc3Qgc2VhcmNoUmVmID0gJDAxYjljJHVzZVJlZignJyk7XG4gICAgY29uc3QgdGltZXJSZWYgPSAkMDFiOWMkdXNlUmVmKDApO1xuICAgIGNvbnN0IGhhbmRsZVR5cGVhaGVhZFNlYXJjaCA9ICQwMWI5YyR1c2VDYWxsYmFjaygoa2V5KT0+e1xuICAgICAgICBjb25zdCBzZWFyY2ggPSBzZWFyY2hSZWYuY3VycmVudCArIGtleTtcbiAgICAgICAgaGFuZGxlU2VhcmNoQ2hhbmdlKHNlYXJjaCk7XG4gICAgICAgIChmdW5jdGlvbiB1cGRhdGVTZWFyY2godmFsdWUpIHtcbiAgICAgICAgICAgIHNlYXJjaFJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpOyAvLyBSZXNldCBgc2VhcmNoUmVmYCAxIHNlY29uZCBhZnRlciBpdCB3YXMgbGFzdCB1cGRhdGVkXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09ICcnKSB0aW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnVwZGF0ZVNlYXJjaCgnJylcbiAgICAgICAgICAgICwgMTAwMCk7XG4gICAgICAgIH0pKHNlYXJjaCk7XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVTZWFyY2hDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCByZXNldFR5cGVhaGVhZCA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBzZWFyY2hSZWYuY3VycmVudCA9ICcnO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpO1xuICAgIH0sIFtdKTtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KVxuICAgICAgICA7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBbXG4gICAgICAgIHNlYXJjaFJlZixcbiAgICAgICAgaGFuZGxlVHlwZWFoZWFkU2VhcmNoLFxuICAgICAgICByZXNldFR5cGVhaGVhZFxuICAgIF07XG59XG4vKipcbiAqIFRoaXMgaXMgdGhlIFwibWVhdFwiIG9mIHRoZSB0eXBlYWhlYWQgbWF0Y2hpbmcgbG9naWMuIEl0IHRha2VzIGluIGEgbGlzdCBvZiBpdGVtcyxcbiAqIHRoZSBzZWFyY2ggYW5kIHRoZSBjdXJyZW50IGl0ZW0sIGFuZCByZXR1cm5zIHRoZSBuZXh0IGl0ZW0gKG9yIGB1bmRlZmluZWRgKS5cbiAqXG4gKiBXZSBub3JtYWxpemUgdGhlIHNlYXJjaCBiZWNhdXNlIGlmIGEgdXNlciBoYXMgcmVwZWF0ZWRseSBwcmVzc2VkIGEgY2hhcmFjdGVyLFxuICogd2Ugd2FudCB0aGUgZXhhY3Qgc2FtZSBiZWhhdmlvciBhcyBpZiB3ZSBvbmx5IGhhZCB0aGF0IG9uZSBjaGFyYWN0ZXJcbiAqIChpZS4gY3ljbGUgdGhyb3VnaCBpdGVtcyBzdGFydGluZyB3aXRoIHRoYXQgY2hhcmFjdGVyKVxuICpcbiAqIFdlIGFsc28gcmVvcmRlciB0aGUgaXRlbXMgYnkgd3JhcHBpbmcgdGhlIGFycmF5IGFyb3VuZCB0aGUgY3VycmVudCBpdGVtLlxuICogVGhpcyBpcyBzbyB3ZSBhbHdheXMgbG9vayBmb3J3YXJkIGZyb20gdGhlIGN1cnJlbnQgaXRlbSwgYW5kIHBpY2tpbmcgdGhlIGZpcnN0XG4gKiBpdGVtIHdpbGwgYWx3YXlzIGJlIHRoZSBjb3JyZWN0IG9uZS5cbiAqXG4gKiBGaW5hbGx5LCBpZiB0aGUgbm9ybWFsaXplZCBzZWFyY2ggaXMgZXhhY3RseSBvbmUgY2hhcmFjdGVyLCB3ZSBleGNsdWRlIHRoZVxuICogY3VycmVudCBpdGVtIGZyb20gdGhlIHZhbHVlcyBiZWNhdXNlIG90aGVyd2lzZSBpdCB3b3VsZCBiZSB0aGUgZmlyc3QgdG8gbWF0Y2ggYWx3YXlzXG4gKiBhbmQgZm9jdXMgd291bGQgbmV2ZXIgbW92ZS4gVGhpcyBpcyBhcyBvcHBvc2VkIHRvIHRoZSByZWd1bGFyIGNhc2UsIHdoZXJlIHdlXG4gKiBkb24ndCB3YW50IGZvY3VzIHRvIG1vdmUgaWYgdGhlIGN1cnJlbnQgaXRlbSBzdGlsbCBtYXRjaGVzLlxuICovIGZ1bmN0aW9uICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oaXRlbXMsIHNlYXJjaCwgY3VycmVudEl0ZW0pIHtcbiAgICBjb25zdCBpc1JlcGVhdGVkID0gc2VhcmNoLmxlbmd0aCA+IDEgJiYgQXJyYXkuZnJvbShzZWFyY2gpLmV2ZXJ5KChjaGFyKT0+Y2hhciA9PT0gc2VhcmNoWzBdXG4gICAgKTtcbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoID0gaXNSZXBlYXRlZCA/IHNlYXJjaFswXSA6IHNlYXJjaDtcbiAgICBjb25zdCBjdXJyZW50SXRlbUluZGV4ID0gY3VycmVudEl0ZW0gPyBpdGVtcy5pbmRleE9mKGN1cnJlbnRJdGVtKSA6IC0xO1xuICAgIGxldCB3cmFwcGVkSXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkd3JhcEFycmF5KGl0ZW1zLCBNYXRoLm1heChjdXJyZW50SXRlbUluZGV4LCAwKSk7XG4gICAgY29uc3QgZXhjbHVkZUN1cnJlbnRJdGVtID0gbm9ybWFsaXplZFNlYXJjaC5sZW5ndGggPT09IDE7XG4gICAgaWYgKGV4Y2x1ZGVDdXJyZW50SXRlbSkgd3JhcHBlZEl0ZW1zID0gd3JhcHBlZEl0ZW1zLmZpbHRlcigodik9PnYgIT09IGN1cnJlbnRJdGVtXG4gICAgKTtcbiAgICBjb25zdCBuZXh0SXRlbSA9IHdyYXBwZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS50ZXh0VmFsdWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG5vcm1hbGl6ZWRTZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICAgIHJldHVybiBuZXh0SXRlbSAhPT0gY3VycmVudEl0ZW0gPyBuZXh0SXRlbSA6IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogV3JhcHMgYW4gYXJyYXkgYXJvdW5kIGl0c2VsZiBhdCBhIGdpdmVuIHN0YXJ0IGluZGV4XG4gKiBFeGFtcGxlOiBgd3JhcEFycmF5KFsnYScsICdiJywgJ2MnLCAnZCddLCAyKSA9PT0gWydjJywgJ2QnLCAnYScsICdiJ11gXG4gKi8gZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHdyYXBBcnJheShhcnJheSwgc3RhcnRJbmRleCkge1xuICAgIHJldHVybiBhcnJheS5tYXAoKF8sIGluZGV4KT0+YXJyYXlbKHN0YXJ0SW5kZXggKyBpbmRleCkgJSBhcnJheS5sZW5ndGhdXG4gICAgKTtcbn1cbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjE7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNGM4ZDFhNTdhNzYxZWY5NCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGYwNGE2MTI5OGE0N2E0MGYgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIyYWY2Yzk5NDQyOTYyMTM7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViMmZjZmRiZDdiYTk3ZDQgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNDtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjg7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjMzQ2OGUyNzE0ZDE3NWZhID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJmMWFlZGMzMDM5YzhkNjMgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDFmZjNjM2YwOGFlOTYzYzAgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyODtcblxuXG5cblxuZXhwb3J0IHskY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjg2NzI3YTc1ZGMwMzliZCBhcyBjcmVhdGVTZWxlY3RTY29wZSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYgYXMgU2VsZWN0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxIGFzIFNlbGVjdFRyaWdnZXIsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwIGFzIFNlbGVjdFZhbHVlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSBhcyBTZWxlY3RJY29uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMyBhcyBTZWxlY3RQb3J0YWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkIGFzIFNlbGVjdENvbnRlbnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkIGFzIFNlbGVjdFZpZXdwb3J0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNCBhcyBTZWxlY3RHcm91cCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjggYXMgU2VsZWN0TGFiZWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2IGFzIFNlbGVjdEl0ZW0sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5IGFzIFNlbGVjdEl0ZW1UZXh0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNiBhcyBTZWxlY3RJdGVtSW5kaWNhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyBhcyBTZWxlY3RTY3JvbGxVcEJ1dHRvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSBhcyBTZWxlY3RTY3JvbGxEb3duQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzIGFzIFNlbGVjdFNlcGFyYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjggYXMgU2VsZWN0QXJyb3csICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0IGFzIFZhbHVlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiBhcyBJY29uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNWM2YzA4ZGMyZDNjYTcgYXMgVmlld3BvcnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYjJmY2ZkYmQ3YmE5N2Q0IGFzIEdyb3VwLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSBhcyBMYWJlbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgYXMgSXRlbSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkgYXMgSXRlbVRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjMzQ2OGUyNzE0ZDE3NWZhIGFzIEl0ZW1JbmRpY2F0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyZjYwZDNlYzlhZDQ2OGYyIGFzIFNjcm9sbFVwQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyBhcyBTY3JvbGxEb3duQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMWZmM2MzZjA4YWU5NjNjMCBhcyBTZXBhcmF0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwODVcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwODUpXCI+XG48cGF0aCBkPVwiTTExLjk5OTcgMTguNzVDMTEuNzg3MSAxOC43NSAxMS42MDkgMTguNjc4MSAxMS40NjU0IDE4LjUzNDRDMTEuMzIxOCAxOC4zOTA2IDExLjI1IDE4LjIxMjUgMTEuMjUgMThWMTIuNzVINS45OTk5N0M1Ljc4NzQ3IDEyLjc1IDUuNjA5MzYgMTIuNjc4IDUuNDY1NjMgMTIuNTM0MkM1LjMyMTg4IDEyLjM5MDQgNS4yNSAxMi4yMTIyIDUuMjUgMTEuOTk5N0M1LjI1IDExLjc4NzEgNS4zMjE4OCAxMS42MDkgNS40NjU2MyAxMS40NjU0QzUuNjA5MzYgMTEuMzIxOCA1Ljc4NzQ3IDExLjI1IDUuOTk5OTcgMTEuMjVIMTEuMjVWNS45OTk5N0MxMS4yNSA1Ljc4NzQ3IDExLjMyMTkgNS42MDkzNSAxMS40NjU3IDUuNDY1NkMxMS42MDk1IDUuMzIxODcgMTEuNzg3NyA1LjI1IDEyLjAwMDMgNS4yNUMxMi4yMTI5IDUuMjUgMTIuMzkxIDUuMzIxODcgMTIuNTM0NiA1LjQ2NTZDMTIuNjc4MiA1LjYwOTM1IDEyLjc0OTkgNS43ODc0NyAxMi43NDk5IDUuOTk5OTdWMTEuMjVIMThDMTguMjEyNSAxMS4yNSAxOC4zOTA2IDExLjMyMTkgMTguNTM0NCAxMS40NjU3QzE4LjY3ODEgMTEuNjA5NSAxOC43NSAxMS43ODc3IDE4Ljc1IDEyLjAwMDNDMTguNzUgMTIuMjEyOSAxOC42NzgxIDEyLjM5MSAxOC41MzQ0IDEyLjUzNDZDMTguMzkwNiAxMi42NzgyIDE4LjIxMjUgMTIuNzUgMTggMTIuNzVIMTIuNzQ5OVYxOEMxMi43NDk5IDE4LjIxMjUgMTIuNjc4IDE4LjM5MDYgMTIuNTM0MiAxOC41MzQ0QzEyLjM5MDQgMTguNjc4MSAxMi4yMTIyIDE4Ljc1IDExLjk5OTcgMTguNzVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF8yMDJfOTA5NFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzIwMl85MDk0KVwiPlxuPHBhdGggZD1cIk0xMi4wMDE2IDIxLjVDMTAuNjg3NyAyMS41IDkuNDUyNjggMjEuMjUwNiA4LjI5NjU1IDIwLjc1MkM3LjE0MDQgMjAuMjUzMyA2LjEzNDcyIDE5LjU3NjUgNS4yNzk1IDE4LjcyMTdDNC40MjQyNyAxNy44NjY5IDMuNzQ3MjEgMTYuODYxNiAzLjI0ODMzIDE1LjcwNkMyLjc0OTQ0IDE0LjU1MDQgMi41IDEzLjMxNTYgMi41IDEyLjAwMTdDMi41IDEwLjY4NzcgMi43NDkzMyA5LjQ1MjY4IDMuMjQ4IDguMjk2NTVDMy43NDY2NyA3LjE0MDQgNC40MjM0MiA2LjEzNDcyIDUuMjc4MjUgNS4yNzk1QzYuMTMzMSA0LjQyNDI3IDcuMTM4MzQgMy43NDcyMSA4LjI5Mzk4IDMuMjQ4MzNDOS40NDk1OSAyLjc0OTQ0IDEwLjY4NDQgMi41IDExLjk5ODMgMi41QzEzLjMxMjIgMi41IDE0LjU0NzMgMi43NDkzMyAxNS43MDM0IDMuMjQ4QzE2Ljg1OTYgMy43NDY2NyAxNy44NjUyIDQuNDIzNDIgMTguNzIwNSA1LjI3ODI1QzE5LjU3NTcgNi4xMzMxIDIwLjI1MjcgNy4xMzgzNCAyMC43NTE2IDguMjkzOThDMjEuMjUwNSA5LjQ0OTU5IDIxLjUgMTAuNjg0NCAyMS41IDExLjk5ODNDMjEuNSAxMy4zMTIyIDIxLjI1MDYgMTQuNTQ3MyAyMC43NTIgMTUuNzAzNEMyMC4yNTMzIDE2Ljg1OTYgMTkuNTc2NSAxNy44NjUyIDE4LjcyMTcgMTguNzIwNUMxNy44NjY5IDE5LjU3NTcgMTYuODYxNiAyMC4yNTI3IDE1LjcwNiAyMC43NTE2QzE0LjU1MDQgMjEuMjUwNSAxMy4zMTU2IDIxLjUgMTIuMDAxNiAyMS41Wk0xMiAyMEMxNC4yMzMzIDIwIDE2LjEyNSAxOS4yMjUgMTcuNjc1IDE3LjY3NUMxOS4yMjUgMTYuMTI1IDIwIDE0LjIzMzMgMjAgMTJDMjAgMTEuMDYxOCAxOS44Mzk3IDEwLjE1ODMgMTkuNTE5MiA5LjI4OTU4QzE5LjE5ODcgOC40MjA4NiAxOC43NDEgNy42MjY4OCAxOC4xNDYxIDYuOTA3NjVMNi45MDc2NSAxOC4xNDYxQzcuNjI2ODggMTguNzQ3NCA4LjQyMDg2IDE5LjIwNjcgOS4yODk1OCAxOS41MjRDMTAuMTU4MyAxOS44NDEzIDExLjA2MTggMjAgMTIgMjBaTTUuODUzODMgMTcuMDkyM0wxNy4wOTIzIDUuODUzODJDMTYuMzc5NSA1LjI0NjE0IDE1LjU4NzcgNC43ODUyNCAxNC43MTY5IDQuNDcxMTNDMTMuODQ2MSA0LjE1NzAzIDEyLjk0MDQgMy45OTk5NyAxMiAzLjk5OTk3QzkuNzY2NjQgMy45OTk5NyA3Ljg3NDk4IDQuNzc0OTggNi4zMjQ5OCA2LjMyNDk4QzQuNzc0OTggNy44NzQ5OCAzLjk5OTk4IDkuNzY2NjQgMy45OTk5OCAxMkMzLjk5OTk4IDEyLjkzODIgNC4xNTg2MyAxMy44NDE3IDQuNDc1OTUgMTQuNzEwNEM0Ljc5MzI1IDE1LjU3OTEgNS4yNTI1NCAxNi4zNzMxIDUuODUzODMgMTcuMDkyM1pcIiBmaWxsPVwiIzQyNDU0QlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA3MFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA3MClcIj5cbjxwYXRoIGQ9XCJNMyAxNC41QzIuODY2NjcgMTQuNSAyLjc1IDE0LjQ1IDIuNjUgMTQuMzVDMi41NSAxNC4yNSAyLjUgMTQuMTMzMyAyLjUgMTRDMi41IDEzLjg2NjcgMi41NSAxMy43NSAyLjY1IDEzLjY1QzIuNzUgMTMuNTUgMi44NjY2NyAxMy41IDMgMTMuNUMzLjEzMzMzIDEzLjUgMy4yNSAxMy41NSAzLjM1IDEzLjY1QzMuNDUgMTMuNzUgMy41IDEzLjg2NjcgMy41IDE0QzMuNSAxNC4xMzMzIDMuNDUgMTQuMjUgMy4zNSAxNC4zNUMzLjI1IDE0LjQ1IDMuMTMzMzMgMTQuNSAzIDE0LjVaTTMgMTAuNUMyLjg2NjY3IDEwLjUgMi43NSAxMC40NSAyLjY1IDEwLjM1QzIuNTUgMTAuMjUgMi41IDEwLjEzMzMgMi41IDEwQzIuNSA5Ljg2NjY3IDIuNTUgOS43NSAyLjY1IDkuNjVDMi43NSA5LjU1IDIuODY2NjcgOS41IDMgOS41QzMuMTMzMzMgOS41IDMuMjUgOS41NSAzLjM1IDkuNjVDMy40NSA5Ljc1IDMuNSA5Ljg2NjY3IDMuNSAxMEMzLjUgMTAuMTMzMyAzLjQ1IDEwLjI1IDMuMzUgMTAuMzVDMy4yNSAxMC40NSAzLjEzMzMzIDEwLjUgMyAxMC41Wk02IDE4LjkyMzFDNS43Mzg0NyAxOC45MjMxIDUuNTE5MjMgMTguODM0NiA1LjM0MjMgMTguNjU3N0M1LjE2NTM4IDE4LjQ4MDggNS4wNzY5MyAxOC4yNjE1IDUuMDc2OTMgMThDNS4wNzY5MyAxNy43Mzg1IDUuMTY1MzggMTcuNTE5MiA1LjM0MjMgMTcuMzQyM0M1LjUxOTIzIDE3LjE2NTQgNS43Mzg0NyAxNy4wNzY5IDYgMTcuMDc2OUM2LjI2MTUzIDE3LjA3NjkgNi40ODA3NyAxNy4xNjU0IDYuNjU3NyAxNy4zNDIzQzYuODM0NjIgMTcuNTE5MiA2LjkyMzA4IDE3LjczODUgNi45MjMwOCAxOEM2LjkyMzA4IDE4LjI2MTUgNi44MzQ2MiAxOC40ODA4IDYuNjU3NyAxOC42NTc3QzYuNDgwNzcgMTguODM0NiA2LjI2MTUzIDE4LjkyMzEgNiAxOC45MjMxWk02IDE0LjkyMzFDNS43Mzg0NyAxNC45MjMxIDUuNTE5MjMgMTQuODM0NiA1LjM0MjMgMTQuNjU3N0M1LjE2NTM4IDE0LjQ4MDggNS4wNzY5MyAxNC4yNjE1IDUuMDc2OTMgMTRDNS4wNzY5MyAxMy43Mzg1IDUuMTY1MzggMTMuNTE5MiA1LjM0MjMgMTMuMzQyM0M1LjUxOTIzIDEzLjE2NTQgNS43Mzg0NyAxMy4wNzY5IDYgMTMuMDc2OUM2LjI2MTUzIDEzLjA3NjkgNi40ODA3NyAxMy4xNjU0IDYuNjU3NyAxMy4zNDIzQzYuODM0NjIgMTMuNTE5MiA2LjkyMzA4IDEzLjczODUgNi45MjMwOCAxNEM2LjkyMzA4IDE0LjI2MTUgNi44MzQ2MiAxNC40ODA4IDYuNjU3NyAxNC42NTc3QzYuNDgwNzcgMTQuODM0NiA2LjI2MTUzIDE0LjkyMzEgNiAxNC45MjMxWk02IDEwLjkyMzFDNS43Mzg0NyAxMC45MjMxIDUuNTE5MjMgMTAuODM0NiA1LjM0MjMgMTAuNjU3N0M1LjE2NTM4IDEwLjQ4MDggNS4wNzY5MyAxMC4yNjE1IDUuMDc2OTMgMTBDNS4wNzY5MyA5LjczODQ3IDUuMTY1MzggOS41MTkyNCA1LjM0MjMgOS4zNDIzMkM1LjUxOTIzIDkuMTY1MzkgNS43Mzg0NyA5LjA3NjkyIDYgOS4wNzY5MkM2LjI2MTUzIDkuMDc2OTIgNi40ODA3NyA5LjE2NTM5IDYuNjU3NyA5LjM0MjMyQzYuODM0NjIgOS41MTkyNCA2LjkyMzA4IDkuNzM4NDcgNi45MjMwOCAxMEM2LjkyMzA4IDEwLjI2MTUgNi44MzQ2MiAxMC40ODA4IDYuNjU3NyAxMC42NTc3QzYuNDgwNzcgMTAuODM0NiA2LjI2MTUzIDEwLjkyMzEgNiAxMC45MjMxWk02IDYuOTIzMDhDNS43Mzg0NyA2LjkyMzA4IDUuNTE5MjMgNi44MzQ2MSA1LjM0MjMgNi42NTc2OEM1LjE2NTM4IDYuNDgwNzYgNS4wNzY5MyA2LjI2MTUzIDUuMDc2OTMgNkM1LjA3NjkzIDUuNzM4NDcgNS4xNjUzOCA1LjUxOTI0IDUuMzQyMyA1LjM0MjMyQzUuNTE5MjMgNS4xNjUzOSA1LjczODQ3IDUuMDc2OTMgNiA1LjA3NjkzQzYuMjYxNTMgNS4wNzY5MyA2LjQ4MDc3IDUuMTY1MzkgNi42NTc3IDUuMzQyMzJDNi44MzQ2MiA1LjUxOTI0IDYuOTIzMDggNS43Mzg0NyA2LjkyMzA4IDZDNi45MjMwOCA2LjI2MTUzIDYuODM0NjIgNi40ODA3NiA2LjY1NzcgNi42NTc2OEM2LjQ4MDc3IDYuODM0NjEgNi4yNjE1MyA2LjkyMzA4IDYgNi45MjMwOFpNMTAuMDAyMyAxNS4zNDYyQzkuNjI4OTcgMTUuMzQ2MiA5LjMxMDkxIDE1LjIxNTUgOS4wNDgwOCAxNC45NTQyQzguNzg1MjYgMTQuNjkyOSA4LjY1Mzg1IDE0LjM3NTYgOC42NTM4NSAxNC4wMDIzQzguNjUzODUgMTMuNjI5IDguNzg0NTEgMTMuMzEwOSA5LjA0NTgzIDEzLjA0ODFDOS4zMDcxNCAxMi43ODUzIDkuNjI0NDQgMTIuNjUzOCA5Ljk5NzczIDEyLjY1MzhDMTAuMzcxIDEyLjY1MzggMTAuNjg5MSAxMi43ODQ1IDEwLjk1MTkgMTMuMDQ1OEMxMS4yMTQ3IDEzLjMwNzEgMTEuMzQ2MiAxMy42MjQ0IDExLjM0NjIgMTMuOTk3N0MxMS4zNDYyIDE0LjM3MSAxMS4yMTU1IDE0LjY4OTEgMTAuOTU0MiAxNC45NTE5QzEwLjY5MjkgMTUuMjE0NyAxMC4zNzU2IDE1LjM0NjIgMTAuMDAyMyAxNS4zNDYyWk0xMC4wMDIzIDExLjM0NjJDOS42Mjg5NyAxMS4zNDYyIDkuMzEwOTEgMTEuMjE1NSA5LjA0ODA4IDEwLjk1NDJDOC43ODUyNiAxMC42OTI5IDguNjUzODUgMTAuMzc1NiA4LjY1Mzg1IDEwLjAwMjNDOC42NTM4NSA5LjYyODk3IDguNzg0NTEgOS4zMTA5MSA5LjA0NTgzIDkuMDQ4MDhDOS4zMDcxNCA4Ljc4NTI2IDkuNjI0NDQgOC42NTM4NSA5Ljk5NzczIDguNjUzODVDMTAuMzcxIDguNjUzODUgMTAuNjg5MSA4Ljc4NDUxIDEwLjk1MTkgOS4wNDU4M0MxMS4yMTQ3IDkuMzA3MTMgMTEuMzQ2MiA5LjYyNDQyIDExLjM0NjIgOS45OTc3M0MxMS4zNDYyIDEwLjM3MSAxMS4yMTU1IDEwLjY4OTEgMTAuOTU0MiAxMC45NTE5QzEwLjY5MjkgMTEuMjE0NyAxMC4zNzU2IDExLjM0NjIgMTAuMDAyMyAxMS4zNDYyWk0xMCAxOC45MjMxQzkuNzM4NDcgMTguOTIzMSA5LjUxOTIzIDE4LjgzNDYgOS4zNDIzIDE4LjY1NzdDOS4xNjUzOCAxOC40ODA4IDkuMDc2OTIgMTguMjYxNSA5LjA3NjkyIDE4QzkuMDc2OTIgMTcuNzM4NSA5LjE2NTM4IDE3LjUxOTIgOS4zNDIzIDE3LjM0MjNDOS41MTkyMyAxNy4xNjU0IDkuNzM4NDcgMTcuMDc2OSAxMCAxNy4wNzY5QzEwLjI2MTUgMTcuMDc2OSAxMC40ODA4IDE3LjE2NTQgMTAuNjU3NyAxNy4zNDIzQzEwLjgzNDYgMTcuNTE5MiAxMC45MjMxIDE3LjczODUgMTAuOTIzMSAxOEMxMC45MjMxIDE4LjI2MTUgMTAuODM0NiAxOC40ODA4IDEwLjY1NzcgMTguNjU3N0MxMC40ODA4IDE4LjgzNDYgMTAuMjYxNSAxOC45MjMxIDEwIDE4LjkyMzFaTTEwIDYuOTIzMDhDOS43Mzg0NyA2LjkyMzA4IDkuNTE5MjMgNi44MzQ2MSA5LjM0MjMgNi42NTc2OEM5LjE2NTM4IDYuNDgwNzYgOS4wNzY5MiA2LjI2MTUzIDkuMDc2OTIgNkM5LjA3NjkyIDUuNzM4NDcgOS4xNjUzOCA1LjUxOTI0IDkuMzQyMyA1LjM0MjMyQzkuNTE5MjMgNS4xNjUzOSA5LjczODQ3IDUuMDc2OTMgMTAgNS4wNzY5M0MxMC4yNjE1IDUuMDc2OTMgMTAuNDgwOCA1LjE2NTM5IDEwLjY1NzcgNS4zNDIzMkMxMC44MzQ2IDUuNTE5MjQgMTAuOTIzMSA1LjczODQ3IDEwLjkyMzEgNkMxMC45MjMxIDYuMjYxNTMgMTAuODM0NiA2LjQ4MDc2IDEwLjY1NzcgNi42NTc2OEMxMC40ODA4IDYuODM0NjEgMTAuMjYxNSA2LjkyMzA4IDEwIDYuOTIzMDhaTTEwIDIxLjVDOS44NjY2NyAyMS41IDkuNzUgMjEuNDUgOS42NSAyMS4zNUM5LjU1IDIxLjI1IDkuNSAyMS4xMzMzIDkuNSAyMUM5LjUgMjAuODY2NyA5LjU1IDIwLjc1IDkuNjUgMjAuNjVDOS43NSAyMC41NSA5Ljg2NjY3IDIwLjUgMTAgMjAuNUMxMC4xMzMzIDIwLjUgMTAuMjUgMjAuNTUgMTAuMzUgMjAuNjVDMTAuNDUgMjAuNzUgMTAuNSAyMC44NjY3IDEwLjUgMjFDMTAuNSAyMS4xMzMzIDEwLjQ1IDIxLjI1IDEwLjM1IDIxLjM1QzEwLjI1IDIxLjQ1IDEwLjEzMzMgMjEuNSAxMCAyMS41Wk0xMCAzLjVDOS44NjY2NyAzLjUgOS43NSAzLjQ1IDkuNjUgMy4zNUM5LjU1IDMuMjUgOS41IDMuMTMzMzMgOS41IDNDOS41IDIuODY2NjcgOS41NSAyLjc1IDkuNjUgMi42NUM5Ljc1IDIuNTUgOS44NjY2NyAyLjUgMTAgMi41QzEwLjEzMzMgMi41IDEwLjI1IDIuNTUgMTAuMzUgMi42NUMxMC40NSAyLjc1IDEwLjUgMi44NjY2NyAxMC41IDNDMTAuNSAzLjEzMzMzIDEwLjQ1IDMuMjUgMTAuMzUgMy4zNUMxMC4yNSAzLjQ1IDEwLjEzMzMgMy41IDEwIDMuNVpNMTQuMDAyMyAxNS4zNDYyQzEzLjYyOSAxNS4zNDYyIDEzLjMxMDkgMTUuMjE1NSAxMy4wNDgxIDE0Ljk1NDJDMTIuNzg1MyAxNC42OTI5IDEyLjY1MzggMTQuMzc1NiAxMi42NTM4IDE0LjAwMjNDMTIuNjUzOCAxMy42MjkgMTIuNzg0NSAxMy4zMTA5IDEzLjA0NTggMTMuMDQ4MUMxMy4zMDcxIDEyLjc4NTMgMTMuNjI0NCAxMi42NTM4IDEzLjk5NzcgMTIuNjUzOEMxNC4zNzEgMTIuNjUzOCAxNC42ODkxIDEyLjc4NDUgMTQuOTUxOSAxMy4wNDU4QzE1LjIxNDcgMTMuMzA3MSAxNS4zNDYyIDEzLjYyNDQgMTUuMzQ2MiAxMy45OTc3QzE1LjM0NjIgMTQuMzcxIDE1LjIxNTUgMTQuNjg5MSAxNC45NTQyIDE0Ljk1MTlDMTQuNjkyOSAxNS4yMTQ3IDE0LjM3NTYgMTUuMzQ2MiAxNC4wMDIzIDE1LjM0NjJaTTE0LjAwMjMgMTEuMzQ2MkMxMy42MjkgMTEuMzQ2MiAxMy4zMTA5IDExLjIxNTUgMTMuMDQ4MSAxMC45NTQyQzEyLjc4NTMgMTAuNjkyOSAxMi42NTM4IDEwLjM3NTYgMTIuNjUzOCAxMC4wMDIzQzEyLjY1MzggOS42Mjg5NyAxMi43ODQ1IDkuMzEwOTEgMTMuMDQ1OCA5LjA0ODA4QzEzLjMwNzEgOC43ODUyNiAxMy42MjQ0IDguNjUzODUgMTMuOTk3NyA4LjY1Mzg1QzE0LjM3MSA4LjY1Mzg1IDE0LjY4OTEgOC43ODQ1MSAxNC45NTE5IDkuMDQ1ODNDMTUuMjE0NyA5LjMwNzEzIDE1LjM0NjIgOS42MjQ0MiAxNS4zNDYyIDkuOTk3NzNDMTUuMzQ2MiAxMC4zNzEgMTUuMjE1NSAxMC42ODkxIDE0Ljk1NDIgMTAuOTUxOUMxNC42OTI5IDExLjIxNDcgMTQuMzc1NiAxMS4zNDYyIDE0LjAwMjMgMTEuMzQ2MlpNMTQgMTguOTIzMUMxMy43Mzg1IDE4LjkyMzEgMTMuNTE5MiAxOC44MzQ2IDEzLjM0MjMgMTguNjU3N0MxMy4xNjU0IDE4LjQ4MDggMTMuMDc2OSAxOC4yNjE1IDEzLjA3NjkgMThDMTMuMDc2OSAxNy43Mzg1IDEzLjE2NTQgMTcuNTE5MiAxMy4zNDIzIDE3LjM0MjNDMTMuNTE5MiAxNy4xNjU0IDEzLjczODUgMTcuMDc2OSAxNCAxNy4wNzY5QzE0LjI2MTUgMTcuMDc2OSAxNC40ODA4IDE3LjE2NTQgMTQuNjU3NyAxNy4zNDIzQzE0LjgzNDYgMTcuNTE5MiAxNC45MjMxIDE3LjczODUgMTQuOTIzMSAxOEMxNC45MjMxIDE4LjI2MTUgMTQuODM0NiAxOC40ODA4IDE0LjY1NzcgMTguNjU3N0MxNC40ODA4IDE4LjgzNDYgMTQuMjYxNSAxOC45MjMxIDE0IDE4LjkyMzFaTTE0IDYuOTIzMDhDMTMuNzM4NSA2LjkyMzA4IDEzLjUxOTIgNi44MzQ2MSAxMy4zNDIzIDYuNjU3NjhDMTMuMTY1NCA2LjQ4MDc2IDEzLjA3NjkgNi4yNjE1MyAxMy4wNzY5IDZDMTMuMDc2OSA1LjczODQ3IDEzLjE2NTQgNS41MTkyNCAxMy4zNDIzIDUuMzQyMzJDMTMuNTE5MiA1LjE2NTM5IDEzLjczODUgNS4wNzY5MyAxNCA1LjA3NjkzQzE0LjI2MTUgNS4wNzY5MyAxNC40ODA4IDUuMTY1MzkgMTQuNjU3NyA1LjM0MjMyQzE0LjgzNDYgNS41MTkyNCAxNC45MjMxIDUuNzM4NDcgMTQuOTIzMSA2QzE0LjkyMzEgNi4yNjE1MyAxNC44MzQ2IDYuNDgwNzYgMTQuNjU3NyA2LjY1NzY4QzE0LjQ4MDggNi44MzQ2MSAxNC4yNjE1IDYuOTIzMDggMTQgNi45MjMwOFpNMTQgMjEuNUMxMy44NjY3IDIxLjUgMTMuNzUgMjEuNDUgMTMuNjUgMjEuMzVDMTMuNTUgMjEuMjUgMTMuNSAyMS4xMzMzIDEzLjUgMjFDMTMuNSAyMC44NjY3IDEzLjU1IDIwLjc1IDEzLjY1IDIwLjY1QzEzLjc1IDIwLjU1IDEzLjg2NjcgMjAuNSAxNCAyMC41QzE0LjEzMzMgMjAuNSAxNC4yNSAyMC41NSAxNC4zNSAyMC42NUMxNC40NSAyMC43NSAxNC41IDIwLjg2NjcgMTQuNSAyMUMxNC41IDIxLjEzMzMgMTQuNDUgMjEuMjUgMTQuMzUgMjEuMzVDMTQuMjUgMjEuNDUgMTQuMTMzMyAyMS41IDE0IDIxLjVaTTE0IDMuNUMxMy44NjY3IDMuNSAxMy43NSAzLjQ1IDEzLjY1IDMuMzVDMTMuNTUgMy4yNSAxMy41IDMuMTMzMzMgMTMuNSAzQzEzLjUgMi44NjY2NyAxMy41NSAyLjc1IDEzLjY1IDIuNjVDMTMuNzUgMi41NSAxMy44NjY3IDIuNSAxNCAyLjVDMTQuMTMzMyAyLjUgMTQuMjUgMi41NSAxNC4zNSAyLjY1QzE0LjQ1IDIuNzUgMTQuNSAyLjg2NjY3IDE0LjUgM0MxNC41IDMuMTMzMzMgMTQuNDUgMy4yNSAxNC4zNSAzLjM1QzE0LjI1IDMuNDUgMTQuMTMzMyAzLjUgMTQgMy41Wk0xOCAxOC45MjMxQzE3LjczODUgMTguOTIzMSAxNy41MTkyIDE4LjgzNDYgMTcuMzQyMyAxOC42NTc3QzE3LjE2NTQgMTguNDgwOCAxNy4wNzY5IDE4LjI2MTUgMTcuMDc2OSAxOEMxNy4wNzY5IDE3LjczODUgMTcuMTY1NCAxNy41MTkyIDE3LjM0MjMgMTcuMzQyM0MxNy41MTkyIDE3LjE2NTQgMTcuNzM4NSAxNy4wNzY5IDE4IDE3LjA3NjlDMTguMjYxNSAxNy4wNzY5IDE4LjQ4MDggMTcuMTY1NCAxOC42NTc3IDE3LjM0MjNDMTguODM0NiAxNy41MTkyIDE4LjkyMzEgMTcuNzM4NSAxOC45MjMxIDE4QzE4LjkyMzEgMTguMjYxNSAxOC44MzQ2IDE4LjQ4MDggMTguNjU3NyAxOC42NTc3QzE4LjQ4MDggMTguODM0NiAxOC4yNjE1IDE4LjkyMzEgMTggMTguOTIzMVpNMTggMTQuOTIzMUMxNy43Mzg1IDE0LjkyMzEgMTcuNTE5MiAxNC44MzQ2IDE3LjM0MjMgMTQuNjU3N0MxNy4xNjU0IDE0LjQ4MDggMTcuMDc2OSAxNC4yNjE1IDE3LjA3NjkgMTRDMTcuMDc2OSAxMy43Mzg1IDE3LjE2NTQgMTMuNTE5MiAxNy4zNDIzIDEzLjM0MjNDMTcuNTE5MiAxMy4xNjU0IDE3LjczODUgMTMuMDc2OSAxOCAxMy4wNzY5QzE4LjI2MTUgMTMuMDc2OSAxOC40ODA4IDEzLjE2NTQgMTguNjU3NyAxMy4zNDIzQzE4LjgzNDYgMTMuNTE5MiAxOC45MjMxIDEzLjczODUgMTguOTIzMSAxNEMxOC45MjMxIDE0LjI2MTUgMTguODM0NiAxNC40ODA4IDE4LjY1NzcgMTQuNjU3N0MxOC40ODA4IDE0LjgzNDYgMTguMjYxNSAxNC45MjMxIDE4IDE0LjkyMzFaTTE4IDEwLjkyMzFDMTcuNzM4NSAxMC45MjMxIDE3LjUxOTIgMTAuODM0NiAxNy4zNDIzIDEwLjY1NzdDMTcuMTY1NCAxMC40ODA4IDE3LjA3NjkgMTAuMjYxNSAxNy4wNzY5IDEwQzE3LjA3NjkgOS43Mzg0NyAxNy4xNjU0IDkuNTE5MjQgMTcuMzQyMyA5LjM0MjMyQzE3LjUxOTIgOS4xNjUzOSAxNy43Mzg1IDkuMDc2OTIgMTggOS4wNzY5MkMxOC4yNjE1IDkuMDc2OTIgMTguNDgwOCA5LjE2NTM5IDE4LjY1NzcgOS4zNDIzMkMxOC44MzQ2IDkuNTE5MjQgMTguOTIzMSA5LjczODQ3IDE4LjkyMzEgMTBDMTguOTIzMSAxMC4yNjE1IDE4LjgzNDYgMTAuNDgwOCAxOC42NTc3IDEwLjY1NzdDMTguNDgwOCAxMC44MzQ2IDE4LjI2MTUgMTAuOTIzMSAxOCAxMC45MjMxWk0xOCA2LjkyMzA4QzE3LjczODUgNi45MjMwOCAxNy41MTkyIDYuODM0NjEgMTcuMzQyMyA2LjY1NzY4QzE3LjE2NTQgNi40ODA3NiAxNy4wNzY5IDYuMjYxNTMgMTcuMDc2OSA2QzE3LjA3NjkgNS43Mzg0NyAxNy4xNjU0IDUuNTE5MjQgMTcuMzQyMyA1LjM0MjMyQzE3LjUxOTIgNS4xNjUzOSAxNy43Mzg1IDUuMDc2OTMgMTggNS4wNzY5M0MxOC4yNjE1IDUuMDc2OTMgMTguNDgwOCA1LjE2NTM5IDE4LjY1NzcgNS4zNDIzMkMxOC44MzQ2IDUuNTE5MjQgMTguOTIzMSA1LjczODQ3IDE4LjkyMzEgNkMxOC45MjMxIDYuMjYxNTMgMTguODM0NiA2LjQ4MDc2IDE4LjY1NzcgNi42NTc2OEMxOC40ODA4IDYuODM0NjEgMTguMjYxNSA2LjkyMzA4IDE4IDYuOTIzMDhaTTIxIDE0LjVDMjAuODY2NyAxNC41IDIwLjc1IDE0LjQ1IDIwLjY1IDE0LjM1QzIwLjU1IDE0LjI1IDIwLjUgMTQuMTMzMyAyMC41IDE0QzIwLjUgMTMuODY2NyAyMC41NSAxMy43NSAyMC42NSAxMy42NUMyMC43NSAxMy41NSAyMC44NjY3IDEzLjUgMjEgMTMuNUMyMS4xMzMzIDEzLjUgMjEuMjUgMTMuNTUgMjEuMzUgMTMuNjVDMjEuNDUgMTMuNzUgMjEuNSAxMy44NjY3IDIxLjUgMTRDMjEuNSAxNC4xMzMzIDIxLjQ1IDE0LjI1IDIxLjM1IDE0LjM1QzIxLjI1IDE0LjQ1IDIxLjEzMzMgMTQuNSAyMSAxNC41Wk0yMSAxMC41QzIwLjg2NjcgMTAuNSAyMC43NSAxMC40NSAyMC42NSAxMC4zNUMyMC41NSAxMC4yNSAyMC41IDEwLjEzMzMgMjAuNSAxMEMyMC41IDkuODY2NjcgMjAuNTUgOS43NSAyMC42NSA5LjY1QzIwLjc1IDkuNTUgMjAuODY2NyA5LjUgMjEgOS41QzIxLjEzMzMgOS41IDIxLjI1IDkuNTUgMjEuMzUgOS42NUMyMS40NSA5Ljc1IDIxLjUgOS44NjY2NyAyMS41IDEwQzIxLjUgMTAuMTMzMyAyMS40NSAxMC4yNSAyMS4zNSAxMC4zNUMyMS4yNSAxMC40NSAyMS4xMzMzIDEwLjUgMjEgMTAuNVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA5MVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA5MSlcIj5cbjxwYXRoIGQ9XCJNMTIuMDUgMTkuNzVDOS44ODcxOSAxOS43NSA4LjA0NjQ5IDE4Ljk5NzQgNi41Mjc5MSAxNy40OTIzQzUuMDA5MzMgMTUuOTg3MSA0LjI1MDA0IDE0LjE1NjQgNC4yNTAwNCAxMlYxMS4yMTkyTDIuOTI2OTEgMTIuNTQyM0MyLjc4ODQ2IDEyLjY4MDcgMi42MTQ0MyAxMi43NTE2IDIuNDA0ODEgMTIuNzU0OEMyLjE5NTIxIDEyLjc1OCAyLjAxNzk4IDEyLjY4NzEgMS44NzMxMSAxMi41NDIzQzEuNzI4MjEgMTIuMzk3NCAxLjY1NTc2IDEyLjIyMTggMS42NTU3NiAxMi4wMTUzQzEuNjU1NzYgMTEuODA4OSAxLjcyODIgMTEuNjMzMyAxLjg3MzA5IDExLjQ4ODVMNC4zNjczMSA4Ljk5NDIyQzQuNTQ4MDggOC44MTM0NiA0Ljc1ODk3IDguNzIzMDggNC45OTk5OSA4LjcyMzA4QzUuMjQxIDguNzIzMDggNS40NTE4OSA4LjgxMzQ2IDUuNjMyNjYgOC45OTQyMkw4LjEyNjg5IDExLjQ4ODVDOC4yNjUzNSAxMS42MjY5IDguMzM2MTkgMTEuODAwOSA4LjMzOTM5IDEyLjAxMDVDOC4zNDI2IDEyLjIyMDIgOC4yNzE3NyAxMi4zOTc0IDguMTI2ODkgMTIuNTQyM0M3Ljk4MjAyIDEyLjY4NzEgNy44MDYzOSAxMi43NTk2IDcuNTk5OTkgMTIuNzU5NkM3LjM5MzU5IDEyLjc1OTYgNy4yMTc5NSAxMi42ODcxIDcuMDczMDkgMTIuNTQyM0w1Ljc0OTk2IDExLjIxOTJWMTJDNS43NDk5NiAxMy43MzcyIDYuMzYxNSAxNS4yMTMxIDcuNTg0NTkgMTYuNDI3OUM4LjgwNzY5IDE3LjY0MjYgMTAuMjk2MiAxOC4yNSAxMi4wNSAxOC4yNUMxMi4zNDIzIDE4LjI1IDEyLjYzMzcgMTguMjMwMSAxMi45MjQxIDE4LjE5MDRDMTMuMjE0NCAxOC4xNTA2IDEzLjUwMDcgMTguMDgyNyAxMy43ODI3IDE3Ljk4NjVDMTMuOTk1NSAxNy45MjI0IDE0LjE5NjUgMTcuOTI5MiAxNC4zODU2IDE4LjAwNjdDMTQuNTc0NyAxOC4wODQzIDE0LjcxNjcgMTguMjE2IDE0LjgxMTUgMTguNDAxOUMxNC45MDY0IDE4LjU5ODEgMTQuOTEyNSAxOC43OTMyIDE0LjgyOTggMTguOTg3NUMxNC43NDcxIDE5LjE4MTcgMTQuNTk5NCAxOS4zMTA5IDE0LjM4NjUgMTkuMzc1QzE0LjAwOTYgMTkuNTA4MyAxMy42MjQ0IDE5LjYwNDEgMTMuMjMwOCAxOS42NjI1QzEyLjgzNzIgMTkuNzIwOCAxMi40NDM2IDE5Ljc1IDEyLjA1IDE5Ljc1Wk0xMS45NSA1Ljc0OTk1QzExLjY1NzcgNS43NDk5NSAxMS4zNjYzIDUuNzY5ODIgMTEuMDc2IDUuODA5NTdDMTAuNzg1NiA1Ljg0OTMyIDEwLjQ5OTQgNS45MTcyNyAxMC4yMTczIDYuMDEzNDJDMTAuMDA0NSA2LjA3NzUyIDkuODAwOTcgNi4wNzA3OSA5LjYwNjc0IDUuOTkzMjNDOS40MTI1MiA1LjkxNTY2IDkuMjY3OTggNS43ODM5MyA5LjE3MzExIDUuNTk4MDVDOS4wNzgyMyA1LjQxMjE1IDkuMDcwNTQgNS4yMjIwOSA5LjE1MDA0IDUuMDI3ODdDOS4yMjk1MiA0LjgzMzY0IDkuMzcwNTQgNC43MDQ0NyA5LjU3MzA5IDQuNjQwMzdDOS45NjAyNyA0LjUwNzA0IDEwLjM1MjMgNC40MDg2NCAxMC43NDkxIDQuMzQ1MThDMTEuMTQ1OCA0LjI4MTczIDExLjU0NjIgNC4yNSAxMS45NSA0LjI1QzE0LjExMjggNC4yNSAxNS45NTM1IDUuMDAyNTYgMTcuNDcyMSA2LjUwNzY4QzE4Ljk5MDcgOC4wMTI4MSAxOS43NSA5Ljg0MzU3IDE5Ljc1IDEyVjEyLjc4MDhMMjEuMDczMSAxMS40NTc3QzIxLjIxMTYgMTEuMzE5MiAyMS4zODU2IDExLjI0ODQgMjEuNTk1MiAxMS4yNDUyQzIxLjgwNDggMTEuMjQyIDIxLjk4MiAxMS4zMTI4IDIyLjEyNjkgMTEuNDU3N0MyMi4yNzE4IDExLjYwMjUgMjIuMzQ0MiAxMS43NzgyIDIyLjM0NDIgMTEuOTg0NkMyMi4zNDQyIDEyLjE5MSAyMi4yNzE4IDEyLjM2NjYgMjIuMTI2OSAxMi41MTE1TDE5LjYzMjcgMTUuMDA1N0MxOS40NTE5IDE1LjE4NjUgMTkuMjQxIDE1LjI3NjkgMTkgMTUuMjc2OUMxOC43NTkgMTUuMjc2OSAxOC41NDgxIDE1LjE4NjUgMTguMzY3MyAxNS4wMDU3TDE1Ljg3MzEgMTIuNTExNUMxNS43MzQ2IDEyLjM3MzEgMTUuNjYzOCAxMi4xOTkgMTUuNjYwNiAxMS45ODk0QzE1LjY1NzQgMTEuNzc5OCAxNS43MjgyIDExLjYwMjUgMTUuODczMSAxMS40NTc3QzE2LjAxOCAxMS4zMTI4IDE2LjE5MzYgMTEuMjQwNCAxNi40IDExLjI0MDRDMTYuNjA2NCAxMS4yNDA0IDE2Ljc4MiAxMS4zMTI4IDE2LjkyNjkgMTEuNDU3N0wxOC4yNSAxMi43ODA4VjEyQzE4LjI1IDEwLjI2MjggMTcuNjM4NSA4Ljc4NjgzIDE2LjQxNTQgNy41NzIwN0MxNS4xOTIzIDYuMzU3MzIgMTMuNzAzOSA1Ljc0OTk1IDExLjk1IDUuNzQ5OTVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJtMTAuNTggMTQuMTQ2LTIuMzIyLTIuMzIzYS43MjQuNzI0IDAgMCAwLS41MjItLjIxMi43MDcuNzA3IDAgMCAwLS41MzIuMjEyLjcxNy43MTcgMCAwIDAtLjIxNy41MjdjMCAuMjA2LjA3Mi4zODIuMjE3LjUyN2wyLjc0NCAyLjc0NGEuODcuODcgMCAwIDAgLjYzMy4yNzFjLjI0IDAgLjQ1Mi0uMDkuNjMyLS4yN2w1LjU2NC01LjU2NGEuNzI1LjcyNSAwIDAgMCAuMjEyLS41MjIuNzA3LjcwNyAwIDAgMC0uMjEyLS41MzIuNzE4LjcxOCAwIDAgMC0uNTI3LS4yMTcuNzE3LjcxNyAwIDAgMC0uNTI3LjIxN2wtNS4xNDIgNS4xNDJabTEuNDIyIDcuMzU0YTkuMjU1IDkuMjU1IDAgMCAxLTMuNzA1LS43NDggOS41OTggOS41OTggMCAwIDEtMy4wMTgtMi4wMyA5LjU5MSA5LjU5MSAwIDAgMS0yLjAzLTMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxLS43NDktMy43MDRjMC0xLjMxNC4yNS0yLjU1Ljc0OC0zLjcwNWE5LjU5NyA5LjU5NyAwIDAgMSAyLjAzLTMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxIDMuMDE2LTIuMDMgOS4yNDUgOS4yNDUgMCAwIDEgMy43MDQtLjc0OWMxLjMxNCAwIDIuNTUuMjUgMy43MDUuNzQ4YTkuNTk3IDkuNTk3IDAgMCAxIDMuMDE4IDIuMDMgOS41OTIgOS41OTIgMCAwIDEgMi4wMyAzLjAxNiA5LjI0NSA5LjI0NSAwIDAgMSAuNzQ5IDMuNzA0YzAgMS4zMTQtLjI1IDIuNTUtLjc0OCAzLjcwNWE5LjU5OCA5LjU5OCAwIDAgMS0yLjAzIDMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxLTMuMDE2IDIuMDMgOS4yNDUgOS4yNDUgMCAwIDEtMy43MDQuNzQ5WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk03LjMwOCAyMC41Yy0uNTA1IDAtLjkzMy0uMTc1LTEuMjgzLS41MjVhMS43NDUgMS43NDUgMCAwIDEtLjUyNS0xLjI4M1Y2aC0uMjVhLjcyNi43MjYgMCAwIDEtLjUzNS0uMjE1LjcyNi43MjYgMCAwIDEtLjIxNS0uNTM1LjczLjczIDAgMCAxIC4yMTUtLjUzNS43MjYuNzI2IDAgMCAxIC41MzUtLjIxNUg5YS44NC44NCAwIDAgMSAuMjYzLS42My44ODkuODg5IDAgMCAxIC42NC0uMjU1aDQuMTkzYy4yNTEgMCAuNDY1LjA4NS42NC4yNTRBLjg0Ljg0IDAgMCAxIDE1IDQuNWgzLjc1YS43My43MyAwIDAgMSAuNTM1LjIxNS43MjYuNzI2IDAgMCAxIC4yMTUuNTM1LjcyNi43MjYgMCAwIDEtLjIxNS41MzUuNzI2LjcyNiAwIDAgMS0uNTM1LjIxNWgtLjI1djEyLjY5MmMwIC41MDYtLjE3NS45MzMtLjUyNSAxLjI4My0uMzUuMzUtLjc3OC41MjUtMS4yODMuNTI1SDcuMzA4Wk03IDZ2MTIuNjkyYS4zLjMgMCAwIDAgLjA4Ny4yMjEuMy4zIDAgMCAwIC4yMi4wODdoOS4zODVhLjMuMyAwIDAgMCAuMjIxLS4wODcuMy4zIDAgMCAwIC4wODctLjIyVjZIN1ptMi40MDQgMTAuMjVhLjczLjczIDAgMCAwIC4yMTUuNTM1LjcyNi43MjYgMCAwIDAgLjUzNS4yMTUuNzI2LjcyNiAwIDAgMCAuNTM0LS4yMTUuNzI2LjcyNiAwIDAgMCAuMjE2LS41MzV2LTcuNWEuNzI2LjcyNiAwIDAgMC0uMjE2LS41MzUuNzI2LjcyNiAwIDAgMC0uNTM0LS4yMTUuNzI2LjcyNiAwIDAgMC0uNTM1LjIxNS43MjYuNzI2IDAgMCAwLS4yMTUuNTM1djcuNVptMy42OTIgMGMwIC4yMTMuMDcyLjM5MS4yMTYuNTM1YS43MjYuNzI2IDAgMCAwIC41MzQuMjE1LjcyNi43MjYgMCAwIDAgLjUzNS0uMjE1LjcyNi43MjYgMCAwIDAgLjIxNS0uNTM1di03LjVhLjcyNi43MjYgMCAwIDAtLjIxNS0uNTM1LjcyNi43MjYgMCAwIDAtLjUzNS0uMjE1LjcyNi43MjYgMCAwIDAtLjUzNC4yMTUuNzI2LjcyNiAwIDAgMC0uMjE2LjUzNXY3LjVaTTcgNnYxMi42OTJhLjMuMyAwIDAgMCAuMDg3LjIyMS4zLjMgMCAwIDAgLjIyLjA4N0g3VjZaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTEyIDE2Ljc1YS43MjYuNzI2IDAgMCAwIC41MzUtLjIxNi43MjYuNzI2IDAgMCAwIC4yMTUtLjUzNHYtNC4yNWEuNzI2LjcyNiAwIDAgMC0uMjE2LS41MzRBLjcyNy43MjcgMCAwIDAgMTIgMTFhLjcyNS43MjUgMCAwIDAtLjUzNS4yMTYuNzI2LjcyNiAwIDAgMC0uMjE1LjUzNFYxNmMwIC4yMTIuMDcyLjM5LjIxNi41MzRhLjcyNi43MjYgMCAwIDAgLjUzNC4yMTZabTAtNy40NjJhLjc4Ljc4IDAgMCAwIC41NzUtLjIzMi43ODEuNzgxIDAgMCAwIC4yMzMtLjU3NS43ODIuNzgyIDAgMCAwLS4yMzItLjU3Ni43ODIuNzgyIDAgMCAwLS41NzYtLjIzMi43ODEuNzgxIDAgMCAwLS41NzUuMjMyLjc4Mi43ODIgMCAwIDAtLjIzMy41NzZjMCAuMjI5LjA3OC40Mi4yMzIuNTc1YS43ODEuNzgxIDAgMCAwIC41NzYuMjMyWm0uMDAyIDEyLjIxMmE5LjI1NSA5LjI1NSAwIDAgMS0zLjcwNS0uNzQ4IDkuNTk4IDkuNTk4IDAgMCAxLTMuMDE4LTIuMDMgOS41OTEgOS41OTEgMCAwIDEtMi4wMy0zLjAxNiA5LjI0NSA5LjI0NSAwIDAgMS0uNzQ5LTMuNzA0YzAtMS4zMTQuMjUtMi41NS43NDgtMy43MDVhOS41OTcgOS41OTcgMCAwIDEgMi4wMy0zLjAxOCA5LjU5MiA5LjU5MiAwIDAgMSAzLjAxNi0yLjAzIDkuMjQ1IDkuMjQ1IDAgMCAxIDMuNzA0LS43NDljMS4zMTQgMCAyLjU1LjI1IDMuNzA1Ljc0OGE5LjU5NyA5LjU5NyAwIDAgMSAzLjAxOCAyLjAzIDkuNTkyIDkuNTkyIDAgMCAxIDIuMDMgMy4wMTYgOS4yNDUgOS4yNDUgMCAwIDEgLjc0OSAzLjcwNGMwIDEuMzE0LS4yNSAyLjU1LS43NDggMy43MDVhOS41OTggOS41OTggMCAwIDEtMi4wMyAzLjAxOCA5LjU5MiA5LjU5MiAwIDAgMS0zLjAxNiAyLjAzIDkuMjQ1IDkuMjQ1IDAgMCAxLTMuNzA0Ljc0OVpNMTIgMjBjMi4yMzMgMCA0LjEyNS0uNzc1IDUuNjc1LTIuMzI1QzE5LjIyNSAxNi4xMjUgMjAgMTQuMjMzIDIwIDEyYzAtMi4yMzMtLjc3NS00LjEyNS0yLjMyNS01LjY3NUMxNi4xMjUgNC43NzUgMTQuMjMzIDQgMTIgNGMtMi4yMzMgMC00LjEyNS43NzUtNS42NzUgMi4zMjVDNC43NzUgNy44NzUgNCA5Ljc2NyA0IDEyYzAgMi4yMzMuNzc1IDQuMTI1IDIuMzI1IDUuNjc1QzcuODc1IDE5LjIyNSA5Ljc2NyAyMCAxMiAyMFpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTdhLjk3Ljk3IDAgMCAwIC43MTMtLjI4OEEuOTY4Ljk2OCAwIDAgMCAxMyAxNnYtNGEuOTY4Ljk2OCAwIDAgMC0uMjg3LS43MTNBLjk2OC45NjggMCAwIDAgMTIgMTFhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2OC45NjggMCAwIDAgMTEgMTJ2NGMwIC4yODMuMDk2LjUyLjI4Ny43MTIuMTkyLjE5Mi40My4yODguNzEzLjI4OFptMC04Yy4yODMgMCAuNTItLjA5Ni43MTMtLjI4N0EuOTY3Ljk2NyAwIDAgMCAxMyA4YS45NjcuOTY3IDAgMCAwLS4yODctLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiA3YS45NjguOTY4IDAgMCAwLS43MTMuMjg3QS45NjcuOTY3IDAgMCAwIDExIDhjMCAuMjgzLjA5Ni41Mi4yODcuNzEzLjE5Mi4xOTEuNDMuMjg3LjcxMy4yODdabTAgMTNhOS43MzggOS43MzggMCAwIDEtMy45LS43ODggMTAuMDk5IDEwLjA5OSAwIDAgMS0zLjE3NS0yLjEzN2MtLjktLjktMS42MTItMS45NTgtMi4xMzctMy4xNzVBOS43MzggOS43MzggMCAwIDEgMiAxMmE5Ljc0IDkuNzQgMCAwIDEgLjc4OC0zLjkgMTAuMDk5IDEwLjA5OSAwIDAgMSAyLjEzNy0zLjE3NWMuOS0uOSAxLjk1OC0xLjYxMiAzLjE3NS0yLjEzN0E5LjczOCA5LjczOCAwIDAgMSAxMiAyYTkuNzQgOS43NCAwIDAgMSAzLjkuNzg4IDEwLjA5OCAxMC4wOTggMCAwIDEgMy4xNzUgMi4xMzdjLjkuOSAxLjYxMyAxLjk1OCAyLjEzNyAzLjE3NUE5LjczOCA5LjczOCAwIDAgMSAyMiAxMmE5LjczOCA5LjczOCAwIDAgMS0uNzg4IDMuOSAxMC4wOTggMTAuMDk4IDAgMCAxLTIuMTM3IDMuMTc1Yy0uOS45LTEuOTU4IDEuNjEzLTMuMTc1IDIuMTM3QTkuNzM4IDkuNzM4IDAgMCAxIDEyIDIyWlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk0xMiAxNC42NzdhLjkzLjkzIDAgMCAxLS4zNC0uMDY2Ljg0Ljg0IDAgMCAxLS4yOTMtLjE5TDYuODczIDkuOTI3YS43MTcuNzE3IDAgMCAxLS4yMTctLjUyN2MwLS4yMDYuMDcyLS4zODIuMjE3LS41MjdhLjcxNy43MTcgMCAwIDEgLjUyNy0uMjE3Yy4yMDYgMCAuMzgyLjA3Mi41MjcuMjE3TDEyIDEyLjk0Nmw0LjA3My00LjA3M2EuNzE3LjcxNyAwIDAgMSAuNTI3LS4yMTdjLjIwNiAwIC4zODIuMDcyLjUyNy4yMTcuMTQ1LjE0NS4yMTcuMzIuMjE3LjUyN2EuNzE3LjcxNyAwIDAgMS0uMjE3LjUyN2wtNC40OTQgNC40OTRhLjgzLjgzIDAgMCAxLS42MzMuMjU2WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA2NFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA2NClcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5OCAxMy41QzExLjMwMTEgMTMuNSAxMC43MDk4IDEzLjI1OCAxMC4yMjU4IDEyLjc3NEM5Ljc0MTgxIDEyLjI5IDkuNDk5ODMgMTEuNjk4NyA5LjQ5OTgzIDExVjQuOTk5OTdDOS40OTk4MyA0LjMwMTI3IDkuNzQxODEgMy43MDk5MyAxMC4yMjU4IDMuMjI1OTVDMTAuNzA5OCAyLjc0MTk4IDExLjMwMTEgMi41IDExLjk5OTggMi41QzEyLjY5ODUgMi41IDEzLjI4OTggMi43NDE5OCAxMy43NzM4IDMuMjI1OTVDMTQuMjU3OCAzLjcwOTkzIDE0LjQ5OTggNC4zMDEyNyAxNC40OTk4IDQuOTk5OTdWMTFDMTQuNDk5OCAxMS42OTg3IDE0LjI1NzggMTIuMjkgMTMuNzczOCAxMi43NzRDMTMuMjg5OCAxMy4yNTggMTIuNjk4NSAxMy41IDExLjk5OTggMTMuNVpNMTEuOTk5OCAyMC43NUMxMS43ODcgMjAuNzUgMTEuNjA4OCAyMC42NzgyIDExLjQ2NTIgMjAuNTM0NkMxMS4zMjE2IDIwLjM5MSAxMS4yNDk4IDIwLjIxMjggMTEuMjQ5OCAyMFYxNy40NTc2QzkuNzM4MyAxNy4yODMzIDguNDUzNjggMTYuNjY3MyA3LjM5NTk4IDE1LjYwOTZDNi4zMzgzIDE0LjU1MTkgNS43MjE2NCAxMy4yODA3IDUuNTQ2IDExLjc5NjFDNS41MTUyMiAxMS41ODMzIDUuNTc0MTkgMTEuMzk3NCA1LjcyMjkgMTEuMjM4NEM1Ljg3MTYyIDExLjA3OTUgNi4wNjc3NyAxMSA2LjMxMTM1IDExQzYuNDg2OTkgMTEgNi42NDQwNCAxMS4wNjY2IDYuNzgyNSAxMS4yQzYuOTIwOTUgMTEuMzMzMyA3LjAwODc3IDExLjQ5NjEgNy4wNDU5NSAxMS42ODg0QzcuMjExMzQgMTIuOTA2NCA3Ljc2MTk4IDEzLjkyOTUgOC42OTc4OCAxNC43NTc3QzkuNjMzNzggMTUuNTg1OSAxMC43MzQ0IDE2IDExLjk5OTggMTZDMTMuMjY1MiAxNiAxNC4zNjU4IDE1LjU4NTkgMTUuMzAxNyAxNC43NTc3QzE2LjIzNzYgMTMuOTI5NSAxNi43ODgzIDEyLjkwNjQgMTYuOTUzNyAxMS42ODg0QzE2Ljk5MDggMTEuNDk2MSAxNy4wNzk2IDExLjMzMzMgMTcuMjIgMTEuMkMxNy4zNjA0IDExLjA2NjYgMTcuNTIxNiAxMSAxNy43MDM2IDExQzE3LjkzNyAxMSAxOC4xMjggMTEuMDc5NSAxOC4yNzY3IDExLjIzODRDMTguNDI1NCAxMS4zOTc0IDE4LjQ4NDQgMTEuNTgzMyAxOC40NTM2IDExLjc5NjFDMTguMjc4IDEzLjI4MDcgMTcuNjYxMyAxNC41NTE5IDE2LjYwMzYgMTUuNjA5NkMxNS41NDU5IDE2LjY2NzMgMTQuMjYxMyAxNy4yODMzIDEyLjc0OTggMTcuNDU3NlYyMEMxMi43NDk4IDIwLjIxMjggMTIuNjc4IDIwLjM5MSAxMi41MzQ0IDIwLjUzNDZDMTIuMzkwOCAyMC42NzgyIDEyLjIxMjYgMjAuNzUgMTEuOTk5OCAyMC43NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA2MVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA2MSlcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5OCAxMy41QzExLjMwMTEgMTMuNSAxMC43MDk4IDEzLjI1OCAxMC4yMjU4IDEyLjc3NEM5Ljc0MTgxIDEyLjI5IDkuNDk5ODMgMTEuNjk4NyA5LjQ5OTgzIDExVjQuOTk5OTdDOS40OTk4MyA0LjMwMTI3IDkuNzQxODEgMy43MDk5MyAxMC4yMjU4IDMuMjI1OTVDMTAuNzA5OCAyLjc0MTk4IDExLjMwMTEgMi41IDExLjk5OTggMi41QzEyLjY5ODUgMi41IDEzLjI4OTggMi43NDE5OCAxMy43NzM4IDMuMjI1OTVDMTQuMjU3OCAzLjcwOTkzIDE0LjQ5OTggNC4zMDEyNyAxNC40OTk4IDQuOTk5OTdWMTFDMTQuNDk5OCAxMS42OTg3IDE0LjI1NzggMTIuMjkgMTMuNzczOCAxMi43NzRDMTMuMjg5OCAxMy4yNTggMTIuNjk4NSAxMy41IDExLjk5OTggMTMuNVpNMTEuOTk5OCAyMC43NUMxMS43ODcgMjAuNzUgMTEuNjA4OCAyMC42NzgyIDExLjQ2NTIgMjAuNTM0NkMxMS4zMjE2IDIwLjM5MSAxMS4yNDk4IDIwLjIxMjggMTEuMjQ5OCAyMFYxNy40NTM4QzkuNzM4MyAxNy4yNzU2IDguNDUzNjggMTYuNjU5MiA3LjM5NTk4IDE1LjYwNDdDNi4zMzgzIDE0LjU1MDMgNS43MjE2NCAxMy4yODA3IDUuNTQ2IDExLjc5NjFDNS41MTUyMiAxMS41ODMzIDUuNTc0MTkgMTEuMzk3NCA1LjcyMjkgMTEuMjM4NEM1Ljg3MTYyIDExLjA3OTUgNi4wNjc3NyAxMSA2LjMxMTM1IDExQzYuNDg2OTkgMTEgNi42NDQwNCAxMS4wNjY2IDYuNzgyNSAxMS4yQzYuOTIwOTUgMTEuMzMzMyA3LjAwODc3IDExLjQ5NjEgNy4wNDU5NSAxMS42ODg0QzcuMjExMzQgMTIuOTA2NCA3Ljc2MTk4IDEzLjkyOTUgOC42OTc4OCAxNC43NTc3QzkuNjMzNzggMTUuNTg1OSAxMC43MzQ0IDE2IDExLjk5OTggMTZDMTMuMjY1MiAxNiAxNC4zNjU4IDE1LjU4NTkgMTUuMzAxNyAxNC43NTc3QzE2LjIzNzYgMTMuOTI5NSAxNi43ODgzIDEyLjkwNjQgMTYuOTUzNyAxMS42ODg0QzE2Ljk5MDggMTEuNDk2MSAxNy4wNzk2IDExLjMzMzMgMTcuMjIgMTEuMkMxNy4zNjA0IDExLjA2NjYgMTcuNTIxNiAxMSAxNy43MDM2IDExQzE3LjkzNyAxMSAxOC4xMjggMTEuMDc5NSAxOC4yNzY3IDExLjIzODRDMTguNDI1NCAxMS4zOTc0IDE4LjQ4NDQgMTEuNTgzMyAxOC40NTM2IDExLjc5NjFDMTguMjc4IDEzLjI4MDcgMTcuNjYxMyAxNC41NTAzIDE2LjYwMzYgMTUuNjA0N0MxNS41NDU5IDE2LjY1OTIgMTQuMjYxMyAxNy4yNzU2IDEyLjc0OTggMTcuNDUzOFYyMEMxMi43NDk4IDIwLjIxMjggMTIuNjc4IDIwLjM5MSAxMi41MzQ0IDIwLjUzNDZDMTIuMzkwOCAyMC42NzgyIDEyLjIxMjYgMjAuNzUgMTEuOTk5OCAyMC43NVpNMTEuOTk5OCAxMkMxMi4yODMxIDEyIDEyLjUyMDYgMTEuOTA0MSAxMi43MTIzIDExLjcxMjVDMTIuOTA0IDExLjUyMDggMTIuOTk5OCAxMS4yODMzIDEyLjk5OTggMTFWNC45OTk5N0MxMi45OTk4IDQuNzE2NjQgMTIuOTA0IDQuNDc5MTQgMTIuNzEyMyA0LjI4NzQ3QzEyLjUyMDYgNC4wOTU4MSAxMi4yODMxIDMuOTk5OTcgMTEuOTk5OCAzLjk5OTk3QzExLjcxNjUgMy45OTk5NyAxMS40NzkgNC4wOTU4MSAxMS4yODczIDQuMjg3NDdDMTEuMDk1NiA0LjQ3OTE0IDEwLjk5OTggNC43MTY2NCAxMC45OTk4IDQuOTk5OTdWMTFDMTAuOTk5OCAxMS4yODMzIDExLjA5NTYgMTEuNTIwOCAxMS4yODczIDExLjcxMjVDMTEuNDc5IDExLjkwNDEgMTEuNzE2NSAxMiAxMS45OTk4IDEyWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDczXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDczKVwiPlxuPHBhdGggZD1cIk0xNy4yNDAzIDE0LjE4MDdMMTYuMTM2NSAxMy4wNTc2QzE2LjI0MTcgMTIuODY1MyAxNi4zMzU2IDEyLjY1MzUgMTYuNDE4MiAxMi40MjIxQzE2LjUwMDkgMTIuMTkwNyAxNi41NjA5IDExLjk0NjEgMTYuNTk4IDExLjY4ODRDMTYuNjM1MiAxMS40OTYxIDE2LjcyNCAxMS4zMzMzIDE2Ljg2NDQgMTEuMkMxNy4wMDQ4IDExLjA2NjYgMTcuMTY2IDExIDE3LjM0OCAxMUMxNy41ODE0IDExIDE3Ljc3MjQgMTEuMDc5NSAxNy45MjExIDExLjIzODRDMTguMDY5OCAxMS4zOTc0IDE4LjEyODggMTEuNTgzMyAxOC4wOTggMTEuNzk2MUMxOC4wNDAzIDEyLjI1MjUgMTcuOTM3MSAxMi42NzY1IDE3Ljc4ODQgMTMuMDY4MkMxNy42Mzk3IDEzLjQ1OTkgMTcuNDU3IDEzLjgzMDcgMTcuMjQwMyAxNC4xODA3Wk0xNC4wMjExIDEwLjkzMDdMMTIuNjQ0MiA5LjU1Mzc4VjQuOTk5OTdDMTIuNjQ0MiA0LjcxNjY0IDEyLjU0ODQgNC40NzkxNCAxMi4zNTY3IDQuMjg3NDdDMTIuMTY1IDQuMDk1ODEgMTEuOTI3NSAzLjk5OTk3IDExLjY0NDIgMy45OTk5N0MxMS4zNjA5IDMuOTk5OTcgMTEuMTIzNCA0LjA5NTgxIDEwLjkzMTcgNC4yODc0N0MxMC43NCA0LjQ3OTE0IDEwLjY0NDIgNC43MTY2NCAxMC42NDQyIDQuOTk5OTdWNy41MzQ1NUw5LjE0NDI0IDYuMDM0NTdWNC45OTk5N0M5LjE0NDI0IDQuMzAxMjggOS4zODYyMyAzLjcwOTkzIDkuODcwMTkgMy4yMjU5NUMxMC4zNTQyIDIuNzQxOTggMTAuOTQ1NSAyLjUgMTEuNjQ0MiAyLjVDMTIuMzQyOSAyLjUgMTIuOTM0MyAyLjc0MTk4IDEzLjQxODIgMy4yMjU5NUMxMy45MDIyIDMuNzA5OTMgMTQuMTQ0MiA0LjMwMTI4IDE0LjE0NDIgNC45OTk5N1YxMC4zNDYxQzE0LjE0NDIgMTAuNDU4OSAxNC4xMzEzIDEwLjU2MTUgMTQuMTA1NyAxMC42NTM4QzE0LjA4MDEgMTAuNzQ2MSAxNC4wNTE5IDEwLjgzODQgMTQuMDIxMSAxMC45MzA3Wk0xOS4zNDA0IDIxLjE4ODRMMi4yMDU3NyA0LjA1Mzc1QzIuMDY3MzIgMy45MTUzIDEuOTk2NDggMy43NDEyNyAxLjk5MzI3IDMuNTMxNjVDMS45OTAwNyAzLjMyMjA1IDIuMDYwOSAzLjE0NDgyIDIuMjA1NzcgMi45OTk5NUMyLjM1MDYzIDIuODU1MDcgMi41MjYyNyAyLjc4MjYyIDIuNzMyNjcgMi43ODI2MkMyLjkzOTA4IDIuNzgyNjIgMy4xMTQ3MyAyLjg1NTA3IDMuMjU5NTkgMi45OTk5NUwyMC4zOTQyIDIwLjEzNDZDMjAuNTMyNyAyMC4yNzMgMjAuNjAzNSAyMC40NDcxIDIwLjYwNjcgMjAuNjU2N0MyMC42MDk5IDIwLjg2NjMgMjAuNTM5MSAyMS4wNDM1IDIwLjM5NDIgMjEuMTg4NEMyMC4yNDkzIDIxLjMzMzMgMjAuMDczNyAyMS40MDU3IDE5Ljg2NzMgMjEuNDA1N0MxOS42NjA5IDIxLjQwNTcgMTkuNDg1MyAyMS4zMzMzIDE5LjM0MDQgMjEuMTg4NFpNMTAuODk0MiAyMFYxNy40NTM4QzkuMzgyNjggMTcuMjc1NiA4LjA5ODA3IDE2LjY1OTIgNy4wNDAzNyAxNS42MDQ3QzUuOTgyNjggMTQuNTUwMyA1LjM2NjAzIDEzLjI4MDcgNS4xOTAzOSAxMS43OTYxQzUuMTU5NjMgMTEuNTgzMyA1LjIxODYgMTEuMzk3NCA1LjM2NzMyIDExLjIzODRDNS41MTYwMiAxMS4wNzk1IDUuNzEyMTYgMTEgNS45NTU3NCAxMUM2LjEzMTM5IDExIDYuMjg4NDQgMTEuMDY2NiA2LjQyNjg5IDExLjJDNi41NjUzNiAxMS4zMzMzIDYuNjUzMTggMTEuNDk2MSA2LjY5MDM0IDExLjY4ODRDNi44NTU3MyAxMi45MDY0IDcuNDA2MzcgMTMuOTI5NSA4LjM0MjI3IDE0Ljc1NzdDOS4yNzgxNyAxNS41ODU5IDEwLjM3ODggMTYgMTEuNjQ0MiAxNkMxMi4yODc4IDE2IDEyLjg5MjYgMTUuODg1MiAxMy40NTg2IDE1LjY1NTdDMTQuMDI0NyAxNS40MjYyIDE0LjUyNTYgMTUuMTA4MyAxNC45NjE1IDE0LjcwMTlMMTYuMDMwNyAxNS43NzExQzE1LjU0NzQgMTYuMjI0OSAxNC45OTc0IDE2LjYwMTIgMTQuMzgwNyAxNi45QzEzLjc2NDEgMTcuMTk4NyAxMy4xMDE5IDE3LjM4MzMgMTIuMzk0MiAxNy40NTM4VjIwQzEyLjM5NDIgMjAuMjEyOCAxMi4zMjI0IDIwLjM5MSAxMi4xNzg4IDIwLjUzNDZDMTIuMDM1MiAyMC42NzgyIDExLjg1NyAyMC43NSAxMS42NDQyIDIwLjc1QzExLjQzMTQgMjAuNzUgMTEuMjUzMiAyMC42NzgyIDExLjEwOTYgMjAuNTM0NkMxMC45NjYgMjAuMzkxIDEwLjg5NDIgMjAuMjEyOCAxMC44OTQyIDIwWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDY3XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDY3KVwiPlxuPHBhdGggZD1cIk0xNy4yNDAzIDE0LjE4MDdMMTYuMTM2NSAxMy4wNTc2QzE2LjI0MTcgMTIuODY1MyAxNi4zMzU2IDEyLjY1MzUgMTYuNDE4MiAxMi40MjIxQzE2LjUwMDkgMTIuMTkwNyAxNi41NjA5IDExLjk0NjEgMTYuNTk4IDExLjY4ODRDMTYuNjM1MiAxMS40OTYxIDE2LjcyNCAxMS4zMzMzIDE2Ljg2NDQgMTEuMkMxNy4wMDQ4IDExLjA2NjYgMTcuMTY2IDExIDE3LjM0OCAxMUMxNy41ODE0IDExIDE3Ljc3MjQgMTEuMDc5NSAxNy45MjExIDExLjIzODRDMTguMDY5OCAxMS4zOTc0IDE4LjEyODggMTEuNTgzMyAxOC4wOTggMTEuNzk2MUMxOC4wNDAzIDEyLjI1MjUgMTcuOTM3MSAxMi42NzY1IDE3Ljc4ODQgMTMuMDY4MkMxNy42Mzk3IDEzLjQ1OTkgMTcuNDU3IDEzLjgzMDcgMTcuMjQwMyAxNC4xODA3Wk0xNC4wMjExIDEwLjkzMDdMOS4xNDQyNCA2LjAzNDU3VjQuOTk5OTdDOS4xNDQyNCA0LjMwMTI4IDkuMzg2MjMgMy43MDk5MyA5Ljg3MDE5IDMuMjI1OTVDMTAuMzU0MiAyLjc0MTk4IDEwLjk0NTUgMi41IDExLjY0NDIgMi41QzEyLjM0MjkgMi41IDEyLjkzNDMgMi43NDE5OCAxMy40MTgyIDMuMjI1OTVDMTMuOTAyMiAzLjcwOTkzIDE0LjE0NDIgNC4zMDEyOCAxNC4xNDQyIDQuOTk5OTdWMTAuMzQ2MUMxNC4xNDQyIDEwLjQ1ODkgMTQuMTMxMyAxMC41NjE1IDE0LjEwNTcgMTAuNjUzOEMxNC4wODAxIDEwLjc0NjEgMTQuMDUxOSAxMC44Mzg0IDE0LjAyMTEgMTAuOTMwN1pNMTkuMzQwNCAyMS4xODg0TDIuMjA1NzcgNC4wNTM3NUMyLjA2NzMyIDMuOTE1MyAxLjk5NjQ4IDMuNzQxMjcgMS45OTMyNyAzLjUzMTY1QzEuOTkwMDcgMy4zMjIwNSAyLjA2MDkgMy4xNDQ4MiAyLjIwNTc3IDIuOTk5OTVDMi4zNTA2MyAyLjg1NTA3IDIuNTI2MjcgMi43ODI2MiAyLjczMjY3IDIuNzgyNjJDMi45MzkwOCAyLjc4MjYyIDMuMTE0NzMgMi44NTUwNyAzLjI1OTU5IDIuOTk5OTVMMjAuMzk0MiAyMC4xMzQ2QzIwLjUzMjcgMjAuMjczIDIwLjYwMzUgMjAuNDQ3MSAyMC42MDY3IDIwLjY1NjdDMjAuNjA5OSAyMC44NjYzIDIwLjUzOTEgMjEuMDQzNSAyMC4zOTQyIDIxLjE4ODRDMjAuMjQ5MyAyMS4zMzMzIDIwLjA3MzcgMjEuNDA1NyAxOS44NjczIDIxLjQwNTdDMTkuNjYwOSAyMS40MDU3IDE5LjQ4NTMgMjEuMzMzMyAxOS4zNDA0IDIxLjE4ODRaTTEwLjg5NDIgMjBWMTcuNDU3NkM5LjM4MjY4IDE3LjI4MzMgOC4wOTgwNyAxNi42NjczIDcuMDQwMzcgMTUuNjA5NkM1Ljk4MjY4IDE0LjU1MTkgNS4zNjYwMyAxMy4yODA3IDUuMTkwMzkgMTEuNzk2MUM1LjE1OTYzIDExLjU4MzMgNS4yMTg2IDExLjM5NzQgNS4zNjczMiAxMS4yMzg0QzUuNTE2MDIgMTEuMDc5NSA1LjcxMjE2IDExIDUuOTU1NzQgMTFDNi4xMzEzOSAxMSA2LjI4ODQ0IDExLjA2NjYgNi40MjY4OSAxMS4yQzYuNTY1MzYgMTEuMzMzMyA2LjY1MzE4IDExLjQ5NjEgNi42OTAzNCAxMS42ODg0QzYuODU1NzMgMTIuOTA2NCA3LjQwNjM3IDEzLjkyOTUgOC4zNDIyNyAxNC43NTc3QzkuMjc4MTcgMTUuNTg1OSAxMC4zNzg4IDE2IDExLjY0NDIgMTZDMTIuMjg3OCAxNiAxMi44OTI2IDE1Ljg4NTIgMTMuNDU4NiAxNS42NTU3QzE0LjAyNDcgMTUuNDI2MiAxNC41MjU2IDE1LjEwODMgMTQuOTYxNSAxNC43MDE5TDE2LjAzMDcgMTUuNzcxMUMxNS41NDc0IDE2LjIyNDkgMTQuOTk3NCAxNi41OTg2IDE0LjM4MDcgMTYuODkyMkMxMy43NjQxIDE3LjE4NTggMTMuMTAxOSAxNy4zNzQzIDEyLjM5NDIgMTcuNDU3NlYyMEMxMi4zOTQyIDIwLjIxMjggMTIuMzIyNCAyMC4zOTEgMTIuMTc4OCAyMC41MzQ2QzEyLjAzNTIgMjAuNjc4MiAxMS44NTcgMjAuNzUgMTEuNjQ0MiAyMC43NUMxMS40MzE0IDIwLjc1IDExLjI1MzIgMjAuNjc4MiAxMS4xMDk2IDIwLjUzNDZDMTAuOTY2IDIwLjM5MSAxMC44OTQyIDIwLjIxMjggMTAuODk0MiAyMFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0MFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0MClcIj5cbjxwYXRoIGQ9XCJNNC41NDc5MSAxOS41QzQuMDQyNzggMTkuNSAzLjYxNTIxIDE5LjMyNSAzLjI2NTIxIDE4Ljk3NUMyLjkxNTIzIDE4LjYyNSAyLjc0MDIzIDE4LjE5NzQgMi43NDAyMyAxNy42OTIyVjYuMzA3N0MyLjc0MDIzIDUuODAyNTcgMi45MTUyMyA1LjM3NSAzLjI2NTIxIDUuMDI1QzMuNjE1MjEgNC42NzUgNC4wNDI3OCA0LjUgNC41NDc5MSA0LjVIMTUuOTMyNUMxNi40Mzc2IDQuNSAxNi44NjUyIDQuNjc1IDE3LjIxNTIgNS4wMjVDMTcuNTY1MiA1LjM3NSAxNy43NDAyIDUuODAyNTcgMTcuNzQwMiA2LjMwNzdWMTAuODg0NkwyMC40NzY3IDguMTQ4MUMyMC42MjAyIDguMDA0NTIgMjAuNzg2NiA3Ljk3MDIyIDIwLjk3NTcgOC4wNDUyMkMyMS4xNjQ4IDguMTIwMjIgMjEuMjU5MyA4LjI2NDc3IDIxLjI1OTMgOC40Nzg4N1YxNS41MjExQzIxLjI1OTMgMTUuNzM1MiAyMS4xNjQ4IDE1Ljg3OTcgMjAuOTc1NyAxNS45NTQ3QzIwLjc4NjYgMTYuMDI5NyAyMC42MjAyIDE1Ljk5NTQgMjAuNDc2NyAxNS44NTE5TDE3Ljc0MDIgMTMuMTE1M1YxNy42OTIyQzE3Ljc0MDIgMTguMTk3NCAxNy41NjUyIDE4LjYyNSAxNy4yMTUyIDE4Ljk3NUMxNi44NjUyIDE5LjMyNSAxNi40Mzc2IDE5LjUgMTUuOTMyNSAxOS41SDQuNTQ3OTFaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwMzRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwMzQpXCI+XG48cGF0aCBkPVwiTTQuNTQ3OTEgMTkuNUM0LjA0Mjc4IDE5LjUgMy42MTUyMSAxOS4zMjUgMy4yNjUyMSAxOC45NzVDMi45MTUyMyAxOC42MjUgMi43NDAyMyAxOC4xOTc0IDIuNzQwMjMgMTcuNjkyMlY2LjMwNzdDMi43NDAyMyA1LjgwMjU3IDIuOTE1MjMgNS4zNzUgMy4yNjUyMSA1LjAyNUMzLjYxNTIxIDQuNjc1IDQuMDQyNzggNC41IDQuNTQ3OTEgNC41SDE1LjkzMjVDMTYuNDM3NiA0LjUgMTYuODY1MiA0LjY3NSAxNy4yMTUyIDUuMDI1QzE3LjU2NTIgNS4zNzUgMTcuNzQwMiA1LjgwMjU3IDE3Ljc0MDIgNi4zMDc3VjEwLjg4NDZMMjAuNDc2NyA4LjE0ODFDMjAuNjMwNSA3Ljk5NDI3IDIwLjc5OTQgNy45NTc0MSAyMC45ODM0IDguMDM3NTNDMjEuMTY3NCA4LjExNzY2IDIxLjI1OTMgOC4yNjQ3NyAyMS4yNTkzIDguNDc4ODdWMTUuNTIxMUMyMS4yNTkzIDE1LjczNTIgMjEuMTY3NCAxNS44ODIzIDIwLjk4MzQgMTUuOTYyNEMyMC43OTk0IDE2LjA0MjUgMjAuNjMwNSAxNi4wMDU3IDIwLjQ3NjcgMTUuODUxOUwxNy43NDAyIDEzLjExNTNWMTcuNjkyMkMxNy43NDAyIDE4LjE5NzQgMTcuNTY1MiAxOC42MjUgMTcuMjE1MiAxOC45NzVDMTYuODY1MiAxOS4zMjUgMTYuNDM3NiAxOS41IDE1LjkzMjUgMTkuNUg0LjU0NzkxWk00LjU0NzkxIDE4SDE1LjkzMjVDMTYuMDIyMiAxOCAxNi4wOTYgMTcuOTcxMSAxNi4xNTM2IDE3LjkxMzRDMTYuMjExMyAxNy44NTU3IDE2LjI0MDIgMTcuNzgyIDE2LjI0MDIgMTcuNjkyMlY2LjMwNzdDMTYuMjQwMiA2LjIxNzk1IDE2LjIxMTMgNi4xNDQyMyAxNi4xNTM2IDYuMDg2NTJDMTYuMDk2IDYuMDI4ODIgMTYuMDIyMiA1Ljk5OTk3IDE1LjkzMjUgNS45OTk5N0g0LjU0NzkxQzQuNDU4MTYgNS45OTk5NyA0LjM4NDQzIDYuMDI4ODIgNC4zMjY3MyA2LjA4NjUyQzQuMjY5MDMgNi4xNDQyMyA0LjI0MDE4IDYuMjE3OTUgNC4yNDAxOCA2LjMwNzdWMTcuNjkyMkM0LjI0MDE4IDE3Ljc4MiA0LjI2OTAzIDE3Ljg1NTcgNC4zMjY3MyAxNy45MTM0QzQuMzg0NDMgMTcuOTcxMSA0LjQ1ODE2IDE4IDQuNTQ3OTEgMThaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNDNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNDMpXCI+XG48cGF0aCBkPVwiTTE5LjQ3MTIgMjEuNjMwN0wyLjA2MTcgNC4yMjExQzEuOTIzMjQgNC4wODI2NSAxLjg1NCAzLjkxNTM1IDEuODU0IDMuNzE5MkMxLjg1NCAzLjUyMzA1IDEuOTMxNTcgMy4zNDc0MiAyLjA4NjcgMy4xOTIzQzIuMjMxNTcgMy4wNDc0MiAyLjQwNzIgMi45NzQ5OCAyLjYxMzYgMi45NzQ5OEMyLjgyIDIuOTc0OTggMi45OTU2NCAzLjA0NzQyIDMuMTQwNSAzLjE5MjNMMjAuNTUwMSAyMC42MDE4QzIwLjY4ODUgMjAuNzQwMyAyMC43NTc3IDIwLjkwNzYgMjAuNzU3NyAyMS4xMDM3QzIwLjc1NzcgMjEuMjk5OSAyMC42ODAyIDIxLjQ3NTUgMjAuNTI1MSAyMS42MzA3QzIwLjM4MDIgMjEuNzc1NSAyMC4yMDQ1IDIxLjg0NjQgMTkuOTk4MSAyMS44NDMyQzE5Ljc5MTcgMjEuODM5OSAxOS42MTYxIDIxLjc2OTEgMTkuNDcxMiAyMS42MzA3Wk0xNy43OTQzIDE1LjAxMTVMNy4yODI4MyA0LjQ5OTk4SDE1Ljk4NjZDMTYuNDkxOCA0LjQ5OTk4IDE2LjkxOTMgNC42NzQ5OCAxNy4yNjkzIDUuMDI0OThDMTcuNjE5MyA1LjM3NDk4IDE3Ljc5NDMgNS44MDI1NCAxNy43OTQzIDYuMzA3NjhWMTAuODg0NkwyMC41MzA4IDguMTQ4MDhDMjAuNjc0NCA4LjAwNDQ5IDIwLjg0MDggNy45NzAyIDIxLjAyOTkgOC4wNDUyQzIxLjIxOSA4LjEyMDIgMjEuMzEzNSA4LjI2NDc1IDIxLjMxMzUgOC40Nzg4NVYxNS41MjExQzIxLjMxMzUgMTUuNzM1MiAyMS4yMTkgMTUuODc5NyAyMS4wMjk5IDE1Ljk1NDdDMjAuODQwOCAxNi4wMjk3IDIwLjY3NDQgMTUuOTk1NCAyMC41MzA4IDE1Ljg1MThMMTcuNzk0MyAxMy4xMTUzVjE1LjAxMTVaTTQuNDY3NDUgNC41MTkyM0wxNy43NzUxIDE3LjgyNjhDMTcuNzU4NCAxOC4yODMzIDE3LjU2NjEgMTguNjc2MiAxNy4xOTgyIDE5LjAwNTdDMTYuODMwMiAxOS4zMzUyIDE2LjQxOCAxOS40OTk5IDE1Ljk2MTYgMTkuNDk5OUg0LjU3NzA4QzQuMDcxOTUgMTkuNDk5OSAzLjY0NDM4IDE5LjMyNDkgMy4yOTQzOCAxOC45NzQ5QzIuOTQ0MzggMTguNjI0OSAyLjc2OTM4IDE4LjE5NzQgMi43NjkzOCAxNy42OTIyVjYuMzA3NjhDMi43NjkzOCA1Ljg1MTI2IDIuOTM2NjkgNS40MzkwOCAzLjI3MTMgNS4wNzExNUMzLjYwNTkyIDQuNzAzMiA0LjAwNDY0IDQuNTE5MjMgNC40Njc0NSA0LjUxOTIzWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDM3XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDM3KVwiPlxuPHBhdGggZD1cIk0yMC41MDU5IDE1Ljg1MThMMTcuNzY5NCAxMy4xMTUzVjE1LjAxMTVMMTYuMjY5NSAxMy41MTE1VjYuMzA3NjhDMTYuMjY5NSA2LjIxNzkzIDE2LjI0MDYgNi4xNDQyIDE2LjE4MjkgNi4wODY1QzE2LjEyNTIgNi4wMjg4IDE2LjA1MTUgNS45OTk5NSAxNS45NjE3IDUuOTk5OTVIOC43NTc4OEw3LjI1NzkzIDQuNDk5OThIMTUuOTYxN0MxNi40NjY5IDQuNDk5OTggMTYuODk0NCA0LjY3NDk4IDE3LjI0NDQgNS4wMjQ5OEMxNy41OTQ0IDUuMzc0OTggMTcuNzY5NCA1LjgwMjU0IDE3Ljc2OTQgNi4zMDc2OFYxMC44ODQ2TDIwLjUwNTkgOC4xNDgwOEMyMC42NTk4IDcuOTk0MjQgMjAuODI4NyA3Ljk1NzM4IDIxLjAxMjcgOC4wMzc1QzIxLjE5NjYgOC4xMTc2MyAyMS4yODg2IDguMjY0NzUgMjEuMjg4NiA4LjQ3ODg1VjE1LjUyMTFDMjEuMjg4NiAxNS43MzUyIDIxLjE5NjYgMTUuODgyMyAyMS4wMTI3IDE1Ljk2MjRDMjAuODI4NyAxNi4wNDI1IDIwLjY1OTggMTYuMDA1NyAyMC41MDU5IDE1Ljg1MThaTTE5LjQ0NjMgMjEuNjMwN0wyLjAzNjggNC4yMjExQzEuODk4MzMgNC4wODI2NSAxLjgyOTEgMy45MTUzNSAxLjgyOTEgMy43MTkyQzEuODI5MSAzLjUyMzA1IDEuOTA2NjcgMy4zNDc0MiAyLjA2MTggMy4xOTIzQzIuMjA2NjcgMy4wNDc0MiAyLjM4MjMgMi45NzQ5OCAyLjU4ODcgMi45NzQ5OEMyLjc5NTEgMi45NzQ5OCAyLjk3MDczIDMuMDQ3NDIgMy4xMTU2IDMuMTkyM0wyMC41MjUyIDIwLjYwMThDMjAuNjYzNiAyMC43NDAzIDIwLjczMjggMjAuOTA3NiAyMC43MzI4IDIxLjEwMzdDMjAuNzMyOCAyMS4yOTk5IDIwLjY1NTMgMjEuNDc1NSAyMC41MDAyIDIxLjYzMDdDMjAuMzU1MyAyMS43NzU1IDIwLjE3OCAyMS44NDc5IDE5Ljk2ODQgMjEuODQ3OUMxOS43NTg4IDIxLjg0NzkgMTkuNTg0OCAyMS43NzU1IDE5LjQ0NjMgMjEuNjMwN1pNNC40NDI1NSA0LjUxOTIzTDUuOTIzMjggNS45OTk5NUg0LjU3NzE4QzQuNDg3NDMgNS45OTk5NSA0LjQxMzcgNi4wMjg4IDQuMzU2IDYuMDg2NUM0LjI5ODMgNi4xNDQyIDQuMjY5NDUgNi4yMTc5MyA0LjI2OTQ1IDYuMzA3NjhWMTcuNjkyMkM0LjI2OTQ1IDE3Ljc4MiA0LjI5ODMgMTcuODU1NyA0LjM1NiAxNy45MTM0QzQuNDEzNyAxNy45NzExIDQuNDg3NDMgMTggNC41NzcxOCAxOEgxNS45NjE3QzE2LjA1MTUgMTggMTYuMTI1MiAxNy45NzExIDE2LjE4MjkgMTcuOTEzNEMxNi4yNDA2IDE3Ljg1NTcgMTYuMjY5NSAxNy43ODIgMTYuMjY5NSAxNy42OTIyVjE2LjM0NjFMMTcuNzUwMiAxNy44MjY4QzE3LjcxODEgMTguMjkzNSAxNy41MzE5IDE4LjY4OSAxNy4xOTE1IDE5LjAxMzRDMTYuODUxMSAxOS4zMzc3IDE2LjQ0MTIgMTkuNDk5OSAxNS45NjE3IDE5LjQ5OTlINC41NzcxOEM0LjA3MjA0IDE5LjQ5OTkgMy42NDQ0OCAxOS4zMjQ5IDMuMjk0NDggMTguOTc0OUMyLjk0NDQ4IDE4LjYyNDkgMi43Njk0OCAxOC4xOTc0IDIuNzY5NDggMTcuNjkyMlY2LjMwNzY4QzIuNzY5NDggNS44MjgxOSAyLjkzMTY2IDUuNDE4MjYgMy4yNTYwMyA1LjA3Nzg4QzMuNTgwMzggNC43Mzc0OSAzLjk3NTg5IDQuNTUxMjggNC40NDI1NSA0LjUxOTIzWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDU1XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDU1KVwiPlxuPHBhdGggZD1cIk0xOC45NDYyIDIxLjYxMTVMMTYuNDU3NyAxOS4xMjMxQzE2LjI1IDE5LjI0MzYgMTYuMDQzOSAxOS4zNTgzIDE1LjgzOTQgMTkuNDY3M0MxNS42MzUgMTkuNTc2MiAxNS40MjA2IDE5LjY3NzUgMTUuMTk2MiAxOS43NzExQzE0Ljk0NjIgMTkuODcyNCAxNC43MTMyIDE5Ljg0MTkgMTQuNDk3MiAxOS42Nzk4QzE0LjI4MTIgMTkuNTE3NiAxNC4xNzMyIDE5LjI5MjkgMTQuMTczMiAxOS4wMDU4QzE0LjE3MzIgMTguODY3MyAxNC4yMTQ1IDE4Ljc0NjUgMTQuMjk3MiAxOC42NDMzQzE0LjM3OTkgMTguNTQwMSAxNC40ODIxIDE4LjQ2MTUgMTQuNjAzOSAxOC40MDc3QzE0LjczNzIgMTguMzU3NyAxNC44NjggMTguMzAxOSAxNC45OTYyIDE4LjI0MDRDMTUuMTI0NCAxOC4xNzg5IDE1LjI1MDEgMTguMTExNSAxNS4zNzMxIDE4LjAzODVMMTEuNzg4NSAxNC40NTM4VjE2LjYwMzhDMTEuNzg4NSAxNy4wMDg5IDExLjYwMzYgMTcuMjg5MyAxMS4yMzM3IDE3LjQ0NTFDMTAuODYzOCAxNy42MDA5IDEwLjUzNjYgMTcuNTM2NSAxMC4yNTIgMTcuMjUxOUw3LjUwMDA4IDE0LjVINC42OTI0QzQuNDM0NzIgMTQuNSA0LjIxOTY2IDE0LjQxMzggNC4wNDcyMyAxNC4yNDEzQzMuODc0NzkgMTQuMDY4OSAzLjc4ODU4IDEzLjg1MzggMy43ODg1OCAxMy41OTYxVjEwLjQwMzlDMy43ODg1OCAxMC4xNDYyIDMuODc0NzkgOS45MzExNCA0LjA0NzIzIDkuNzU4NzFDNC4yMTk2NiA5LjU4NjI2IDQuNDM0NzIgOS41MDAwMyA0LjY5MjQgOS41MDAwM0g2LjgzNDdMMi41MjMxNSA1LjE4ODQ4QzIuMzg0NyA1LjA1MDAzIDIuMzEzODcgNC44NzYgMi4zMTA2NSA0LjY2NjM4QzIuMzA3NDUgNC40NTY3OCAyLjM3ODI4IDQuMjc5NTQgMi41MjMxNSA0LjEzNDY2QzIuNjY4MDIgMy45ODk3OSAyLjg0MzY2IDMuOTE3MzYgMy4wNTAwOCAzLjkxNzM2QzMuMjU2NDggMy45MTczNiAzLjQzMjExIDMuOTg5NzkgMy41NzY5OCA0LjEzNDY2TDIwIDIwLjU1NzdDMjAuMTM4NSAyMC42OTYyIDIwLjIwOTMgMjAuODcwMiAyMC4yMTI1IDIxLjA3OThDMjAuMjE1NyAyMS4yODk0IDIwLjE0NDkgMjEuNDY2NyAyMCAyMS42MTE1QzE5Ljg1NTEgMjEuNzU2NCAxOS42Nzk1IDIxLjgyODggMTkuNDczMSAyMS44Mjg4QzE5LjI2NjcgMjEuODI4OCAxOS4wOTExIDIxLjc1NjQgMTguOTQ2MiAyMS42MTE1Wk0xNS4xOTYyIDQuMTc4ODhDMTYuNzg3MiA0LjgzNjU4IDE4LjA2NTcgNS44NjU3NSAxOS4wMzE4IDcuMjY2MzhDMTkuOTk3OCA4LjY2NzAyIDIwLjQ4MDggMTAuMjM2NiAyMC40ODA4IDExLjk3NUMyMC40ODA4IDEyLjg1MTkgMjAuMzUwMyAxMy42OTM5IDIwLjA4OTQgMTQuNTAxQzE5LjgyODUgMTUuMzA4IDE5LjQ2MDMgMTYuMDUxOSAxOC45ODQ2IDE2LjczMjdMMTcuOTA5NiAxNS42NTc3QzE4LjI1NzEgMTUuMTE1NCAxOC41MjI1IDE0LjUzMzcgMTguNzA1OCAxMy45MTI1QzE4Ljg4OTIgMTMuMjkxNCAxOC45ODA4IDEyLjY0NTUgMTguOTgwOCAxMS45NzVDMTguOTgwOCAxMC41MzQgMTguNTgxNSA5LjIzNDk2IDE3Ljc4MjggOC4wNzc5MUMxNi45ODQgNi45MjA4NiAxNS45MjQ0IDYuMDc1NjcgMTQuNjAzOSA1LjU0MjMzQzE0LjQ2NTQgNS40ODg0OCAxNC4zNTkgNS40MDU3OSAxNC4yODQ3IDUuMjk0MjZDMTQuMjEwMyA1LjE4MjcyIDE0LjE3MzIgNS4wNTc3MiAxNC4xNzMyIDQuOTE5MjZDMTQuMTczMiA0LjY0MjM0IDE0LjI4MTIgNC40MjQ0IDE0LjQ5NzIgNC4yNjU0M0MxNC43MTMyIDQuMTA2NDcgMTQuOTQ2MiA0LjA3NzYyIDE1LjE5NjIgNC4xNzg4OFpNMTUuOTIzMSAxMy42NzEyTDE0LjE3MzIgMTEuOTIxMlY4LjI5NjE4QzE0Ljg0NzUgOC42NjI4NSAxNS4zNjg2IDkuMTc5MTkgMTUuNzM2NiA5Ljg0NTIxQzE2LjEwNDUgMTAuNTExMiAxNi4yODg1IDExLjIyOTUgMTYuMjg4NSAxMkMxNi4yODg1IDEyLjI5NDkgMTYuMjU4IDEyLjU4MjQgMTYuMTk3MiAxMi44NjI1QzE2LjEzNjMgMTMuMTQyNiAxNi4wNDQ5IDEzLjQxMjIgMTUuOTIzMSAxMy42NzEyWk0xMS43ODg1IDkuNTM2NThMOS42MzA4MyA3LjM2OTI4TDEwLjI1MiA2Ljc0ODE2QzEwLjUzNjYgNi40NjM1NCAxMC44NjM4IDYuMzk5MTIgMTEuMjMzNyA2LjU1NDg4QzExLjYwMzYgNi43MTA2NyAxMS43ODg1IDYuOTkxMTIgMTEuNzg4NSA3LjM5NjIzVjkuNTM2NThaTTEwLjI4ODUgMTUuMTVWMTIuOTUzOUw4LjMzNDY4IDExSDUuMjg4NTNWMTNIOC4xMzg1M0wxMC4yODg1IDE1LjE1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDUyXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDUyKVwiPlxuPHBhdGggZD1cIk0xOC45NDYyIDIxLjYxMTVMMTYuNDU3NyAxOS4xMjMxQzE2LjI1IDE5LjI0MzYgMTYuMDQzOSAxOS4zNTgzIDE1LjgzOTQgMTkuNDY3M0MxNS42MzUgMTkuNTc2MiAxNS40MjA2IDE5LjY3NzUgMTUuMTk2MiAxOS43NzExQzE0Ljk0NjIgMTkuODcyNCAxNC43MTMyIDE5Ljg0MTkgMTQuNDk3MiAxOS42Nzk4QzE0LjI4MTIgMTkuNTE3NiAxNC4xNzMyIDE5LjI5MjkgMTQuMTczMiAxOS4wMDU4QzE0LjE3MzIgMTguODY3MyAxNC4yMTQ1IDE4Ljc0NjUgMTQuMjk3MiAxOC42NDMzQzE0LjM3OTkgMTguNTQwMSAxNC40ODIxIDE4LjQ2MTUgMTQuNjAzOSAxOC40MDc3QzE0LjczNzIgMTguMzU3NyAxNC44NjggMTguMzAxOSAxNC45OTYyIDE4LjI0MDRDMTUuMTI0NCAxOC4xNzg5IDE1LjI1MDEgMTguMTExNSAxNS4zNzMxIDE4LjAzODVMMTEuNzg4NSAxNC40NTM4VjE2LjYwMzhDMTEuNzg4NSAxNy4wMDg5IDExLjYwMzYgMTcuMjg5MyAxMS4yMzM3IDE3LjQ0NTFDMTAuODYzOCAxNy42MDA5IDEwLjUzNjYgMTcuNTM2NSAxMC4yNTIgMTcuMjUxOUw3LjUwMDA4IDE0LjVINC42OTI0QzQuNDM0NzIgMTQuNSA0LjIxOTY2IDE0LjQxMzggNC4wNDcyMyAxNC4yNDEzQzMuODc0NzkgMTQuMDY4OSAzLjc4ODU4IDEzLjg1MzggMy43ODg1OCAxMy41OTYxVjEwLjQwMzlDMy43ODg1OCAxMC4xNDYyIDMuODc0NzkgOS45MzExNCA0LjA0NzIzIDkuNzU4NzFDNC4yMTk2NiA5LjU4NjI2IDQuNDM0NzIgOS41MDAwMyA0LjY5MjQgOS41MDAwM0g2LjgzNDdMMi41MjMxNSA1LjE4ODQ4QzIuMzg0NyA1LjA1MDAzIDIuMzEzODcgNC44NzYgMi4zMTA2NSA0LjY2NjM4QzIuMzA3NDUgNC40NTY3OCAyLjM3ODI4IDQuMjc5NTQgMi41MjMxNSA0LjEzNDY2QzIuNjY4MDIgMy45ODk3OSAyLjg0MzY2IDMuOTE3MzYgMy4wNTAwOCAzLjkxNzM2QzMuMjU2NDggMy45MTczNiAzLjQzMjExIDMuOTg5NzkgMy41NzY5OCA0LjEzNDY2TDIwIDIwLjU1NzdDMjAuMTM4NSAyMC42OTYyIDIwLjIwOTMgMjAuODcwMiAyMC4yMTI1IDIxLjA3OThDMjAuMjE1NyAyMS4yODk0IDIwLjE0NDkgMjEuNDY2NyAyMCAyMS42MTE1QzE5Ljg1NTEgMjEuNzU2NCAxOS42Nzk1IDIxLjgyODggMTkuNDczMSAyMS44Mjg4QzE5LjI2NjcgMjEuODI4OCAxOS4wOTExIDIxLjc1NjQgMTguOTQ2MiAyMS42MTE1Wk0xNS4xOTYyIDQuMTc4ODhDMTYuNzg3MiA0LjgzNjU4IDE4LjA2NTcgNS44NjU3NSAxOS4wMzE4IDcuMjY2MzhDMTkuOTk3OCA4LjY2NzAyIDIwLjQ4MDggMTAuMjM2NiAyMC40ODA4IDExLjk3NUMyMC40ODA4IDEyLjg1MTkgMjAuMzUwMyAxMy42OTM5IDIwLjA4OTQgMTQuNTAxQzE5LjgyODUgMTUuMzA4IDE5LjQ2MDMgMTYuMDUxOSAxOC45ODQ2IDE2LjczMjdMMTcuOTA5NiAxNS42NTc3QzE4LjI1NzEgMTUuMTE1NCAxOC41MjI1IDE0LjUzMzcgMTguNzA1OCAxMy45MTI1QzE4Ljg4OTIgMTMuMjkxNCAxOC45ODA4IDEyLjY0NTUgMTguOTgwOCAxMS45NzVDMTguOTgwOCAxMC41MzQgMTguNTgxNSA5LjIzNDk2IDE3Ljc4MjggOC4wNzc5MUMxNi45ODQgNi45MjA4NiAxNS45MjQ0IDYuMDc1NjcgMTQuNjAzOSA1LjU0MjMzQzE0LjQ2NTQgNS40ODg0OCAxNC4zNTkgNS40MDU3OSAxNC4yODQ3IDUuMjk0MjZDMTQuMjEwMyA1LjE4MjcyIDE0LjE3MzIgNS4wNTc3MiAxNC4xNzMyIDQuOTE5MjZDMTQuMTczMiA0LjY0MjM0IDE0LjI4MTIgNC40MjQ0IDE0LjQ5NzIgNC4yNjU0M0MxNC43MTMyIDQuMTA2NDcgMTQuOTQ2MiA0LjA3NzYyIDE1LjE5NjIgNC4xNzg4OFpNMTUuOTIzMSAxMy42NzEyTDE0LjE3MzIgMTEuOTIxMlY4LjI5NjE4QzE0Ljg0NzUgOC42NjI4NSAxNS4zNjg2IDkuMTc5MTkgMTUuNzM2NiA5Ljg0NTIxQzE2LjEwNDUgMTAuNTExMiAxNi4yODg1IDExLjIyOTUgMTYuMjg4NSAxMkMxNi4yODg1IDEyLjI5NDkgMTYuMjU4IDEyLjU4MjQgMTYuMTk3MiAxMi44NjI1QzE2LjEzNjMgMTMuMTQyNiAxNi4wNDQ5IDEzLjQxMjIgMTUuOTIzMSAxMy42NzEyWk0xMS43ODg1IDkuNTM2NThMOS42MzA4MyA3LjM2OTI4TDEwLjI1MiA2Ljc0ODE2QzEwLjUzNjYgNi40NjM1NCAxMC44NjM4IDYuMzk5MTIgMTEuMjMzNyA2LjU1NDg4QzExLjYwMzYgNi43MTA2NyAxMS43ODg1IDYuOTkxMTIgMTEuNzg4NSA3LjM5NjIzVjkuNTM2NThaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNThcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTgpXCI+XG48cGF0aCBkPVwiTTE1LjA2MTQgMTkuNzcxMUMxNC44MTE0IDE5Ljg3MjQgMTQuNTc4NCAxOS44NDE4IDE0LjM2MjQgMTkuNjc5M0MxNC4xNDY0IDE5LjUxNjggMTQuMDM4NCAxOS4yOTE4IDE0LjAzODQgMTkuMDA0M0MxNC4wMzg0IDE4Ljg2NjggMTQuMDc5NyAxOC43NDY0IDE0LjE2MjQgMTguNjQzMkMxNC4yNDUxIDE4LjU0IDE0LjM0NzMgMTguNDYxNSAxNC40NjkxIDE4LjQwNzdDMTUuNzg5NiAxNy44NzQzIDE2Ljg0OTMgMTcuMDI5MSAxNy42NDggMTUuODcyMUMxOC40NDY3IDE0LjcxNSAxOC44NDYxIDEzLjQxNiAxOC44NDYxIDExLjk3NUMxOC44NDYxIDEwLjUzNCAxOC40NDY3IDkuMjM0OTQgMTcuNjQ4IDguMDc3ODlDMTYuODQ5MyA2LjkyMDg0IDE1Ljc4OTYgNi4wNzU2NCAxNC40NjkxIDUuNTQyMzFDMTQuMzMwNyA1LjQ4ODQ2IDE0LjIyNDMgNS40MDUyIDE0LjE0OTkgNS4yOTI1NEMxNC4wNzU2IDUuMTc5ODcgMTQuMDM4NCA1LjA1NDY5IDE0LjAzODQgNC45MTY5OUMxNC4wMzg0IDQuNjQxNTcgMTQuMTQ2NCA0LjQyNDM4IDE0LjM2MjQgNC4yNjU0MUMxNC41Nzg0IDQuMTA2NDQgMTQuODExNCA0LjA3NzU5IDE1LjA2MTQgNC4xNzg4NkMxNi42NDYgNC44MzY1NiAxNy45MjI5IDUuODY1MDMgMTguODkyMiA3LjI2NDI2QzE5Ljg2MTQgOC42NjM0OCAyMC4zNDYgMTAuMjMzNyAyMC4zNDYgMTEuOTc1QzIwLjM0NiAxMy43MTYzIDE5Ljg2MTQgMTUuMjg2NSAxOC44OTIyIDE2LjY4NTdDMTcuOTIyOSAxOC4wODQ5IDE2LjY0NiAxOS4xMTM0IDE1LjA2MTQgMTkuNzcxMVpNNC41NTc2MyAxNC41QzQuMzAxNTUgMTQuNSA0LjA4Njg5IDE0LjQxMzMgMy45MTM2NiAxNC4yNDAxQzMuNzQwNDMgMTQuMDY2OSAzLjY1MzgxIDEzLjg1MjIgMy42NTM4MSAxMy41OTYxVjEwLjQwMzlDMy42NTM4MSAxMC4xNDc4IDMuNzQwNDMgOS45MzMxMiAzLjkxMzY2IDkuNzU5ODlDNC4wODY4OSA5LjU4NjY0IDQuMzAxNTUgOS41MDAwMSA0LjU1NzYzIDkuNTAwMDFINy4zNjUzMUwxMC4xMTcyIDYuNzQ4MTRDMTAuNDAxOCA2LjQ2MzUyIDEwLjcyOTEgNi4zOTk1OSAxMS4wOTg5IDYuNTU2MzZDMTEuNDY4OCA2LjcxMzE0IDExLjY1MzcgNi45OTMwOSAxMS42NTM3IDcuMzk2MjFWMTYuNjAzOEMxMS42NTM3IDE3LjAwNjkgMTEuNDY4OCAxNy4yODY4IDExLjA5ODkgMTcuNDQzNkMxMC43MjkxIDE3LjYwMDQgMTAuNDAxOCAxNy41MzY1IDEwLjExNzIgMTcuMjUxOEw3LjM2NTMxIDE0LjVINC41NTc2M1pNMTQuMDM4NCAxNS42NTM4VjguMjk2MTZDMTQuNjg1OCA4LjY0NjE2IDE1LjIwMDIgOS4xNTQxNyAxNS41ODE2IDkuODIwMTlDMTUuOTYzIDEwLjQ4NjIgMTYuMTUzNyAxMS4yMTI4IDE2LjE1MzcgMTJDMTYuMTUzNyAxMi43ODcyIDE1Ljk2MyAxMy41MDU0IDE1LjU4MTYgMTQuMTU0OEMxNS4yMDAyIDE0LjgwNDEgMTQuNjg1OCAxNS4zMDM4IDE0LjAzODQgMTUuNjUzOFpNMTAuMTUzOCA4Ljg0OTk5TDguMDAzNzYgMTFINS4xNTM3NlYxM0g4LjAwMzc2TDEwLjE1MzggMTUuMTVWOC44NDk5OVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0NlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0NilcIj5cbjxwYXRoIGQ9XCJNMTUuMDYxNCAxOS43NzExQzE0LjgxMTQgMTkuODcyNCAxNC41Nzg0IDE5Ljg0MTkgMTQuMzYyNCAxOS42Nzk4QzE0LjE0NjQgMTkuNTE3NiAxNC4wMzg0IDE5LjI5MjkgMTQuMDM4NCAxOS4wMDU3QzE0LjAzODQgMTguODY3MyAxNC4wNzk3IDE4Ljc0NjQgMTQuMTYyNCAxOC42NDMyQzE0LjI0NTEgMTguNTQgMTQuMzQ3MyAxOC40NjE1IDE0LjQ2OTEgMTguNDA3N0MxNS43ODk2IDE3Ljg3NDMgMTYuODQ5MyAxNy4wMjkxIDE3LjY0OCAxNS44NzIxQzE4LjQ0NjcgMTQuNzE1IDE4Ljg0NjEgMTMuNDE2IDE4Ljg0NjEgMTEuOTc1QzE4Ljg0NjEgMTAuNTM0IDE4LjQ0NjcgOS4yMzQ5NCAxNy42NDggOC4wNzc4OUMxNi44NDkzIDYuOTIwODQgMTUuNzg5NiA2LjA3NTY0IDE0LjQ2OTEgNS41NDIzMUMxNC4zMzA3IDUuNDg4NDYgMTQuMjI0MyA1LjQwNTc3IDE0LjE0OTkgNS4yOTQyNEMxNC4wNzU2IDUuMTgyNyAxNC4wMzg0IDUuMDU3NyAxNC4wMzg0IDQuOTE5MjRDMTQuMDM4NCA0LjY0MjMyIDE0LjE0NjQgNC40MjQzOCAxNC4zNjI0IDQuMjY1NDFDMTQuNTc4NCA0LjEwNjQ0IDE0LjgxMTQgNC4wNzc1OSAxNS4wNjE0IDQuMTc4ODZDMTYuNjQ2IDQuODM2NTYgMTcuOTIyOSA1Ljg2NTczIDE4Ljg5MjIgNy4yNjYzNkMxOS44NjE0IDguNjY2OTkgMjAuMzQ2IDEwLjIzNjUgMjAuMzQ2IDExLjk3NUMyMC4zNDYgMTMuNzEzNCAxOS44NjE0IDE1LjI4MyAxOC44OTIyIDE2LjY4MzZDMTcuOTIyOSAxOC4wODQyIDE2LjY0NiAxOS4xMTM0IDE1LjA2MTQgMTkuNzcxMVpNNC41NTc2MyAxNC41QzQuMjk5OTUgMTQuNSA0LjA4NDg5IDE0LjQxMzcgMy45MTI0NiAxNC4yNDEzQzMuNzQwMDMgMTQuMDY4OSAzLjY1MzgxIDEzLjg1MzggMy42NTM4MSAxMy41OTYxVjEwLjQwMzlDMy42NTM4MSAxMC4xNDYyIDMuNzQwMDMgOS45MzExMiAzLjkxMjQ2IDkuNzU4NjlDNC4wODQ4OSA5LjU4NjI0IDQuMjk5OTUgOS41MDAwMSA0LjU1NzYzIDkuNTAwMDFINy4zNjUzMUwxMC4xMTcyIDYuNzQ4MTRDMTAuNDAxOCA2LjQ2MzUyIDEwLjcyOTEgNi4zOTkwOSAxMS4wOTg5IDYuNTU0ODZDMTEuNDY4OCA2LjcxMDY0IDExLjY1MzcgNi45OTEwOSAxMS42NTM3IDcuMzk2MjFWMTYuNjAzOEMxMS42NTM3IDE3LjAwODkgMTEuNDY4OCAxNy4yODkzIDExLjA5ODkgMTcuNDQ1MUMxMC43MjkxIDE3LjYwMDkgMTAuNDAxOCAxNy41MzY1IDEwLjExNzIgMTcuMjUxOEw3LjM2NTMxIDE0LjVINC41NTc2M1pNMTQuMDM4NCAxNS42NTM4VjguMjk2MTZDMTQuNjg1OCA4LjY0NjE2IDE1LjIwMDIgOS4xNTQxNyAxNS41ODE2IDkuODIwMTlDMTUuOTYzIDEwLjQ4NjIgMTYuMTUzNyAxMS4yMTI4IDE2LjE1MzcgMTJDMTYuMTUzNyAxMi43ODcyIDE1Ljk2MyAxMy41MDU0IDE1LjU4MTYgMTQuMTU0OEMxNS4yMDAyIDE0LjgwNDEgMTQuNjg1OCAxNS4zMDM4IDE0LjAzODQgMTUuNjUzOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk0yLjcyNSAyMWEuOTczLjk3MyAwIDAgMS0uODUtLjUgMS4wOTggMS4wOTggMCAwIDEtLjEzOC0uNDg4Ljg5OC44OTggMCAwIDEgLjEzOC0uNTEybDkuMjUtMTZhLjk4Ljk4IDAgMCAxIC4zODctLjM3NUMxMS42NzEgMy4wNDIgMTEuODMzIDMgMTIgM2MuMTY2IDAgLjMyOS4wNDIuNDg3LjEyNWEuOTgzLjk4MyAwIDAgMSAuMzg4LjM3NWw5LjI1IDE2Yy4xLjE2Ny4xNDYuMzM3LjEzNy41MTJhMS4wOTggMS4wOTggMCAwIDEtLjEzNy40ODguOTczLjk3MyAwIDAgMS0uODUuNUgyLjcyNVpNMTIgMThjLjI4MyAwIC41Mi0uMDk2LjcxMi0uMjg4QS45NjguOTY4IDAgMCAwIDEzIDE3YS45NjguOTY4IDAgMCAwLS4yODgtLjcxMkEuOTY4Ljk2OCAwIDAgMCAxMiAxNmEuOTY4Ljk2OCAwIDAgMC0uNzEzLjI4OEEuOTY4Ljk2OCAwIDAgMCAxMSAxN2MwIC4yODMuMDk2LjUyLjI4Ny43MTIuMTkyLjE5Mi40My4yODguNzEzLjI4OFptMC0zYS45Ny45NyAwIDAgMCAuNzEyLS4yODdBLjk2OC45NjggMCAwIDAgMTMgMTR2LTNhLjk2OC45NjggMCAwIDAtLjI4OC0uNzEzQS45NjguOTY4IDAgMCAwIDEyIDEwYS45NjguOTY4IDAgMCAwLS43MTMuMjg3QS45NjguOTY4IDAgMCAwIDExIDExdjNjMCAuMjgzLjA5Ni41Mi4yODcuNzEzLjE5Mi4xOTEuNDMuMjg3LjcxMy4yODdaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNTU1XzMzNjdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF81NTVfMzM2NylcIj5cbjxwYXRoIGQ9XCJNMy40MjU1NSAyMC41QzMuMjU2MDUgMjAuNSAzLjEwMzgyIDIwLjQ1ODYgMi45Njg4NyAyMC4zNzU3QzIuODMzOTIgMjAuMjkyOSAyLjcyODk3IDIwLjE4MzYgMi42NTQgMjAuMDQ4MUMyLjU3NjAyIDE5LjkxMzUgMi41MzMxMiAxOS43Njc2IDIuNTI1MzIgMTkuNjEwNkMyLjUxNzUyIDE5LjQ1MzUgMi41NTk5IDE5LjI5OCAyLjY1MjQ1IDE5LjE0NEwxMS4yMTMyIDQuMzU2MTZDMTEuMzA1NyA0LjIwMjEyIDExLjQyMTYgNC4wODgyNSAxMS41NjA3IDQuMDE0NTNDMTEuNjk5OCAzLjk0MDggMTEuODQ2MiAzLjkwMzkzIDEyLjAwMDEgMy45MDM5M0MxMi4xNTM5IDMuOTAzOTMgMTIuMzAwNCAzLjk0MDggMTIuNDM5NSA0LjAxNDUzQzEyLjU3ODYgNC4wODgyNSAxMi42OTQ0IDQuMjAyMTIgMTIuNzg3IDQuMzU2MTZMMjEuMzQ3NyAxOS4xNDRDMjEuNDQwMyAxOS4yOTggMjEuNDgyNyAxOS40NTM1IDIxLjQ3NDkgMTkuNjEwNkMyMS40NjcxIDE5Ljc2NzYgMjEuNDI0MiAxOS45MTM1IDIxLjM0NjIgMjAuMDQ4MUMyMS4yNzEyIDIwLjE4MzYgMjEuMTY2MyAyMC4yOTI5IDIxLjAzMTMgMjAuMzc1N0MyMC44OTY0IDIwLjQ1ODYgMjAuNzQ0MSAyMC41IDIwLjU3NDYgMjAuNUgzLjQyNTU1Wk00LjQ1MDEgMTlIMTkuNTUwMUwxMi4wMDAxIDYuMDAwMDNMNC40NTAxIDE5Wk0xMi4wMDAxIDE3LjgwNzdDMTIuMjI4OSAxNy44MDc3IDEyLjQyMDggMTcuNzMwMyAxMi41NzU2IDE3LjU3NTVDMTIuNzMwNCAxNy40MjA3IDEyLjgwNzggMTcuMjI4OSAxMi44MDc4IDE3QzEyLjgwNzggMTYuNzcxMiAxMi43MzA0IDE2LjU3OTQgMTIuNTc1NiAxNi40MjQ2QzEyLjQyMDggMTYuMjY5OCAxMi4yMjg5IDE2LjE5MjQgMTIuMDAwMSAxNi4xOTI0QzExLjc3MTIgMTYuMTkyNCAxMS41Nzk0IDE2LjI2OTggMTEuNDI0NiAxNi40MjQ2QzExLjI2OTggMTYuNTc5NCAxMS4xOTI0IDE2Ljc3MTIgMTEuMTkyNCAxN0MxMS4xOTI0IDE3LjIyODkgMTEuMjY5OCAxNy40MjA3IDExLjQyNDYgMTcuNTc1NUMxMS41Nzk0IDE3LjczMDMgMTEuNzcxMiAxNy44MDc3IDEyLjAwMDEgMTcuODA3N1pNMTIuMDAwNCAxNS4xOTI0QzEyLjIxMyAxNS4xOTI0IDEyLjM5MTEgMTUuMTIwNSAxMi41MzQ3IDE0Ljk3NjdDMTIuNjc4MyAxNC44MzMgMTIuNzUwMSAxNC42NTQ5IDEyLjc1MDEgMTQuNDQyNFYxMC45NDIzQzEyLjc1MDEgMTAuNzI5OCAxMi42NzgyIDEwLjU1MTcgMTIuNTM0NCAxMC40MDhDMTIuMzkwNiAxMC4yNjQyIDEyLjIxMjQgMTAuMTkyNCAxMS45OTk4IDEwLjE5MjRDMTEuNzg3MiAxMC4xOTI0IDExLjYwOTEgMTAuMjY0MiAxMS40NjU1IDEwLjQwOEMxMS4zMjE5IDEwLjU1MTcgMTEuMjUwMSAxMC43Mjk4IDExLjI1MDEgMTAuOTQyM1YxNC40NDI0QzExLjI1MDEgMTQuNjU0OSAxMS4zMjIgMTQuODMzIDExLjQ2NTggMTQuOTc2N0MxMS42MDk2IDE1LjEyMDUgMTEuNzg3OCAxNS4xOTI0IDEyLjAwMDQgMTUuMTkyNFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIixudWxsLCJpbXBvcnQgJDdWNEpaJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDdWNEpaJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDdWNEpaJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDdWNEpaJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogTGFiZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGI3M2E2YzY2ODVlNzIxODQkdmFyJE5BTUUgPSAnTGFiZWwnO1xuY29uc3QgJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgPSAvKiNfX1BVUkVfXyovICQ3VjRKWiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ3VjRKWiRjcmVhdGVFbGVtZW50KCQ3VjRKWiRQcmltaXRpdmUubGFiZWwsICQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uTW91c2VEb3duOiAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX3Byb3BzJG9uTW91c2VEb3duO1xuICAgICAgICAgICAgKF9wcm9wcyRvbk1vdXNlRG93biA9IHByb3BzLm9uTW91c2VEb3duKSA9PT0gbnVsbCB8fCBfcHJvcHMkb25Nb3VzZURvd24gPT09IHZvaWQgMCB8fCBfcHJvcHMkb25Nb3VzZURvd24uY2FsbChwcm9wcywgZXZlbnQpOyAvLyBwcmV2ZW50IHRleHQgc2VsZWN0aW9uIHdoZW4gZG91YmxlIGNsaWNraW5nIGxhYmVsXG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgZXZlbnQuZGV0YWlsID4gMSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1LCB7XG4gICAgZGlzcGxheU5hbWU6ICRiNzNhNmM2Njg1ZTcyMTg0JHZhciROQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNTtcblxuXG5cblxuZXhwb3J0IHskYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSBhcyBMYWJlbCwgJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGswM3dJJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGswM3dJJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGswM3dJJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkazAzd0kkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FID0gJ1Byb2dyZXNzJztcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWCA9IDEwMDtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0LCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZl0gPSAkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkUHJvZ3Jlc3NQcm92aWRlciwgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dF0gPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiID0gLyojX19QVVJFX18qLyAkazAzd0kkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQcm9ncmVzczogX19zY29wZVByb2dyZXNzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG1heDogbWF4UHJvcCAsIGdldFZhbHVlTGFiZWw6IGdldFZhbHVlTGFiZWwgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwgLCAuLi5wcm9ncmVzc1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihtYXhQcm9wKSA/IG1heFByb3AgOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVg7XG4gICAgY29uc3QgdmFsdWUgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlUHJvcCwgbWF4KSA/IHZhbHVlUHJvcCA6IG51bGw7XG4gICAgY29uc3QgdmFsdWVMYWJlbCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyBnZXRWYWx1ZUxhYmVsKHZhbHVlLCBtYXgpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUHJvZ3Jlc3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgbWF4OiBtYXhcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogbWF4LFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXZhbHVldGV4dFwiOiB2YWx1ZUxhYmVsLFxuICAgICAgICByb2xlOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSh2YWx1ZSwgbWF4KSxcbiAgICAgICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLW1heFwiOiBtYXhcbiAgICB9LCBwcm9ncmVzc1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FXG59KTtcbiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLnByb3BUeXBlcyA9IHtcbiAgICBtYXggKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyhwcm9wVmFsdWUpO1xuICAgICAgICBpZiAocHJvcFZhbHVlICYmICEkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wVmFsdWUpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3Ioc3RyVmFsLCBjb21wb25lbnROYW1lKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgdmFsdWUgKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyh2YWx1ZVByb3ApO1xuICAgICAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wcy5tYXgpID8gcHJvcHMubWF4IDogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYO1xuICAgICAgICBpZiAodmFsdWVQcm9wICE9IG51bGwgJiYgISQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWVQcm9wLCBtYXgpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvcihzdHJWYWwsIGNvbXBvbmVudE5hbWUpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdQcm9ncmVzc0luZGljYXRvcic7XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCA9IC8qI19fUFVSRV9fKi8gJGswM3dJJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9jb250ZXh0JHZhbHVlO1xuICAgIGNvbnN0IHsgX19zY29wZVByb2dyZXNzOiBfX3Njb3BlUHJvZ3Jlc3MgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciR1c2VQcm9ncmVzc0NvbnRleHQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlUHJvZ3Jlc3MpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUoY29udGV4dC52YWx1ZSwgY29udGV4dC5tYXgpLFxuICAgICAgICBcImRhdGEtdmFsdWVcIjogKF9jb250ZXh0JHZhbHVlID0gY29udGV4dC52YWx1ZSkgIT09IG51bGwgJiYgX2NvbnRleHQkdmFsdWUgIT09IHZvaWQgMCA/IF9jb250ZXh0JHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtbWF4XCI6IGNvbnRleHQubWF4XG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBmdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWUsIG1heCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKHZhbHVlIC8gbWF4ICogMTAwKX0lYDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlKHZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRNYXhOdW1iZXIobWF4KSB7XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcihtYXgpICYmICFpc05hTihtYXgpICYmIG1heCA+IDA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlLCBtYXgpIHtcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICByZXR1cm4gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpICYmIHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSAwO1xufSAvLyBTcGxpdCB0aGlzIG91dCBmb3IgY2xlYXJlciByZWFkYWJpbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgbWF4XFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBPbmx5IG51bWJlcnMgZ3JlYXRlciB0aGFuIDAgYXJlIHZhbGlkIG1heCB2YWx1ZXMuIERlZmF1bHRpbmcgdG8gXFxgJHskNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVh9XFxgLmA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZFZhbHVlRXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgdmFsdWVcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIFRoZSBcXGB2YWx1ZVxcYCBwcm9wIG11c3QgYmU6XG4gIC0gYSBwb3NpdGl2ZSBudW1iZXJcbiAgLSBsZXNzIHRoYW4gdGhlIHZhbHVlIHBhc3NlZCB0byBcXGBtYXhcXGAgKG9yICR7JDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYfSBpZiBubyBcXGBtYXhcXGAgcHJvcCBpcyBzZXQpXG4gIC0gXFxgbnVsbFxcYCBpZiB0aGUgcHJvZ3Jlc3MgaXMgaW5kZXRlcm1pbmF0ZS5cblxuRGVmYXVsdGluZyB0byBcXGBudWxsXFxgLmA7XG59XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgPSAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZDtcblxuXG5cblxuZXhwb3J0IHskNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZiBhcyBjcmVhdGVQcm9ncmVzc1Njb3BlLCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYjI1YTMwNGVjN2Q3NDZiYiBhcyBQcm9ncmVzcywgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JDJiNzc2ZjdlN2VlNjBkYmQgYXMgUHJvZ3Jlc3NJbmRpY2F0b3IsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIGFzIEluZGljYXRvcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQgYXMgJDRrNEQwJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJDRrNEQwJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAkNGs0RDAkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDRrNEQwJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNGs0RDAkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ0azREMCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZURpYWxvZ1Njb3BlIGFzICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSwgUm9vdCBhcyAkNGs0RDAkUm9vdCwgVHJpZ2dlciBhcyAkNGs0RDAkVHJpZ2dlciwgUG9ydGFsIGFzICQ0azREMCRQb3J0YWwsIE92ZXJsYXkgYXMgJDRrNEQwJE92ZXJsYXksIFdhcm5pbmdQcm92aWRlciBhcyAkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCBDb250ZW50IGFzICQ0azREMCRDb250ZW50LCBUaXRsZSBhcyAkNGs0RDAkVGl0bGUsIERlc2NyaXB0aW9uIGFzICQ0azREMCREZXNjcmlwdGlvbiwgQ2xvc2UgYXMgJDRrNEQwJENsb3NlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpYWxvZ1wiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkNGs0RDAkU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRST09UX05BTUUgPSAnQWxlcnREaWFsb2cnO1xuY29uc3QgWyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViXSA9ICQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGUoJDkwNWY0YWU5MThhYWIxYWEkdmFyJFJPT1RfTkFNRSwgW1xuICAgICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZVxuXSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUgPSAkNGs0RDAkY3JlYXRlRGlhbG9nU2NvcGUoKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hbGVydERpYWxvZ1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRSb290LCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBhbGVydERpYWxvZ1Byb3BzLCB7XG4gICAgICAgIG1vZGFsOiB0cnVlXG4gICAgfSkpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUk9PVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVFJJR0dFUl9OQU1FID0gJ0FsZXJ0RGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYiA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkVHJpZ2dlciwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ1BvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUE9SVEFMX05BTUUgPSAnQWxlcnREaWFsb2dQb3J0YWwnO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnBvcnRhbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRQb3J0YWwsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIHBvcnRhbFByb3BzKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ092ZXJsYXlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJE9WRVJMQVlfTkFNRSA9ICdBbGVydERpYWxvZ092ZXJsYXknO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJE92ZXJsYXksICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRPVkVSTEFZX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUgPSAnQWxlcnREaWFsb2dDb250ZW50JztcbmNvbnN0IFskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIsICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VBbGVydERpYWxvZ0NvbnRlbnRDb250ZXh0XSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNGs0RDAkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGVudFJlZik7XG4gICAgY29uc3QgY2FuY2VsUmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCB7XG4gICAgICAgIGNvbnRlbnROYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FLFxuICAgICAgICB0aXRsZU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FLFxuICAgICAgICBkb2NzU2x1ZzogXCJhbGVydC1kaWFsb2dcIlxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlQWxlcnREaWFsb2csXG4gICAgICAgIGNhbmNlbFJlZjogY2FuY2VsUmVmXG4gICAgfSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ29udGVudCwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJhbGVydGRpYWxvZ1wiXG4gICAgfSwgZGlhbG9nU2NvcGUsIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25PcGVuQXV0b0ZvY3VzOiAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uT3BlbkF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jYW5jZWxSZWYkY3VycmVudDtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAoX2NhbmNlbFJlZiRjdXJyZW50ID0gY2FuY2VsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYW5jZWxSZWYkY3VycmVudCA9PT0gdm9pZCAwIHx8IF9jYW5jZWxSZWYkY3VycmVudC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsXG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCBmYWxzZSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRSA9ICdBbGVydERpYWxvZ1RpdGxlJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi50aXRsZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRUaXRsZSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dEZXNjcmlwdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRSA9ICdBbGVydERpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1ID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4uZGVzY3JpcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkRGVzY3JpcHRpb24sICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0FjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQUNUSU9OX05BTUUgPSAnQWxlcnREaWFsb2dBY3Rpb24nO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hY3Rpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ2xvc2UsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGFjdGlvblByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFDVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nQ2FuY2VsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRSA9ICdBbGVydERpYWxvZ0NhbmNlbCc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmNhbmNlbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNhbmNlbFJlZjogY2FuY2VsUmVmICB9ID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FLCBfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgY29uc3QgcmVmID0gJDRrNEQwJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNhbmNlbFJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJENsb3NlLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBjYW5jZWxQcm9wcywge1xuICAgICAgICByZWY6IHJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciREZXNjcmlwdGlvbldhcm5pbmcgPSAoeyBjb250ZW50UmVmOiBjb250ZW50UmVmICB9KT0+e1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FfVxcYCByZXF1aXJlcyBhIGRlc2NyaXB0aW9uIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbllvdSBjYW4gYWRkIGEgZGVzY3JpcHRpb24gdG8gdGhlIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRX1cXGAgYnkgcGFzc2luZyBhIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJERFU0NSSVBUSU9OX05BTUV9XFxgIGNvbXBvbmVudCBhcyBhIGNoaWxkLCB3aGljaCBhbHNvIGJlbmVmaXRzIHNpZ2h0ZWQgdXNlcnMgYnkgYWRkaW5nIHZpc2libGUgY29udGV4dCB0byB0aGUgZGlhbG9nLlxuXG5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB5b3VyIG93biBjb21wb25lbnQgYXMgYSBkZXNjcmlwdGlvbiBieSBhc3NpZ25pbmcgaXQgYW4gXFxgaWRcXGAgYW5kIHBhc3NpbmcgdGhlIHNhbWUgdmFsdWUgdG8gdGhlIFxcYGFyaWEtZGVzY3JpYmVkYnlcXGAgcHJvcCBpbiBcXGAkeyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUV9XFxgLiBJZiB0aGUgZGVzY3JpcHRpb24gaXMgY29uZnVzaW5nIG9yIGR1cGxpY2F0aXZlIGZvciBzaWdodGVkIHVzZXJzLCB5b3UgY2FuIHVzZSB0aGUgXFxgQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblxcYCBwcmltaXRpdmUgYXMgYSB3cmFwcGVyIGFyb3VuZCB5b3VyIGRlc2NyaXB0aW9uIGNvbXBvbmVudC5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL3JhZGl4LXVpLmNvbS9wcmltaXRpdmVzL2RvY3MvY29tcG9uZW50cy9hbGVydC1kaWFsb2dgO1xuICAgICQ0azREMCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9jb250ZW50UmVmJGN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKF9jb250ZW50UmVmJGN1cnJlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZW50UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50UmVmJGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykpO1xuICAgICAgICBpZiAoIWhhc0Rlc2NyaXB0aW9uKSBjb25zb2xlLndhcm4oTUVTU0FHRSk7XG4gICAgfSwgW1xuICAgICAgICBNRVNTQUdFLFxuICAgICAgICBjb250ZW50UmVmXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGI7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NjtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQ7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiNDU0ZjgxOGM1OGVlODVkO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjcgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMDtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTU7XG5cblxuXG5cbmV4cG9ydCB7JDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWIgYXMgY3JlYXRlQWxlcnREaWFsb2dTY29wZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGRlNDY2ZGQ4MzE3YjBiNzUgYXMgQWxlcnREaWFsb2csICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2ZWRkN2E2MjNlZjBmNDBiIGFzIEFsZXJ0RGlhbG9nVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgYXMgQWxlcnREaWFsb2dQb3J0YWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IGFzIEFsZXJ0RGlhbG9nT3ZlcmxheSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQgYXMgQWxlcnREaWFsb2dDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCBhcyBBbGVydERpYWxvZ0FjdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDJmNjdhOTIzNTcxYWFlYTAgYXMgQWxlcnREaWFsb2dDYW5jZWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgYXMgQWxlcnREaWFsb2dUaXRsZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUgYXMgQWxlcnREaWFsb2dEZXNjcmlwdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSBhcyBBY3Rpb24sICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IGFzIENhbmNlbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgYXMgVGl0bGUsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIGFzIERlc2NyaXB0aW9ufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOlsiX19hc3NpZ24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0IiwicyIsImkiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwidGhpcyIsIl9fcmVzdCIsImUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5uZXIiLCJ0b1N0cmluZyIsImluY2x1ZGVzIiwia2V5Iiwiam9pbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0Iiwid2luZG93IiwiQnV0dG9uIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwiX2EiLCJyZWYiLCJfYyIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiX2QiLCJzaXplIiwiX2UiLCJ2YXJpYW50IiwiX2YiLCJ0eXBlIiwiX2ciLCJwcmVmaXgiLCJfaCIsInN1ZmZpeCIsIl9qIiwiY2xhc3NOYW1lIiwiX2siLCJmdWxsV2lkdGgiLCJwcm9wcyIsInN0eWxlcyIsImJ1dHRvbiIsIl9iIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwiYmluZCIsInRhcmdldCIsInNvdXJjZSIsIiRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIiwib3JpZ2luYWxFdmVudEhhbmRsZXIiLCJvdXJFdmVudEhhbmRsZXIiLCJjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQiLCJldmVudCIsImRlZmF1bHRQcmV2ZW50ZWQiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiIsInJlZnMiLCJub2RlIiwiZm9yRWFjaCIsInZhbHVlIiwiY3VycmVudCIsIiQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkYzdiMmNiZTM1NTJhMGQwNSIsIiQzdnFtciR1c2VDYWxsYmFjayIsInVzZUNhbGxiYWNrIiwiJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSIsInNjb3BlTmFtZSIsImNyZWF0ZUNvbnRleHRTY29wZURlcHMiLCJkZWZhdWx0Q29udGV4dHMiLCJjcmVhdGVTY29wZSIsInNjb3BlQ29udGV4dHMiLCJtYXAiLCJkZWZhdWx0Q29udGV4dCIsIiQzYmtBSyRjcmVhdGVDb250ZXh0Iiwic2NvcGUiLCJjb250ZXh0cyIsIiQzYmtBSyR1c2VNZW1vIiwidXNlTWVtbyIsInJvb3RDb21wb25lbnROYW1lIiwiQmFzZUNvbnRleHQiLCJpbmRleCIsIlByb3ZpZGVyIiwiY29udGV4dCIsIkNvbnRleHQiLCJ2YWx1ZXMiLCIkM2JrQUskY3JlYXRlRWxlbWVudCIsImRpc3BsYXlOYW1lIiwiY29uc3VtZXJOYW1lIiwiJDNia0FLJHVzZUNvbnRleHQiLCJ1bmRlZmluZWQiLCJFcnJvciIsIiRjNTEyYzI3YWIwMmVmODk1JHZhciRjb21wb3NlQ29udGV4dFNjb3BlcyIsInNjb3BlcyIsImJhc2VTY29wZSIsImNyZWF0ZVNjb3BlMSIsInNjb3BlSG9va3MiLCJ1c2VTY29wZSIsIm92ZXJyaWRlU2NvcGVzIiwibmV4dFNjb3BlczEiLCJyZWR1Y2UiLCJuZXh0U2NvcGVzIiwiJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMiLCJCb29sZWFuIiwiZ2xvYmFsVGhpcyIsImRvY3VtZW50IiwiJGR4bHdIJHVzZUxheW91dEVmZmVjdCIsIiQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkIiwiJDJBT0R4JHJlYWN0IiwiJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50IiwiJDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzciLCJkZXRlcm1pbmlzdGljSWQiLCJpZCIsInNldElkIiwidXNlU3RhdGUiLCIkMkFPRHgkdXNlTGF5b3V0RWZmZWN0IiwicmVhY3RJZCIsIlN0cmluZyIsIiRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIiwiY2FsbGJhY2siLCJjYWxsYmFja1JlZiIsIiRsd2lXaiR1c2VSZWYiLCIkbHdpV2okdXNlRWZmZWN0IiwiJGx3aVdqJHVzZU1lbW8iLCJhcmdzIiwiX2NhbGxiYWNrUmVmJGN1cnJlbnQiLCIkNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzIiwicHJvcCIsImRlZmF1bHRQcm9wIiwib25DaGFuZ2UiLCJ1bmNvbnRyb2xsZWRQcm9wIiwic2V0VW5jb250cm9sbGVkUHJvcCIsInVuY29udHJvbGxlZFN0YXRlIiwiJGJuUHc5JHVzZVN0YXRlIiwicHJldlZhbHVlUmVmIiwiJGJuUHc5JHVzZVJlZiIsImhhbmRsZUNoYW5nZSIsIiRiblB3OSR1c2VDYWxsYmFja1JlZiIsIiRiblB3OSR1c2VFZmZlY3QiLCIkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZTEiLCIkYm5QdzkkdXNlQ2FsbGJhY2siLCJuZXh0VmFsdWUiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCIsIiQ5SXJqWCRmb3J3YXJkUmVmIiwiZm9yd2FyZGVkUmVmIiwic2xvdFByb3BzIiwiY2hpbGRyZW5BcnJheSIsIiQ5SXJqWCRDaGlsZHJlbiIsInRvQXJyYXkiLCJzbG90dGFibGUiLCJmaW5kIiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlIiwibmV3RWxlbWVudCIsIm5ld0NoaWxkcmVuIiwiY2hpbGQiLCJDaGlsZHJlbiIsImNvdW50Iiwib25seSIsIiQ5SXJqWCRpc1ZhbGlkRWxlbWVudCIsIiQ5SXJqWCRjcmVhdGVFbGVtZW50IiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSIsIiQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ5SXJqWCRjbG9uZUVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsIiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzIiwiJDlJcmpYJGNvbXBvc2VSZWZzIiwiJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDUiLCIkOUlyalgkRnJhZ21lbnQiLCJjaGlsZFByb3BzIiwib3ZlcnJpZGVQcm9wcyIsInByb3BOYW1lIiwic2xvdFByb3BWYWx1ZSIsImNoaWxkUHJvcFZhbHVlIiwidGVzdCIsImZpbHRlciIsIiQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQyNTBmZmE2M2NkYzBkMDM0IiwicHJpbWl0aXZlIiwiTm9kZSIsIiQ0cTVGcSRmb3J3YXJkUmVmIiwiYXNDaGlsZCIsInByaW1pdGl2ZVByb3BzIiwiQ29tcCIsIiQ0cTVGcSRTbG90IiwiJDRxNUZxJHVzZUVmZmVjdCIsIlN5bWJvbCIsImZvciIsIiQ0cTVGcSRjcmVhdGVFbGVtZW50IiwiJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJEZPQ1VTX09VVFNJREUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCIsIiRrcXdwSCRjcmVhdGVDb250ZXh0IiwibGF5ZXJzIiwiU2V0IiwibGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJicmFuY2hlcyIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQxNzdmYjYyZmYzZWMxZjIyIiwiJGtxd3BIJGZvcndhcmRSZWYiLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzIiwib25Fc2NhcGVLZXlEb3duIiwib25Qb2ludGVyRG93bk91dHNpZGUiLCJvbkZvY3VzT3V0c2lkZSIsIm9uSW50ZXJhY3RPdXRzaWRlIiwib25EaXNtaXNzIiwibGF5ZXJQcm9wcyIsIiRrcXdwSCR1c2VDb250ZXh0Iiwibm9kZTEiLCJzZXROb2RlIiwiJGtxd3BIJHVzZVN0YXRlIiwib3duZXJEb2N1bWVudCIsImZvcmNlIiwiY29tcG9zZWRSZWZzIiwiJGtxd3BIJHVzZUNvbXBvc2VkUmVmcyIsImZyb20iLCJoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsInNsaWNlIiwiaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRJbmRleCIsImlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsImlzUG9pbnRlckV2ZW50c0VuYWJsZWQiLCJwb2ludGVyRG93bk91dHNpZGUiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCIka3F3cEgkdXNlQ2FsbGJhY2tSZWYiLCJpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYiLCIka3F3cEgkdXNlUmVmIiwiaGFuZGxlQ2xpY2tSZWYiLCIka3F3cEgkdXNlRWZmZWN0IiwiaGFuZGxlUG9pbnRlckRvd24iLCJldmVudERldGFpbCIsIm9yaWdpbmFsRXZlbnQiLCJoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50IiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkaXNjcmV0ZSIsInBvaW50ZXJUeXBlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwidGltZXJJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvblBvaW50ZXJEb3duQ2FwdHVyZSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUiLCJpc1BvaW50ZXJEb3duT25CcmFuY2giLCJzb21lIiwiYnJhbmNoIiwiY29udGFpbnMiLCJmb2N1c091dHNpZGUiLCJoYW5kbGVGb2N1c091dHNpZGUiLCJpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmIiwiaGFuZGxlRm9jdXMiLCJvbkZvY3VzQ2FwdHVyZSIsIm9uQmx1ckNhcHR1cmUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlIiwib25Fc2NhcGVLZXlEb3duUHJvcCIsIiRoUFNRNSR1c2VDYWxsYmFja1JlZiIsIiRoUFNRNSR1c2VFZmZlY3QiLCJoYW5kbGVLZXlEb3duIiwiJGtxd3BIJHVzZUVzY2FwZUtleWRvd24iLCJwcmV2ZW50RGVmYXVsdCIsImJvZHkiLCJzdHlsZSIsInBvaW50ZXJFdmVudHMiLCJhZGQiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUiLCJkZWxldGUiLCJoYW5kbGVVcGRhdGUiLCIka3F3cEgkY3JlYXRlRWxlbWVudCIsIiRrcXdwSCRQcmltaXRpdmUiLCJkaXYiLCIka3F3cEgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJDdXN0b21FdmVudCIsImRpc3BhdGNoRXZlbnQiLCJuYW1lIiwiaGFuZGxlciIsImRldGFpbCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiJDRxNUZxJGZsdXNoU3luYyIsImZsdXNoU3luYyIsIiRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMiLCIkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiIsIiQ0NVFIdiRmb3J3YXJkUmVmIiwibG9vcCIsInRyYXBwZWQiLCJvbk1vdW50QXV0b0ZvY3VzIiwib25Nb3VudEF1dG9Gb2N1c1Byb3AiLCJvblVubW91bnRBdXRvRm9jdXMiLCJvblVubW91bnRBdXRvRm9jdXNQcm9wIiwic2NvcGVQcm9wcyIsImNvbnRhaW5lcjEiLCJzZXRDb250YWluZXIiLCIkNDVRSHYkdXNlU3RhdGUiLCIkNDVRSHYkdXNlQ2FsbGJhY2tSZWYiLCJsYXN0Rm9jdXNlZEVsZW1lbnRSZWYiLCIkNDVRSHYkdXNlUmVmIiwiJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyIsImZvY3VzU2NvcGUiLCJwYXVzZWQiLCJwYXVzZSIsInJlc3VtZSIsIiQ0NVFIdiR1c2VFZmZlY3QiLCJoYW5kbGVGb2N1c0luIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzIiwic2VsZWN0IiwiaGFuZGxlRm9jdXNPdXQiLCJyZWxhdGVkVGFyZ2V0IiwiaGFuZGxlTXV0YXRpb25zIiwibXV0YXRpb25zIiwiZm9jdXNlZEVsZW1lbnQiLCJhY3RpdmVFbGVtZW50IiwibXV0YXRpb24iLCJyZW1vdmVkTm9kZXMiLCJtdXRhdGlvbk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiZGlzY29ubmVjdCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrIiwicHJldmlvdXNseUZvY3VzZWRFbGVtZW50IiwibW91bnRFdmVudCIsImNhbmRpZGF0ZXMiLCJjYW5kaWRhdGUiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdCIsIml0ZW1zIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlQ2FuZGlkYXRlcyIsIml0ZW0iLCJ0YWdOYW1lIiwidW5tb3VudEV2ZW50IiwicmVtb3ZlIiwiJDQ1UUh2JHVzZUNhbGxiYWNrIiwiaXNUYWJLZXkiLCJhbHRLZXkiLCJjdHJsS2V5IiwibWV0YUtleSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJmaXJzdCIsImxhc3QiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUiLCJyZXZlcnNlIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMiLCJzaGlmdEtleSIsIiQ0NVFIdiRjcmVhdGVFbGVtZW50IiwiJDQ1UUh2JFByaW1pdGl2ZSIsIiQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsInRhYkluZGV4Iiwib25LZXlEb3duIiwibm9kZXMiLCJ3YWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsImFjY2VwdE5vZGUiLCJpc0hpZGRlbklucHV0IiwiaGlkZGVuIiwiRklMVEVSX1NLSVAiLCJGSUxURVJfQUNDRVBUIiwibmV4dE5vZGUiLCJjdXJyZW50Tm9kZSIsImVsZW1lbnRzIiwiZWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbiIsInVwVG8iLCJnZXRDb21wdXRlZFN0eWxlIiwidmlzaWJpbGl0eSIsImRpc3BsYXkiLCJwYXJlbnRFbGVtZW50IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwiSFRNTElucHV0RWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc1NlbGVjdGFibGVJbnB1dCIsInN0YWNrIiwiYWN0aXZlRm9jdXNTY29wZSIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZSIsInVuc2hpZnQiLCJfc3RhY2skIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2siLCJhcnJheSIsInVwZGF0ZWRBcnJheSIsInNwbGljZSIsIiRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIiwiJDdTWGwyJGZvcndhcmRSZWYiLCJfZ2xvYmFsVGhpcyRkb2N1bWVudCIsInBvcnRhbFByb3BzIiwiJDdTWGwyJHJlYWN0ZG9tIiwiY3JlYXRlUG9ydGFsIiwiJDdTWGwyJGNyZWF0ZUVsZW1lbnQiLCIkN1NYbDIkUHJpbWl0aXZlIiwiJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIiLCJwcmVzZW50IiwicHJlc2VuY2UiLCIkaXFxM3IkdXNlU3RhdGUiLCJzdHlsZXNSZWYiLCIkaXFxM3IkdXNlUmVmIiwicHJldlByZXNlbnRSZWYiLCJwcmV2QW5pbWF0aW9uTmFtZVJlZiIsImluaXRpYWxTdGF0ZSIsInN0YXRlIiwic2VuZCIsIm1hY2hpbmUiLCIkaXFxM3IkdXNlUmVkdWNlciIsInVzZVJlZHVjZXIiLCJuZXh0U3RhdGUiLCIkZmU5NjNiMzU1MzQ3Y2M2OCRleHBvcnQkM2U2NTQzZGUxNGY4NjE0ZiIsIm1vdW50ZWQiLCJVTk1PVU5UIiwiQU5JTUFUSU9OX09VVCIsInVubW91bnRTdXNwZW5kZWQiLCJNT1VOVCIsIkFOSU1BVElPTl9FTkQiLCJ1bm1vdW50ZWQiLCIkaXFxM3IkdXNlRWZmZWN0IiwiY3VycmVudEFuaW1hdGlvbk5hbWUiLCIkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZSIsIiRpcXEzciR1c2VMYXlvdXRFZmZlY3QiLCJ3YXNQcmVzZW50IiwicHJldkFuaW1hdGlvbk5hbWUiLCJoYW5kbGVBbmltYXRpb25FbmQiLCJpc0N1cnJlbnRBbmltYXRpb24iLCJhbmltYXRpb25OYW1lIiwiJGlxcTNyJGZsdXNoU3luYyIsImhhbmRsZUFuaW1hdGlvblN0YXJ0IiwiaXNQcmVzZW50IiwiJGlxcTNyJHVzZUNhbGxiYWNrIiwiJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJHVzZVByZXNlbmNlIiwiJGlxcTNyJENoaWxkcmVuIiwiJGlxcTNyJHVzZUNvbXBvc2VkUmVmcyIsIiRpcXEzciRjbG9uZUVsZW1lbnQiLCIkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQiLCIkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YyIsIiQxd0VyeiR1c2VFZmZlY3QiLCJfZWRnZUd1YXJkcyQiLCJfZWRnZUd1YXJkcyQyIiwiZWRnZUd1YXJkcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbnNlcnRBZGphY2VudEVsZW1lbnQiLCIkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY3JlYXRlRm9jdXNHdWFyZCIsInNldEF0dHJpYnV0ZSIsImNzc1RleHQiLCJ6ZXJvUmlnaHRDbGFzc05hbWUiLCJmdWxsV2lkdGhDbGFzc05hbWUiLCJ1c2VNZXJnZVJlZnMiLCJkZWZhdWx0VmFsdWUiLCJpbml0aWFsVmFsdWUiLCJuZXdWYWx1ZSIsImFzc2lnblJlZiIsImZhY2FkZSIsIkl0b0kiLCJhIiwiU2lkZUNhciIsInNpZGVDYXIiLCJyZXN0IiwiVGFyZ2V0IiwicmVhZCIsImlzU2lkZUNhckV4cG9ydCIsImVmZmVjdENhciIsIm9wdGlvbnMiLCJtZWRpdW0iLCJkZWZhdWx0cyIsIm1pZGRsZXdhcmUiLCJidWZmZXIiLCJhc3NpZ25lZCIsInVzZU1lZGl1bSIsImRhdGEiLCJ4IiwiYXNzaWduU3luY01lZGl1bSIsImNiIiwiY2JzIiwiYXNzaWduTWVkaXVtIiwicGVuZGluZ1F1ZXVlIiwiZXhlY3V0ZVF1ZXVlIiwiY3ljbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJpbm5lckNyZWF0ZU1lZGl1bSIsImFzeW5jIiwic3NyIiwiY3JlYXRlU2lkZWNhck1lZGl1bSIsIm5vdGhpbmciLCJSZW1vdmVTY3JvbGwiLCJwYXJlbnRSZWYiLCJ1c2VSZWYiLCJvblNjcm9sbENhcHR1cmUiLCJvbldoZWVsQ2FwdHVyZSIsIm9uVG91Y2hNb3ZlQ2FwdHVyZSIsImNhbGxiYWNrcyIsInNldENhbGxiYWNrcyIsImZvcndhcmRQcm9wcyIsInJlbW92ZVNjcm9sbEJhciIsImVuYWJsZWQiLCJzaGFyZHMiLCJub0lzb2xhdGlvbiIsImluZXJ0IiwiYWxsb3dQaW5jaFpvb20iLCJhcyIsIkNvbnRhaW5lciIsImNvbnRhaW5lclJlZiIsImNvbnRhaW5lclByb3BzIiwiRnJhZ21lbnQiLCJsb2NrUmVmIiwiZGVmYXVsdFByb3BzIiwiemVyb1JpZ2h0IiwibWFrZVN0eWxlVGFnIiwidGFnIiwibm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsImdldE5vbmNlIiwic3R5bGVzaGVldFNpbmdsZXRvbiIsImNvdW50ZXIiLCJzdHlsZXNoZWV0IiwiY3NzIiwic3R5bGVTaGVldCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpbnNlcnRTdHlsZVRhZyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0eWxlU2luZ2xldG9uIiwic2hlZXQiLCJ1c2VTdHlsZSIsImlzRHluYW1pYyIsInVzZUVmZmVjdCIsImR5bmFtaWMiLCJ6ZXJvR2FwIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiZ2FwIiwicGFyc2UiLCJwYXJzZUludCIsImdldEdhcFdpZHRoIiwiZ2FwTW9kZSIsIm9mZnNldHMiLCJjcyIsImdldE9mZnNldCIsImRvY3VtZW50V2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvd1dpZHRoIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJTdHlsZSIsImdldFN0eWxlcyIsImFsbG93UmVsYXRpdmUiLCJpbXBvcnRhbnQiLCJjb25jYXQiLCJSZW1vdmVTY3JvbGxCYXIiLCJub1JlbGF0aXZlIiwibm9JbXBvcnRhbnQiLCJwYXNzaXZlU3VwcG9ydGVkIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJlcnIiLCJub25QYXNzaXZlIiwicGFzc2l2ZSIsImVsZW1lbnRDYW5CZVNjcm9sbGVkIiwib3ZlcmZsb3ciLCJvdmVyZmxvd1kiLCJvdmVyZmxvd1giLCJhbHdheXNDb250YWluc1Njcm9sbCIsImxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIiwiYXhpcyIsIlNoYWRvd1Jvb3QiLCJob3N0IiwiZWxlbWVudENvdWxkQmVTY3JvbGxlZCIsImdldFNjcm9sbFZhcmlhYmxlcyIsImVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkIiwiZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsV2lkdGgiLCJnZXRIU2Nyb2xsVmFyaWFibGVzIiwiZ2V0VG91Y2hYWSIsImNoYW5nZWRUb3VjaGVzIiwiY2xpZW50WCIsImNsaWVudFkiLCJnZXREZWx0YVhZIiwiZGVsdGFYIiwiZGVsdGFZIiwiZXh0cmFjdFJlZiIsImdlbmVyYXRlU3R5bGUiLCJpZENvdW50ZXIiLCJsb2NrU3RhY2siLCJleHBvcnRlZCIsInNob3VsZFByZXZlbnRRdWV1ZSIsInRvdWNoU3RhcnRSZWYiLCJhY3RpdmVBeGlzIiwibGFzdFByb3BzIiwiY2xhc3NMaXN0IiwiYWxsb3dfMSIsInRvIiwicGFjayIsImFyIiwibCIsIl9fc3ByZWFkQXJyYXkiLCJlbCIsInNob3VsZENhbmNlbEV2ZW50IiwicGFyZW50IiwidG91Y2hlcyIsImN1cnJlbnRBeGlzIiwidG91Y2giLCJ0b3VjaFN0YXJ0IiwibW92ZURpcmVjdGlvbiIsImFicyIsImNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24iLCJjYW5jZWxpbmdBeGlzIiwiZW5kVGFyZ2V0Iiwic291cmNlRGVsdGEiLCJub092ZXJzY3JvbGwiLCJkaXJlY3Rpb25GYWN0b3IiLCJkaXJlY3Rpb24iLCJnZXREaXJlY3Rpb25GYWN0b3IiLCJkZWx0YSIsInRhcmdldEluTG9jayIsInNob3VsZENhbmNlbFNjcm9sbCIsImlzRGVsdGFQb3NpdGl2ZSIsImF2YWlsYWJsZVNjcm9sbCIsImF2YWlsYWJsZVNjcm9sbFRvcCIsInBvc2l0aW9uIiwiZWxlbWVudFNjcm9sbCIsImhhbmRsZVNjcm9sbCIsInNob3VsZFByZXZlbnQiLCJfZXZlbnQiLCJzb3VyY2VFdmVudCIsInkiLCJzaG91bGQiLCJzaGFyZE5vZGVzIiwic2hvdWxkQ2FuY2VsIiwic2Nyb2xsVG91Y2hTdGFydCIsInNjcm9sbFdoZWVsIiwic2Nyb2xsVG91Y2hNb3ZlIiwiaW5zdCIsIlJlYWN0UmVtb3ZlU2Nyb2xsIiwiJDAxYjljJFJlbW92ZVNjcm9sbCIsImNvdW50ZXJNYXAiLCJXZWFrTWFwIiwidW5jb250cm9sbGVkTm9kZXMiLCJtYXJrZXJNYXAiLCJsb2NrQ291bnQiLCJ1bndyYXBIb3N0IiwiYXBwbHlBdHRyaWJ1dGVUb090aGVycyIsIm9yaWdpbmFsVGFyZ2V0IiwibWFya2VyTmFtZSIsImNvbnRyb2xBdHRyaWJ1dGUiLCJ0YXJnZXRzIiwiY29ycmVjdGVkVGFyZ2V0IiwiY29uc29sZSIsImVycm9yIiwiY29ycmVjdFRhcmdldHMiLCJtYXJrZXJDb3VudGVyIiwiaGlkZGVuTm9kZXMiLCJlbGVtZW50c1RvS2VlcCIsImVsZW1lbnRzVG9TdG9wIiwia2VlcCIsImhhcyIsImRlZXAiLCJhdHRyIiwiZ2V0QXR0cmlidXRlIiwiYWxyZWFkeUhpZGRlbiIsImNvdW50ZXJWYWx1ZSIsIm1hcmtlclZhbHVlIiwic2V0IiwiY2xlYXIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJoaWRlT3RoZXJzIiwiYWN0aXZlUGFyZW50Tm9kZSIsImdldERlZmF1bHRQYXJlbnQiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIiwiJDY3VUhtJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dQcm92aWRlciIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHQiLCJmb3JjZU1vdW50IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3IiwiJDY3VUhtJGZvcndhcmRSZWYiLCJwb3J0YWxDb250ZXh0IiwiX19zY29wZURpYWxvZyIsIm92ZXJsYXlQcm9wcyIsIm1vZGFsIiwiJDY3VUhtJGNyZWF0ZUVsZW1lbnQiLCIkNjdVSG0kUHJlc2VuY2UiLCJvcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsIiwiJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDY3VUhtJFJlbW92ZVNjcm9sbCIsIiQ2N1VIbSRTbG90IiwiY29udGVudFJlZiIsIiQ2N1VIbSRQcmltaXRpdmUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YiLCJjb250ZW50UHJvcHMiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCIsIiQ2N1VIbSR1c2VSZWYiLCIkNjdVSG0kdXNlQ29tcG9zZWRSZWZzIiwiJDY3VUhtJHVzZUVmZmVjdCIsImNvbnRlbnQiLCIkNjdVSG0kaGlkZU90aGVycyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50SW1wbCIsInRyYXBGb2N1cyIsIm9uQ2xvc2VBdXRvRm9jdXMiLCIkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY29udGV4dCR0cmlnZ2VyUmVmJGMiLCJ0cmlnZ2VyUmVmIiwiY3RybExlZnRDbGljayIsImhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmIiwiaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmIiwiX3Byb3BzJG9uQ2xvc2VBdXRvRm9jIiwiX2NvbnRleHQkdHJpZ2dlclJlZiRjMiIsIl9wcm9wcyRvbkludGVyYWN0T3V0cyIsIl9jb250ZXh0JHRyaWdnZXJSZWYkYzMiLCJvbk9wZW5BdXRvRm9jdXMiLCIkNjdVSG0kdXNlRm9jdXNHdWFyZHMiLCIkNjdVSG0kRnJhZ21lbnQiLCIkNjdVSG0kRm9jdXNTY29wZSIsIiQ2N1VIbSREaXNtaXNzYWJsZUxheWVyIiwicm9sZSIsImNvbnRlbnRJZCIsImRlc2NyaXB0aW9uSWQiLCJ0aXRsZUlkIiwib25PcGVuQ2hhbmdlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSIsInRpdGxlUHJvcHMiLCJoMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IiwiZGVzY3JpcHRpb25Qcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjIiwiY2xvc2VQcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0IiwiJDY3VUhtJGNyZWF0ZUNvbnRleHQiLCJjb250ZW50TmFtZSIsInRpdGxlTmFtZSIsImRvY3NTbHVnIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJvcGVuUHJvcCIsImRlZmF1bHRPcGVuIiwic2V0T3BlbiIsIiQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ2N1VIbSR1c2VJZCIsIm9uT3BlblRvZ2dsZSIsIiQ2N1VIbSR1c2VDYWxsYmFjayIsInByZXZPcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkNjdVSG0kQ2hpbGRyZW4iLCIkNjdVSG0kUG9ydGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSIsIl9wYXRoIiwiU3ZnQ2xvc2UiLCJ4bWxucyIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsIm1hc2tVbml0cyIsIm1hc2tUeXBlIiwiZCIsIm1hc2siLCIkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiIsIlBST1ZJREVSX05BTUUiLCJjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCIsImNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUiLCJDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIiwidXNlQ29sbGVjdGlvbkNvbnRleHQiLCJjb2xsZWN0aW9uUmVmIiwiaXRlbU1hcCIsIk1hcCIsIkNPTExFQ1RJT05fU0xPVF9OQU1FIiwiSVRFTV9TTE9UX05BTUUiLCJJVEVNX0RBVEFfQVRUUiIsIiQ2dlloVSRyZWFjdCIsIlNsb3QiLCIkNnZZaFUkdXNlQ29tcG9zZWRSZWZzIiwiJDZ2WWhVJFNsb3QiLCJJdGVtU2xvdCIsIml0ZW1EYXRhIiwiY29sbGVjdGlvbk5vZGUiLCJvcmRlcmVkTm9kZXMiLCJzb3J0IiwiYiIsIiRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0IiwiJDdHamNkJGNyZWF0ZUNvbnRleHQiLCIkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyIsImxvY2FsRGlyIiwiZ2xvYmFsRGlyIiwiJDdHamNkJHVzZUNvbnRleHQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24iLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGUiLCIkOThJeWUkY3JlYXRlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQiLCIkOThJeWUkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzgiLCIkOThJeWUkZm9yd2FyZFJlZiIsIiQ5OEl5ZSRjcmVhdGVFbGVtZW50IiwiX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwiLCIkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJvcmllbnRhdGlvbiIsImRpciIsImN1cnJlbnRUYWJTdG9wSWQiLCJjdXJyZW50VGFiU3RvcElkUHJvcCIsImRlZmF1bHRDdXJyZW50VGFiU3RvcElkIiwib25DdXJyZW50VGFiU3RvcElkQ2hhbmdlIiwib25FbnRyeUZvY3VzIiwiZ3JvdXBQcm9wcyIsIiQ5OEl5ZSR1c2VSZWYiLCIkOThJeWUkdXNlQ29tcG9zZWRSZWZzIiwiJDk4SXllJHVzZURpcmVjdGlvbiIsInNldEN1cnJlbnRUYWJTdG9wSWQiLCIkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJpc1RhYmJpbmdCYWNrT3V0Iiwic2V0SXNUYWJiaW5nQmFja091dCIsIiQ5OEl5ZSR1c2VTdGF0ZSIsImhhbmRsZUVudHJ5Rm9jdXMiLCIkOThJeWUkdXNlQ2FsbGJhY2tSZWYiLCJnZXRJdGVtcyIsImlzQ2xpY2tGb2N1c1JlZiIsImZvY3VzYWJsZUl0ZW1zQ291bnQiLCJzZXRGb2N1c2FibGVJdGVtc0NvdW50IiwiJDk4SXllJHVzZUVmZmVjdCIsIm9uSXRlbUZvY3VzIiwiJDk4SXllJHVzZUNhbGxiYWNrIiwidGFiU3RvcElkIiwib25JdGVtU2hpZnRUYWIiLCJvbkZvY3VzYWJsZUl0ZW1BZGQiLCJwcmV2Q291bnQiLCJvbkZvY3VzYWJsZUl0ZW1SZW1vdmUiLCIkOThJeWUkUHJpbWl0aXZlIiwib3V0bGluZSIsIm9uTW91c2VEb3duIiwiJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwib25Gb2N1cyIsImlzS2V5Ym9hcmRGb2N1cyIsImVudHJ5Rm9jdXNFdmVudCIsImZvY3VzYWJsZSIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0IiwiYWN0aXZlIiwib25CbHVyIiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCIsIml0ZW1Qcm9wcyIsImF1dG9JZCIsIiQ5OEl5ZSR1c2VJZCIsImlzQ3VycmVudFRhYlN0b3AiLCJzcGFuIiwiZm9jdXNJbnRlbnQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQiLCJjYW5kaWRhdGVOb2RlcyIsImN1cnJlbnRJbmRleCIsInN0YXJ0SW5kZXgiLCJfIiwiQXJyb3dMZWZ0IiwiQXJyb3dVcCIsIkFycm93UmlnaHQiLCJBcnJvd0Rvd24iLCJQYWdlVXAiLCJIb21lIiwiUGFnZURvd24iLCJFbmQiLCJQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EiLCIkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlIiwiJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQiLCJiYXNlSWQiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZUNvbnRlbnRJZCIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDFJSHprJGZvcndhcmRSZWYiLCJfX3Njb3BlVGFicyIsInZhbHVlUHJvcCIsIm9uVmFsdWVDaGFuZ2UiLCJhY3RpdmF0aW9uTW9kZSIsInRhYnNQcm9wcyIsIiQxSUh6ayR1c2VEaXJlY3Rpb24iLCJzZXRWYWx1ZSIsIiQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQxSUh6ayRjcmVhdGVFbGVtZW50IiwiJDFJSHprJHVzZUlkIiwiJDFJSHprJFByaW1pdGl2ZSIsIiQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IiwibGlzdFByb3BzIiwicm92aW5nRm9jdXNHcm91cFNjb3BlIiwiJDFJSHprJFJvb3QiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsInRyaWdnZXJQcm9wcyIsInRyaWdnZXJJZCIsImlzU2VsZWN0ZWQiLCIkMUlIemskSXRlbSIsIiQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVycyIsImlzQXV0b21hdGljQWN0aXZhdGlvbiIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiIsIiQxSUh6ayR1c2VSZWYiLCIkMUlIemskdXNlRWZmZWN0IiwickFGIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCIkMUlIemskUHJlc2VuY2UiLCJhbmltYXRpb25EdXJhdGlvbiIsIiQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIiwiJDhMdnZLJHVzZVJlZiIsInByZXZpb3VzIiwiJDhMdnZLJHVzZU1lbW8iLCIkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOCIsInNldFNpemUiLCIkOWd5R1IkdXNlU3RhdGUiLCIkOWd5R1IkdXNlTGF5b3V0RWZmZWN0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5IiwiYm9yZGVyU2l6ZUVudHJ5IiwiYm9yZGVyU2l6ZSIsImJveCIsInVub2JzZXJ2ZSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMiLCIkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiIsIiRpclBJbCRmb3J3YXJkUmVmIiwiX19zY29wZVN3aXRjaCIsImNoZWNrZWQiLCJjaGVja2VkUHJvcCIsImRlZmF1bHRDaGVja2VkIiwicmVxdWlyZWQiLCJvbkNoZWNrZWRDaGFuZ2UiLCJzd2l0Y2hQcm9wcyIsInNldEJ1dHRvbiIsIiRpclBJbCR1c2VTdGF0ZSIsIiRpclBJbCR1c2VDb21wb3NlZFJlZnMiLCJoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiIsIiRpclBJbCR1c2VSZWYiLCJpc0Zvcm1Db250cm9sIiwiY2xvc2VzdCIsInNldENoZWNrZWQiLCIkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkaXJQSWwkY3JlYXRlRWxlbWVudCIsIiRpclBJbCRQcmltaXRpdmUiLCIkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUiLCIkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJwcmV2Q2hlY2tlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwic3RvcFByb3BhZ2F0aW9uIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0IiwiY29udHJvbCIsInRyYW5zZm9ybSIsImlucHV0UHJvcHMiLCIkaXJQSWwkdXNlUHJldmlvdXMiLCJjb250cm9sU2l6ZSIsIiRpclBJbCR1c2VTaXplIiwiJGlyUElsJHVzZUVmZmVjdCIsImlucHV0IiwiaW5wdXRQcm90byIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkV2ZW50Iiwib3BhY2l0eSIsIm1hcmdpbiIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIiLCJ0aHVtYlByb3BzIiwiZ2V0QWxpZ25tZW50IiwicGxhY2VtZW50Iiwic3BsaXQiLCJnZXRMZW5ndGhGcm9tQXhpcyIsImdldFNpZGUiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJydGwiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsImNvbW1vblgiLCJjb21tb25ZIiwibWFpbkF4aXMiLCJjb21tb25BbGlnbiIsImlzVmVydGljYWwiLCJjb29yZHMiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nIiwicGFkZGluZyIsImJvdHRvbSIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImRldGVjdE92ZXJmbG93IiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwicGxhdGZvcm0iLCJyZWN0cyIsInN0cmF0ZWd5IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsImdldENsaXBwaW5nUmVjdCIsImlzRWxlbWVudCIsImNvbnRleHRFbGVtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJnZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJtaW4iLCJ3aXRoaW4iLCJtaW4kMSIsIm1heCQxIiwiYXJyb3ciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXREaW1lbnNpb25zIiwiaXNZQXhpcyIsIm1pblByb3AiLCJtYXhQcm9wIiwiY2xpZW50UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImxhcmdlc3RQb3NzaWJsZVBhZGRpbmciLCJtaW5QYWRkaW5nIiwibWF4UGFkZGluZyIsImNlbnRlciIsIm9mZnNldCIsInNob3VsZEFkZE9mZnNldCIsImNlbnRlck9mZnNldCIsInNpZGVzIiwib3Bwb3NpdGVTaWRlTWFwIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJyZXBsYWNlIiwic2lkZSIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwic3RhcnQiLCJlbmQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJfbWlkZGxld2FyZURhdGEkZmxpcCIsIm1pZGRsZXdhcmVEYXRhIiwiaW5pdGlhbFBsYWNlbWVudCIsImNoZWNrTWFpbkF4aXMiLCJjcm9zc0F4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImZhbGxiYWNrUGxhY2VtZW50cyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrU3RyYXRlZ3kiLCJmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwiZmxpcEFsaWdubWVudCIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsImlzQmFzZVBsYWNlbWVudCIsImlzUlRMIiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZFBsYWNlbWVudHMiLCJsaXN0IiwiaXNTdGFydCIsImxyIiwicmwiLCJ0YiIsImJ0IiwiZ2V0U2lkZUxpc3QiLCJnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIm92ZXJmbG93cyIsIm92ZXJmbG93c0RhdGEiLCJtYWluIiwiY3Jvc3MiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldEFsaWdubWVudFNpZGVzIiwiZXZlcnkiLCJfbWlkZGxld2FyZURhdGEkZmxpcDIiLCJfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIiLCJuZXh0SW5kZXgiLCJuZXh0UGxhY2VtZW50IiwicmVzZXQiLCJyZXNldFBsYWNlbWVudCIsIl9vdmVyZmxvd3NEYXRhJG1hcCRzbyIsImFjYyIsImdldFNpZGVPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwiaGlkZSIsInJlZmVyZW5jZUhpZGRlbk9mZnNldHMiLCJyZWZlcmVuY2VIaWRkZW4iLCJlc2NhcGVkT2Zmc2V0cyIsImVzY2FwZWQiLCJkaWZmQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJhbGlnbm1lbnRBeGlzIiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJnZXRDcm9zc0F4aXMiLCJzaGlmdCIsImxpbWl0ZXIiLCJmbiIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwibGltaXRTaGlmdCIsInJhd09mZnNldCIsImNvbXB1dGVkT2Zmc2V0IiwibGVuIiwibGltaXRNaW4iLCJsaW1pdE1heCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZTIiLCJpc09yaWdpblNpZGUiLCJpc1hBeGlzIiwiaGVpZ2h0U2lkZSIsIndpZHRoU2lkZSIsIm92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0Iiwib3ZlcmZsb3dBdmFpbGFibGVXaWR0aCIsIm5vU2hpZnQiLCJhdmFpbGFibGVIZWlnaHQiLCJhdmFpbGFibGVXaWR0aCIsIm1heGltdW1DbGlwcGluZ1dpZHRoIiwibWF4aW11bUNsaXBwaW5nSGVpZ2h0IiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsIm5leHREaW1lbnNpb25zIiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJnZXRDb21wdXRlZFN0eWxlJDEiLCJpc05vZGUiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJpc1RhYmxlRWxlbWVudCIsImlzQ29udGFpbmluZ0Jsb2NrIiwic2FmYXJpIiwiaXNTYWZhcmkiLCJwZXJzcGVjdGl2ZSIsImJhY2tkcm9wRmlsdGVyIiwid2lsbENoYW5nZSIsImNvbnRhaW4iLCJDU1MiLCJzdXBwb3J0cyIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsInJvdW5kIiwiZ2V0Q3NzRGltZW5zaW9ucyIsInBhcnNlRmxvYXQiLCJoYXNPZmZzZXQiLCJzaG91bGRGYWxsYmFjayIsImZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsIkZBTExCQUNLX1NDQUxFIiwiZG9tRWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIk51bWJlciIsImlzRmluaXRlIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsIl93aW4kdmlzdWFsVmlld3BvcnQiLCJfd2luJHZpc3VhbFZpZXdwb3J0MiIsIndpbiIsInZpc3VhbFZpZXdwb3J0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50SUZyYW1lIiwiZnJhbWVFbGVtZW50IiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwiY2xpZW50TGVmdCIsInBhZGRpbmdMZWZ0IiwiY2xpZW50VG9wIiwicGFkZGluZ1RvcCIsImdldE5vZGVTY3JvbGwiLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldFBhcmVudE5vZGUiLCJyZXN1bHQiLCJhc3NpZ25lZFNsb3QiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImh0bWwiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0Vmlld3BvcnRSZWN0Iiwic2Nyb2xsIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsImdldENvbnRhaW5pbmdCbG9jayIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImdldENsaWVudFJlY3RzIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwiYW5pbWF0aW9uRnJhbWUiLCJhbmNlc3RvcnMiLCJpc1Zpc3VhbFZpZXdwb3J0IiwiZnJhbWVJZCIsIm9ic2VydmVyIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9vYnNlcnZlciIsImNvbXB1dGVQb3NpdGlvbiIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbmZpZyIsInZhbGlkTWlkZGxld2FyZSIsImdldEVsZW1lbnRSZWN0cyIsInN0YXRlZnVsUGxhY2VtZW50IiwicmVzZXRDb3VudCIsIm5leHRYIiwibmV4dFkiLCJjb21wdXRlUG9zaXRpb24kMSIsImFycm93JDEiLCJ1c2VMYXlvdXRFZmZlY3QiLCJkZWVwRXF1YWwiLCJrZXlzIiwiJCR0eXBlb2YiLCJnZXREUFIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRCeURQUiIsImRwciIsInVzZUxhdGVzdFJlZiIsIiQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGpibkV4JGZvcndhcmRSZWYiLCJhcnJvd1Byb3BzIiwiJGpibkV4JGNyZWF0ZUVsZW1lbnQiLCIkamJuRXgkUHJpbWl0aXZlIiwic3ZnIiwiJGpibkV4JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJwb2ludHMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyMyIsIiRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQiLCIka1k5M1YkZm9yd2FyZFJlZiIsIl9fc2NvcGVQb3BwZXIiLCJ2aXJ0dWFsUmVmIiwiYW5jaG9yUHJvcHMiLCIka1k5M1YkdXNlUmVmIiwiJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyIsIiRrWTkzViR1c2VFZmZlY3QiLCJvbkFuY2hvckNoYW5nZSIsIiRrWTkzViRjcmVhdGVFbGVtZW50IiwiJGtZOTNWJFByaW1pdGl2ZSIsIiRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyIsIl9hcnJvd1NpemUkd2lkdGgiLCJfYXJyb3dTaXplJGhlaWdodCIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzIiLCJfbWlkZGxld2FyZURhdGEkYXJyb3czIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zMiIsIl9taWRkbGV3YXJlRGF0YSRoaWRlIiwic2lkZU9mZnNldCIsImFsaWduIiwiYWxpZ25PZmZzZXQiLCJhcnJvd1BhZGRpbmciLCJjb2xsaXNpb25Cb3VuZGFyeSIsImNvbGxpc2lvblBhZGRpbmciLCJjb2xsaXNpb25QYWRkaW5nUHJvcCIsInN0aWNreSIsImhpZGVXaGVuRGV0YWNoZWQiLCJhdm9pZENvbGxpc2lvbnMiLCJvblBsYWNlZCIsInNldENvbnRlbnQiLCIka1k5M1YkdXNlU3RhdGUiLCJzZXRBcnJvdyIsImFycm93U2l6ZSIsIiRrWTkzViR1c2VTaXplIiwiYXJyb3dXaWR0aCIsImFycm93SGVpZ2h0IiwiZGVzaXJlZFBsYWNlbWVudCIsImhhc0V4cGxpY2l0Qm91bmRhcmllcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwiLCJmbG9hdGluZ1N0eWxlcyIsImlzUG9zaXRpb25lZCIsImV4dGVybmFsUmVmZXJlbmNlIiwiZXh0ZXJuYWxGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwic2V0RGF0YSIsImxhdGVzdE1pZGRsZXdhcmUiLCJzZXRMYXRlc3RNaWRkbGV3YXJlIiwiX3JlZmVyZW5jZSIsIl9zZXRSZWZlcmVuY2UiLCJfZmxvYXRpbmciLCJfc2V0RmxvYXRpbmciLCJzZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VSZWYiLCJzZXRGbG9hdGluZyIsImZsb2F0aW5nUmVmIiwicmVmZXJlbmNlRWwiLCJmbG9hdGluZ0VsIiwiZGF0YVJlZiIsIndoaWxlRWxlbWVudHNNb3VudGVkUmVmIiwicGxhdGZvcm1SZWYiLCJmdWxsRGF0YSIsImlzTW91bnRlZFJlZiIsIlJlYWN0RE9NIiwiaW5pdGlhbFN0eWxlcyIsIiRrWTkzViR1c2VGbG9hdGluZyIsIiRrWTkzViRhdXRvVXBkYXRlIiwiYW5jaG9yIiwiJGtZOTNWJG9mZnNldCIsIiRrWTkzViRzaGlmdCIsIiRrWTkzViRsaW1pdFNoaWZ0IiwiJGtZOTNWJGZsaXAiLCIka1k5M1Ykc2l6ZSIsImFuY2hvcldpZHRoIiwiYW5jaG9ySGVpZ2h0IiwiY29udGVudFN0eWxlIiwic2V0UHJvcGVydHkiLCIka1k5M1YkYXJyb3ciLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luIiwiJGtZOTNWJGhpZGUiLCJwbGFjZWRTaWRlIiwicGxhY2VkQWxpZ24iLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudCIsImhhbmRsZVBsYWNlZCIsIiRrWTkzViR1c2VDYWxsYmFja1JlZiIsIiRrWTkzViR1c2VMYXlvdXRFZmZlY3QiLCJhcnJvd1giLCJhcnJvd1kiLCJjYW5ub3RDZW50ZXJBcnJvdyIsImNvbnRlbnRaSW5kZXgiLCJzZXRDb250ZW50WkluZGV4IiwiekluZGV4IiwibWluV2lkdGgiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJvbkFycm93Q2hhbmdlIiwic2hvdWxkSGlkZUFycm93IiwiYW5pbWF0aW9uIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREUiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c0IiwiX21pZGRsZXdhcmVEYXRhJGFycm93NSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzYiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c3IiwiX21pZGRsZXdhcmVEYXRhJGFycm93OCIsImlzQXJyb3dIaWRkZW4iLCJub0Fycm93QWxpZ24iLCJhcnJvd1hDZW50ZXIiLCJhcnJvd1lDZW50ZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldEFuY2hvciIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsImNvbnRlbnRDb250ZXh0IiwiYmFzZVNpZGUiLCIka1k5M1YkUm9vdCIsIiRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0IiwiJGtWd253JGZvcndhcmRSZWYiLCIka1Z3bnckY3JlYXRlRWxlbWVudCIsIiRrVndudyRQcmltaXRpdmUiLCIka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJib3JkZXIiLCJjbGlwIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NSIsIiQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4iLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZXh0UHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQiLCIkOHdlcEskZm9yd2FyZFJlZiIsIl9fc2NvcGVUb29sdGlwIiwicHJvdmlkZXJDb250ZXh0IiwicG9wcGVyU2NvcGUiLCIkOHdlcEskdXNlQ29tcG9zZWRSZWZzIiwiJDh3ZXBLJHVzZVJlZiIsIm9uVHJpZ2dlckNoYW5nZSIsImlzUG9pbnRlckRvd25SZWYiLCJoYXNQb2ludGVyTW92ZU9wZW5lZFJlZiIsImhhbmRsZVBvaW50ZXJVcCIsIiQ4d2VwSyR1c2VDYWxsYmFjayIsIiQ4d2VwSyR1c2VFZmZlY3QiLCIkOHdlcEskY3JlYXRlRWxlbWVudCIsIiQ4d2VwSyRBbmNob3IiLCIkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOHdlcEskUHJpbWl0aXZlIiwic3RhdGVBdHRyaWJ1dGUiLCJvblBvaW50ZXJNb3ZlIiwiJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaXNQb2ludGVySW5UcmFuc2l0UmVmIiwib25UcmlnZ2VyRW50ZXIiLCJvblBvaW50ZXJMZWF2ZSIsIm9uVHJpZ2dlckxlYXZlIiwib25Qb2ludGVyRG93biIsIm9uT3BlbiIsIm9uQ2xvc2UiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUE9SVEFMX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUG9ydGFsUHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9ydGFsQ29udGV4dCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZTkwMDNlMmJlMzdlYzA2MCIsIiQ4d2VwSyRQcmVzZW5jZSIsImRpc2FibGVIb3ZlcmFibGVDb250ZW50IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEhvdmVyYWJsZSIsInBvaW50ZXJHcmFjZUFyZWEiLCJzZXRQb2ludGVyR3JhY2VBcmVhIiwiJDh3ZXBLJHVzZVN0YXRlIiwidHJpZ2dlciIsIm9uUG9pbnRlckluVHJhbnNpdENoYW5nZSIsImhhbmRsZVJlbW92ZUdyYWNlQXJlYSIsImhhbmRsZUNyZWF0ZUdyYWNlQXJlYSIsImhvdmVyVGFyZ2V0IiwiZXhpdFBvaW50IiwicGFkZGVkRXhpdFBvaW50cyIsImV4aXRTaWRlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldFBhZGRlZEV4aXRQb2ludHMiLCJwb2ludCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0IiwiZ3JhY2VBcmVhIiwibmV3UG9pbnRzIiwidXBwZXJIdWxsIiwicSIsInIiLCJwb3AiLCJsb3dlckh1bGwiLCJpMSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QiLCJoYW5kbGVUcmlnZ2VyTGVhdmUiLCJoYW5kbGVDb250ZW50TGVhdmUiLCJoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSIsInBvaW50ZXJQb3NpdGlvbiIsImhhc0VudGVyZWRUYXJnZXQiLCJpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhIiwicG9seWdvbiIsImluc2lkZSIsImoiLCJ4aSIsInlpIiwieGoiLCJ5aiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0IiwiaXNJbnNpZGUiLCJhcmlhTGFiZWwiLCJjYXB0dXJlIiwiJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIiLCIkOHdlcEskQ29udGVudCIsIiQ4d2VwSyRTbG90dGFibGUiLCIkOHdlcEskUm9vdDEiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSIsImRlbGF5RHVyYXRpb24iLCJza2lwRGVsYXlEdXJhdGlvbiIsImlzT3BlbkRlbGF5ZWQiLCJzZXRJc09wZW5EZWxheWVkIiwic2tpcERlbGF5VGltZXJSZWYiLCJza2lwRGVsYXlUaW1lciIsImluVHJhbnNpdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wIiwiZGVsYXlEdXJhdGlvblByb3AiLCJzZXRUcmlnZ2VyIiwiJDh3ZXBLJHVzZUlkIiwib3BlblRpbWVyUmVmIiwid2FzT3BlbkRlbGF5ZWRSZWYiLCJvcGVuMSIsIiQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4d2VwSyR1c2VNZW1vIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlRGVsYXllZE9wZW4iLCIkOHdlcEskUm9vdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkOHdlcEskUG9ydGFsIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsIiQ4d2VwSyRBcnJvdyIsIiRhZTY5MzNlNTM1MjQ3ZDNkJGV4cG9ydCQ3ZDE1YjY0Y2Y1YTNhNGM0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RJT05fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiJDAxYjljJGNyZWF0ZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIiwiJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdE5hdGl2ZU9wdGlvbnNQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEiLCIkMDFiOWMkZm9yd2FyZFJlZiIsIl9fc2NvcGVTZWxlY3QiLCJpc0Rpc2FibGVkIiwiJDAxYjljJHVzZUNvbXBvc2VkUmVmcyIsInNlYXJjaFJlZiIsImhhbmRsZVR5cGVhaGVhZFNlYXJjaCIsInJlc2V0VHlwZWFoZWFkIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCIsInNlYXJjaCIsImVuYWJsZWRJdGVtcyIsImN1cnJlbnRJdGVtIiwibmV4dEl0ZW0iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtIiwiJDAxYjljJGNyZWF0ZUVsZW1lbnQiLCIkMDFiOWMkQW5jaG9yIiwiJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDAxYjljJFByaW1pdGl2ZSIsIiQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyIsImhhc1BvaW50ZXJDYXB0dXJlIiwicG9pbnRlcklkIiwicmVsZWFzZVBvaW50ZXJDYXB0dXJlIiwidHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmIiwicGFnZVgiLCJwYWdlWSIsImlzVHlwaW5nQWhlYWQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCIsInBsYWNlaG9sZGVyIiwidmFsdWVQcm9wcyIsIm9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UiLCJoYXNDaGlsZHJlbiIsIm9uVmFsdWVOb2RlQ2hhbmdlIiwiJDAxYjljJHVzZUxheW91dEVmZmVjdCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IiwiaWNvblByb3BzIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkIiwiZnJhZ21lbnQiLCJzZXRGcmFnbWVudCIsIiQwMWI5YyR1c2VTdGF0ZSIsIkRvY3VtZW50RnJhZ21lbnQiLCJmcmFnIiwiJDAxYjljJGNyZWF0ZVBvcnRhbCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0Iiwic2VsZWN0ZWRJdGVtIiwic2V0U2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtVGV4dCIsInNldFNlbGVjdGVkSXRlbVRleHQiLCJzZXRJc1Bvc2l0aW9uZWQiLCJmaXJzdFZhbGlkSXRlbUZvdW5kUmVmIiwiJDAxYjljJHVzZVJlZiIsIiQwMWI5YyR1c2VFZmZlY3QiLCIkMDFiOWMkaGlkZU90aGVycyIsIiQwMWI5YyR1c2VGb2N1c0d1YXJkcyIsImZvY3VzRmlyc3QiLCIkMDFiOWMkdXNlQ2FsbGJhY2siLCJmaXJzdEl0ZW0iLCJyZXN0SXRlbXMiLCJsYXN0SXRlbSIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJmb2N1c1NlbGVjdGVkSXRlbSIsInBvaW50ZXJNb3ZlRGVsdGEiLCJoYW5kbGVQb2ludGVyTW92ZSIsIl90cmlnZ2VyUG9pbnRlckRvd25QbyIsIl90cmlnZ2VyUG9pbnRlckRvd25QbzIiLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8zIiwiX3RyaWdnZXJQb2ludGVyRG93blBvNCIsImNsb3NlIiwiaXRlbVJlZkNhbGxiYWNrIiwiaXNGaXJzdFZhbGlkSXRlbSIsImhhbmRsZUl0ZW1MZWF2ZSIsIml0ZW1UZXh0UmVmQ2FsbGJhY2siLCJTZWxlY3RQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIiwicG9wcGVyQ29udGVudFByb3BzIiwib25WaWV3cG9ydENoYW5nZSIsIm9uSXRlbUxlYXZlIiwiJDAxYjljJFNsb3QiLCIkMDFiOWMkRm9jdXNTY29wZSIsIl9jb250ZXh0JHRyaWdnZXIiLCIkMDFiOWMkRGlzbWlzc2FibGVMYXllciIsIm9uQ29udGV4dE1lbnUiLCJmbGV4RGlyZWN0aW9uIiwiaXNNb2RpZmllcktleSIsImN1cnJlbnRFbGVtZW50IiwicG9wcGVyUHJvcHMiLCJjb250ZW50V3JhcHBlciIsInNldENvbnRlbnRXcmFwcGVyIiwic2hvdWxkRXhwYW5kT25TY3JvbGxSZWYiLCJzaG91bGRSZXBvc2l0aW9uUmVmIiwidmFsdWVOb2RlIiwidHJpZ2dlclJlY3QiLCJjb250ZW50UmVjdCIsInZhbHVlTm9kZVJlY3QiLCJpdGVtVGV4dFJlY3QiLCJpdGVtVGV4dE9mZnNldCIsImxlZnREZWx0YSIsIm1pbkNvbnRlbnRXaWR0aCIsImNvbnRlbnRXaWR0aCIsInJpZ2h0RWRnZSIsImNsYW1wZWRMZWZ0IiwiJDAxYjljJGNsYW1wIiwicmlnaHREZWx0YSIsImxlZnRFZGdlIiwiY2xhbXBlZFJpZ2h0IiwiaW5uZXJIZWlnaHQiLCJpdGVtc0hlaWdodCIsImNvbnRlbnRTdHlsZXMiLCJjb250ZW50Qm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsImNvbnRlbnRQYWRkaW5nVG9wIiwiY29udGVudEJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJmdWxsQ29udGVudEhlaWdodCIsInBhZGRpbmdCb3R0b20iLCJtaW5Db250ZW50SGVpZ2h0Iiwidmlld3BvcnRTdHlsZXMiLCJ2aWV3cG9ydFBhZGRpbmdUb3AiLCJ2aWV3cG9ydFBhZGRpbmdCb3R0b20iLCJ0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlIiwidHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSIsInNlbGVjdGVkSXRlbUhhbGZIZWlnaHQiLCJjb250ZW50VG9wVG9JdGVtTWlkZGxlIiwiaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSIsImlzTGFzdEl0ZW0iLCJ2aWV3cG9ydE9mZnNldEJvdHRvbSIsImlzRmlyc3RJdGVtIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIiLCJvblNjcm9sbEJ1dHRvbkNoYW5nZSIsImJveFNpemluZyIsIiQwMWI5YyRDb250ZW50IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQiLCJ2aWV3cG9ydFByb3BzIiwidmlld3BvcnRDb250ZXh0IiwicHJldlNjcm9sbFRvcFJlZiIsIiQwMWI5YyRGcmFnbWVudCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiZmxleCIsIm9uU2Nyb2xsIiwic2Nyb2xsZWRCeSIsImNzc01pbkhlaWdodCIsImNzc0hlaWdodCIsInByZXZIZWlnaHQiLCJuZXh0SGVpZ2h0IiwiY2xhbXBlZE5leHRIZWlnaHQiLCJoZWlnaHREaWZmIiwianVzdGlmeUNvbnRlbnQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiIsInRleHRWYWx1ZSIsInRleHRWYWx1ZVByb3AiLCJzZXRUZXh0VmFsdWUiLCJpc0ZvY3VzZWQiLCJzZXRJc0ZvY3VzZWQiLCJfY29udGVudENvbnRleHQkaXRlbVIiLCJ0ZXh0SWQiLCIkMDFiOWMkdXNlSWQiLCJoYW5kbGVTZWxlY3QiLCJvbkl0ZW1UZXh0Q2hhbmdlIiwicHJldlRleHRWYWx1ZSIsIl9ub2RlJHRleHRDb250ZW50IiwidGV4dENvbnRlbnQiLCJ0cmltIiwib25Qb2ludGVyVXAiLCJfY29udGVudENvbnRleHQkb25JdGUiLCJfY29udGVudENvbnRleHQkb25JdGUyIiwiX2NvbnRlbnRDb250ZXh0JHNlYXJjIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkiLCJpdGVtVGV4dFByb3BzIiwiaXRlbUNvbnRleHQiLCJuYXRpdmVPcHRpb25zQ29udGV4dCIsIml0ZW1UZXh0Tm9kZSIsInNldEl0ZW1UZXh0Tm9kZSIsIl9jb250ZW50Q29udGV4dCRpdGVtVCIsIm5hdGl2ZU9wdGlvbiIsIiQwMWI5YyR1c2VNZW1vIiwib25OYXRpdmVPcHRpb25BZGQiLCJvbk5hdGl2ZU9wdGlvblJlbW92ZSIsInZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IiwiY2FuU2Nyb2xsVXAxIiwic2V0Q2FuU2Nyb2xsVXAiLCJjYW5TY3JvbGxVcCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsIiwib25BdXRvU2Nyb2xsIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSIsImNhblNjcm9sbERvd24xIiwic2V0Q2FuU2Nyb2xsRG93biIsIm1heFNjcm9sbCIsImNhblNjcm9sbERvd24iLCJjZWlsIiwic2Nyb2xsSW5kaWNhdG9yUHJvcHMiLCJhdXRvU2Nyb2xsVGltZXJSZWYiLCJjbGVhckF1dG9TY3JvbGxUaW1lciIsImNsZWFySW50ZXJ2YWwiLCJfYWN0aXZlSXRlbSRyZWYkY3VycmUiLCJhY3RpdmVJdGVtIiwiZmxleFNocmluayIsInNldEludGVydmFsIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlMyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QiLCJzZWxlY3RQcm9wcyIsInByZXZWYWx1ZSIsIiQwMWI5YyR1c2VQcmV2aW91cyIsInNlbGVjdFByb3RvIiwiSFRNTFNlbGVjdEVsZW1lbnQiLCIkMDFiOWMkVmlzdWFsbHlIaWRkZW4iLCJvblNlYXJjaENoYW5nZSIsImhhbmRsZVNlYXJjaENoYW5nZSIsIiQwMWI5YyR1c2VDYWxsYmFja1JlZiIsInRpbWVyUmVmIiwidXBkYXRlU2VhcmNoIiwibm9ybWFsaXplZFNlYXJjaCIsImNoYXIiLCJjdXJyZW50SXRlbUluZGV4Iiwid3JhcHBlZEl0ZW1zIiwidiIsInN0YXJ0c1dpdGgiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsImF1dG9Db21wbGV0ZSIsInNldFZhbHVlTm9kZSIsInNldFZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJDAxYjljJHVzZURpcmVjdGlvbiIsIiQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIm5hdGl2ZU9wdGlvbnNTZXQiLCJzZXROYXRpdmVPcHRpb25zU2V0IiwibmF0aXZlU2VsZWN0S2V5Iiwib3B0aW9uIiwiJDAxYjljJFJvb3QiLCJwcmV2Iiwib3B0aW9uc1NldCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIiwiU3ZnS2V5Ym9hcmRBcnJvd0Rvd24iLCJTZWxlY3QiLCJpY29uIiwiU2VsZWN0UHJpbWl0aXZlLlJvb3QiLCJTZWxlY3RQcmltaXRpdmUuVHJpZ2dlciIsIlNlbGVjdFByaW1pdGl2ZS5WYWx1ZSIsIlNlbGVjdFByaW1pdGl2ZS5JY29uIiwiQXJyb3dEb3duSWNvbiIsIlNlbGVjdFByaW1pdGl2ZS5Db250ZW50IiwiU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0IiwiU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uIiwiU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24iLCJTZWxlY3RJdGVtIiwiU2VsZWN0UHJpbWl0aXZlLkl0ZW0iLCJTZWxlY3RJdGVtVGV4dCIsIlNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dCIsIiRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDdWNEpaJGZvcndhcmRSZWYiLCIkN1Y0SlokY3JlYXRlRWxlbWVudCIsIiQ3VjRKWiRQcmltaXRpdmUiLCJsYWJlbCIsIiQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIl9wcm9wcyRvbk1vdXNlRG93biIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGNyZWF0ZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQzODhlYjJkOGY2ZDMyNjFmIiwiJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiIiwiJGswM3dJJGZvcndhcmRSZWYiLCJfX3Njb3BlUHJvZ3Jlc3MiLCJnZXRWYWx1ZUxhYmVsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGRlZmF1bHRHZXRWYWx1ZUxhYmVsIiwicHJvZ3Jlc3NQcm9wcyIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRWYWx1ZU51bWJlciIsInZhbHVlTGFiZWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNOdW1iZXIiLCIkazAzd0kkY3JlYXRlRWxlbWVudCIsIiRrMDN3SSRQcmltaXRpdmUiLCIkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSIsInByb3BUeXBlcyIsImNvbXBvbmVudE5hbWUiLCJwcm9wVmFsdWUiLCJzdHJWYWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZE1heEVycm9yIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRWYWx1ZUVycm9yIiwibWF4VmFsdWUiLCJpc05hTiIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAiLCJfY29udGV4dCR2YWx1ZSIsImluZGljYXRvclByb3BzIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViIiwiJDRrNEQwJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IiwiJDRrNEQwJGZvcndhcmRSZWYiLCJfX3Njb3BlQWxlcnREaWFsb2ciLCJkaWFsb2dTY29wZSIsIiQ0azREMCRjcmVhdGVFbGVtZW50IiwiJDRrNEQwJE92ZXJsYXkiLCIkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCIsIiQ0azREMCR1c2VDb21wb3NlZFJlZnMiLCIkNGs0RDAkdXNlUmVmIiwiY2FuY2VsUmVmIiwiJDRrNEQwJFdhcm5pbmdQcm92aWRlciIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FIiwiJDRrNEQwJENvbnRlbnQiLCIkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY2FuY2VsUmVmJGN1cnJlbnQiLCIkNGs0RDAkU2xvdHRhYmxlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyIsIiQ0azREMCRUaXRsZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1IiwiJDRrNEQwJERlc2NyaXB0aW9uIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJhbGVydERpYWxvZ1Byb3BzIiwiJDRrNEQwJFJvb3QiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiQ0azREMCRQb3J0YWwiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGUxOWNkNWY5Mzc2ZjhjZWUiLCJhY3Rpb25Qcm9wcyIsIiQ0azREMCRDbG9zZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IiwiY2FuY2VsUHJvcHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIiwiYWN0aW9uVGV4dCIsIm9uQWN0aW9uQ2xpY2siLCJjYW5jZWxUZXh0Iiwib25DYW5jZWxDbGljayIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJBbGVydERpYWxvZy5Sb290IiwiQWxlcnREaWFsb2cuUG9ydGFsIiwicG9ydGFsIiwiQWxlcnREaWFsb2cuT3ZlcmxheSIsIm92ZXJsYXkiLCJBbGVydERpYWxvZy5Db250ZW50IiwiQ2xvc2VJY29uIiwiQWxlcnREaWFsb2cuVGl0bGUiLCJBbGVydERpYWxvZy5EZXNjcmlwdGlvbiIsImJ1dHRvbnMiLCJBbGVydERpYWxvZy5DYW5jZWwiLCJBbGVydERpYWxvZy5BY3Rpb24iLCJqdXN0aWZ5IiwiYWxpZ25JdGVtcyIsImZvcm1Hcm91cCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsImh0bWxGb3IiLCJSZWR1eExhYmVsLlJvb3QiLCJoaWRlQ2xvc2VCdXR0b24iLCJjb250ZW50Q2xhc3NOYW1lIiwiRGlhbG9nLlJvb3QiLCJEaWFsb2cuUG9ydGFsIiwiRGlhbG9nLk92ZXJsYXkiLCJEaWFsb2cuQ29udGVudCIsIkRpYWxvZy5UaXRsZSIsIkRpYWxvZy5DbG9zZSIsInByb2dyZXNzIiwiUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdCIsIlByb2dyZXNzUHJpbWl0aXZlLkluZGljYXRvciIsIlJhZGl4U3dpdGNoLlJvb3QiLCJSYWRpeFN3aXRjaC5UaHVtYiIsIlRhYnMuVHJpZ2dlciIsIlRhYnMuQ29udGVudCIsIlRhYnMuTGlzdCIsIlRhYnMuUm9vdCIsImlzUG9ydGFsIiwiVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50IiwiVG9vbHRpcFByaW1pdGl2ZS5BcnJvdyIsIlRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXIiLCJUb29sdGlwUHJpbWl0aXZlLlJvb3QiLCJUb29sdGlwUHJpbWl0aXZlLlRyaWdnZXIiLCJUb29sdGlwUHJpbWl0aXZlLlBvcnRhbCJdLCJtYXBwaW5ncyI6ImdWQStCV0EsRUFBVyxXQVFsQixPQVBBQSxFQUFXQyxPQUFPQyxRQUFVLFNBQWtCQyxHQUMxQyxJQUFLLElBQUlDLEVBQUdDLEVBQUksRUFBR0MsRUFBSUMsVUFBVUMsT0FBUUgsRUFBSUMsRUFBR0QsSUFFNUMsSUFBSyxJQUFJSSxLQURUTCxFQUFJRyxVQUFVRixHQUNPSixPQUFPUyxVQUFVQyxlQUFlQyxLQUFLUixFQUFHSyxLQUFJTixFQUFFTSxHQUFLTCxFQUFFSyxJQUU5RSxPQUFPTixDQUNWLEVBQ01ILEVBQVNhLE1BQU1DLEtBQU1QLFVBQ2hDLEVBRU8sU0FBU1EsRUFBT1gsRUFBR1ksR0FDdEIsSUFBSWIsRUFBSSxDQUFBLEVBQ1IsSUFBSyxJQUFJTSxLQUFLTCxFQUFPSCxP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LElBQUdBLEVBQ25CRSxFQUFBWixFQUFBa3pDLFdBQUFBLE9BQWEsSUFBQXR5QyxFQUFBLEVBQUNBLEVBQ2RFLEVBQWdCZCxFQUFBeTdELFNBQWhCQSxPQUFRLElBQUEzNkQsR0FBUUEsRUFDYk0sRUFabUI3QyxFQUFBeUIsRUFBQSxDQUFBLFdBQUEsVUFBQSxPQUFBLGNBQUEsZUFBQSxPQUFBLFFBQUEsWUFBQSxnQkFBQSxhQUFBLGFBY2hCbVAsRUFDSnJQLEVBQUEwQixjQUFDazZELEdBQXdCbCtELEVBQUEsQ0FDdkIwMUMsV0FBWUEsRUFDWjVRLEtBQU1BLEVBQ042USxNQUFPQSxHQUNIL3hDLEVBQUssQ0FDVEgsVUFBV3BDLEVBQVd3QyxJQUFjRSxFQUFBLENBQUEsRUFDbENBLEVBQUNOLEdBQVlBLEVBQ2JNLE1BQ0RtcUIsRUFDRDVyQixFQUFDMEIsY0FBQW02RCxHQUFzQixDQUFDMTZELFVBQVdJLEdBQWNndUIsTUFBTyxHQUFJQyxPQUFRLEtBR3hFLE9BQU81RCxFQUNMNXJCLEVBQUMwQixjQUFBbzZELEdBQXlCLEtBQ3hCOTdELEVBQUEwQixjQUFDcTZELElBQ0MvYixjQUFlQSxFQUNmcDFCLEtBQU1BLEVBQ055RCxZQUFhQSxFQUNiakIsYUFBY0EsR0FDZHB0QixFQUFBMEIsY0FBQ3M2RCxJQUF5Qjd4RCxTQUFPLEdBQUU3SixHQUNsQ3E3RCxFQUFXMzdELEVBQUEwQixjQUFDdTZELEdBQXlCLEtBQUE1c0QsR0FBa0NBLElBSTVFLENBRUoiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsODEsODIsODNdfQ==
|
|
6
|
+
*/c=s,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var l=t.apply(null,o);l&&n.push(l)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var i in o)e.call(o,i)&&o[i]&&n.push(i)}}}return n.join(" ")}c.exports?(t.default=t,c.exports=t):window.classNames=t}();var u=i(s.exports),d={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},f=e.forwardRef((function(t,n){var r,o=t.disabled,i=void 0!==o&&o,c=t.children,s=t.onClick,f=t.size,p=void 0===f?"medium":f,m=t.variant,v=void 0===m?"primary":m,h=t.type,g=void 0===h?"button":h,w=t.prefix,y=void 0===w?"":w,b=t.suffix,E=void 0===b?"":b,_=t.className,x=void 0===_?"":_,C=t.fullWidth,O=void 0!==C&&C,S=l(t,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth"]);return e.createElement("button",a({ref:n,type:g,disabled:i,className:u(d.button,(r={},r[x]=x,r[d[p]]=p,r[d[v]]=v,r[d.fullWidth]=O,r)),onClick:s},S),y&&e.createElement("span",{className:d.prefix},y),c,E&&e.createElement("span",{className:d.suffix},E))}));function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function m(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}function v(...e){return t=>e.forEach((e=>function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}(e,t)))}function h(...t){return e.useCallback(v(...t),t)}function g(t,n=[]){let r=[];const o=()=>{const n=r.map((t=>e.createContext(t)));return function(r){const o=(null==r?void 0:r[t])||n;return e.useMemo((()=>({[`__scope${t}`]:{...r,[t]:o}})),[r,o])}};return o.scopeName=t,[function(n,o){const a=e.createContext(o),l=r.length;function i(n){const{scope:r,children:o,...i}=n,c=(null==r?void 0:r[t][l])||a,s=e.useMemo((()=>i),Object.values(i));return e.createElement(c.Provider,{value:s},o)}return r=[...r,o],i.displayName=n+"Provider",[i,function(r,i){const c=(null==i?void 0:i[t][l])||a,s=e.useContext(c);if(s)return s;if(void 0!==o)return o;throw new Error(`\`${r}\` must be used within \`${n}\``)}]},w(o,...n)]}function w(...t){const n=t[0];if(1===t.length)return n;const r=()=>{const r=t.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(t){const o=r.reduce(((e,{useScope:n,scopeName:r})=>({...e,...n(t)[`__scope${r}`]})),{});return e.useMemo((()=>({[`__scope${n.scopeName}`]:o})),[o])}};return r.scopeName=n.scopeName,r}const y=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?e.useLayoutEffect:()=>{},b=r["useId".toString()]||(()=>{});let E=0;function _(e){const[t,n]=r.useState(b());return y((()=>{e||n((e=>null!=e?e:String(E++)))}),[e]),e||(t?`radix-${t}`:"")}function x(t){const n=e.useRef(t);return e.useEffect((()=>{n.current=t})),e.useMemo((()=>(...e)=>{var t;return null===(t=n.current)||void 0===t?void 0:t.call(n,...e)}),[])}function C({prop:t,defaultProp:n,onChange:r=(()=>{})}){const[o,a]=function({defaultProp:t,onChange:n}){const r=e.useState(t),[o]=r,a=e.useRef(o),l=x(n);return e.useEffect((()=>{a.current!==o&&(l(o),a.current=o)}),[o,a,l]),r}({defaultProp:n,onChange:r}),l=void 0!==t,i=l?t:o,c=x(r);return[i,e.useCallback((e=>{if(l){const n="function"==typeof e?e(t):e;n!==t&&c(n)}else a(e)}),[l,t,a,c])]}const O=e.forwardRef(((t,n)=>{const{children:r,...o}=t,a=e.Children.toArray(r),l=a.find(D);if(l){const t=l.props.children,r=a.map((n=>n===l?e.Children.count(t)>1?e.Children.only(null):e.isValidElement(t)?t.props.children:null:n));return e.createElement(S,p({},o,{ref:n}),e.isValidElement(t)?e.cloneElement(t,void 0,r):null)}return e.createElement(S,p({},o,{ref:n}),r)}));O.displayName="Slot";const S=e.forwardRef(((t,n)=>{const{children:r,...o}=t;return e.isValidElement(r)?e.cloneElement(r,{...T(o,r.props),ref:n?v(n,r.ref):r.ref}):e.Children.count(r)>1?e.Children.only(null):null}));S.displayName="SlotClone";const k=({children:t})=>e.createElement(e.Fragment,null,t);function D(t){return e.isValidElement(t)&&t.type===k}function T(e,t){const n={...t};for(const r in t){const o=e[r],a=t[r];/^on[A-Z]/.test(r)?o&&a?n[r]=(...e)=>{a(...e),o(...e)}:o&&(n[r]=o):"style"===r?n[r]={...o,...a}:"className"===r&&(n[r]=[o,a].filter(Boolean).join(" "))}return{...e,...n}}const R=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((t,n)=>{const r=e.forwardRef(((t,r)=>{const{asChild:o,...a}=t,l=o?O:n;return e.useEffect((()=>{window[Symbol.for("radix-ui")]=!0}),[]),e.createElement(l,p({},a,{ref:r}))}));return r.displayName=`Primitive.${n}`,{...t,[n]:r}}),{});const A="dismissableLayer.update",P="dismissableLayer.pointerDownOutside",M="dismissableLayer.focusOutside";let I;const L=e.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),N=e.forwardRef(((t,n)=>{var r;const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:i,onInteractOutside:c,onDismiss:s,...u}=t,d=e.useContext(L),[f,v]=e.useState(null),g=null!==(r=null==f?void 0:f.ownerDocument)&&void 0!==r?r:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,w]=e.useState({}),y=h(n,(e=>v(e))),b=Array.from(d.layers),[E]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),_=b.indexOf(E),C=f?b.indexOf(f):-1,O=d.layersWithOutsidePointerEventsDisabled.size>0,S=C>=_,k=function(t,n=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const r=x(t),o=e.useRef(!1),a=e.useRef((()=>{}));return e.useEffect((()=>{const e=e=>{if(e.target&&!o.current){const t={originalEvent:e};function l(){H(P,r,t,{discrete:!0})}"touch"===e.pointerType?(n.removeEventListener("click",a.current),a.current=l,n.addEventListener("click",a.current,{once:!0})):l()}o.current=!1},t=window.setTimeout((()=>{n.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",a.current)}}),[n,r]),{onPointerDownCapture:()=>o.current=!0}}((e=>{const t=e.target,n=[...d.branches].some((e=>e.contains(t)));S&&!n&&(null==l||l(e),null==c||c(e),e.defaultPrevented||null==s||s())}),g),D=function(t,n=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const r=x(t),o=e.useRef(!1);return e.useEffect((()=>{const e=e=>{if(e.target&&!o.current){H(M,r,{originalEvent:e},{discrete:!1})}};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)}),[n,r]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}((e=>{const t=e.target;[...d.branches].some((e=>e.contains(t)))||(null==i||i(e),null==c||c(e),e.defaultPrevented||null==s||s())}),g);return function(t,n=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const r=x(t);e.useEffect((()=>{const e=e=>{"Escape"===e.key&&r(e)};return n.addEventListener("keydown",e),()=>n.removeEventListener("keydown",e)}),[r,n])}((e=>{C===d.layers.size-1&&(null==a||a(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))}),g),e.useEffect((()=>{if(f)return o&&(0===d.layersWithOutsidePointerEventsDisabled.size&&(I=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),j(),()=>{o&&1===d.layersWithOutsidePointerEventsDisabled.size&&(g.body.style.pointerEvents=I)}}),[f,g,o,d]),e.useEffect((()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),j())}),[f,d]),e.useEffect((()=>{const e=()=>w({});return document.addEventListener(A,e),()=>document.removeEventListener(A,e)}),[]),e.createElement(R.div,p({},u,{ref:y,style:{pointerEvents:O?S?"auto":"none":void 0,...t.style},onFocusCapture:m(t.onFocusCapture,D.onFocusCapture),onBlurCapture:m(t.onBlurCapture,D.onBlurCapture),onPointerDownCapture:m(t.onPointerDownCapture,k.onPointerDownCapture)}))}));function j(){const e=new CustomEvent(A);document.dispatchEvent(e)}function H(e,n,r,{discrete:o}){const a=r.originalEvent.target,l=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});n&&a.addEventListener(e,n,{once:!0}),o?function(e,n){e&&t.flushSync((()=>e.dispatchEvent(n)))}(a,l):a.dispatchEvent(l)}const F="focusScope.autoFocusOnMount",Z="focusScope.autoFocusOnUnmount",V={bubbles:!1,cancelable:!0},B=e.forwardRef(((t,n)=>{const{loop:r=!1,trapped:o=!1,onMountAutoFocus:a,onUnmountAutoFocus:l,...i}=t,[c,s]=e.useState(null),u=x(a),d=x(l),f=e.useRef(null),m=h(n,(e=>s(e))),v=e.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;e.useEffect((()=>{if(o){function e(e){if(v.paused||!c)return;const t=e.target;c.contains(t)?f.current=t:K(f.current,{select:!0})}function t(e){if(v.paused||!c)return;const t=e.relatedTarget;null!==t&&(c.contains(t)||K(f.current,{select:!0}))}function n(e){const t=document.activeElement;for(const n of e)n.removedNodes.length>0&&(null!=c&&c.contains(t)||K(c))}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),r.disconnect()}}}),[o,c,v.paused]),e.useEffect((()=>{if(c){$.add(v);const t=document.activeElement;if(!c.contains(t)){const n=new CustomEvent(F,V);c.addEventListener(F,u),c.dispatchEvent(n),n.defaultPrevented||(!function(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(K(r,{select:t}),document.activeElement!==n)return}((e=U(c),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&K(c))}return()=>{c.removeEventListener(F,u),setTimeout((()=>{const e=new CustomEvent(Z,V);c.addEventListener(Z,d),c.dispatchEvent(e),e.defaultPrevented||K(null!=t?t:document.body,{select:!0}),c.removeEventListener(Z,d),$.remove(v)}),0)}}var e}),[c,u,d,v]);const g=e.useCallback((e=>{if(!r&&!o)return;if(v.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=document.activeElement;if(t&&n){const t=e.currentTarget,[o,a]=function(e){const t=U(e),n=W(t,e),r=W(t.reverse(),e);return[n,r]}(t);o&&a?e.shiftKey||n!==a?e.shiftKey&&n===o&&(e.preventDefault(),r&&K(a,{select:!0})):(e.preventDefault(),r&&K(o,{select:!0})):n===t&&e.preventDefault()}}),[r,o,v.paused]);return e.createElement(R.div,p({tabIndex:-1},i,{ref:m,onKeyDown:g}))}));function U(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function W(e,t){for(const n of e)if(!z(n,{upTo:t}))return n}function z(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function K(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const $=function(){let e=[];return{add(t){const n=e[0];t!==n&&(null==n||n.pause()),e=q(e,t),e.unshift(t)},remove(t){var n;e=q(e,t),null===(n=e[0])||void 0===n||n.resume()}}}();function q(e,t){const n=[...e],r=n.indexOf(t);return-1!==r&&n.splice(r,1),n}const G=e.forwardRef(((n,r)=>{var o;const{container:a=(null===globalThis||void 0===globalThis||null===(o=globalThis.document)||void 0===o?void 0:o.body),...l}=n;return a?t.createPortal(e.createElement(R.div,p({},l,{ref:r})),a):null}));const X=n=>{const{present:r,children:o}=n,a=function(n){const[r,o]=e.useState(),a=e.useRef({}),l=e.useRef(n),i=e.useRef("none"),c=n?"mounted":"unmounted",[s,u]=function(t,n){return e.useReducer(((e,t)=>{const r=n[e][t];return null!=r?r:e}),t)}(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return e.useEffect((()=>{const e=Y(a.current);i.current="mounted"===s?e:"none"}),[s]),y((()=>{const e=a.current,t=l.current;if(t!==n){const r=i.current,o=Y(e);if(n)u("MOUNT");else if("none"===o||"none"===(null==e?void 0:e.display))u("UNMOUNT");else{u(t&&r!==o?"ANIMATION_OUT":"UNMOUNT")}l.current=n}}),[n,u]),y((()=>{if(r){const e=e=>{const n=Y(a.current).includes(e.animationName);e.target===r&&n&&t.flushSync((()=>u("ANIMATION_END")))},n=e=>{e.target===r&&(i.current=Y(a.current))};return r.addEventListener("animationstart",n),r.addEventListener("animationcancel",e),r.addEventListener("animationend",e),()=>{r.removeEventListener("animationstart",n),r.removeEventListener("animationcancel",e),r.removeEventListener("animationend",e)}}u("ANIMATION_END")}),[r,u]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:e.useCallback((e=>{e&&(a.current=getComputedStyle(e)),o(e)}),[])}}(r),l="function"==typeof o?o({present:a.isPresent}):e.Children.only(o),i=h(a.ref,l.ref);return"function"==typeof o||a.isPresent?e.cloneElement(l,{ref:i}):null};function Y(e){return(null==e?void 0:e.animationName)||"none"}X.displayName="Presence";let J=0;function Q(){e.useEffect((()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=n[0])&&void 0!==e?e:ee()),document.body.insertAdjacentElement("beforeend",null!==(t=n[1])&&void 0!==t?t:ee()),J++,()=>{1===J&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),J--}}),[])}function ee(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var te="right-scroll-bar-position",ne="width-before-scroll-bar";function re(t,n){return r=n||null,o=function(e){return t.forEach((function(t){return function(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}(t,e)}))},(a=e.useState((function(){return{value:r,callback:o,facade:{get current(){return a.value},set current(e){var t=a.value;t!==e&&(a.value=e,a.callback(e,t))}}}}))[0]).callback=o,a.facade;var r,o,a}function oe(e){return e}var ae=function(e){var t=e.sideCar,n=l(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=t.read();if(!o)throw new Error("Sidecar medium not found");return r.createElement(o,a({},n))};ae.isSideCarExport=!0;var le=function(e){void 0===e&&(e={});var t=function(e,t){void 0===t&&(t=oe);var n=[],r=!1;return{read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var o=t(e,r);return n.push(o),function(){n=n.filter((function(e){return e!==o}))}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var o=n;n=[],o.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},l=function(){return Promise.resolve().then(a)};l(),n={push:function(e){t.push(e),l()},filter:function(e){return t=t.filter(e),n}}}}}(null);return t.options=a({async:!0,ssr:!1},e),t}(),ie=function(){},ce=r.forwardRef((function(e,t){var n=r.useRef(null),o=r.useState({onScrollCapture:ie,onWheelCapture:ie,onTouchMoveCapture:ie}),i=o[0],c=o[1],s=e.forwardProps,u=e.children,d=e.className,f=e.removeScrollBar,p=e.enabled,m=e.shards,v=e.sideCar,h=e.noIsolation,g=e.inert,w=e.allowPinchZoom,y=e.as,b=void 0===y?"div":y,E=l(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),_=v,x=re([n,t]),C=a(a({},E),i);return r.createElement(r.Fragment,null,p&&r.createElement(_,{sideCar:le,removeScrollBar:f,shards:m,noIsolation:h,inert:g,setCallbacks:c,allowPinchZoom:!!w,lockRef:n}),s?r.cloneElement(r.Children.only(u),a(a({},C),{ref:x})):r.createElement(b,a({},C,{className:d,ref:x}),u))}));ce.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},ce.classNames={fullWidth:ne,zeroRight:te};function se(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=function(){if("undefined"!=typeof __webpack_nonce__)return __webpack_nonce__}();return t&&e.setAttribute("nonce",t),e}var ue=function(){var e=0,t=null;return{add:function(n){var r,o;0==e&&(t=se())&&(o=n,(r=t).styleSheet?r.styleSheet.cssText=o:r.appendChild(document.createTextNode(o)),function(e){(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}(t)),e++},remove:function(){!--e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},de=function(){var e,t=(e=ue(),function(t,n){r.useEffect((function(){return e.add(t),function(){e.remove()}}),[t&&n])});return function(e){var n=e.styles,r=e.dynamic;return t(n,r),null}},fe={left:0,top:0,right:0,gap:0},pe=function(e){return parseInt(e||"",10)||0},me=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return fe;var t=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[pe(n),pe(r),pe(o)]}(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},ve=de(),he=function(e,t,n,r){var o=e.left,a=e.top,l=e.right,i=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(i,"px ").concat(r,";\n }\n body {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(l,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(i,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(i,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(te," {\n right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(ne," {\n margin-right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(te," .").concat(te," {\n right: 0 ").concat(r,";\n }\n \n .").concat(ne," .").concat(ne," {\n margin-right: 0 ").concat(r,";\n }\n \n body {\n ").concat("--removed-body-scroll-bar-size",": ").concat(i,"px;\n }\n")},ge=function(e){var t=e.noRelative,n=e.noImportant,o=e.gapMode,a=void 0===o?"margin":o,l=r.useMemo((function(){return me(a)}),[a]);return r.createElement(ve,{styles:he(l,!t,a,n?"":"!important")})},we=!1;if("undefined"!=typeof window)try{var ye=Object.defineProperty({},"passive",{get:function(){return we=!0,!0}});window.addEventListener("test",ye,ye),window.removeEventListener("test",ye,ye)}catch(e){we=!1}var be=!!we&&{passive:!1},Ee=function(e,t){var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&!function(e){return"TEXTAREA"===e.tagName}(e)&&"visible"===n[t])},_e=function(e,t){var n=t;do{if("undefined"!=typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),xe(e,n)){var r=Ce(e,n);if(r[1]>r[2])return!0}n=n.parentNode}while(n&&n!==document.body);return!1},xe=function(e,t){return"v"===e?function(e){return Ee(e,"overflowY")}(t):function(e){return Ee(e,"overflowX")}(t)},Ce=function(e,t){return"v"===e?[(n=t).scrollTop,n.scrollHeight,n.clientHeight]:function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]}(t);var n},Oe=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Se=function(e){return[e.deltaX,e.deltaY]},ke=function(e){return e&&"current"in e?e.current:e},De=function(e){return"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")},Te=0,Re=[];var Ae,Pe=(Ae=function(e){var t=r.useRef([]),n=r.useRef([0,0]),o=r.useRef(),a=r.useState(Te++)[0],l=r.useState((function(){return de()}))[0],i=r.useRef(e);r.useEffect((function(){i.current=e}),[e]),r.useEffect((function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var t=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}([e.lockRef.current],(e.shards||[]).map(ke),!0).filter(Boolean);return t.forEach((function(e){return e.classList.add("allow-interactivity-".concat(a))})),function(){document.body.classList.remove("block-interactivity-".concat(a)),t.forEach((function(e){return e.classList.remove("allow-interactivity-".concat(a))}))}}}),[e.inert,e.lockRef.current,e.shards]);var c=r.useCallback((function(e,t){if("touches"in e&&2===e.touches.length)return!i.current.allowPinchZoom;var r,a=Oe(e),l=n.current,c="deltaX"in e?e.deltaX:l[0]-a[0],s="deltaY"in e?e.deltaY:l[1]-a[1],u=e.target,d=Math.abs(c)>Math.abs(s)?"h":"v";if("touches"in e&&"h"===d&&"range"===u.type)return!1;var f=_e(d,u);if(!f)return!0;if(f?r=d:(r="v"===d?"h":"v",f=_e(d,u)),!f)return!1;if(!o.current&&"changedTouches"in e&&(c||s)&&(o.current=r),!r)return!0;var p=o.current||r;return function(e,t,n,r,o){var a=function(e,t){return"h"===e&&"rtl"===t?-1:1}(e,window.getComputedStyle(t).direction),l=a*r,i=n.target,c=t.contains(i),s=!1,u=l>0,d=0,f=0;do{var p=Ce(e,i),m=p[0],v=p[1]-p[2]-a*m;(m||v)&&xe(e,i)&&(d+=v,f+=m),i=i.parentNode}while(!c&&i!==document.body||c&&(t.contains(i)||t===i));return(u&&(o&&0===d||!o&&l>d)||!u&&(o&&0===f||!o&&-l>f))&&(s=!0),s}(p,t,e,"h"===p?c:s,!0)}),[]),s=r.useCallback((function(e){var n=e;if(Re.length&&Re[Re.length-1]===l){var r="deltaY"in n?Se(n):Oe(n),o=t.current.filter((function(e){return e.name===n.type&&e.target===n.target&&(t=e.delta,o=r,t[0]===o[0]&&t[1]===o[1]);var t,o}))[0];if(o&&o.should)n.cancelable&&n.preventDefault();else if(!o){var a=(i.current.shards||[]).map(ke).filter(Boolean).filter((function(e){return e.contains(n.target)}));(a.length>0?c(n,a[0]):!i.current.noIsolation)&&n.cancelable&&n.preventDefault()}}}),[]),u=r.useCallback((function(e,n,r,o){var a={name:e,delta:n,target:r,should:o};t.current.push(a),setTimeout((function(){t.current=t.current.filter((function(e){return e!==a}))}),1)}),[]),d=r.useCallback((function(e){n.current=Oe(e),o.current=void 0}),[]),f=r.useCallback((function(t){u(t.type,Se(t),t.target,c(t,e.lockRef.current))}),[]),p=r.useCallback((function(t){u(t.type,Oe(t),t.target,c(t,e.lockRef.current))}),[]);r.useEffect((function(){return Re.push(l),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener("wheel",s,be),document.addEventListener("touchmove",s,be),document.addEventListener("touchstart",d,be),function(){Re=Re.filter((function(e){return e!==l})),document.removeEventListener("wheel",s,be),document.removeEventListener("touchmove",s,be),document.removeEventListener("touchstart",d,be)}}),[]);var m=e.removeScrollBar,v=e.inert;return r.createElement(r.Fragment,null,v?r.createElement(l,{styles:De(a)}):null,m?r.createElement(ge,{gapMode:"margin"}):null)},le.useMedium(Ae),ae),Me=r.forwardRef((function(e,t){return r.createElement(ce,a({},e,{ref:t,sideCar:Pe}))}));Me.classNames=ce.classNames;var Ie=Me,Le=new WeakMap,Ne=new WeakMap,je={},He=0,Fe=function(e){return e&&(e.host||Fe(e.parentNode))},Ze=function(e,t,n,r){var o=function(e,t){return t.map((function(t){if(e.contains(t))return t;var n=Fe(t);return n&&e.contains(n)?n:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);je[n]||(je[n]=new WeakMap);var a=je[n],l=[],i=new Set,c=new Set(o),s=function(e){e&&!i.has(e)&&(i.add(e),s(e.parentNode))};o.forEach(s);var u=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(i.has(e))u(e);else{var t=e.getAttribute(r),o=null!==t&&"false"!==t,c=(Le.get(e)||0)+1,s=(a.get(e)||0)+1;Le.set(e,c),a.set(e,s),l.push(e),1===c&&o&&Ne.set(e,!0),1===s&&e.setAttribute(n,"true"),o||e.setAttribute(r,"true")}}))};return u(t),i.clear(),He++,function(){l.forEach((function(e){var t=Le.get(e)-1,o=a.get(e)-1;Le.set(e,t),a.set(e,o),t||(Ne.has(e)||e.removeAttribute(r),Ne.delete(e)),o||e.removeAttribute(n)})),--He||(Le=new WeakMap,Le=new WeakMap,Ne=new WeakMap,je={})}},Ve=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body}(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),Ze(r,o,n,"aria-hidden")):function(){return null}};const Be="Dialog",[Ue,We]=g(Be),[ze,Ke]=Ue(Be),$e="DialogPortal",[qe,Ge]=Ue($e,{forceMount:void 0}),Xe="DialogOverlay",Ye=e.forwardRef(((t,n)=>{const r=Ge(Xe,t.__scopeDialog),{forceMount:o=r.forceMount,...a}=t,l=Ke(Xe,t.__scopeDialog);return l.modal?e.createElement(X,{present:o||l.open},e.createElement(Je,p({},a,{ref:n}))):null})),Je=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke(Xe,r);return e.createElement(Ie,{as:O,allowPinchZoom:!0,shards:[a.contentRef]},e.createElement(R.div,p({"data-state":ct(a.open)},o,{ref:n,style:{pointerEvents:"auto",...o.style}})))})),Qe="DialogContent",et=e.forwardRef(((t,n)=>{const r=Ge(Qe,t.__scopeDialog),{forceMount:o=r.forceMount,...a}=t,l=Ke(Qe,t.__scopeDialog);return e.createElement(X,{present:o||l.open},l.modal?e.createElement(tt,p({},a,{ref:n})):e.createElement(nt,p({},a,{ref:n})))})),tt=e.forwardRef(((t,n)=>{const r=Ke(Qe,t.__scopeDialog),o=e.useRef(null),a=h(n,r.contentRef,o);return e.useEffect((()=>{const e=o.current;if(e)return Ve(e)}),[]),e.createElement(rt,p({},t,{ref:a,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:m(t.onCloseAutoFocus,(e=>{var t;e.preventDefault(),null===(t=r.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:m(t.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()})),onFocusOutside:m(t.onFocusOutside,(e=>e.preventDefault()))}))})),nt=e.forwardRef(((t,n)=>{const r=Ke(Qe,t.__scopeDialog),o=e.useRef(!1),a=e.useRef(!1);return e.createElement(rt,p({},t,{ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:e=>{var n,l;(null===(n=t.onCloseAutoFocus)||void 0===n||n.call(t,e),e.defaultPrevented)||(o.current||null===(l=r.triggerRef.current)||void 0===l||l.focus(),e.preventDefault());o.current=!1,a.current=!1},onInteractOutside:e=>{var n,l;null===(n=t.onInteractOutside)||void 0===n||n.call(t,e),e.defaultPrevented||(o.current=!0,"pointerdown"===e.detail.originalEvent.type&&(a.current=!0));const i=e.target;(null===(l=r.triggerRef.current)||void 0===l?void 0:l.contains(i))&&e.preventDefault(),"focusin"===e.detail.originalEvent.type&&a.current&&e.preventDefault()}}))})),rt=e.forwardRef(((t,n)=>{const{__scopeDialog:r,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:l,...i}=t,c=Ke(Qe,r),s=h(n,e.useRef(null));return Q(),e.createElement(e.Fragment,null,e.createElement(B,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:l},e.createElement(N,p({role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":ct(c.open)},i,{ref:s,onDismiss:()=>c.onOpenChange(!1)}))),!1)})),ot="DialogTitle",at=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke(ot,r);return e.createElement(R.h2,p({id:a.titleId},o,{ref:n}))})),lt=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke("DialogDescription",r);return e.createElement(R.p,p({id:a.descriptionId},o,{ref:n}))})),it=e.forwardRef(((t,n)=>{const{__scopeDialog:r,...o}=t,a=Ke("DialogClose",r);return e.createElement(R.button,p({type:"button"},o,{ref:n,onClick:m(t.onClick,(()=>a.onOpenChange(!1)))}))}));function ct(e){return e?"open":"closed"}const[st,ut]=function(t,n){const r=e.createContext(n);function o(t){const{children:n,...o}=t,a=e.useMemo((()=>o),Object.values(o));return e.createElement(r.Provider,{value:a},n)}return o.displayName=t+"Provider",[o,function(o){const a=e.useContext(r);if(a)return a;if(void 0!==n)return n;throw new Error(`\`${o}\` must be used within \`${t}\``)}]}("DialogTitleWarning",{contentName:Qe,titleName:ot,docsSlug:"dialog"}),dt=t=>{const{__scopeDialog:n,children:r,open:o,defaultOpen:a,onOpenChange:l,modal:i=!0}=t,c=e.useRef(null),s=e.useRef(null),[u=!1,d]=C({prop:o,defaultProp:a,onChange:l});return e.createElement(ze,{scope:n,triggerRef:c,contentRef:s,contentId:_(),titleId:_(),descriptionId:_(),open:u,onOpenChange:d,onOpenToggle:e.useCallback((()=>d((e=>!e))),[d]),modal:i},r)},ft=t=>{const{__scopeDialog:n,forceMount:r,children:o,container:a}=t,l=Ke($e,n);return e.createElement(qe,{scope:n,forceMount:r},e.Children.map(o,(t=>e.createElement(X,{present:r||l.open},e.createElement(G,{asChild:!0,container:a},t)))))},pt=Ye,mt=et,vt=at,ht=lt,gt=it;var wt,yt,bt="Modal-modules_overlay__V-vTn",Et="Modal-modules_header__-dxAm",_t="Modal-modules_close__CwIjR",xt="Modal-modules_title__3ehge",Ct="Modal-modules_titleCentered__Qqy8u",Ot="Modal-modules_content__sK9HS",St="Modal-modules_body__8Khpx";function kt(){return kt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kt.apply(this,arguments)}var Dt=function(e){return r.createElement("svg",kt({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wt||(wt=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yt||(yt=r.createElement("g",{mask:"url(#close_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))};function Tt(t){const n=t+"CollectionProvider",[r,o]=g(n),[a,l]=r(n,{collectionRef:{current:null},itemMap:new Map}),i=t+"CollectionSlot",c=t+"CollectionItemSlot",s="data-radix-collection-item";return[{Provider:t=>{const{scope:n,children:r}=t,o=e.useRef(null),l=e.useRef(new Map).current;return e.createElement(a,{scope:n,itemMap:l,collectionRef:o},r)},Slot:e.forwardRef(((t,n)=>{const{scope:r,children:o}=t,a=h(n,l(i,r).collectionRef);return e.createElement(O,{ref:a},o)})),ItemSlot:e.forwardRef(((t,n)=>{const{scope:r,children:o,...a}=t,i=e.useRef(null),u=h(n,i),d=l(c,r);return e.useEffect((()=>(d.itemMap.set(i,{ref:i,...a}),()=>{d.itemMap.delete(i)}))),e.createElement(O,{[s]:"",ref:u},o)}))},function(n){const r=l(t+"CollectionConsumer",n);return e.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${s}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const Rt=e.createContext(void 0);function At(t){const n=e.useContext(Rt);return t||n||"ltr"}const Pt="rovingFocusGroup.onEntryFocus",Mt={bubbles:!1,cancelable:!0},It="RovingFocusGroup",[Lt,Nt,jt]=Tt(It),[Ht,Ft]=g(It,[jt]),[Zt,Vt]=Ht(It),Bt=e.forwardRef(((t,n)=>e.createElement(Lt.Provider,{scope:t.__scopeRovingFocusGroup},e.createElement(Lt.Slot,{scope:t.__scopeRovingFocusGroup},e.createElement(Ut,p({},t,{ref:n})))))),Ut=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:a=!1,dir:l,currentTabStopId:i,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:s,onEntryFocus:u,...d}=t,f=e.useRef(null),v=h(n,f),g=At(l),[w=null,y]=C({prop:i,defaultProp:c,onChange:s}),[b,E]=e.useState(!1),_=x(u),O=Nt(r),S=e.useRef(!1),[k,D]=e.useState(0);return e.useEffect((()=>{const e=f.current;if(e)return e.addEventListener(Pt,_),()=>e.removeEventListener(Pt,_)}),[_]),e.createElement(Zt,{scope:r,orientation:o,dir:g,loop:a,currentTabStopId:w,onItemFocus:e.useCallback((e=>y(e)),[y]),onItemShiftTab:e.useCallback((()=>E(!0)),[]),onFocusableItemAdd:e.useCallback((()=>D((e=>e+1))),[]),onFocusableItemRemove:e.useCallback((()=>D((e=>e-1))),[])},e.createElement(R.div,p({tabIndex:b||0===k?-1:0,"data-orientation":o},d,{ref:v,style:{outline:"none",...t.style},onMouseDown:m(t.onMouseDown,(()=>{S.current=!0})),onFocus:m(t.onFocus,(e=>{const t=!S.current;if(e.target===e.currentTarget&&t&&!b){const t=new CustomEvent(Pt,Mt);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=O().filter((e=>e.focusable));Kt([e.find((e=>e.active)),e.find((e=>e.id===w)),...e].filter(Boolean).map((e=>e.ref.current)))}}S.current=!1})),onBlur:m(t.onBlur,(()=>E(!1)))})))})),Wt=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,focusable:o=!0,active:a=!1,tabStopId:l,...i}=t,c=_(),s=l||c,u=Vt("RovingFocusGroupItem",r),d=u.currentTabStopId===s,f=Nt(r),{onFocusableItemAdd:v,onFocusableItemRemove:h}=u;return e.useEffect((()=>{if(o)return v(),()=>h()}),[o,v,h]),e.createElement(Lt.ItemSlot,{scope:r,id:s,focusable:o,active:a},e.createElement(R.span,p({tabIndex:d?0:-1,"data-orientation":u.orientation},i,{ref:n,onMouseDown:m(t.onMouseDown,(e=>{o?u.onItemFocus(s):e.preventDefault()})),onFocus:m(t.onFocus,(()=>u.onItemFocus(s))),onKeyDown:m(t.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void u.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:zt[r]}(e,u.orientation,u.dir);if(void 0!==t){e.preventDefault();let o=f().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=u.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>Kt(o)))}var n,r}))})))})),zt={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Kt(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const $t=Bt,qt=Wt,Gt="Tabs",[Xt,Yt]=g(Gt,[Ft]),Jt=Ft(),[Qt,en]=Xt(Gt);function tn(e,t){return`${e}-trigger-${t}`}function nn(e,t){return`${e}-content-${t}`}const rn=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,onValueChange:a,defaultValue:l,orientation:i="horizontal",dir:c,activationMode:s="automatic",...u}=t,d=At(c),[f,m]=C({prop:o,onChange:a,defaultProp:l});return e.createElement(Qt,{scope:r,baseId:_(),value:f,onValueChange:m,orientation:i,dir:d,activationMode:s},e.createElement(R.div,p({dir:d,"data-orientation":i},u,{ref:n})))})),on=e.forwardRef(((t,n)=>{const{__scopeTabs:r,loop:o=!0,...a}=t,l=en("TabsList",r),i=Jt(r);return e.createElement($t,p({asChild:!0},i,{orientation:l.orientation,dir:l.dir,loop:o}),e.createElement(R.div,p({role:"tablist","aria-orientation":l.orientation},a,{ref:n})))})),an=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,disabled:a=!1,...l}=t,i=en("TabsTrigger",r),c=Jt(r),s=tn(i.baseId,o),u=nn(i.baseId,o),d=o===i.value;return e.createElement(qt,p({asChild:!0},c,{focusable:!a,active:d}),e.createElement(R.button,p({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:s},l,{ref:n,onMouseDown:m(t.onMouseDown,(e=>{a||0!==e.button||!1!==e.ctrlKey?e.preventDefault():i.onValueChange(o)})),onKeyDown:m(t.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&i.onValueChange(o)})),onFocus:m(t.onFocus,(()=>{const e="manual"!==i.activationMode;d||a||!e||i.onValueChange(o)}))})))})),ln=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,forceMount:a,children:l,...i}=t,c=en("TabsContent",r),s=tn(c.baseId,o),u=nn(c.baseId,o),d=o===c.value,f=e.useRef(d);return e.useEffect((()=>{const e=requestAnimationFrame((()=>f.current=!1));return()=>cancelAnimationFrame(e)}),[]),e.createElement(X,{present:a||d},(({present:r})=>e.createElement(R.div,p({"data-state":d?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":s,hidden:!r,id:u,tabIndex:0},i,{ref:n,style:{...t.style,animationDuration:f.current?"0s":void 0}}),r&&l)))}));var cn="Tabs-modules_root__TvYE1",sn="Tabs-modules_list__G3KVd",un="Tabs-modules_tab__-FuG6",dn="Tabs-modules_content__X0OLh";function fn(t){const n=e.useRef({value:t,previous:t});return e.useMemo((()=>(n.current.value!==t&&(n.current.previous=n.current.value,n.current.value=t),n.current.previous)),[t])}function pn(t){const[n,r]=e.useState(void 0);return y((()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const e=new ResizeObserver((e=>{if(!Array.isArray(e))return;if(!e.length)return;const n=e[0];let o,a;if("borderBoxSize"in n){const e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=t.offsetWidth,a=t.offsetHeight;r({width:o,height:a})}));return e.observe(t,{box:"border-box"}),()=>e.unobserve(t)}r(void 0)}),[t]),n}const mn="Switch",[vn,hn]=g(mn),[gn,wn]=vn(mn),yn=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,name:o,checked:a,defaultChecked:l,required:i,disabled:c,value:s="on",onCheckedChange:u,...d}=t,[f,v]=e.useState(null),g=h(n,(e=>v(e))),w=e.useRef(!1),y=!f||Boolean(f.closest("form")),[b=!1,E]=C({prop:a,defaultProp:l,onChange:u});return e.createElement(gn,{scope:r,checked:b,disabled:c},e.createElement(R.button,p({type:"button",role:"switch","aria-checked":b,"aria-required":i,"data-state":En(b),"data-disabled":c?"":void 0,disabled:c,value:s},d,{ref:g,onClick:m(t.onClick,(e=>{E((e=>!e)),y&&(w.current=e.isPropagationStopped(),w.current||e.stopPropagation())}))})),y&&e.createElement(bn,{control:f,bubbles:!w.current,name:o,value:s,checked:b,required:i,disabled:c,style:{transform:"translateX(-100%)"}}))})),bn=t=>{const{control:n,checked:r,bubbles:o=!0,...a}=t,l=e.useRef(null),i=fn(r),c=pn(n);return e.useEffect((()=>{const e=l.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(i!==r&&n){const t=new Event("click",{bubbles:o});n.call(e,r),e.dispatchEvent(t)}}),[i,r,o]),e.createElement("input",p({type:"checkbox","aria-hidden":!0,defaultChecked:r},a,{tabIndex:-1,ref:l,style:{...t.style,...c,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function En(e){return e?"checked":"unchecked"}const _n=yn,xn=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,...o}=t,a=wn("SwitchThumb",r);return e.createElement(R.span,p({"data-state":En(a.checked),"data-disabled":a.disabled?"":void 0},o,{ref:n}))}));var Cn="Switch-modules_root__V5S6a",On="Switch-modules_thumb__PZ-lR";function Sn(e){return e.split("-")[1]}function kn(e){return"y"===e?"height":"width"}function Dn(e){return e.split("-")[0]}function Tn(e){return["top","bottom"].includes(Dn(e))?"x":"y"}function Rn(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,l=r.y+r.height/2-o.height/2,i=Tn(t),c=kn(i),s=r[c]/2-o[c]/2,u="x"===i;let d;switch(Dn(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:l};break;case"left":d={x:r.x-o.width,y:l};break;default:d={x:r.x,y:r.y}}switch(Sn(t)){case"start":d[i]-=s*(n&&u?-1:1);break;case"end":d[i]+=s*(n&&u?-1:1)}return d}function An(e,t){return"function"==typeof e?e(t):e}function Pn(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function Mn(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function In(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:l,elements:i,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=An(t,e),m=Pn(p),v=i[f?"floating"===d?"reference":"floating":d],h=Mn(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(i.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...l.floating,x:r,y:o}:l.reference,w=await(null==a.getOffsetParent?void 0:a.getOffsetParent(i.floating)),y=await(null==a.isElement?void 0:a.isElement(w))&&await(null==a.getScale?void 0:a.getScale(w))||{x:1,y:1},b=Mn(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:w,strategy:c}):g);return{top:(h.top-b.top+m.top)/y.y,bottom:(b.bottom-h.bottom+m.bottom)/y.y,left:(h.left-b.left+m.left)/y.x,right:(b.right-h.right+m.right)/y.x}}const Ln=Math.min,Nn=Math.max;function jn(e,t,n){return Nn(e,Ln(t,n))}const Hn=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:l,elements:i}=t,{element:c,padding:s=0}=An(e,t)||{};if(null==c)return{};const u=Pn(s),d={x:n,y:r},f=Tn(o),p=kn(f),m=await l.getDimensions(c),v="y"===f,h=v?"top":"left",g=v?"bottom":"right",w=v?"clientHeight":"clientWidth",y=a.reference[p]+a.reference[f]-d[f]-a.floating[p],b=d[f]-a.reference[f],E=await(null==l.getOffsetParent?void 0:l.getOffsetParent(c));let _=E?E[w]:0;_&&await(null==l.isElement?void 0:l.isElement(E))||(_=i.floating[w]||a.floating[p]);const x=y/2-b/2,C=_/2-m[p]/2-1,O=Ln(u[h],C),S=Ln(u[g],C),k=O,D=_-m[p]-S,T=_/2-m[p]/2+x,R=jn(k,T,D),A=null!=Sn(o)&&T!=R&&a.reference[p]/2-(T<k?O:S)-m[p]/2<0;return{[f]:d[f]-(A?T<k?k-T:D-T:0),data:{[f]:R,centerOffset:T-R}}}}),Fn=["top","right","bottom","left"],Zn={left:"right",right:"left",bottom:"top",top:"bottom"};function Vn(e){return e.replace(/left|right|bottom|top/g,(e=>Zn[e]))}const Bn={start:"end",end:"start"};function Un(e){return e.replace(/start|end/g,(e=>Bn[e]))}const Wn=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:l,platform:i,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:m=!0,...v}=An(e,t),h=Dn(r),g=Dn(l)===l,w=await(null==i.isRTL?void 0:i.isRTL(c.floating)),y=d||(g||!m?[Vn(l)]:function(e){const t=Vn(e);return[Un(e),t,Un(t)]}(l));d||"none"===p||y.push(...function(e,t,n,r){const o=Sn(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:l;default:return[]}}(Dn(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(Un)))),a}(l,m,p,w));const b=[l,...y],E=await In(t,v),_=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&_.push(E[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=Sn(e),o=Tn(e),a=kn(o);let l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(l=Vn(l)),{main:l,cross:Vn(l)}}(r,a,w);_.push(E[e],E[t])}if(x=[...x,{placement:r,overflows:_}],!_.every((e=>e<=0))){var C,O;const e=((null==(C=o.flip)?void 0:C.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(O=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(f){case"bestFit":{var S;const e=null==(S=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:S[0];e&&(n=e);break}case"initialPlacement":n=l}if(r!==n)return{reset:{placement:n}}}return{}}}};function zn(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Kn(e){return Fn.some((t=>e[t]>=0))}const $n=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=An(e,t);switch(r){case"referenceHidden":{const e=zn(await In(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Kn(e)}}}case"escaped":{const e=zn(await In(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Kn(e)}}}default:return{}}}}};const qn=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),l=Dn(n),i=Sn(n),c="x"===Tn(n),s=["left","top"].includes(l)?-1:1,u=a&&c?-1:1,d=An(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return i&&"number"==typeof m&&(p="end"===i?-1*m:m),c?{x:p*u,y:f*s}:{x:f*s,y:p*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function Gn(e){return"x"===e?"y":"x"}const Xn=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:i={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=An(e,t),s={x:n,y:r},u=await In(t,c),d=Tn(Dn(o)),f=Gn(d);let p=s[d],m=s[f];if(a){const e="y"===d?"bottom":"right";p=jn(p+u["y"===d?"top":"left"],p,p-u[e])}if(l){const e="y"===f?"bottom":"right";m=jn(m+u["y"===f?"top":"left"],m,m-u[e])}const v=i.fn({...t,[d]:p,[f]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},Yn=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:l}=t,{offset:i=0,mainAxis:c=!0,crossAxis:s=!0}=An(e,t),u={x:n,y:r},d=Tn(o),f=Gn(d);let p=u[d],m=u[f];const v=An(i,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;p<t?p=t:p>n&&(p=n)}if(s){var g,w;const e="y"===d?"width":"height",t=["top","left"].includes(Dn(o)),n=a.reference[f]-a.floating[e]+(t&&(null==(g=l.offset)?void 0:g[f])||0)+(t?0:h.crossAxis),r=a.reference[f]+a.reference[e]+(t?0:(null==(w=l.offset)?void 0:w[f])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:p,[f]:m}}}},Jn=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:l=(()=>{}),...i}=An(e,t),c=await In(t,i),s=Dn(n),u=Sn(n),d="x"===Tn(n),{width:f,height:p}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=p-c[m],g=f-c[v],w=!t.middlewareData.shift;let y=h,b=g;if(d){const e=f-c.left-c.right;b=u||w?Ln(g,e):e}else{const e=p-c.top-c.bottom;y=u||w?Ln(h,e):e}if(w&&!u){const e=Nn(c.left,0),t=Nn(c.right,0),n=Nn(c.top,0),r=Nn(c.bottom,0);d?b=f-2*(0!==e||0!==t?e+t:Nn(c.left,c.right)):y=p-2*(0!==n||0!==r?n+r:Nn(c.top,c.bottom))}await l({...t,availableWidth:b,availableHeight:y});const E=await o.getDimensions(a.floating);return f!==E.width||p!==E.height?{reset:{rects:!0}}:{}}}};function Qn(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function er(e){return Qn(e).getComputedStyle(e)}function tr(e){return e instanceof Qn(e).Node}function nr(e){return tr(e)?(e.nodeName||"").toLowerCase():""}function rr(e){return e instanceof Qn(e).HTMLElement}function or(e){return e instanceof Qn(e).Element}function ar(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof Qn(e).ShadowRoot||e instanceof ShadowRoot}function lr(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=er(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function ir(e){return["table","td","th"].includes(nr(e))}function cr(e){const t=sr(),n=er(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function sr(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function ur(e){return["html","body","#document"].includes(nr(e))}const dr=Math.min,fr=Math.max,pr=Math.round;function mr(e){const t=er(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=rr(e),a=o?e.offsetWidth:n,l=o?e.offsetHeight:r,i=pr(n)!==a||pr(r)!==l;return i&&(n=a,r=l),{width:n,height:r,fallback:i}}function vr(e){return or(e)?e:e.contextElement}const hr={x:1,y:1};function gr(e){const t=vr(e);if(!rr(t))return hr;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=mr(t);let l=(a?pr(n.width):n.width)/r,i=(a?pr(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),i&&Number.isFinite(i)||(i=1),{x:l,y:i}}const wr={x:0,y:0};function yr(e,t,n){var r,o;if(void 0===t&&(t=!0),!sr())return wr;const a=e?Qn(e):window;return!n||t&&n!==a?wr:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function br(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=vr(e);let l=hr;t&&(r?or(r)&&(l=gr(r)):l=gr(e));const i=yr(a,n,r);let c=(o.left+i.x)/l.x,s=(o.top+i.y)/l.y,u=o.width/l.x,d=o.height/l.y;if(a){const e=Qn(a),t=r&&or(r)?Qn(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=gr(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=Qn(n).frameElement}}return Mn({width:u,height:d,x:c,y:s})}function Er(e){return((tr(e)?e.ownerDocument:e.document)||window.document).documentElement}function _r(e){return or(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function xr(e){return br(Er(e)).left+_r(e).scrollLeft}function Cr(e){if("html"===nr(e))return e;const t=e.assignedSlot||e.parentNode||ar(e)&&e.host||Er(e);return ar(t)?t.host:t}function Or(e){const t=Cr(e);return ur(t)?t.ownerDocument.body:rr(t)&&lr(t)?t:Or(t)}function Sr(e,t){var n;void 0===t&&(t=[]);const r=Or(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=Qn(r);return o?t.concat(a,a.visualViewport||[],lr(r)?r:[]):t.concat(r,Sr(r))}function kr(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=Qn(e),r=Er(e),o=n.visualViewport;let a=r.clientWidth,l=r.clientHeight,i=0,c=0;if(o){a=o.width,l=o.height;const e=sr();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,c=o.offsetTop)}return{width:a,height:l,x:i,y:c}}(e,n);else if("document"===t)r=function(e){const t=Er(e),n=_r(e),r=e.ownerDocument.body,o=fr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=fr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+xr(e);const i=-n.scrollTop;return"rtl"===er(r).direction&&(l+=fr(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:l,y:i}}(Er(e));else if(or(t))r=function(e,t){const n=br(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=rr(e)?gr(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=yr(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return Mn(r)}function Dr(e,t){const n=Cr(e);return!(n===t||!or(n)||ur(n))&&("fixed"===er(n).position||Dr(n,t))}function Tr(e,t){return rr(e)&&"fixed"!==er(e).position?t?t(e):e.offsetParent:null}function Rr(e,t){const n=Qn(e);if(!rr(e))return n;let r=Tr(e,t);for(;r&&ir(r)&&"static"===er(r).position;)r=Tr(r,t);return r&&("html"===nr(r)||"body"===nr(r)&&"static"===er(r).position&&!cr(r))?n:r||function(e){let t=Cr(e);for(;rr(t)&&!ur(t);){if(cr(t))return t;t=Cr(t)}return null}(e)||n}function Ar(e,t,n){const r=rr(t),o=Er(t),a="fixed"===n,l=br(e,!0,a,t);let i={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==nr(t)||lr(o))&&(i=_r(t)),rr(t)){const e=br(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=xr(o));return{x:l.left+i.scrollLeft-c.x,y:l.top+i.scrollTop-c.y,width:l.width,height:l.height}}const Pr={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=Sr(e).filter((e=>or(e)&&"body"!==nr(e))),o=null;const a="fixed"===er(e).position;let l=a?Cr(e):e;for(;or(l)&&!ur(l);){const t=er(l),n=cr(l);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||lr(l)&&!n&&Dr(e,l))?r=r.filter((e=>e!==l)):o=t,l=Cr(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],l=a[0],i=a.reduce(((e,n)=>{const r=kr(t,n,o);return e.top=fr(r.top,e.top),e.right=dr(r.right,e.right),e.bottom=dr(r.bottom,e.bottom),e.left=fr(r.left,e.left),e}),kr(t,l,o));return{width:i.right-i.left,height:i.bottom-i.top,x:i.left,y:i.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=rr(n),a=Er(n);if(n===a)return t;let l={scrollLeft:0,scrollTop:0},i={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==nr(n)||lr(a))&&(l=_r(n)),rr(n))){const e=br(n);i=gr(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*i.x,height:t.height*i.y,x:t.x*i.x-l.scrollLeft*i.x+c.x,y:t.y*i.y-l.scrollTop*i.y+c.y}},isElement:or,getDimensions:function(e){return mr(e)},getOffsetParent:Rr,getDocumentElement:Er,getScale:gr,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||Rr,a=this.getDimensions;return{reference:Ar(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===er(e).direction};function Mr(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:l=!0,animationFrame:i=!1}=r,c=o||a?[...or(e)?Sr(e):e.contextElement?Sr(e.contextElement):[],...Sr(t)]:[];c.forEach((e=>{const t=!or(e)&&e.toString().includes("V");!o||i&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;l&&(u=new ResizeObserver((()=>{n()})),or(e)&&!i&&u.observe(e),or(e)||!e.contextElement||i||u.observe(e.contextElement),u.observe(t));let d=i?br(e):null;return i&&function t(){const r=br(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,i&&cancelAnimationFrame(s)}}const Ir=(e,t,n)=>{const r=new Map,o={platform:Pr,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:l}=n,i=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(t));let s=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=Rn(s,r,c),f=r,p={},m=0;for(let n=0;n<i.length;n++){const{name:a,fn:v}=i[n],{x:h,y:g,data:w,reset:y}=await v({x:u,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:l,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,p={...p,[a]:{...p[a],...w}},y&&m<=50&&(m++,"object"==typeof y&&(y.placement&&(f=y.placement),y.rects&&(s=!0===y.rects?await l.getElementRects({reference:e,floating:t,strategy:o}):y.rects),({x:u,y:d}=Rn(s,f,c))),n=-1)}return{x:u,y:d,placement:f,strategy:o,middlewareData:p}})(e,t,{...o,platform:a})},Lr=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?Hn({element:n.current,padding:r}).fn(t):{}:n?Hn({element:n,padding:r}).fn(t):{};var o}});var Nr="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function jr(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!jr(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!jr(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function Hr(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Fr(e,t){const n=Hr(e);return Math.round(t*n)/n}function Zr(e){const t=r.useRef(e);return Nr((()=>{t.current=e})),t}const Vr=e.forwardRef(((t,n)=>{const{children:r,width:o=10,height:a=5,...l}=t;return e.createElement(R.svg,p({},l,{ref:n,width:o,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),t.asChild?r:e.createElement("polygon",{points:"0,0 30,0 15,10"}))})),Br="Popper",[Ur,Wr]=g(Br),[zr,Kr]=Ur(Br),$r=e.forwardRef(((t,n)=>{const{__scopePopper:r,virtualRef:o,...a}=t,l=Kr("PopperAnchor",r),i=e.useRef(null),c=h(n,i);return e.useEffect((()=>{l.onAnchorChange((null==o?void 0:o.current)||i.current)})),o?null:e.createElement(R.div,p({},a,{ref:c}))})),qr="PopperContent",[Gr,Xr]=Ur(qr),Yr=e.forwardRef(((t,n)=>{var a,l,i,c,s,u,d,f;const{__scopePopper:m,side:v="bottom",sideOffset:g=0,align:w="center",alignOffset:b=0,arrowPadding:E=0,collisionBoundary:_=[],collisionPadding:C=0,sticky:O="partial",hideWhenDetached:S=!1,avoidCollisions:k=!0,onPlaced:D,...T}=t,A=Kr(qr,m),[P,M]=e.useState(null),I=h(n,(e=>M(e))),[L,N]=e.useState(null),j=pn(L),H=null!==(a=null==j?void 0:j.width)&&void 0!==a?a:0,F=null!==(l=null==j?void 0:j.height)&&void 0!==l?l:0,Z=v+("center"!==w?"-"+w:""),V="number"==typeof C?C:{top:0,right:0,bottom:0,left:0,...C},B=Array.isArray(_)?_:[_],U=B.length>0,W={padding:V,boundary:B.filter(Qr),altBoundary:U},{refs:z,floatingStyles:K,placement:$,isPositioned:q,middlewareData:G}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:a=[],platform:l,elements:{reference:i,floating:c}={},transform:s=!0,whileElementsMounted:u,open:d}=e,[f,p]=r.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[m,v]=r.useState(a);jr(m,a)||v(a);const[h,g]=r.useState(null),[w,y]=r.useState(null),b=r.useCallback((e=>{e!=C.current&&(C.current=e,g(e))}),[g]),E=r.useCallback((e=>{e!==O.current&&(O.current=e,y(e))}),[y]),_=i||h,x=c||w,C=r.useRef(null),O=r.useRef(null),S=r.useRef(f),k=Zr(u),D=Zr(l),T=r.useCallback((()=>{if(!C.current||!O.current)return;const e={placement:t,strategy:n,middleware:m};D.current&&(e.platform=D.current),Ir(C.current,O.current,e).then((e=>{const t={...e,isPositioned:!0};R.current&&!jr(S.current,t)&&(S.current=t,o.flushSync((()=>{p(t)})))}))}),[m,t,n,D]);Nr((()=>{!1===d&&S.current.isPositioned&&(S.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[d]);const R=r.useRef(!1);Nr((()=>(R.current=!0,()=>{R.current=!1})),[]),Nr((()=>{if(_&&(C.current=_),x&&(O.current=x),_&&x){if(k.current)return k.current(_,x,T);T()}}),[_,x,T,k]);const A=r.useMemo((()=>({reference:C,floating:O,setReference:b,setFloating:E})),[b,E]),P=r.useMemo((()=>({reference:_,floating:x})),[_,x]),M=r.useMemo((()=>{const e={position:n,left:0,top:0};if(!P.floating)return e;const t=Fr(P.floating,f.x),r=Fr(P.floating,f.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...Hr(P.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,s,P.floating,f.x,f.y]);return r.useMemo((()=>({...f,update:T,refs:A,elements:P,floatingStyles:M})),[f,T,A,P,M])}({strategy:"fixed",placement:Z,whileElementsMounted:Mr,elements:{reference:A.anchor},middleware:[qn({mainAxis:g+F,alignmentAxis:b}),k&&Xn({mainAxis:!0,crossAxis:!1,limiter:"partial"===O?Yn():void 0,...W}),k&&Wn({...W}),Jn({...W,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,l=e.floating.style;l.setProperty("--radix-popper-available-width",`${n}px`),l.setProperty("--radix-popper-available-height",`${r}px`),l.setProperty("--radix-popper-anchor-width",`${o}px`),l.setProperty("--radix-popper-anchor-height",`${a}px`)}}),L&&Lr({element:L,padding:E}),eo({arrowWidth:H,arrowHeight:F}),S&&$n({strategy:"referenceHidden"})]}),[X,Y]=to($),J=x(D);y((()=>{q&&(null==J||J())}),[q,J]);const Q=null===(i=G.arrow)||void 0===i?void 0:i.x,ee=null===(c=G.arrow)||void 0===c?void 0:c.y,te=0!==(null===(s=G.arrow)||void 0===s?void 0:s.centerOffset),[ne,re]=e.useState();return y((()=>{P&&re(window.getComputedStyle(P).zIndex)}),[P]),e.createElement("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:q?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ne,"--radix-popper-transform-origin":[null===(u=G.transformOrigin)||void 0===u?void 0:u.x,null===(d=G.transformOrigin)||void 0===d?void 0:d.y].join(" ")},dir:t.dir},e.createElement(Gr,{scope:m,placedSide:X,onArrowChange:N,arrowX:Q,arrowY:ee,shouldHideArrow:te},e.createElement(R.div,p({"data-side":X,"data-align":Y},T,{ref:I,style:{...T.style,animation:q?void 0:"none",opacity:null!==(f=G.hide)&&void 0!==f&&f.referenceHidden?0:void 0}}))))})),Jr={top:"bottom",right:"left",bottom:"top",left:"right"};function Qr(e){return null!==e}const eo=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,l;const{placement:i,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[p,m]=to(i),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(l=s.arrow)||void 0===l?void 0:l.y)&&void 0!==a?a:0)+f/2;let w="",y="";return"bottom"===p?(w=u?v:`${h}px`,y=-f+"px"):"top"===p?(w=u?v:`${h}px`,y=`${c.floating.height+f}px`):"right"===p?(w=-f+"px",y=u?v:`${g}px`):"left"===p&&(w=`${c.floating.width+f}px`,y=u?v:`${g}px`),{data:{x:w,y:y}}}});function to(e){const[t,n="center"]=e.split("-");return[t,n]}const no=t=>{const{__scopePopper:n,children:r}=t,[o,a]=e.useState(null);return e.createElement(zr,{scope:n,anchor:o,onAnchorChange:a},r)},ro=$r,oo=Yr,ao=e.forwardRef((function(t,n){const{__scopePopper:r,...o}=t,a=Xr("PopperArrow",r),l=Jr[a.placedSide];return e.createElement("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0}},e.createElement(Vr,p({},o,{ref:n,style:{...o.style,display:"block"}})))})),lo=e.forwardRef(((t,n)=>e.createElement(R.span,p({},t,{ref:n,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...t.style}})))),io=lo,[co,so]=g("Tooltip",[Wr]),uo=Wr(),fo=700,po="tooltip.open",[mo,vo]=co("TooltipProvider"),ho="Tooltip",[go,wo]=co(ho),yo="TooltipTrigger",bo=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,a=wo(yo,r),l=vo(yo,r),i=uo(r),c=h(n,e.useRef(null),a.onTriggerChange),s=e.useRef(!1),u=e.useRef(!1),d=e.useCallback((()=>s.current=!1),[]);return e.useEffect((()=>()=>document.removeEventListener("pointerup",d)),[d]),e.createElement(ro,p({asChild:!0},i),e.createElement(R.button,p({"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute},o,{ref:c,onPointerMove:m(t.onPointerMove,(e=>{"touch"!==e.pointerType&&(u.current||l.isPointerInTransitRef.current||(a.onTriggerEnter(),u.current=!0))})),onPointerLeave:m(t.onPointerLeave,(()=>{a.onTriggerLeave(),u.current=!1})),onPointerDown:m(t.onPointerDown,(()=>{s.current=!0,document.addEventListener("pointerup",d,{once:!0})})),onFocus:m(t.onFocus,(()=>{s.current||a.onOpen()})),onBlur:m(t.onBlur,a.onClose),onClick:m(t.onClick,a.onClose)})))})),Eo="TooltipPortal",[_o,xo]=co(Eo,{forceMount:void 0}),Co="TooltipContent",Oo=e.forwardRef(((t,n)=>{const r=xo(Co,t.__scopeTooltip),{forceMount:o=r.forceMount,side:a="top",...l}=t,i=wo(Co,t.__scopeTooltip);return e.createElement(X,{present:o||i.open},i.disableHoverableContent?e.createElement(To,p({side:a},l,{ref:n})):e.createElement(So,p({side:a},l,{ref:n})))})),So=e.forwardRef(((t,n)=>{const r=wo(Co,t.__scopeTooltip),o=vo(Co,t.__scopeTooltip),a=e.useRef(null),l=h(n,a),[i,c]=e.useState(null),{trigger:s,onClose:u}=r,d=a.current,{onPointerInTransitChange:f}=o,m=e.useCallback((()=>{c(null),f(!1)}),[f]),v=e.useCallback(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);c(a),f(!0)}),[f]);return e.useEffect((()=>()=>m()),[m]),e.useEffect((()=>{if(s&&d){const e=e=>v(e,d),t=e=>v(e,s);return s.addEventListener("pointerleave",e),d.addEventListener("pointerleave",t),()=>{s.removeEventListener("pointerleave",e),d.removeEventListener("pointerleave",t)}}}),[s,d,v,m]),e.useEffect((()=>{if(i){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==s?void 0:s.contains(t))||(null==d?void 0:d.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const l=t[e].x,i=t[e].y,c=t[a].x,s=t[a].y;i>r!=s>r&&n<(c-l)*(r-i)/(s-i)+l&&(o=!o)}return o}(n,i);r?m():o&&(m(),u())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[s,d,i,u,m]),e.createElement(To,p({},t,{ref:l}))})),[ko,Do]=co(ho,{isInside:!1}),To=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,children:o,"aria-label":a,onEscapeKeyDown:l,onPointerDownOutside:i,...c}=t,s=wo(Co,r),u=uo(r),{onClose:d}=s;return e.useEffect((()=>(document.addEventListener(po,d),()=>document.removeEventListener(po,d))),[d]),e.useEffect((()=>{if(s.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(s.trigger)&&d()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[s.trigger,d]),e.createElement(N,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:i,onFocusOutside:e=>e.preventDefault(),onDismiss:d},e.createElement(oo,p({"data-state":s.stateAttribute},u,c,{ref:n,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),e.createElement(k,null,o),e.createElement(ko,{scope:r,isInside:!0},e.createElement(io,{id:s.contentId,role:"tooltip"},a||o))))}));const Ro=t=>{const{__scopeTooltip:n,delayDuration:r=fo,skipDelayDuration:o=300,disableHoverableContent:a=!1,children:l}=t,[i,c]=e.useState(!0),s=e.useRef(!1),u=e.useRef(0);return e.useEffect((()=>{const e=u.current;return()=>window.clearTimeout(e)}),[]),e.createElement(mo,{scope:n,isOpenDelayed:i,delayDuration:r,onOpen:e.useCallback((()=>{window.clearTimeout(u.current),c(!1)}),[]),onClose:e.useCallback((()=>{window.clearTimeout(u.current),u.current=window.setTimeout((()=>c(!0)),o)}),[o]),isPointerInTransitRef:s,onPointerInTransitChange:e.useCallback((e=>{s.current=e}),[]),disableHoverableContent:a},l)},Ao=t=>{const{__scopeTooltip:n,children:r,open:o,defaultOpen:a=!1,onOpenChange:l,disableHoverableContent:i,delayDuration:c}=t,s=vo(ho,t.__scopeTooltip),u=uo(n),[d,f]=e.useState(null),p=_(),m=e.useRef(0),v=null!=i?i:s.disableHoverableContent,h=null!=c?c:s.delayDuration,g=e.useRef(!1),[w=!1,y]=C({prop:o,defaultProp:a,onChange:e=>{e?(s.onOpen(),document.dispatchEvent(new CustomEvent(po))):s.onClose(),null==l||l(e)}}),b=e.useMemo((()=>w?g.current?"delayed-open":"instant-open":"closed"),[w]),E=e.useCallback((()=>{window.clearTimeout(m.current),g.current=!1,y(!0)}),[y]),x=e.useCallback((()=>{window.clearTimeout(m.current),y(!1)}),[y]),O=e.useCallback((()=>{window.clearTimeout(m.current),m.current=window.setTimeout((()=>{g.current=!0,y(!0)}),h)}),[h,y]);return e.useEffect((()=>()=>window.clearTimeout(m.current)),[]),e.createElement(no,u,e.createElement(go,{scope:n,contentId:p,open:w,stateAttribute:b,trigger:d,onTriggerChange:f,onTriggerEnter:e.useCallback((()=>{s.isOpenDelayed?O():E()}),[s.isOpenDelayed,O,E]),onTriggerLeave:e.useCallback((()=>{v?x():window.clearTimeout(m.current)}),[x,v]),onOpen:E,onClose:x,disableHoverableContent:v},r))},Po=bo,Mo=t=>{const{__scopeTooltip:n,forceMount:r,children:o,container:a}=t,l=wo(Eo,n);return e.createElement(_o,{scope:n,forceMount:r},e.createElement(X,{present:r||l.open},e.createElement(G,{asChild:!0,container:a},o)))},Io=Oo,Lo=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,a=uo(r);return Do("TooltipArrow",r).isInside?null:e.createElement(ao,p({},a,o,{ref:n}))}));var No="Tooltip-modules_content__--tK0",jo="Tooltip-modules_arrow__4vjj8";function Ho(e,[t,n]){return Math.min(n,Math.max(t,e))}const Fo=[" ","Enter","ArrowUp","ArrowDown"],Zo=[" ","Enter"],Vo="Select",[Bo,Uo,Wo]=Tt(Vo),[zo,Ko]=g(Vo,[Wo,Wr]),$o=Wr(),[qo,Go]=zo(Vo),[Xo,Yo]=zo(Vo),Jo=e.forwardRef(((t,n)=>{const{__scopeSelect:r,disabled:o=!1,...a}=t,l=$o(r),i=Go("SelectTrigger",r),c=i.disabled||o,s=h(n,i.onTriggerChange),u=Uo(r),[d,f,v]=Oa((e=>{const t=u().filter((e=>!e.disabled)),n=t.find((e=>e.value===i.value)),r=Sa(t,e,n);void 0!==r&&i.onValueChange(r.value)})),g=()=>{c||(i.onOpenChange(!0),v())};return e.createElement(ro,p({asChild:!0},l),e.createElement(R.button,p({type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":void 0===i.value?"":void 0},a,{ref:s,onClick:m(a.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:m(a.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(g(),i.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:m(a.onKeyDown,(e=>{const t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||f(e.key),t&&" "===e.key||Fo.includes(e.key)&&(g(),e.preventDefault())}))})))})),Qo=e.forwardRef(((t,n)=>{const{__scopeSelect:r,className:o,style:a,children:l,placeholder:i,...c}=t,s=Go("SelectValue",r),{onValueNodeHasChildrenChange:u}=s,d=void 0!==l,f=h(n,s.onValueNodeChange);return y((()=>{u(d)}),[u,d]),e.createElement(R.span,p({},c,{ref:f,style:{pointerEvents:"none"}}),void 0===s.value&&void 0!==i?i:l)})),ea=e.forwardRef(((t,n)=>{const{__scopeSelect:r,children:o,...a}=t;return e.createElement(R.span,p({"aria-hidden":!0},a,{ref:n}),o||"▼")})),ta="SelectContent",na=e.forwardRef(((n,r)=>{const o=Go(ta,n.__scopeSelect),[a,l]=e.useState();if(y((()=>{l(new DocumentFragment)}),[]),!o.open){const r=a;return r?t.createPortal(e.createElement(oa,{scope:n.__scopeSelect},e.createElement(Bo.Slot,{scope:n.__scopeSelect},e.createElement("div",null,n.children))),r):null}return e.createElement(la,p({},n,{ref:r}))})),ra=10,[oa,aa]=zo(ta),la=e.forwardRef(((t,n)=>{const{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:l,onPointerDownOutside:i,side:c,sideOffset:s,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:v,collisionPadding:g,sticky:w,hideWhenDetached:y,avoidCollisions:b,...E}=t,_=Go(ta,r),[x,C]=e.useState(null),[S,k]=e.useState(null),D=h(n,(e=>C(e))),[T,R]=e.useState(null),[A,P]=e.useState(null),M=Uo(r),[I,L]=e.useState(!1),j=e.useRef(!1);e.useEffect((()=>{if(x)return Ve(x)}),[x]),Q();const H=e.useCallback((e=>{const[t,...n]=M().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[M,S]),F=e.useCallback((()=>H([T,x])),[H,T,x]);e.useEffect((()=>{I&&F()}),[I,F]);const{onOpenChange:Z,triggerPointerDownPosRef:V}=_;e.useEffect((()=>{if(x){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=V.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=V.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():x.contains(n.target)||Z(!1),document.removeEventListener("pointermove",t),V.current=null};return null!==V.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[x,Z,V]),e.useEffect((()=>{const e=()=>Z(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[Z]);const[U,W]=Oa((e=>{const t=M().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=Sa(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),z=e.useCallback(((e,t,n)=>{const r=!j.current&&!n;(void 0!==_.value&&_.value===t||r)&&(R(e),r&&(j.current=!0))}),[_.value]),K=e.useCallback((()=>null==x?void 0:x.focus()),[x]),$=e.useCallback(((e,t,n)=>{const r=!j.current&&!n;(void 0!==_.value&&_.value===t||r)&&P(e)}),[_.value]),q="popper"===o?ca:ia,G=q===ca?{side:c,sideOffset:s,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:v,collisionPadding:g,sticky:w,hideWhenDetached:y,avoidCollisions:b}:{};return e.createElement(oa,{scope:r,content:x,viewport:S,onViewportChange:k,itemRefCallback:z,selectedItem:T,onItemLeave:K,itemTextRefCallback:$,focusSelectedItem:F,selectedItemText:A,position:o,isPositioned:I,searchRef:U},e.createElement(Ie,{as:O,allowPinchZoom:!0},e.createElement(B,{asChild:!0,trapped:_.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:m(a,(e=>{var t;null===(t=_.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},e.createElement(N,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:i,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>_.onOpenChange(!1)},e.createElement(q,p({role:"listbox",id:_.contentId,"data-state":_.open?"open":"closed",dir:_.dir,onContextMenu:e=>e.preventDefault()},E,G,{onPlaced:()=>L(!0),ref:D,style:{display:"flex",flexDirection:"column",outline:"none",...E.style},onKeyDown:m(E.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||W(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=M().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>H(t))),e.preventDefault()}}))}))))))})),ia=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onPlaced:o,...a}=t,l=Go(ta,r),i=aa(ta,r),[c,s]=e.useState(null),[u,d]=e.useState(null),f=h(n,(e=>d(e))),m=Uo(r),v=e.useRef(!1),g=e.useRef(!0),{viewport:w,selectedItem:b,selectedItemText:E,focusSelectedItem:_}=i,x=e.useCallback((()=>{if(l.trigger&&l.valueNode&&c&&u&&w&&b&&E){const e=l.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=l.valueNode.getBoundingClientRect(),r=E.getBoundingClientRect();if("rtl"!==l.dir){const o=r.left-t.left,a=n.left-o,l=e.left-a,i=e.width+l,s=Math.max(i,t.width),u=window.innerWidth-ra,d=Ho(a,[ra,u-s]);c.style.minWidth=i+"px",c.style.left=d+"px"}else{const o=t.right-r.right,a=window.innerWidth-n.right-o,l=window.innerWidth-e.right-a,i=e.width+l,s=Math.max(i,t.width),u=window.innerWidth-ra,d=Ho(a,[ra,u-s]);c.style.minWidth=i+"px",c.style.right=d+"px"}const a=m(),i=window.innerHeight-2*ra,s=w.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),p=parseInt(d.paddingTop,10),h=parseInt(d.borderBottomWidth,10),g=f+p+s+parseInt(d.paddingBottom,10)+h,y=Math.min(5*b.offsetHeight,g),_=window.getComputedStyle(w),x=parseInt(_.paddingTop,10),C=parseInt(_.paddingBottom,10),O=e.top+e.height/2-ra,S=i-O,k=b.offsetHeight/2,D=f+p+(b.offsetTop+k),T=g-D;if(D<=O){const e=b===a[a.length-1].ref.current;c.style.bottom="0px";const t=u.clientHeight-w.offsetTop-w.offsetHeight,n=D+Math.max(S,k+(e?C:0)+t+h);c.style.height=n+"px"}else{const e=b===a[0].ref.current;c.style.top="0px";const t=Math.max(O,f+w.offsetTop+(e?x:0)+k)+T;c.style.height=t+"px",w.scrollTop=D-O+w.offsetTop}c.style.margin=`${ra}px 0`,c.style.minHeight=y+"px",c.style.maxHeight=i+"px",null==o||o(),requestAnimationFrame((()=>v.current=!0))}}),[m,l.trigger,l.valueNode,c,u,w,b,E,l.dir,o]);y((()=>x()),[x]);const[C,O]=e.useState();y((()=>{u&&O(window.getComputedStyle(u).zIndex)}),[u]);const S=e.useCallback((e=>{e&&!0===g.current&&(x(),null==_||_(),g.current=!1)}),[x,_]);return e.createElement(sa,{scope:r,contentWrapper:c,shouldExpandOnScrollRef:v,onScrollButtonChange:S},e.createElement("div",{ref:s,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:C}},e.createElement(R.div,p({},a,{ref:f,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}}))))})),ca=e.forwardRef(((t,n)=>{const{__scopeSelect:r,align:o="start",collisionPadding:a=ra,...l}=t,i=$o(r);return e.createElement(oo,p({},i,l,{ref:n,align:o,collisionPadding:a,style:{boxSizing:"border-box",...l.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[sa,ua]=zo(ta,{}),da="SelectViewport",fa=e.forwardRef(((t,n)=>{const{__scopeSelect:r,...o}=t,a=aa(da,r),l=ua(da,r),i=h(n,a.onViewportChange),c=e.useRef(0);return e.createElement(e.Fragment,null,e.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),e.createElement(Bo.Slot,{scope:r},e.createElement(R.div,p({"data-radix-select-viewport":"",role:"presentation"},o,{ref:i,style:{position:"relative",flex:1,overflow:"auto",...o.style},onScroll:m(o.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=l;if(null!=r&&r.current&&n){const e=Math.abs(c.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*ra,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),l=Math.max(o,a);if(l<r){const o=l+e,a=Math.min(r,o),i=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=i>0?i:0,n.style.justifyContent="flex-end")}}}c.current=t.scrollTop}))}))))}));zo("SelectGroup");const pa="SelectItem",[ma,va]=zo(pa),ha=e.forwardRef(((t,n)=>{const{__scopeSelect:r,value:o,disabled:a=!1,textValue:l,...i}=t,c=Go(pa,r),s=aa(pa,r),u=c.value===o,[d,f]=e.useState(null!=l?l:""),[v,g]=e.useState(!1),w=h(n,(e=>{var t;return null===(t=s.itemRefCallback)||void 0===t?void 0:t.call(s,e,o,a)})),y=_(),b=()=>{a||(c.onValueChange(o),c.onOpenChange(!1))};return e.createElement(ma,{scope:r,value:o,disabled:a,textId:y,isSelected:u,onItemTextChange:e.useCallback((e=>{f((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},e.createElement(Bo.ItemSlot,{scope:r,value:o,disabled:a,textValue:d},e.createElement(R.div,p({role:"option","aria-labelledby":y,"data-highlighted":v?"":void 0,"aria-selected":u&&v,"data-state":u?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1},i,{ref:w,onFocus:m(i.onFocus,(()=>g(!0))),onBlur:m(i.onBlur,(()=>g(!1))),onPointerUp:m(i.onPointerUp,b),onPointerMove:m(i.onPointerMove,(e=>{var t;a?null===(t=s.onItemLeave)||void 0===t||t.call(s):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:m(i.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=s.onItemLeave)||void 0===t||t.call(s))})),onKeyDown:m(i.onKeyDown,(e=>{var t;""!==(null===(t=s.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(Zo.includes(e.key)&&b()," "===e.key&&e.preventDefault())}))}))))})),ga="SelectItemText",wa=e.forwardRef(((n,r)=>{const{__scopeSelect:o,className:a,style:l,...i}=n,c=Go(ga,o),s=aa(ga,o),u=va(ga,o),d=Yo(ga,o),[f,m]=e.useState(null),v=h(r,(e=>m(e)),u.onItemTextChange,(e=>{var t;return null===(t=s.itemTextRefCallback)||void 0===t?void 0:t.call(s,e,u.value,u.disabled)})),g=null==f?void 0:f.textContent,w=e.useMemo((()=>e.createElement("option",{key:u.value,value:u.value,disabled:u.disabled},g)),[u.disabled,u.value,g]),{onNativeOptionAdd:b,onNativeOptionRemove:E}=d;return y((()=>(b(w),()=>E(w))),[b,E,w]),e.createElement(e.Fragment,null,e.createElement(R.span,p({id:u.textId},i,{ref:v})),u.isSelected&&c.valueNode&&!c.valueNodeHasChildren?t.createPortal(i.children,c.valueNode):null)})),ya="SelectScrollUpButton",ba=e.forwardRef(((t,n)=>{const r=aa(ya,t.__scopeSelect),o=ua(ya,t.__scopeSelect),[a,l]=e.useState(!1),i=h(n,o.onScrollButtonChange);return y((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollTop>0;l(t)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),a?e.createElement(xa,p({},t,{ref:i,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),Ea="SelectScrollDownButton",_a=e.forwardRef(((t,n)=>{const r=aa(Ea,t.__scopeSelect),o=ua(Ea,t.__scopeSelect),[a,l]=e.useState(!1),i=h(n,o.onScrollButtonChange);return y((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollHeight-e.clientHeight,n=Math.ceil(e.scrollTop)<t;l(n)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),a?e.createElement(xa,p({},t,{ref:i,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),xa=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onAutoScroll:o,...a}=t,l=aa("SelectScrollButton",r),i=e.useRef(null),c=Uo(r),s=e.useCallback((()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)}),[]);return e.useEffect((()=>()=>s()),[s]),y((()=>{var e;const t=c().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[c]),e.createElement(R.div,p({"aria-hidden":!0},a,{ref:n,style:{flexShrink:0,...a.style},onPointerDown:m(a.onPointerDown,(()=>{null===i.current&&(i.current=window.setInterval(o,50))})),onPointerMove:m(a.onPointerMove,(()=>{var e;null===(e=l.onItemLeave)||void 0===e||e.call(l),null===i.current&&(i.current=window.setInterval(o,50))})),onPointerLeave:m(a.onPointerLeave,(()=>{s()}))}))})),Ca=e.forwardRef(((t,n)=>{const{value:r,...o}=t,a=e.useRef(null),l=h(n,a),i=fn(r);return e.useEffect((()=>{const e=a.current,t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,"value").set;if(i!==r&&n){const t=new Event("change",{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}}),[i,r]),e.createElement(lo,{asChild:!0},e.createElement("select",p({},o,{ref:l,defaultValue:r})))}));function Oa(t){const n=x(t),r=e.useRef(""),o=e.useRef(0),a=e.useCallback((e=>{const t=r.current+e;n(t),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout((()=>e("")),1e3))}(t)}),[n]),l=e.useCallback((()=>{r.current="",window.clearTimeout(o.current)}),[]);return e.useEffect((()=>()=>window.clearTimeout(o.current)),[]),[r,a,l]}function Sa(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(l=e,i=Math.max(o,0),l.map(((e,t)=>l[(i+t)%l.length])));var l,i;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}Ca.displayName="BubbleSelect";const ka=t=>{const{__scopeSelect:n,children:r,open:o,defaultOpen:a,onOpenChange:l,value:i,defaultValue:c,onValueChange:s,dir:u,name:d,autoComplete:f,disabled:p,required:m}=t,v=$o(n),[h,g]=e.useState(null),[w,y]=e.useState(null),[b,E]=e.useState(!1),x=At(u),[O=!1,S]=C({prop:o,defaultProp:a,onChange:l}),[k,D]=C({prop:i,defaultProp:c,onChange:s}),T=e.useRef(null),R=!h||Boolean(h.closest("form")),[A,P]=e.useState(new Set),M=Array.from(A).map((e=>e.props.value)).join(";");return e.createElement(no,v,e.createElement(qo,{required:m,scope:n,trigger:h,onTriggerChange:g,valueNode:w,onValueNodeChange:y,valueNodeHasChildren:b,onValueNodeHasChildrenChange:E,contentId:_(),value:k,onValueChange:D,open:O,onOpenChange:S,dir:x,triggerPointerDownPosRef:T,disabled:p},e.createElement(Bo.Provider,{scope:n},e.createElement(Xo,{scope:t.__scopeSelect,onNativeOptionAdd:e.useCallback((e=>{P((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:e.useCallback((e=>{P((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},r)),R?e.createElement(Ca,{key:M,"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:f,value:k,onChange:e=>D(e.target.value),disabled:p},void 0===k?e.createElement("option",{value:""}):null,Array.from(A)):null))},Da=Jo,Ta=Qo,Ra=ea,Aa=na,Pa=fa,Ma=ha,Ia=wa,La=ba,Na=_a;var ja,Ha;function Fa(){return Fa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fa.apply(this,arguments)}var Za,Va;function Ba(){return Ba=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ba.apply(this,arguments)}var Ua,Wa,za=function(e){return r.createElement("svg",Ba({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Za||(Za=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Va||(Va=r.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function Ka(){return Ka=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ka.apply(this,arguments)}var $a,qa;function Ga(){return Ga=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ga.apply(this,arguments)}var Xa,Ya;function Ja(){return Ja=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ja.apply(this,arguments)}var Qa,el;function tl(){return tl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},tl.apply(this,arguments)}var nl,rl;function ol(){return ol=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ol.apply(this,arguments)}var al,ll;function il(){return il=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},il.apply(this,arguments)}var cl,sl;function ul(){return ul=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ul.apply(this,arguments)}var dl,fl;function pl(){return pl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pl.apply(this,arguments)}var ml,vl;function hl(){return hl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},hl.apply(this,arguments)}var gl,wl;function yl(){return yl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yl.apply(this,arguments)}var bl,El;function _l(){return _l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_l.apply(this,arguments)}var xl;function Cl(){return Cl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Cl.apply(this,arguments)}var Ol,Sl;function kl(){return kl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kl.apply(this,arguments)}var Dl,Tl;function Rl(){return Rl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Rl.apply(this,arguments)}var Al,Pl;function Ml(){return Ml=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ml.apply(this,arguments)}var Il,Ll;function Nl(){return Nl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nl.apply(this,arguments)}var jl,Hl;function Fl(){return Fl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fl.apply(this,arguments)}var Zl,Vl;function Bl(){return Bl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Bl.apply(this,arguments)}var Ul,Wl;function zl(){return zl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},zl.apply(this,arguments)}var Kl,$l;function ql(){return ql=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ql.apply(this,arguments)}var Gl,Xl;function Yl(){return Yl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yl.apply(this,arguments)}var Jl,Ql;function ei(){return ei=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ei.apply(this,arguments)}var ti=Object.freeze({__proto__:null,AddIcon:function(e){return r.createElement("svg",Fa({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ja||(ja=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ha||(Ha=r.createElement("g",{mask:"url(#add_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:za,BlockIcon:function(e){return r.createElement("svg",Ka({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ua||(Ua=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Wa||(Wa=r.createElement("g",{mask:"url(#block_svg__a)"},r.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(e){return r.createElement("svg",Ga({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$a||($a=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),qa||(qa=r.createElement("g",{mask:"url(#blur_on_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(e){return r.createElement("svg",Ja({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Xa||(Xa=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ya||(Ya=r.createElement("g",{mask:"url(#cached_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CheckCircleIcon:function(e){return r.createElement("svg",tl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Qa||(Qa=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),el||(el=r.createElement("g",{mask:"url(#check_circle_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CloseIcon:Dt,DeleteIcon:function(e){return r.createElement("svg",ol({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},nl||(nl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),rl||(rl=r.createElement("g",{mask:"url(#delete_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},InfoIcon:function(e){return r.createElement("svg",il({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},al||(al=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ll||(ll=r.createElement("g",{mask:"url(#info_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(e){return r.createElement("svg",ul({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},cl||(cl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),sl||(sl=r.createElement("g",{mask:"url(#info-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MicOffIcon:function(e){return r.createElement("svg",pl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},dl||(dl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),fl||(fl=r.createElement("g",{mask:"url(#mic_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(e){return r.createElement("svg",hl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ml||(ml=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vl||(vl=r.createElement("g",{mask:"url(#mic_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(e){return r.createElement("svg",_l({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},bl||(bl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),El||(El=r.createElement("g",{mask:"url(#mic-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(e){return r.createElement("svg",yl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},gl||(gl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),wl||(wl=r.createElement("g",{mask:"url(#mic_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},PlayIcon:function(e){return r.createElement("svg",Cl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),xl||(xl=r.createElement("path",{fill:"#42454B",d:"m15.262 6.708-11-6.503C3.37-.323 2 .19 2 1.495V14.5c0 1.172 1.272 1.878 2.263 1.29l11-6.5c.98-.578.984-2.002 0-2.58Z"})))},VideoCamOffIcon:function(e){return r.createElement("svg",kl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ol||(Ol=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Sl||(Sl=r.createElement("g",{mask:"url(#videocam_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(e){return r.createElement("svg",Rl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Dl||(Dl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Tl||(Tl=r.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(e){return r.createElement("svg",Ml({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Al||(Al=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Pl||(Pl=r.createElement("g",{mask:"url(#videocam_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(e){return r.createElement("svg",Nl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Il||(Il=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ll||(Ll=r.createElement("g",{mask:"url(#videocam-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(e){return r.createElement("svg",Fl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},jl||(jl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Hl||(Hl=r.createElement("g",{mask:"url(#volume_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(e){return r.createElement("svg",Bl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Zl||(Zl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Vl||(Vl=r.createElement("g",{mask:"url(#volume_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(e){return r.createElement("svg",zl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ul||(Ul=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Wl||(Wl=r.createElement("g",{mask:"url(#volume_up-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(e){return r.createElement("svg",ql({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Kl||(Kl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),$l||($l=r.createElement("g",{mask:"url(#volume_up_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(e){return r.createElement("svg",Yl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Gl||(Gl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xl||(Xl=r.createElement("g",{mask:"url(#warning-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(e){return r.createElement("svg",ei({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Jl||(Jl=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ql||(Ql=r.createElement("g",{mask:"url(#warning_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}}),ni="Select-modules_trigger__dS9Dx",ri="Select-modules_icon__sgRRc",oi="Select-modules_startIcon__kohMV",ai="Select-modules_value__h6Q4Z",li="Select-modules_content__YuAqS",ii="Select-modules_item__cTAIm",ci=e.forwardRef((function(t,n){var r=t.children,o=t.sideOffset,i=void 0===o?4:o,c=t.position,s=void 0===c?"popper":c,u=t.disabled,d=void 0!==u&&u,f=t.value,p=void 0===f?"":f,m=t.id,v=t.icon,h=void 0===v?null:v,g=t.placeholder,w=void 0===g?"":g,y=l(t,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return e.createElement(ka,a({value:p||void 0,disabled:d},y),e.createElement(Da,{id:m,ref:n,className:ni},h&&e.createElement("span",{className:oi},h),e.createElement("span",{className:ai},e.createElement(Ta,{placeholder:w})),e.createElement(Ra,{className:ri},e.createElement(za,null))),e.createElement(Aa,{position:s,className:li,sideOffset:i},e.createElement(Pa,null,e.createElement(La,null,"ChevronUpIcon"),e.createElement(Pa,null,r),e.createElement(Na,null,"ChevronDownIcon"))))})),si=e.forwardRef((function(t,n){var r=t.children,o=t.disabled,i=void 0!==o&&o,c=l(t,["children","disabled"]);return e.createElement(Ma,a({},c,{ref:n,className:ii,disabled:i}),r)})),ui=Ia;const di=e.forwardRef(((t,n)=>e.createElement(R.label,p({},t,{ref:n,onMouseDown:e=>{var n;null===(n=t.onMouseDown)||void 0===n||n.call(t,e),!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}))));var fi="Label-modules_label__rXO6J";var pi={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};const mi="Progress",vi=100,[hi,gi]=g(mi),[wi,yi]=hi(mi),bi=e.forwardRef(((t,n)=>{const{__scopeProgress:r,value:o,max:a,getValueLabel:l=Ei,...i}=t,c=Ci(a)?a:vi,s=Oi(o,c)?o:null,u=xi(s)?l(s,c):void 0;return e.createElement(wi,{scope:r,value:s,max:c},e.createElement(R.div,p({"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":xi(s)?s:void 0,"aria-valuetext":u,role:"progressbar","data-state":_i(s,c),"data-value":null!=s?s:void 0,"data-max":c},i,{ref:n})))}));bi.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!Ci(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=Ci(e.max)?e.max:vi;return null==r||Oi(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function Ei(e,t){return`${Math.round(e/t*100)}%`}function _i(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function xi(e){return"number"==typeof e}function Ci(e){return xi(e)&&!isNaN(e)&&e>0}function Oi(e,t){return xi(e)&&!isNaN(e)&&e<=t&&e>=0}const Si=bi,ki=e.forwardRef(((t,n)=>{var r;const{__scopeProgress:o,...a}=t,l=yi("ProgressIndicator",o);return e.createElement(R.div,p({"data-state":_i(l.value,l.max),"data-value":null!==(r=l.value)&&void 0!==r?r:void 0,"data-max":l.max},a,{ref:n}))}));var Di="Progress-modules_root__E0rHH",Ti="Progress-modules_indicator__qpwRi";const[Ri,Ai]=g("AlertDialog",[We]),Pi=We(),Mi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Pi(r);return e.createElement(pt,p({},a,o,{ref:n}))})),Ii="AlertDialogContent",[Li,Ni]=Ri(Ii),ji=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,children:o,...a}=t,l=Pi(r),i=h(n,e.useRef(null)),c=e.useRef(null);return e.createElement(st,{contentName:Ii,titleName:Hi,docsSlug:"alert-dialog"},e.createElement(Li,{scope:r,cancelRef:c},e.createElement(mt,p({role:"alertdialog"},l,a,{ref:i,onOpenAutoFocus:m(a.onOpenAutoFocus,(e=>{var t;e.preventDefault(),null===(t=c.current)||void 0===t||t.focus({preventScroll:!0})})),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault()}),e.createElement(k,null,o),!1)))})),Hi="AlertDialogTitle",Fi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Pi(r);return e.createElement(vt,p({},a,o,{ref:n}))})),Zi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Pi(r);return e.createElement(ht,p({},a,o,{ref:n}))})),Vi=t=>{const{__scopeAlertDialog:n,...r}=t,o=Pi(n);return e.createElement(dt,p({},o,r,{modal:!0}))},Bi=t=>{const{__scopeAlertDialog:n,...r}=t,o=Pi(n);return e.createElement(ft,p({},o,r))},Ui=Mi,Wi=ji,zi=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,a=Pi(r);return e.createElement(gt,p({},a,o,{ref:n}))})),Ki=e.forwardRef(((t,n)=>{const{__scopeAlertDialog:r,...o}=t,{cancelRef:a}=Ni("AlertDialogCancel",r),l=Pi(r),i=h(n,a);return e.createElement(gt,p({},l,o,{ref:i}))})),$i=Fi,qi=Zi;var Gi={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"};exports.Alert=function(t){var n=t.onOpenChange,r=t.open,o=t.actionText,a=void 0===o?"OK":o,l=t.onActionClick,i=t.cancelText,c=void 0===i?"Cancel":i,s=t.onCancelClick,u=t.title,d=t.description,p=void 0===d?"":d;return e.createElement(Vi,{open:r,onOpenChange:n},e.createElement(Bi,{className:Gi.portal},e.createElement(Ui,{className:Gi.overlay}),e.createElement(Wi,{className:Gi.content},e.createElement("button",{className:Gi.close,onClick:function(){return n(!1)},"data-testid":"close-button"},e.createElement(Dt,null)),e.createElement($i,{className:Gi.title},u),p&&e.createElement(qi,{className:Gi.description},p),e.createElement("div",{className:Gi.buttons},e.createElement(Ki,{asChild:!0},e.createElement(f,{onClick:s,variant:"outline"},c)),e.createElement(zi,{asChild:!0},e.createElement(f,{onClick:l,variant:"danger"},a))))))},exports.Button=f,exports.FormGroup=function(t){var n,r=t.children,o=t.position,a=void 0===o?"vertical":o,l=t.justify,i=void 0===l?"start":l,c=t.alignItems,s=void 0===c?"start":c;return e.createElement("div",{className:u(pi.formGroup,(n={},n[pi.horizontal]="horizontal"===a,n[pi.vertical]="vertical"===a,n[pi[i]]=!!i,n[pi["".concat(s,"AlignItems")]]=!!s,n))},r)},exports.Label=function(t){var n=t.htmlFor,r=t.children;return e.createElement(di,{htmlFor:n,className:fi},r)},exports.Modal=function(t){var n,r,o=t.children,a=t.open,l=t.onOpenChange,i=t.title,c=t.hideCloseButton,s=void 0!==c&&c,d=t.contentClassName,f=void 0===d?"":d,p=t.maxHeight,m=void 0===p?"auto":p,v=t.width,h=void 0===v?"432px":v;return e.createElement(dt,{open:a,onOpenChange:l},e.createElement(ft,null,e.createElement(pt,{className:bt},e.createElement(mt,{className:u(Ot,(n={},n[f]=!!f,n)),style:{maxHeight:m,width:h}},e.createElement("div",{className:Et},i&&e.createElement(vt,{className:u(xt,(r={},r[Ct]=!!s,r))},i),!s&&e.createElement(gt,{className:_t},e.createElement(Dt,null))),e.createElement("div",{className:St},o)))))},exports.Progress=function(t){var n=t.max,r=void 0===n?100:n,o=t.progress,i=void 0===o?0:o,c=l(t,["max","progress"]),s=i>r?"100%":"".concat(i/r*100,"%");return e.createElement(Si,a({className:Di,value:i>r?r:i,max:r},c),e.createElement(ki,{className:Ti,style:{width:s}}))},exports.Select=ci,exports.SelectItem=si,exports.SelectItemText=ui,exports.Switch=function(t){var n,r=t.className,o=void 0===r?"":r,i=t.id,c=void 0===i?"":i,s=t.disabled,d=void 0!==s&&s,f=t.required,p=void 0!==f&&f,m=t.name,v=l(t,["className","id","disabled","required","name"]);return e.createElement(_n,a({className:u(Cn,(n={},n[o]=o,n)),disabled:d,required:p,name:m,id:c||m},v),e.createElement(xn,{className:On}))},exports.Tab=function(t){var n,r=t.children,o=t.className,i=void 0===o?"":o,c=l(t,["children","className"]);return e.createElement(an,a({},c,{className:u(un,(n={},n[i]=i,n))}),r)},exports.TabsContent=function(t){var n,r=t.children,o=t.value,a=t.className,l=void 0===a?"":a;return e.createElement(ln,{value:o,className:u(dn,(n={},n[l]=l,n))},r)},exports.TabsList=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o;return e.createElement(on,{className:u(sn,(n={},n[a]=a,n))},r)},exports.TabsRoot=function(t){var n,r=t.children,o=t.className,i=void 0===o?"":o,c=l(t,["children","className"]);return e.createElement(rn,a({},c,{className:u(cn,(n={},n[i]=i,n))}),r)},exports.Tooltip=function(t){var n,r=t.children,o=t.content,i=t.open,c=t.defaultOpen,s=t.onOpenChange,d=t.side,f=void 0===d?"top":d,p=t.align,m=void 0===p?"center":p,v=t.className,h=void 0===v?"":v,g=t.delayDuration,w=void 0===g?200:g,y=t.sideOffset,b=void 0===y?4:y,E=t.isPortal,_=void 0!==E&&E,x=l(t,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),C=e.createElement(Io,a({sideOffset:b,side:f,align:m},x,{className:u(No,(n={},n[h]=h,n))}),o,e.createElement(Lo,{className:jo,width:11,height:5}));return o?e.createElement(Ro,null,e.createElement(Ao,{delayDuration:w,open:i,defaultOpen:c,onOpenChange:s},e.createElement(Po,{asChild:!0},r),_?e.createElement(Mo,null,C):C)):r},exports.icons=ti;
|
|
7
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtaWQvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNsb3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93bi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcnRhbC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2UvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkcy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VNZXJnZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L3VzZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L2Fzc2lnblJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2Utc2lkZWNhci9kaXN0L2VzMjAxNS9tZWRpdW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLXNpZGVjYXIvZGlzdC9lczIwMTUvZXhwb3J0cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L21lZGl1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1VJLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9zaW5nbGV0b24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2V0LW5vbmNlL2Rpc3QvZXMyMDE1L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2hvb2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvdXRpbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvY29tcG9uZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvYWdncmVzaXZlQ2FwdHVyZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L2hhbmRsZVNjcm9sbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1NpZGVFZmZlY3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9zaWRlY2FyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvQ29tYmluYXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJpYS1oaWRkZW4vZGlzdC9lczIwMTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9jbG9zZS5zdmciLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtcm92aW5nLWZvY3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10YWJzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zd2l0Y2gvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QtZG9tL2Rpc3QvZmxvYXRpbmctdWkucmVhY3QtZG9tLmVzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtYXJyb3cvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcHBlci9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10b29sdGlwL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9udW1iZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9hZGQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2tleWJvYXJkX2Fycm93X2Rvd24uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2Jsb2NrLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9ibHVyX29uLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jYWNoZWQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2NoZWNrX2NpcmNsZS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvZGVsZXRlLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9pbmZvLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9pbmZvLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pY19vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljX29mZi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWMtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvcGxheS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW1fb2ZmLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92aWRlb2NhbV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW0uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX29mZi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX3VwLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV91cC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvd2FybmluZy0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy93YXJuaW5nLnN2ZyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NlbGVjdC9TZWxlY3QudHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1sYWJlbC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJvZ3Jlc3MvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFsZXJ0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FsZXJ0L0FsZXJ0LnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0Zvcm1Hcm91cC9Gb3JtR3JvdXAudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTGFiZWwvTGFiZWwudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUHJvZ3Jlc3MvUHJvZ3Jlc3MudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UYWJzL1RhYnMudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVG9vbHRpcC9Ub29sdGlwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbixcclxuICAgIF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtLFxyXG4gICAgX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXMsXHJcbiAgICBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG59O1xyXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIixudWxsLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJmdW5jdGlvbiAkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMChvcmlnaW5hbEV2ZW50SGFuZGxlciwgb3VyRXZlbnRIYW5kbGVyLCB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSB2b2lkIDAgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIG91ckV2ZW50SGFuZGxlciA9PT0gbnVsbCB8fCBvdXJFdmVudEhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG91ckV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCBhcyBjb21wb3NlRXZlbnRIYW5kbGVyc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICQzdnFtciR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBTZXQgYSBnaXZlbiByZWYgdG8gYSBnaXZlbiB2YWx1ZVxuICogVGhpcyB1dGlsaXR5IHRha2VzIGNhcmUgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHJlZnM6IGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYodmFsdWUpO1xuICAgIGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbi8qKlxuICogQSB1dGlsaXR5IHRvIGNvbXBvc2UgbXVsdGlwbGUgcmVmcyB0b2dldGhlclxuICogQWNjZXB0cyBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSB7XG4gICAgcmV0dXJuIChub2RlKT0+cmVmcy5mb3JFYWNoKChyZWYpPT4kNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgbm9kZSlcbiAgICAgICAgKVxuICAgIDtcbn1cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbXBvc2VzIG11bHRpcGxlIHJlZnNcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUoLi4ucmVmcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICByZXR1cm4gJDN2cW1yJHVzZUNhbGxiYWNrKCQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmKC4uLnJlZnMpLCByZWZzKTtcbn1cblxuXG5cblxuZXhwb3J0IHskNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiBhcyBjb21wb3NlUmVmcywgJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUgYXMgdXNlQ29tcG9zZWRSZWZzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkM2JrQUskY3JlYXRlQ29udGV4dCwgdXNlTWVtbyBhcyAkM2JrQUskdXNlTWVtbywgY3JlYXRlRWxlbWVudCBhcyAkM2JrQUskY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkM2JrQUskdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gICAgY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGV4dCB9ID0gcHJvcHM7IC8vIE9ubHkgcmUtbWVtb2l6ZSB3aGVuIHByb3AgdmFsdWVzIGNoYW5nZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIGNvbnN0IHZhbHVlID0gJDNia0FLJHVzZU1lbW8oKCk9PmNvbnRleHRcbiAgICAgICAgLCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dChjb25zdW1lck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7IC8vIGlmIGEgZGVmYXVsdENvbnRleHQgd2Fzbid0IHNwZWNpZmllZCwgaXQncyBhIHJlcXVpcmVkIGNvbnRleHQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArICdQcm92aWRlcic7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUHJvdmlkZXIsXG4gICAgICAgIHVzZUNvbnRleHRcbiAgICBdO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogY3JlYXRlQ29udGV4dFNjb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogY3JlYXRlQ29udGV4dFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOShyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgQmFzZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgICAgICBkZWZhdWx0Q29udGV4dHMgPSBbXG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGV4dHMsXG4gICAgICAgICAgICBkZWZhdWx0Q29udGV4dFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgICAgICAgIGNvbnN0IENvbnRleHQgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV1baW5kZXhdKSB8fCBCYXNlQ29udGV4dDsgLy8gT25seSByZS1tZW1vaXplIHdoZW4gcHJvcCB2YWx1ZXMgY2hhbmdlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICQzYmtBSyR1c2VNZW1vKCgpPT5jb250ZXh0XG4gICAgICAgICAgICAsIE9iamVjdC52YWx1ZXMoY29udGV4dCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVzZUNvbnRleHQoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgQ29udGV4dCA9IChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGVbc2NvcGVOYW1lXVtpbmRleF0pIHx8IEJhc2VDb250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29udGV4dDsgLy8gaWYgYSBkZWZhdWx0Q29udGV4dCB3YXNuJ3Qgc3BlY2lmaWVkLCBpdCdzIGEgcmVxdWlyZWQgY29udGV4dC5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9IHJvb3RDb21wb25lbnROYW1lICsgJ1Byb3ZpZGVyJztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3ZpZGVyLFxuICAgICAgICAgICAgdXNlQ29udGV4dFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBjcmVhdGVTY29wZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBjcmVhdGVTY29wZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCk9PntcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHMgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV0pIHx8IHNjb3BlQ29udGV4dHM7XG4gICAgICAgICAgICByZXR1cm4gJDNia0FLJHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY29wZU5hbWVdOiBjb250ZXh0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGNvbnRleHRzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgICByZXR1cm4gW1xuICAgICAgICAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOSxcbiAgICAgICAgJGM1MTJjMjdhYjAyZWY4OTUkdmFyJGNvbXBvc2VDb250ZXh0U2NvcGVzKGNyZWF0ZVNjb3BlLCAuLi5jcmVhdGVDb250ZXh0U2NvcGVEZXBzKVxuICAgIF07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBjb21wb3NlQ29udGV4dFNjb3Blc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gICAgY29uc3QgYmFzZVNjb3BlID0gc2NvcGVzWzBdO1xuICAgIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICAgIGNvbnN0IGNyZWF0ZVNjb3BlMSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZSk9Pih7XG4gICAgICAgICAgICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlKCksXG4gICAgICAgICAgICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZS5zY29wZU5hbWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNjb3BlczEgPSBzY29wZUhvb2tzLnJlZHVjZSgobmV4dFNjb3BlcywgeyB1c2VTY29wZTogdXNlU2NvcGUgLCBzY29wZU5hbWU6IHNjb3BlTmFtZSAgfSk9PntcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY2FsbGluZyBhIGhvb2sgaW5zaWRlIGEgY2FsbGJhY2sgd2hpY2ggUmVhY3Qgd2FybnMgYWdhaW5zdCB0byBhdm9pZCBpbmNvbnNpc3RlbnRcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJzLCBob3dldmVyLCBzY29waW5nIGRvZXNuJ3QgaGF2ZSByZW5kZXIgc2lkZSBlZmZlY3RzIHNvIHdlIGlnbm9yZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZSA9IHNjb3BlUHJvcHNbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5uZXh0U2NvcGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U2NvcGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgcmV0dXJuICQzYmtBSyR1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgICAgICAgICBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIG5leHRTY29wZXMxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlMS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICAgIHJldHVybiBjcmVhdGVTY29wZTE7XG59XG5cblxuXG5cbmV4cG9ydCB7JGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkgYXMgY3JlYXRlQ29udGV4dCwgJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSBhcyBjcmVhdGVDb250ZXh0U2NvcGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGR4bHdIJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBPbiB0aGUgc2VydmVyLCBSZWFjdCBlbWl0cyBhIHdhcm5pbmcgd2hlbiBjYWxsaW5nIGB1c2VMYXlvdXRFZmZlY3RgLlxuICogVGhpcyBpcyBiZWNhdXNlIG5laXRoZXIgYHVzZUxheW91dEVmZmVjdGAgbm9yIGB1c2VFZmZlY3RgIHJ1biBvbiB0aGUgc2VydmVyLlxuICogV2UgdXNlIHRoaXMgc2FmZSB2ZXJzaW9uIHdoaWNoIHN1cHByZXNzZXMgdGhlIHdhcm5pbmcgYnkgcmVwbGFjaW5nIGl0IHdpdGggYSBub29wIG9uIHRoZSBzZXJ2ZXIuXG4gKlxuICogU2VlOiBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlbGF5b3V0ZWZmZWN0XG4gKi8gY29uc3QgJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgPSBCb29sZWFuKGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkgPyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IDogKCk9Pnt9O1xuXG5cblxuXG5leHBvcnQgeyQ5Zjc5NjU5ODg2OTQ2YzE2JGV4cG9ydCRlNWM1YTVmOTE3YTU4NzFjIGFzIHVzZUxheW91dEVmZmVjdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgKiBhcyAkMkFPRHgkcmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5jb25zdCAkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCA9ICQyQU9EeCRyZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldIHx8ICgoKT0+dW5kZWZpbmVkXG4pO1xubGV0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyhkZXRlcm1pbmlzdGljSWQpIHtcbiAgICBjb25zdCBbaWQsIHNldElkXSA9ICQyQU9EeCRyZWFjdC51c2VTdGF0ZSgkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCgpKTsgLy8gUmVhY3QgdmVyc2lvbnMgb2xkZXIgdGhhbiAxOCB3aWxsIGhhdmUgY2xpZW50LXNpZGUgaWRzIG9ubHkuXG4gICAgJDJBT0R4JHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoIWRldGVybWluaXN0aWNJZCkgc2V0SWQoKHJlYWN0SWQpPT5yZWFjdElkICE9PSBudWxsICYmIHJlYWN0SWQgIT09IHZvaWQgMCA/IHJlYWN0SWQgOiBTdHJpbmcoJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50KyspXG4gICAgICAgICk7XG4gICAgfSwgW1xuICAgICAgICBkZXRlcm1pbmlzdGljSWRcbiAgICBdKTtcbiAgICByZXR1cm4gZGV0ZXJtaW5pc3RpY0lkIHx8IChpZCA/IGByYWRpeC0ke2lkfWAgOiAnJyk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzcgYXMgdXNlSWR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VSZWYgYXMgJGx3aVdqJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRsd2lXaiR1c2VFZmZlY3QsIHVzZU1lbW8gYXMgJGx3aVdqJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbnZlcnRzIGEgY2FsbGJhY2sgdG8gYSByZWYgdG8gYXZvaWQgdHJpZ2dlcmluZyByZS1yZW5kZXJzIHdoZW4gcGFzc2VkIGFzIGFcbiAqIHByb3Agb3IgYXZvaWQgcmUtZXhlY3V0aW5nIGVmZmVjdHMgd2hlbiBwYXNzZWQgYXMgYSBkZXBlbmRlbmN5XG4gKi8gZnVuY3Rpb24gJGIxYjIzMTRmNWY5YTFkODQkZXhwb3J0JDI1YmVjOGM2ZjU0ZWU3OWEoY2FsbGJhY2spIHtcbiAgICBjb25zdCBjYWxsYmFja1JlZiA9ICRsd2lXaiR1c2VSZWYoY2FsbGJhY2spO1xuICAgICRsd2lXaiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGNhbGxiYWNrO1xuICAgIH0pOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MjQwXG4gICAgcmV0dXJuICRsd2lXaiR1c2VNZW1vKCgpPT4oLi4uYXJncyk9PntcbiAgICAgICAgICAgIHZhciBfY2FsbGJhY2tSZWYkY3VycmVudDtcbiAgICAgICAgICAgIHJldHVybiAoX2NhbGxiYWNrUmVmJGN1cnJlbnQgPSBjYWxsYmFja1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY2FsbGJhY2tSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NhbGxiYWNrUmVmJGN1cnJlbnQuY2FsbChjYWxsYmFja1JlZiwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAsIFtdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YSBhcyB1c2VDYWxsYmFja1JlZn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICRiblB3OSR1c2VDYWxsYmFjaywgdXNlU3RhdGUgYXMgJGJuUHc5JHVzZVN0YXRlLCB1c2VSZWYgYXMgJGJuUHc5JHVzZVJlZiwgdXNlRWZmZWN0IGFzICRiblB3OSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkYm5QdzkkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuZnVuY3Rpb24gJDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyh7IHByb3A6IHByb3AgLCBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgPSAoKT0+e30gIH0pIHtcbiAgICBjb25zdCBbdW5jb250cm9sbGVkUHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcF0gPSAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoe1xuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHByb3AgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2YWx1ZTEgPSBpc0NvbnRyb2xsZWQgPyBwcm9wIDogdW5jb250cm9sbGVkUHJvcDtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAkYm5QdzkkdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICAgIGNvbnN0IHNldFZhbHVlID0gJGJuUHc5JHVzZUNhbGxiYWNrKChuZXh0VmFsdWUpPT57XG4gICAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRlciA9IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIG5leHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHNldHRlcihwcm9wKSA6IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gcHJvcCkgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHNldFVuY29udHJvbGxlZFByb3AobmV4dFZhbHVlKTtcbiAgICB9LCBbXG4gICAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgc2V0VW5jb250cm9sbGVkUHJvcCxcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgdmFsdWUxLFxuICAgICAgICBzZXRWYWx1ZVxuICAgIF07XG59XG5mdW5jdGlvbiAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoeyBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgIH0pIHtcbiAgICBjb25zdCB1bmNvbnRyb2xsZWRTdGF0ZSA9ICRiblB3OSR1c2VTdGF0ZShkZWZhdWx0UHJvcCk7XG4gICAgY29uc3QgW3ZhbHVlXSA9IHVuY29udHJvbGxlZFN0YXRlO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9ICRiblB3OSR1c2VSZWYodmFsdWUpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICRiblB3OSR1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gICAgJGJuUHc5JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAocHJldlZhbHVlUmVmLmN1cnJlbnQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHByZXZWYWx1ZVJlZixcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIHVuY29udHJvbGxlZFN0YXRlO1xufVxuXG5cblxuXG5leHBvcnQgeyQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMgYXMgdXNlQ29udHJvbGxhYmxlU3RhdGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ5SXJqWCRmb3J3YXJkUmVmLCBDaGlsZHJlbiBhcyAkOUlyalgkQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50IGFzICQ5SXJqWCRpc1ZhbGlkRWxlbWVudCwgY3JlYXRlRWxlbWVudCBhcyAkOUlyalgkY3JlYXRlRWxlbWVudCwgY2xvbmVFbGVtZW50IGFzICQ5SXJqWCRjbG9uZUVsZW1lbnQsIEZyYWdtZW50IGFzICQ5SXJqWCRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VSZWZzIGFzICQ5SXJqWCRjb21wb3NlUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCA9IC8qI19fUFVSRV9fKi8gJDlJcmpYJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSAkOUlyalgkQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gICAgY29uc3Qgc2xvdHRhYmxlID0gY2hpbGRyZW5BcnJheS5maW5kKCQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZSk7XG4gICAgaWYgKHNsb3R0YWJsZSkge1xuICAgICAgICAvLyB0aGUgbmV3IGVsZW1lbnQgdG8gcmVuZGVyIGlzIHRoZSBvbmUgcGFzc2VkIGFzIGEgY2hpbGQgb2YgYFNsb3R0YWJsZWBcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IHNsb3R0YWJsZS5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbkFycmF5Lm1hcCgoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoY2hpbGQgPT09IHNsb3R0YWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIG5ldyBlbGVtZW50IHdpbGwgYmUgdGhlIG9uZSByZW5kZXJlZCwgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgIC8vIGluIGdyYWJiaW5nIGl0cyBjaGlsZHJlbiAoYG5ld0VsZW1lbnQucHJvcHMuY2hpbGRyZW5gKVxuICAgICAgICAgICAgICAgIGlmICgkOUlyalgkQ2hpbGRyZW4uY291bnQobmV3RWxlbWVudCkgPiAxKSByZXR1cm4gJDlJcmpYJENoaWxkcmVuLm9ubHkobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGNyZWF0ZUVsZW1lbnQoJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSwgJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBzbG90UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IC8qI19fUFVSRV9fKi8gJDlJcmpYJGNsb25lRWxlbWVudChuZXdFbGVtZW50LCB1bmRlZmluZWQsIG5ld0NoaWxkcmVuKSA6IG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lLCAkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNsb3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbik7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwLmRpc3BsYXlOYW1lID0gJ1Nsb3QnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdENsb25lXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUgPSAvKiNfX1BVUkVfXyovICQ5SXJqWCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uc2xvdFByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAoLyojX19QVVJFX18qLyAkOUlyalgkaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIC4uLiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRyZW4ucHJvcHMpLFxuICAgICAgICByZWY6IGZvcndhcmRlZFJlZiA/ICQ5SXJqWCRjb21wb3NlUmVmcyhmb3J3YXJkZWRSZWYsIGNoaWxkcmVuLnJlZikgOiBjaGlsZHJlbi5yZWZcbiAgICB9KTtcbiAgICByZXR1cm4gJDlJcmpYJENoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA+IDEgPyAkOUlyalgkQ2hpbGRyZW4ub25seShudWxsKSA6IG51bGw7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUuZGlzcGxheU5hbWUgPSAnU2xvdENsb25lJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNsb3R0YWJsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSA9ICh7IGNoaWxkcmVuOiBjaGlsZHJlbiAgfSk9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkOUlyalgkRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZShjaGlsZCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgY2hpbGQudHlwZSA9PT0gJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDU7XG59XG5mdW5jdGlvbiAkNWU2M2M5NjFmYzFjZTIxMSR2YXIkbWVyZ2VQcm9wcyhzbG90UHJvcHMsIGNoaWxkUHJvcHMpIHtcbiAgICAvLyBhbGwgY2hpbGQgcHJvcHMgc2hvdWxkIG92ZXJyaWRlXG4gICAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHtcbiAgICAgICAgLi4uY2hpbGRQcm9wc1xuICAgIH07XG4gICAgZm9yKGNvbnN0IHByb3BOYW1lIGluIGNoaWxkUHJvcHMpe1xuICAgICAgICBjb25zdCBzbG90UHJvcFZhbHVlID0gc2xvdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgaXNIYW5kbGVyID0gL15vbltBLVpdLy50ZXN0KHByb3BOYW1lKTtcbiAgICAgICAgaWYgKGlzSGFuZGxlcikge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGhhbmRsZXIgZXhpc3RzIG9uIGJvdGgsIHdlIGNvbXBvc2UgdGhlbVxuICAgICAgICAgICAgaWYgKHNsb3RQcm9wVmFsdWUgJiYgY2hpbGRQcm9wVmFsdWUpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgc2xvdFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbHNlIGlmIChzbG90UHJvcFZhbHVlKSBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHNsb3RQcm9wVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09ICdzdHlsZScpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0ge1xuICAgICAgICAgICAgLi4uc2xvdFByb3BWYWx1ZSxcbiAgICAgICAgICAgIC4uLmNoaWxkUHJvcFZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIGVsc2UgaWYgKHByb3BOYW1lID09PSAnY2xhc3NOYW1lJykgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbXG4gICAgICAgICAgICBzbG90UHJvcFZhbHVlLFxuICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWVcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5zbG90UHJvcHMsXG4gICAgICAgIC4uLm92ZXJyaWRlUHJvcHNcbiAgICB9O1xufVxuY29uc3QgJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MDtcblxuXG5cblxuZXhwb3J0IHskNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCBhcyBTbG90LCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSBhcyBTbG90dGFibGUsICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ0cTVGcSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ0cTVGcSRmb3J3YXJkUmVmLCB1c2VFZmZlY3QgYXMgJDRxNUZxJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkNHE1RnEkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkNHE1RnEkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDRxNUZxJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cbmNvbnN0ICQ4OTI3ZjZmMmFjYzRmMzg2JHZhciROT0RFUyA9IFtcbiAgICAnYScsXG4gICAgJ2J1dHRvbicsXG4gICAgJ2RpdicsXG4gICAgJ2Zvcm0nLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaW1nJyxcbiAgICAnaW5wdXQnLFxuICAgICdsYWJlbCcsXG4gICAgJ2xpJyxcbiAgICAnbmF2JyxcbiAgICAnb2wnLFxuICAgICdwJyxcbiAgICAnc3BhbicsXG4gICAgJ3N2ZycsXG4gICAgJ3VsJ1xuXTsgLy8gVGVtcG9yYXJ5IHdoaWxlIHdlIGF3YWl0IG1lcmdlIG9mIHRoaXMgZml4OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvcHVsbC81NTM5NlxuLy8gcHJldHRpZXItaWdub3JlXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQcmltaXRpdmVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQgPSAkODkyN2Y2ZjJhY2M0ZjM4NiR2YXIkTk9ERVMucmVkdWNlKChwcmltaXRpdmUsIG5vZGUpPT57XG4gICAgY29uc3QgTm9kZSA9IC8qI19fUFVSRV9fKi8gJDRxNUZxJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgYXNDaGlsZDogYXNDaGlsZCAsIC4uLnByaW1pdGl2ZVByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyAkNHE1RnEkU2xvdCA6IG5vZGU7XG4gICAgICAgICQ0cTVGcSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIHdpbmRvd1tTeW1ib2wuZm9yKCdyYWRpeC11aScpXSA9IHRydWU7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRxNUZxJGNyZWF0ZUVsZW1lbnQoQ29tcCwgJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcmltaXRpdmVQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICAgICAgfSkpO1xuICAgIH0pO1xuICAgIE5vZGUuZGlzcGxheU5hbWUgPSBgUHJpbWl0aXZlLiR7bm9kZX1gO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByaW1pdGl2ZSxcbiAgICAgICAgW25vZGVdOiBOb2RlXG4gICAgfTtcbn0sIHt9KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogRmx1c2ggY3VzdG9tIGV2ZW50IGRpc3BhdGNoXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9wdWxsLzEzNzhcbiAqXG4gKiBSZWFjdCBiYXRjaGVzICphbGwqIGV2ZW50IGhhbmRsZXJzIHNpbmNlIHZlcnNpb24gMTgsIHRoaXMgaW50cm9kdWNlcyBjZXJ0YWluIGNvbnNpZGVyYXRpb25zIHdoZW4gdXNpbmcgY3VzdG9tIGV2ZW50IHR5cGVzLlxuICpcbiAqIEludGVybmFsbHksIFJlYWN0IHByaW9yaXRpc2VzIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogIC0gZGlzY3JldGVcbiAqICAtIGNvbnRpbnVvdXNcbiAqICAtIGRlZmF1bHRcbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9hOGE0NzQyZjFjNTQ0OTNkZjAwZGE2NDhhM2Y5ZDI2ZTNkYjljOGI1L3BhY2thZ2VzL3JlYWN0LWRvbS9zcmMvZXZlbnRzL1JlYWN0RE9NRXZlbnRMaXN0ZW5lci5qcyNMMjk0LUwzNTBcbiAqXG4gKiBgZGlzY3JldGVgIGlzIGFuICBpbXBvcnRhbnQgZGlzdGluY3Rpb24gYXMgdXBkYXRlcyB3aXRoaW4gdGhlc2UgZXZlbnRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LlxuICogUmVhY3QgaG93ZXZlciwgaXMgbm90IGFibGUgdG8gaW5mZXIgdGhlIHByaW9yaXR5IG9mIGN1c3RvbSBldmVudCB0eXBlcyBkdWUgdG8gaG93IHRoZXkgYXJlIGRldGVjdGVkIGludGVybmFsbHkuXG4gKiBCZWNhdXNlIG9mIHRoaXMsIGl0J3MgcG9zc2libGUgZm9yIHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIHRvIGJlIHVuZXhwZWN0ZWRseSBiYXRjaGVkIHdoZW5cbiAqIGRpc3BhdGNoZWQgYnkgYW5vdGhlciBgZGlzY3JldGVgIGV2ZW50LlxuICpcbiAqIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIGFyZSBhcHBsaWVkIHByZWRpY3RhYmx5LCB3ZSBuZWVkIHRvIG1hbnVhbGx5IGZsdXNoIHRoZSBiYXRjaC5cbiAqIFRoaXMgdXRpbGl0eSBzaG91bGQgYmUgdXNlZCB3aGVuIGRpc3BhdGNoaW5nIGEgY3VzdG9tIGV2ZW50IGZyb20gd2l0aGluIGFub3RoZXIgYGRpc2NyZXRlYCBldmVudCwgdGhpcyB1dGlsaXR5XG4gKiBpcyBub3QgbmVzc2VzYXJ5IHdoZW4gZGlzcGF0Y2hpbmcga25vd24gZXZlbnQgdHlwZXMsIG9yIGlmIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgaW5zaWRlIGEgbm9uLWRpc2NyZXRlIGV2ZW50LlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBrbm93biBjbGljayDwn5GOXG4gKiB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQo4oCYY2xpY2vigJkpKVxuICpcbiAqIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgd2l0aGluIGEgbm9uLWRpc2NyZXRlIGV2ZW50IPCfkY5cbiAqIG9uU2Nyb2xsPXsoZXZlbnQpID0+IGV2ZW50LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCjigJhjdXN0b21UeXBl4oCZKSl9XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSB3aXRoaW4gYSBgZGlzY3JldGVgIGV2ZW50IPCfkY1cbiAqIG9uUG9pbnRlckRvd249eyhldmVudCkgPT4gZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KGV2ZW50LnRhcmdldCwgbmV3IEN1c3RvbUV2ZW50KOKAmGN1c3RvbVR5cGXigJkpKX1cbiAqXG4gKiBOb3RlOiB0aG91Z2ggUmVhY3QgY2xhc3NpZmllcyBgZm9jdXNgLCBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIGFzIGBkaXNjcmV0ZWAsIGl0J3MgIG5vdCByZWNvbW1lbmRlZCB0byB1c2VcbiAqIHRoaXMgdXRpbGl0eSB3aXRoIHRoZW0uIFRoaXMgaXMgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIGZvciB0aG9zZSBoYW5kbGVycyB0byBiZSBjYWxsZWQgaW1wbGljaXRseSBkdXJpbmcgcmVuZGVyXG4gKiBlLmcuIHdoZW4gZm9jdXMgaXMgd2l0aGluIGEgY29tcG9uZW50IGFzIGl0IGlzIHVubW91bnRlZCwgb3Igd2hlbiBtYW5hZ2luZyBmb2N1cyBvbiBtb3VudC5cbiAqLyBmdW5jdGlvbiAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkNmQxYTAzMTdiZGU3ZGU3Zih0YXJnZXQsIGV2ZW50KSB7XG4gICAgaWYgKHRhcmdldCkgJDRxNUZxJGZsdXNoU3luYygoKT0+dGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gICAgKTtcbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNDtcblxuXG5cblxuZXhwb3J0IHskODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCBhcyBQcmltaXRpdmUsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQ2ZDFhMDMxN2JkZTdkZTdmIGFzIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHQgYXMgJGtxd3BIJGNyZWF0ZUNvbnRleHQsIGZvcndhcmRSZWYgYXMgJGtxd3BIJGZvcndhcmRSZWYsIHVzZUNvbnRleHQgYXMgJGtxd3BIJHVzZUNvbnRleHQsIHVzZVN0YXRlIGFzICRrcXdwSCR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICRrcXdwSCR1c2VFZmZlY3QsIGNyZWF0ZUVsZW1lbnQgYXMgJGtxd3BIJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAka3F3cEgkdXNlUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGtxd3BIJFByaW1pdGl2ZSwgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50IGFzICRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka3F3cEgkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka3F3cEgkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VFc2NhcGVLZXlkb3duIGFzICRrcXdwSCR1c2VFc2NhcGVLZXlkb3dufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93blwiO1xuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpc21pc3NhYmxlTGF5ZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUUgPSAnRGlzbWlzc2FibGVMYXllcic7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUgPSAnZGlzbWlzc2FibGVMYXllci51cGRhdGUnO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIucG9pbnRlckRvd25PdXRzaWRlJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlJztcbmxldCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUNvbnRleHQoe1xuICAgIGxheWVyczogbmV3IFNldCgpLFxuICAgIGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOiBuZXcgU2V0KCksXG4gICAgYnJhbmNoZXM6IG5ldyBTZXQoKVxufSk7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgY29uc3QgeyBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCBvbkZvY3VzT3V0c2lkZTogb25Gb2N1c091dHNpZGUgLCBvbkludGVyYWN0T3V0c2lkZTogb25JbnRlcmFjdE91dHNpZGUgLCBvbkRpc21pc3M6IG9uRGlzbWlzcyAsIC4uLmxheWVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAka3F3cEgkdXNlQ29udGV4dCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRGlzbWlzc2FibGVMYXllckNvbnRleHQpO1xuICAgIGNvbnN0IFtub2RlMSwgc2V0Tm9kZV0gPSAka3F3cEgkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZTEgPT09IG51bGwgfHwgbm9kZTEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUxLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlJG93bmVyRG9jdW1lbnQgIT09IHZvaWQgMCA/IF9ub2RlJG93bmVyRG9jdW1lbnQgOiBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG4gICAgY29uc3QgWywgZm9yY2VdID0gJGtxd3BIJHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXROb2RlKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBsYXllcnMgPSBBcnJheS5mcm9tKGNvbnRleHQubGF5ZXJzKTtcbiAgICBjb25zdCBbaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdID0gW1xuICAgICAgICAuLi5jb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkXG4gICAgXS5zbGljZSgtMSk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXggPSBsYXllcnMuaW5kZXhPZihoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGluZGV4ID0gbm9kZTEgPyBsYXllcnMuaW5kZXhPZihub2RlMSkgOiAtMTtcbiAgICBjb25zdCBpc0JvZHlQb2ludGVyRXZlbnRzRGlzYWJsZWQgPSBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPiAwO1xuICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPSBpbmRleCA+PSBoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4O1xuICAgIGNvbnN0IHBvaW50ZXJEb3duT3V0c2lkZSA9ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUoKGV2ZW50KT0+e1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckRvd25PbkJyYW5jaCA9IFtcbiAgICAgICAgICAgIC4uLmNvbnRleHQuYnJhbmNoZXNcbiAgICAgICAgXS5zb21lKChicmFuY2gpPT5icmFuY2guY29udGFpbnModGFyZ2V0KVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWlzUG9pbnRlckV2ZW50c0VuYWJsZWQgfHwgaXNQb2ludGVyRG93bk9uQnJhbmNoKSByZXR1cm47XG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlID09PSBudWxsIHx8IG9uUG9pbnRlckRvd25PdXRzaWRlID09PSB2b2lkIDAgfHwgb25Qb2ludGVyRG93bk91dHNpZGUoZXZlbnQpO1xuICAgICAgICBvbkludGVyYWN0T3V0c2lkZSA9PT0gbnVsbCB8fCBvbkludGVyYWN0T3V0c2lkZSA9PT0gdm9pZCAwIHx8IG9uSW50ZXJhY3RPdXRzaWRlKGV2ZW50KTtcbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSBvbkRpc21pc3MgPT09IG51bGwgfHwgb25EaXNtaXNzID09PSB2b2lkIDAgfHwgb25EaXNtaXNzKCk7XG4gICAgfSwgb3duZXJEb2N1bWVudCk7XG4gICAgY29uc3QgZm9jdXNPdXRzaWRlID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZSgoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgaXNGb2N1c0luQnJhbmNoID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dC5icmFuY2hlc1xuICAgICAgICBdLnNvbWUoKGJyYW5jaCk9PmJyYW5jaC5jb250YWlucyh0YXJnZXQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpc0ZvY3VzSW5CcmFuY2gpIHJldHVybjtcbiAgICAgICAgb25Gb2N1c091dHNpZGUgPT09IG51bGwgfHwgb25Gb2N1c091dHNpZGUgPT09IHZvaWQgMCB8fCBvbkZvY3VzT3V0c2lkZShldmVudCk7XG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlID09PSBudWxsIHx8IG9uSW50ZXJhY3RPdXRzaWRlID09PSB2b2lkIDAgfHwgb25JbnRlcmFjdE91dHNpZGUoZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCB8fCBvbkRpc21pc3MoKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRXNjYXBlS2V5ZG93bigoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IGlzSGlnaGVzdExheWVyID0gaW5kZXggPT09IGNvbnRleHQubGF5ZXJzLnNpemUgLSAxO1xuICAgICAgICBpZiAoIWlzSGlnaGVzdExheWVyKSByZXR1cm47XG4gICAgICAgIG9uRXNjYXBlS2V5RG93biA9PT0gbnVsbCB8fCBvbkVzY2FwZUtleURvd24gPT09IHZvaWQgMCB8fCBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgb25EaXNtaXNzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgb25EaXNtaXNzKCk7XG4gICAgICAgIH1cbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghbm9kZTEpIHJldHVybjtcbiAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cykge1xuICAgICAgICAgICAgaWYgKGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzID0gb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM7XG4gICAgICAgICAgICAgICAgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmFkZChub2RlMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5sYXllcnMuYWRkKG5vZGUxKTtcbiAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyAmJiBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPT09IDEpIG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICBjb250ZXh0XG4gICAgXSk7XG4gICAgLyoqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBwcmV2ZW50IGNvbWJpbmluZyB0aGlzIGVmZmVjdCB3aXRoIHRoZSBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCBlZmZlY3RcbiAgICogYmVjYXVzZSBhIGNoYW5nZSB0byBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCB3b3VsZCByZW1vdmUgdGhpcyBsYXllciBmcm9tIHRoZSBzdGFja1xuICAgKiBhbmQgYWRkIGl0IHRvIHRoZSBlbmQgYWdhaW4gc28gdGhlIGxheWVyaW5nIG9yZGVyIHdvdWxkbid0IGJlIF9jcmVhdGlvbiBvcmRlcl8uXG4gICAqIFdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSBjb250ZXh0IHN0YWNrcyB3aGVuIHVubW91bnRlZC5cbiAgICovICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoIW5vZGUxKSByZXR1cm47XG4gICAgICAgICAgICBjb250ZXh0LmxheWVycy5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgY29udGV4dFxuICAgIF0pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlVXBkYXRlID0gKCk9PmZvcmNlKHt9KVxuICAgICAgICA7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpO1xuICAgICAgICByZXR1cm4gKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgbGF5ZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCA/IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPyAnYXV0bycgOiAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXNDYXB0dXJlLCBmb2N1c091dHNpZGUub25Gb2N1c0NhcHR1cmUpLFxuICAgICAgICBvbkJsdXJDYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyQ2FwdHVyZSwgZm9jdXNPdXRzaWRlLm9uQmx1ckNhcHR1cmUpLFxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25DYXB0dXJlLCBwb2ludGVyRG93bk91dHNpZGUub25Qb2ludGVyRG93bkNhcHR1cmUpXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllckJyYW5jaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUUgPSAnRGlzbWlzc2FibGVMYXllckJyYW5jaCc7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRrcXdwSCR1c2VDb250ZXh0KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG4gICAgY29uc3QgcmVmID0gJGtxd3BIJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGNvbnRleHQuYnJhbmNoZXMuYWRkKG5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgY29udGV4dC5icmFuY2hlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LmJyYW5jaGVzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIExpc3RlbnMgZm9yIGBwb2ludGVyZG93bmAgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuIFdlIHVzZSBgcG9pbnRlcmRvd25gIHJhdGhlciB0aGFuIGBwb2ludGVydXBgXG4gKiB0byBtaW1pYyBsYXllciBkaXNtaXNzaW5nIGJlaGF2aW91ciBwcmVzZW50IGluIE9TLlxuICogUmV0dXJucyBwcm9wcyB0byBwYXNzIHRvIHRoZSBub2RlIHdlIHdhbnQgdG8gY2hlY2sgZm9yIG91dHNpZGUgZXZlbnRzLlxuICovIGZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUob25Qb2ludGVyRG93bk91dHNpZGUsIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQpIHtcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAka3F3cEgkdXNlQ2FsbGJhY2tSZWYob25Qb2ludGVyRG93bk91dHNpZGUpO1xuICAgIGNvbnN0IGlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrUmVmID0gJGtxd3BIJHVzZVJlZigoKT0+e30pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmV0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIE9uIHRvdWNoIGRldmljZXMsIHdlIG5lZWQgdG8gd2FpdCBmb3IgYSBjbGljayBldmVudCBiZWNhdXNlIGJyb3dzZXJzIGltcGxlbWVudFxuICAgICAgICAgKiBhIH4zNTBtcyBkZWxheSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSB1c2VyIHN0b3BzIHRvdWNoaW5nIHRoZSBkaXNwbGF5IGFuZCB3aGVuIHRoZVxuICAgICAgICAgKiBicm93c2VyIGV4ZWN1dHJlcyBldmVudHMuIFdlIG5lZWQgdG8gZW5zdXJlIHdlIGRvbid0IHJlYWN0aXZhdGUgcG9pbnRlci1ldmVudHMgd2l0aGluXG4gICAgICAgICAqIHRoaXMgdGltZWZyYW1lIG90aGVyd2lzZSB0aGUgYnJvd3NlciBtYXkgZXhlY3V0ZSBldmVudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHByZXZlbnRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQWRkaXRpb25hbGx5LCB0aGlzIGFsc28gbGV0cyB1cyBkZWFsIGF1dG9tYXRpY2FsbHkgd2l0aCBjYW5jZWxsYXRpb25zIHdoZW4gYSBjbGljayBldmVudFxuICAgICAgICAgKiBpc24ndCByYWlzZWQgYmVjYXVzZSB0aGUgcGFnZSB3YXMgY29uc2lkZXJlZCBzY3JvbGxlZC9kcmFnLXNjcm9sbGVkLCBsb25nLXByZXNzZWQsIGV0Yy5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhpcyBpcyB3aHkgd2UgYWxzbyBjb250aW51b3VzbHkgcmVtb3ZlIHRoZSBwcmV2aW91cyBsaXN0ZW5lciwgYmVjYXVzZSB3ZSBjYW5ub3QgYmVcbiAgICAgICAgICogY2VydGFpbiB0aGF0IGl0IHdhcyByYWlzZWQsIGFuZCB0aGVyZWZvcmUgY2xlYW5lZC11cC5cbiAgICAgICAgICovIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQgPSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICogaWYgdGhpcyBob29rIGV4ZWN1dGVzIGluIGEgY29tcG9uZW50IHRoYXQgbW91bnRzIHZpYSBhIGBwb2ludGVyZG93bmAgZXZlbnQsIHRoZSBldmVudFxuICAgICAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgZG9jdW1lbnQgYW5kIHRyaWdnZXIgYSBgcG9pbnRlckRvd25PdXRzaWRlYCBldmVudC4gV2UgYXZvaWRcbiAgICAgKiB0aGlzIGJ5IGRlbGF5aW5nIHRoZSBldmVudCBsaXN0ZW5lciByZWdpc3RyYXRpb24gb24gdGhlIGRvY3VtZW50LlxuICAgICAqIFRoaXMgaXMgbm90IFJlYWN0IHNwZWNpZmljLCBidXQgcmF0aGVyIGhvdyB0aGUgRE9NIHdvcmtzLCBpZTpcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZygnSSB3aWxsIGxvZycpO1xuICAgICAqICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdJIHdpbGwgYWxzbyBsb2cnKTtcbiAgICAgKiAgIH0pXG4gICAgICogfSk7XG4gICAgICovIGNvbnN0IHRpbWVySWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBvd25lckRvY3VtZW50LFxuICAgICAgICBoYW5kbGVQb2ludGVyRG93bk91dHNpZGVcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBlbnN1cmVzIHdlIGNoZWNrIFJlYWN0IGNvbXBvbmVudCB0cmVlIChub3QganVzdCBET00gdHJlZSlcbiAgICAgICAgb25Qb2ludGVyRG93bkNhcHR1cmU6ICgpPT5pc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9O1xufVxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIGZvY3VzIGhhcHBlbnMgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIHJvb3QgKG5vZGUpIG9mIHRoZSBzdWJ0cmVlIHdlIHdhbnQgdG8gY2hlY2suXG4gKi8gZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZShvbkZvY3VzT3V0c2lkZSwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzT3V0c2lkZSA9ICRrcXdwSCR1c2VDYWxsYmFja1JlZihvbkZvY3VzT3V0c2lkZSk7XG4gICAgY29uc3QgaXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudERldGFpbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFLCBoYW5kbGVGb2N1c091dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc2NyZXRlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1cyk7XG4gICAgICAgIHJldHVybiAoKT0+b3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXMpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAgIGhhbmRsZUZvY3VzT3V0c2lkZVxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9uRm9jdXNDYXB0dXJlOiAoKT0+aXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAsXG4gICAgICAgIG9uQmx1ckNhcHR1cmU6ICgpPT5pc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH07XG59XG5mdW5jdGlvbiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKSB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFKTtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn1cbmZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KG5hbWUsIGhhbmRsZXIsIGRldGFpbCwgeyBkaXNjcmV0ZTogZGlzY3JldGUgIH0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSBkZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQ7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiBkZXRhaWxcbiAgICB9KTtcbiAgICBpZiAoaGFuZGxlcikgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlciwge1xuICAgICAgICBvbmNlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGRpc2NyZXRlKSAka3F3cEgkZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KHRhcmdldCwgZXZlbnQpO1xuICAgIGVsc2UgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMjtcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCRhZWNiMmRkY2I1NWM5NWJlID0gJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjg7XG5cblxuXG5cbmV4cG9ydCB7JDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIgYXMgRGlzbWlzc2FibGVMYXllciwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjggYXMgRGlzbWlzc2FibGVMYXllckJyYW5jaCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGFlY2IyZGRjYjU1Yzk1YmUgYXMgQnJhbmNofTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlRWZmZWN0IGFzICRoUFNRNSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkaFBTUTUkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIHRoZSBlc2NhcGUga2V5IGlzIGRvd25cbiAqLyBmdW5jdGlvbiAkYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NShvbkVzY2FwZUtleURvd25Qcm9wLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSB7XG4gICAgY29uc3Qgb25Fc2NhcGVLZXlEb3duID0gJGhQU1E1JHVzZUNhbGxiYWNrUmVmKG9uRXNjYXBlS2V5RG93blByb3ApO1xuICAgICRoUFNRNSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgICAgICAgcmV0dXJuICgpPT5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG93bmVyRG9jdW1lbnRcbiAgICBdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NSBhcyB1c2VFc2NhcGVLZXlkb3dufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkNDVRSHYkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJDQ1UUh2JHVzZVN0YXRlLCB1c2VSZWYgYXMgJDQ1UUh2JHVzZVJlZiwgdXNlRWZmZWN0IGFzICQ0NVFIdiR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ0NVFIdiR1c2VDYWxsYmFjaywgY3JlYXRlRWxlbWVudCBhcyAkNDVRSHYkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkNDVRSHYkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDQ1UUh2JFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDQ1UUh2JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cblxuXG5cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQgPSAnZm9jdXNTY29wZS5hdXRvRm9jdXNPbk1vdW50JztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCc7XG5jb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyA9IHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlXG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRm9jdXNTY29wZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRSA9ICdGb2N1c1Njb3BlJztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2ID0gLyojX19QVVJFX18qLyAkNDVRSHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGxvb3A6IGxvb3AgPSBmYWxzZSAsIHRyYXBwZWQ6IHRyYXBwZWQgPSBmYWxzZSAsIG9uTW91bnRBdXRvRm9jdXM6IG9uTW91bnRBdXRvRm9jdXNQcm9wICwgb25Vbm1vdW50QXV0b0ZvY3VzOiBvblVubW91bnRBdXRvRm9jdXNQcm9wICwgLi4uc2NvcGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2NvbnRhaW5lcjEsIHNldENvbnRhaW5lcl0gPSAkNDVRSHYkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb25Nb3VudEF1dG9Gb2N1cyA9ICQ0NVFIdiR1c2VDYWxsYmFja1JlZihvbk1vdW50QXV0b0ZvY3VzUHJvcCk7XG4gICAgY29uc3Qgb25Vbm1vdW50QXV0b0ZvY3VzID0gJDQ1UUh2JHVzZUNhbGxiYWNrUmVmKG9uVW5tb3VudEF1dG9Gb2N1c1Byb3ApO1xuICAgIGNvbnN0IGxhc3RGb2N1c2VkRWxlbWVudFJlZiA9ICQ0NVFIdiR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGFpbmVyKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBmb2N1c1Njb3BlID0gJDQ1UUh2JHVzZVJlZih7XG4gICAgICAgIHBhdXNlZDogZmFsc2UsXG4gICAgICAgIHBhdXNlICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdW1lICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KS5jdXJyZW50OyAvLyBUYWtlcyBjYXJlIG9mIHRyYXBwaW5nIGZvY3VzIGlmIGZvY3VzIGlzIG1vdmVkIG91dHNpZGUgcHJvZ3JhbW1hdGljYWxseSBmb3IgZXhhbXBsZVxuICAgICQ0NVFIdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRyYXBwZWQpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzSW4oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQgfHwgIWNvbnRhaW5lcjEpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEuY29udGFpbnModGFyZ2V0KSkgbGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgZWxzZSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMobGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1c091dChldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCB8fCAhY29udGFpbmVyMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0OyAvLyBBIGBmb2N1c291dGAgZXZlbnQgd2l0aCBhIGBudWxsYCBgcmVsYXRlZFRhcmdldGAgd2lsbCBoYXBwZW4gaW4gYXQgbGVhc3QgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMS4gV2hlbiB0aGUgdXNlciBzd2l0Y2hlcyBhcHAvdGFicy93aW5kb3dzL3RoZSBicm93c2VyIGl0c2VsZiBsb3NlcyBmb2N1cy5cbiAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCB3aGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBXZSBsZXQgdGhlIGJyb3dzZXIgZG8gaXRzIHRoaW5nIGhlcmUgYmVjYXVzZTpcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBicm93c2VyIGFscmVhZHkga2VlcHMgYSBtZW1vcnkgb2Ygd2hhdCdzIGZvY3VzZWQgZm9yIHdoZW4gdGhlIHBhZ2UgZ2V0cyByZWZvY3VzZWQuXG4gICAgICAgICAgICAgICAgLy8gMi4gSW4gR29vZ2xlIENocm9tZSwgaWYgd2UgdHJ5IHRvIGZvY3VzIHRoZSBkZWxldGVkIGZvY3VzZWQgZWxlbWVudCAoYXMgcGVyIGJlbG93KSwgaXRcbiAgICAgICAgICAgICAgICAvLyAgICB0aHJvd3MgdGhlIENQVSB0byAxMDAlLCBzbyB3ZSBhdm9pZCBkb2luZyBhbnl0aGluZyBmb3IgdGhpcyByZWFzb24gaGVyZSB0b28uXG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHJldHVybjsgLy8gSWYgdGhlIGZvY3VzIGhhcyBtb3ZlZCB0byBhbiBhY3R1YWwgbGVnaXRpbWF0ZSBlbGVtZW50IChgcmVsYXRlZFRhcmdldCAhPT0gbnVsbGApXG4gICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250YWluZXIsIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGxhc3QgdmFsaWQgZm9jdXNlZCBlbGVtZW50IGluc2lkZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcjEuY29udGFpbnMocmVsYXRlZFRhcmdldCkpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gLy8gV2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGJyb3dzZXJzIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIC8vIGJhY2sgdG8gdGhlIGRvY3VtZW50LmJvZHkuIEluIHRoaXMgY2FzZSwgd2UgbW92ZSBmb2N1cyB0byB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICAvLyB0byBrZWVwIGZvY3VzIHRyYXBwZWQgY29ycmVjdGx5LlxuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlTXV0YXRpb25zKG11dGF0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyl7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY29udGFpbmVyMSAhPT0gbnVsbCAmJiBjb250YWluZXIxICE9PSB2b2lkIDAgJiYgY29udGFpbmVyMS5jb250YWlucyhmb2N1c2VkRWxlbWVudCkpKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY29udGFpbmVyMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0KTtcbiAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEpIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIxLCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICAgICAgICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJhcHBlZCxcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgZm9jdXNTY29wZS5wYXVzZWRcbiAgICBdKTtcbiAgICAkNDVRSHYkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250YWluZXIxKSB7XG4gICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNTY29wZXNTdGFjay5hZGQoZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaGFzRm9jdXNlZENhbmRpZGF0ZSA9IGNvbnRhaW5lcjEuY29udGFpbnMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghaGFzRm9jdXNlZENhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuYWRkRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFtb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKCRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyMSkpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjb250YWluZXIxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgb25Nb3VudEF1dG9Gb2N1cyk7IC8vIFdlIGhpdCBhIHJlYWN0IGJ1ZyAoZml4ZWQgaW4gdjE3KSB3aXRoIGZvY3VzaW5nIGluIHVubW91bnQuXG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBkZWxheSB0aGUgZm9jdXMgYSBsaXR0bGUgdG8gZ2V0IGFyb3VuZCBpdCBmb3Igbm93LlxuICAgICAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNzg5NFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmFkZEV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQodW5tb3VudEV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1bm1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAhPT0gbnVsbCAmJiBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgIT09IHZvaWQgMCA/IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA6IGRvY3VtZW50LmJvZHksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lciBhZnRlciB3ZSBgZGlzcGF0Y2hFdmVudGBcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyMS5yZW1vdmVFdmVudExpc3RlbmVyKCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgb25Vbm1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2sucmVtb3ZlKGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzLFxuICAgICAgICBmb2N1c1Njb3BlXG4gICAgXSk7IC8vIFRha2VzIGNhcmUgb2YgbG9vcGluZyBmb2N1cyAod2hlbiB0YWJiaW5nIHdoaWxzdCBhdCB0aGUgZWRnZXMpXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICQ0NVFIdiR1c2VDYWxsYmFjaygoZXZlbnQpPT57XG4gICAgICAgIGlmICghbG9vcCAmJiAhdHJhcHBlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNUYWJLZXkgPSBldmVudC5rZXkgPT09ICdUYWInICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXk7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGlzVGFiS2V5ICYmIGZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCBsYXN0XSA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcik7XG4gICAgICAgICAgICBjb25zdCBoYXNUYWJiYWJsZUVsZW1lbnRzSW5zaWRlID0gZmlyc3QgJiYgbGFzdDsgLy8gd2UgY2FuIG9ubHkgd3JhcCBmb2N1cyBpZiB3ZSBoYXZlIHRhYmJhYmxlIGVkZ2VzXG4gICAgICAgICAgICBpZiAoIWhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgPT09IGNvbnRhaW5lcikgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGZpcnN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3ApICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBsb29wLFxuICAgICAgICB0cmFwcGVkLFxuICAgICAgICBmb2N1c1Njb3BlLnBhdXNlZFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0NVFIdiRjcmVhdGVFbGVtZW50KCQ0NVFIdiRQcmltaXRpdmUuZGl2LCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogLTFcbiAgICB9LCBzY29wZVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBVdGlsc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIEF0dGVtcHRzIGZvY3VzaW5nIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgbGlzdCBvZiBjYW5kaWRhdGVzLlxuICogU3RvcHMgd2hlbiBmb2N1cyBoYXMgYWN0dWFsbHkgbW92ZWQuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlcywgeyBzZWxlY3Q6IHNlbGVjdCA9IGZhbHNlICB9ID0ge30pIHtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY2FuZGlkYXRlLCB7XG4gICAgICAgICAgICBzZWxlY3Q6IHNlbGVjdFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkgcmV0dXJuO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYW5kIGxhc3QgdGFiYmFibGUgZWxlbWVudHMgaW5zaWRlIGEgY29udGFpbmVyLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcik7XG4gICAgY29uc3QgZmlyc3QgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUoY2FuZGlkYXRlcywgY29udGFpbmVyKTtcbiAgICBjb25zdCBsYXN0ID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZpbmRWaXNpYmxlKGNhbmRpZGF0ZXMucmV2ZXJzZSgpLCBjb250YWluZXIpO1xuICAgIHJldHVybiBbXG4gICAgICAgIGZpcnN0LFxuICAgICAgICBsYXN0XG4gICAgXTtcbn1cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgcG90ZW50aWFsIHRhYmJhYmxlIGNhbmRpZGF0ZXMuXG4gKlxuICogTk9URTogVGhpcyBpcyBvbmx5IGEgY2xvc2UgYXBwcm94aW1hdGlvbi4gRm9yIGV4YW1wbGUgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCBjYXNlcyBsaWtlIHdoZW5cbiAqIGVsZW1lbnRzIGFyZSBub3QgdmlzaWJsZS4gVGhpcyBjYW5ub3QgYmUgd29ya2VkIG91dCBlYXNpbHkgYnkganVzdCByZWFkaW5nIGEgcHJvcGVydHksIGJ1dCByYXRoZXJcbiAqIG5lY2Vzc2l0YXRlIHJ1bnRpbWUga25vd2xlZGdlIChjb21wdXRlZCBzdHlsZXMsIGV0YykuIFdlIGRlYWwgd2l0aCB0aGVzZSBjYXNlcyBzZXBhcmF0ZWx5LlxuICpcbiAqIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1RyZWVXYWxrZXJcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2Rpc2NvcmQvZm9jdXMtbGF5ZXJzL2Jsb2IvbWFzdGVyL3NyYy91dGlsL3dyYXBGb2N1cy50c3gjTDFcbiAqLyBmdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihjb250YWluZXIsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7XG4gICAgICAgIGFjY2VwdE5vZGU6IChub2RlKT0+e1xuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW5JbnB1dCA9IG5vZGUudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiBub2RlLnR5cGUgPT09ICdoaWRkZW4nO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGlzYWJsZWQgfHwgbm9kZS5oaWRkZW4gfHwgaXNIaWRkZW5JbnB1dCkgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7IC8vIGAudGFiSW5kZXhgIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuIEl0IHdvcmtzIG9uIHRoZVxuICAgICAgICAgICAgLy8gcnVudGltZSdzIHVuZGVyc3RhbmRpbmcgb2YgdGFiYmFiaWxpdHksIHNvIHRoaXMgYXV0b21hdGljYWxseSBhY2NvdW50c1xuICAgICAgICAgICAgLy8gZm9yIGFueSBraW5kIG9mIGVsZW1lbnQgdGhhdCBjb3VsZCBiZSB0YWJiZWQgdG8uXG4gICAgICAgICAgICByZXR1cm4gbm9kZS50YWJJbmRleCA+PSAwID8gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUIDogTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHdoaWxlKHdhbGtlci5uZXh0Tm9kZSgpKW5vZGVzLnB1c2god2Fsa2VyLmN1cnJlbnROb2RlKTsgLy8gd2UgZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBvcmRlciBvZiBub2RlcyB3aXRoIHBvc2l0aXZlIGB0YWJJbmRleGAgYXMgaXRcbiAgICAvLyBoaW5kZXJzIGFjY2Vzc2liaWxpdHkgdG8gaGF2ZSB0YWIgb3JkZXIgZGlmZmVyZW50IGZyb20gdmlzdWFsIG9yZGVyLlxuICAgIHJldHVybiBub2Rlcztcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgdmlzaWJsZSBlbGVtZW50IGluIGEgbGlzdC5cbiAqIE5PVEU6IE9ubHkgY2hlY2tzIHZpc2liaWxpdHkgdXAgdG8gdGhlIGBjb250YWluZXJgLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZShlbGVtZW50cywgY29udGFpbmVyKSB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKXtcbiAgICAgICAgLy8gd2Ugc3RvcCBjaGVja2luZyBpZiBpdCdzIGhpZGRlbiBhdCB0aGUgYGNvbnRhaW5lcmAgbGV2ZWwgKGV4Y2x1ZGluZylcbiAgICAgICAgaWYgKCEkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4oZWxlbWVudCwge1xuICAgICAgICAgICAgdXBUbzogY29udGFpbmVyXG4gICAgICAgIH0pKSByZXR1cm4gZWxlbWVudDtcbiAgICB9XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4obm9kZSwgeyB1cFRvOiB1cFRvICB9KSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbicpIHJldHVybiB0cnVlO1xuICAgIHdoaWxlKG5vZGUpe1xuICAgICAgICAvLyB3ZSBzdG9wIGF0IGB1cFRvYCAoZXhjbHVkaW5nIGl0KVxuICAgICAgICBpZiAodXBUbyAhPT0gdW5kZWZpbmVkICYmIG5vZGUgPT09IHVwVG8pIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkuZGlzcGxheSA9PT0gJ25vbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgJ3NlbGVjdCcgaW4gZWxlbWVudDtcbn1cbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhlbGVtZW50LCB7IHNlbGVjdDogc2VsZWN0ID0gZmFsc2UgIH0gPSB7fSkge1xuICAgIC8vIG9ubHkgZm9jdXMgaWYgdGhhdCBlbGVtZW50IGlzIGZvY3VzYWJsZVxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsgLy8gTk9URTogd2UgcHJldmVudCBzY3JvbGxpbmcgb24gZm9jdXMsIHRvIG1pbmltaXplIGphcnJpbmcgdHJhbnNpdGlvbnMgZm9yIHVzZXJzXG4gICAgICAgIGVsZW1lbnQuZm9jdXMoe1xuICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICB9KTsgLy8gb25seSBzZWxlY3QgaWYgaXRzIG5vdCB0aGUgc2FtZSBlbGVtZW50LCBpdCBzdXBwb3J0cyBzZWxlY3Rpb24gYW5kIHdlIG5lZWQgdG8gc2VsZWN0XG4gICAgICAgIGlmIChlbGVtZW50ICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgJiYgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpICYmIHNlbGVjdCkgZWxlbWVudC5zZWxlY3QoKTtcbiAgICB9XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlIHN0YWNrXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKTtcbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRjcmVhdGVGb2N1c1Njb3Blc1N0YWNrKCkge1xuICAgIC8qKiBBIHN0YWNrIG9mIGZvY3VzIHNjb3Blcywgd2l0aCB0aGUgYWN0aXZlIG9uZSBhdCB0aGUgdG9wICovIGxldCBzdGFjayA9IFtdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFkZCAoZm9jdXNTY29wZSkge1xuICAgICAgICAgICAgLy8gcGF1c2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgZm9jdXMgc2NvcGUgKGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrKVxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRm9jdXNTY29wZSA9IHN0YWNrWzBdO1xuICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUgIT09IGFjdGl2ZUZvY3VzU2NvcGUpIGFjdGl2ZUZvY3VzU2NvcGUgPT09IG51bGwgfHwgYWN0aXZlRm9jdXNTY29wZSA9PT0gdm9pZCAwIHx8IGFjdGl2ZUZvY3VzU2NvcGUucGF1c2UoKTtcbiAgICAgICAgICAgICAvLyByZW1vdmUgaW4gY2FzZSBpdCBhbHJlYWR5IGV4aXN0cyAoYmVjYXVzZSB3ZSdsbCByZS1hZGQgaXQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICAgICAgICBzdGFjayA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBzdGFjay51bnNoaWZ0KGZvY3VzU2NvcGUpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmUgKGZvY3VzU2NvcGUpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2skO1xuICAgICAgICAgICAgc3RhY2sgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkYXJyYXlSZW1vdmUoc3RhY2ssIGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgKF9zdGFjayQgPSBzdGFja1swXSkgPT09IG51bGwgfHwgX3N0YWNrJCA9PT0gdm9pZCAwIHx8IF9zdGFjayQucmVzdW1lKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlKGFycmF5LCBpdGVtKSB7XG4gICAgY29uc3QgdXBkYXRlZEFycmF5ID0gW1xuICAgICAgICAuLi5hcnJheVxuICAgIF07XG4gICAgY29uc3QgaW5kZXggPSB1cGRhdGVkQXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB1cGRhdGVkQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdXBkYXRlZEFycmF5O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSk9Pml0ZW0udGFnTmFtZSAhPT0gJ0EnXG4gICAgKTtcbn1cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjY7XG5cblxuXG5cbmV4cG9ydCB7JGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjYgYXMgRm9jdXNTY29wZSwgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDdTWGwyJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDdTWGwyJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICQ3U1hsMiRyZWFjdGRvbSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1NYbDIkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjE3MDFiZWFlMDgzZGJhZSR2YXIkUE9SVEFMX05BTUUgPSAnUG9ydGFsJztcbmNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gLyojX19QVVJFX18qLyAkN1NYbDIkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX2dsb2JhbFRoaXMkZG9jdW1lbnQ7XG4gICAgY29uc3QgeyBjb250YWluZXI6IGNvbnRhaW5lciA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9nbG9iYWxUaGlzJGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudCkgPT09IG51bGwgfHwgX2dsb2JhbFRoaXMkZG9jdW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nbG9iYWxUaGlzJGRvY3VtZW50LmJvZHkgLCAuLi5wb3J0YWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIGNvbnRhaW5lciA/IC8qI19fUFVSRV9fKi8gJDdTWGwyJHJlYWN0ZG9tLmNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQ3U1hsMiRjcmVhdGVFbGVtZW50KCQ3U1hsMiRQcmltaXRpdmUuZGl2LCAkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcnRhbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpLCBjb250YWluZXIpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjLCB7XG4gICAgZGlzcGxheU5hbWU6ICRmMTcwMWJlYWUwODNkYmFlJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmM7XG5cblxuXG5cbmV4cG9ydCB7JGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Q2hpbGRyZW4gYXMgJGlxcTNyJENoaWxkcmVuLCBjbG9uZUVsZW1lbnQgYXMgJGlxcTNyJGNsb25lRWxlbWVudCwgdXNlU3RhdGUgYXMgJGlxcTNyJHVzZVN0YXRlLCB1c2VSZWYgYXMgJGlxcTNyJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRpcXEzciR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICRpcXEzciR1c2VDYWxsYmFjaywgdXNlUmVkdWNlciBhcyAkaXFxM3IkdXNlUmVkdWNlcn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkaXFxM3IkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkaXFxM3IkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGlxcTNyJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuXG5cblxuXG5cblxuZnVuY3Rpb24gJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYoaW5pdGlhbFN0YXRlLCBtYWNoaW5lKSB7XG4gICAgcmV0dXJuICRpcXEzciR1c2VSZWR1Y2VyKChzdGF0ZSwgZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IG1hY2hpbmVbc3RhdGVdW2V2ZW50XTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGF0ZSAhPT0gbnVsbCAmJiBuZXh0U3RhdGUgIT09IHZvaWQgMCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xuICAgIH0sIGluaXRpYWxTdGF0ZSk7XG59XG5cblxuY29uc3QgJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBwcmVzZW50OiBwcmVzZW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJlc2VuY2UgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkdXNlUHJlc2VuY2UocHJlc2VudCk7XG4gICAgY29uc3QgY2hpbGQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbih7XG4gICAgICAgIHByZXNlbnQ6IHByZXNlbmNlLmlzUHJlc2VudFxuICAgIH0pIDogJGlxcTNyJENoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgIGNvbnN0IHJlZiA9ICRpcXEzciR1c2VDb21wb3NlZFJlZnMocHJlc2VuY2UucmVmLCBjaGlsZC5yZWYpO1xuICAgIGNvbnN0IGZvcmNlTW91bnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbic7XG4gICAgcmV0dXJuIGZvcmNlTW91bnQgfHwgcHJlc2VuY2UuaXNQcmVzZW50ID8gLyojX19QVVJFX18qLyAkaXFxM3IkY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIHJlZjogcmVmXG4gICAgfSkgOiBudWxsO1xufTtcbiQ5MjFhODg5Y2VlNmRmN2U4JGV4cG9ydCQ5OWMyYjc3OWFhNGU4YjhiLmRpc3BsYXlOYW1lID0gJ1ByZXNlbmNlJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIHVzZVByZXNlbmNlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZShwcmVzZW50KSB7XG4gICAgY29uc3QgW25vZGUxLCBzZXROb2RlXSA9ICRpcXEzciR1c2VTdGF0ZSgpO1xuICAgIGNvbnN0IHN0eWxlc1JlZiA9ICRpcXEzciR1c2VSZWYoe30pO1xuICAgIGNvbnN0IHByZXZQcmVzZW50UmVmID0gJGlxcTNyJHVzZVJlZihwcmVzZW50KTtcbiAgICBjb25zdCBwcmV2QW5pbWF0aW9uTmFtZVJlZiA9ICRpcXEzciR1c2VSZWYoJ25vbmUnKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBwcmVzZW50ID8gJ21vdW50ZWQnIDogJ3VubW91bnRlZCc7XG4gICAgY29uc3QgW3N0YXRlLCBzZW5kXSA9ICRmZTk2M2IzNTUzNDdjYzY4JGV4cG9ydCQzZTY1NDNkZTE0Zjg2MTRmKGluaXRpYWxTdGF0ZSwge1xuICAgICAgICBtb3VudGVkOiB7XG4gICAgICAgICAgICBVTk1PVU5UOiAndW5tb3VudGVkJyxcbiAgICAgICAgICAgIEFOSU1BVElPTl9PVVQ6ICd1bm1vdW50U3VzcGVuZGVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bm1vdW50U3VzcGVuZGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnLFxuICAgICAgICAgICAgQU5JTUFUSU9OX0VORDogJ3VubW91bnRlZCdcbiAgICAgICAgfSxcbiAgICAgICAgdW5tb3VudGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAkaXFxM3IkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gc3RhdGUgPT09ICdtb3VudGVkJyA/IGN1cnJlbnRBbmltYXRpb25OYW1lIDogJ25vbmUnO1xuICAgIH0sIFtcbiAgICAgICAgc3RhdGVcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCB3YXNQcmVzZW50ID0gcHJldlByZXNlbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaGFzUHJlc2VudENoYW5nZWQgPSB3YXNQcmVzZW50ICE9PSBwcmVzZW50O1xuICAgICAgICBpZiAoaGFzUHJlc2VudENoYW5nZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZBbmltYXRpb25OYW1lID0gcHJldkFuaW1hdGlvbk5hbWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzKTtcbiAgICAgICAgICAgIGlmIChwcmVzZW50KSBzZW5kKCdNT1VOVCcpO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEFuaW1hdGlvbk5hbWUgPT09ICdub25lJyB8fCAoc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmRpc3BsYXkpID09PSAnbm9uZScpIC8vIElmIHRoZXJlIGlzIG5vIGV4aXQgYW5pbWF0aW9uIG9yIHRoZSBlbGVtZW50IGlzIGhpZGRlbiwgYW5pbWF0aW9ucyB3b24ndCBydW5cbiAgICAgICAgICAgIC8vIHNvIHdlIHVubW91bnQgaW5zdGFudGx5XG4gICAgICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiBgcHJlc2VudGAgY2hhbmdlcyB0byBgZmFsc2VgLCB3ZSBjaGVjayBjaGFuZ2VzIHRvIGFuaW1hdGlvbi1uYW1lIHRvXG4gICAgICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4gV2UgY2hvc2UgdGhpcyBhcHByb2FjaCAocmVhZGluZ1xuICAgICAgICAgKiBjb21wdXRlZCBzdHlsZXMpIGJlY2F1c2UgdGhlcmUgaXMgbm8gYGFuaW1hdGlvbnJ1bmAgZXZlbnQgYW5kIGBhbmltYXRpb25zdGFydGBcbiAgICAgICAgICogZmlyZXMgYWZ0ZXIgYGFuaW1hdGlvbi1kZWxheWAgaGFzIGV4cGlyZWQgd2hpY2ggd291bGQgYmUgdG9vIGxhdGUuXG4gICAgICAgICAqLyBjb25zdCBpc0FuaW1hdGluZyA9IHByZXZBbmltYXRpb25OYW1lICE9PSBjdXJyZW50QW5pbWF0aW9uTmFtZTtcbiAgICAgICAgICAgICAgICBpZiAod2FzUHJlc2VudCAmJiBpc0FuaW1hdGluZykgc2VuZCgnQU5JTUFUSU9OX09VVCcpO1xuICAgICAgICAgICAgICAgIGVsc2Ugc2VuZCgnVU5NT1VOVCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldlByZXNlbnRSZWYuY3VycmVudCA9IHByZXNlbnQ7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXNlbnQsXG4gICAgICAgIHNlbmRcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChub2RlMSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgKiBUcmlnZ2VyaW5nIGFuIEFOSU1BVElPTl9PVVQgZHVyaW5nIGFuIEFOSU1BVElPTl9JTiB3aWxsIGZpcmUgYW4gYGFuaW1hdGlvbmNhbmNlbGBcbiAgICAgICAqIGV2ZW50IGZvciBBTklNQVRJT05fSU4gYWZ0ZXIgd2UgaGF2ZSBlbnRlcmVkIGB1bm1vdW50U3VzcGVuZGVkYCBzdGF0ZS4gU28sIHdlXG4gICAgICAgKiBtYWtlIHN1cmUgd2Ugb25seSB0cmlnZ2VyIEFOSU1BVElPTl9FTkQgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGFuaW1hdGlvbi5cbiAgICAgICAqLyBjb25zdCBoYW5kbGVBbmltYXRpb25FbmQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50QW5pbWF0aW9uID0gY3VycmVudEFuaW1hdGlvbk5hbWUuaW5jbHVkZXMoZXZlbnQuYW5pbWF0aW9uTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEgJiYgaXNDdXJyZW50QW5pbWF0aW9uKSAvLyBXaXRoIFJlYWN0IDE4IGNvbmN1cnJlbmN5IHRoaXMgdXBkYXRlIGlzIGFwcGxpZWRcbiAgICAgICAgICAgICAgICAvLyBhIGZyYW1lIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcywgY3JlYXRpbmcgYSBmbGFzaCBvZiB2aXNpYmxlIGNvbnRlbnQuXG4gICAgICAgICAgICAgICAgLy8gQnkgbWFudWFsbHkgZmx1c2hpbmcgd2UgZW5zdXJlIHRoZXkgc3luYyB3aXRoaW4gYSBmcmFtZSwgcmVtb3ZpbmcgdGhlIGZsYXNoLlxuICAgICAgICAgICAgICAgICRpcXEzciRmbHVzaFN5bmMoKCk9PnNlbmQoJ0FOSU1BVElPTl9FTkQnKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQW5pbWF0aW9uU3RhcnQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEpIC8vIGlmIGFuaW1hdGlvbiBvY2N1cnJlZCwgc3RvcmUgaXRzIG5hbWUgYXMgdGhlIHByZXZpb3VzIGFuaW1hdGlvbi5cbiAgICAgICAgICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uY2FuY2VsJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25zdGFydCcsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgLy8gVHJhbnNpdGlvbiB0byB0aGUgdW5tb3VudGVkIHN0YXRlIGlmIHRoZSBub2RlIGlzIHJlbW92ZWQgcHJlbWF0dXJlbHkuXG4gICAgICAgIC8vIFdlIGF2b2lkIGRvaW5nIHNvIGR1cmluZyBjbGVhbnVwIGFzIHRoZSBub2RlIG1heSBjaGFuZ2UgYnV0IHN0aWxsIGV4aXN0LlxuICAgICAgICBzZW5kKCdBTklNQVRJT05fRU5EJyk7XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgc2VuZFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudDogW1xuICAgICAgICAgICAgJ21vdW50ZWQnLFxuICAgICAgICAgICAgJ3VubW91bnRTdXNwZW5kZWQnXG4gICAgICAgIF0uaW5jbHVkZXMoc3RhdGUpLFxuICAgICAgICByZWY6ICRpcXEzciR1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgICAgIGlmIChub2RlKSBzdHlsZXNSZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgICAgICBzZXROb2RlKG5vZGUpO1xuICAgICAgICB9LCBbXSlcbiAgICB9O1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXMpIHtcbiAgICByZXR1cm4gKHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5hbmltYXRpb25OYW1lKSB8fCAnbm9uZSc7XG59XG5cblxuXG5cbmV4cG9ydCB7JDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgYXMgUHJlc2VuY2V9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QgYXMgJDF3RXJ6JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqIE51bWJlciBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgcmVxdWVzdGVkIGludGVyZXN0IHRvIGhhdmUgZm9jdXMgZ3VhcmRzICovIGxldCAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPSAwO1xuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGFjNWI1ODA0M2I3OTQ0OWIocHJvcHMpIHtcbiAgICAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpO1xuICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cbi8qKlxuICogSW5qZWN0cyBhIHBhaXIgb2YgZm9jdXMgZ3VhcmRzIGF0IHRoZSBlZGdlcyBvZiB0aGUgd2hvbGUgRE9NIHRyZWVcbiAqIHRvIGVuc3VyZSBgZm9jdXNpbmAgJiBgZm9jdXNvdXRgIGV2ZW50cyBjYW4gYmUgY2F1Z2h0IGNvbnNpc3RlbnRseS5cbiAqLyBmdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpIHtcbiAgICAkMXdFcnokdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfZWRnZUd1YXJkcyQsIF9lZGdlR3VhcmRzJDI7XG4gICAgICAgIGNvbnN0IGVkZ2VHdWFyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCAoX2VkZ2VHdWFyZHMkID0gZWRnZUd1YXJkc1swXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQgOiAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY3JlYXRlRm9jdXNHdWFyZCgpKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWVuZCcsIChfZWRnZUd1YXJkcyQyID0gZWRnZUd1YXJkc1sxXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkMiAhPT0gdm9pZCAwID8gX2VkZ2VHdWFyZHMkMiA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQrKztcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50ID09PSAxKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKS5mb3JFYWNoKChub2RlKT0+bm9kZS5yZW1vdmUoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudC0tO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbn1cbmZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmFkaXgtZm9jdXMtZ3VhcmQnLCAnJyk7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gJ291dGxpbmU6IG5vbmU7IG9wYWNpdHk6IDA7IHBvc2l0aW9uOiBmaXhlZDsgcG9pbnRlci1ldmVudHM6IG5vbmUnO1xuICAgIHJldHVybiBlbGVtZW50O1xufVxuY29uc3QgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YjtcblxuXG5cblxuZXhwb3J0IHskM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YiBhcyBGb2N1c0d1YXJkcywgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMgYXMgdXNlRm9jdXNHdWFyZHN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiZXhwb3J0IHZhciB6ZXJvUmlnaHRDbGFzc05hbWUgPSAncmlnaHQtc2Nyb2xsLWJhci1wb3NpdGlvbic7XG5leHBvcnQgdmFyIGZ1bGxXaWR0aENsYXNzTmFtZSA9ICd3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhcic7XG5leHBvcnQgdmFyIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSA9ICd3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbic7XG4vKipcbiAqIE5hbWUgb2YgYSBDU1MgdmFyaWFibGUgY29udGFpbmluZyB0aGUgYW1vdW50IG9mIFwiaGlkZGVuXCIgc2Nyb2xsYmFyXG4gKiAhIG1pZ2h0IGJlIHVuZGVmaW5lZCAhIHVzZSB3aWxsIGZhbGxiYWNrIVxuICovXG5leHBvcnQgdmFyIHJlbW92ZWRCYXJTaXplVmFyaWFibGUgPSAnLS1yZW1vdmVkLWJvZHktc2Nyb2xsLWJhci1zaXplJztcbiIsImltcG9ydCB7IGFzc2lnblJlZiB9IGZyb20gJy4vYXNzaWduUmVmJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnLi91c2VSZWYnO1xuLyoqXG4gKiBNZXJnZXMgdHdvIG9yIG1vcmUgcmVmcyB0b2dldGhlciBwcm92aWRpbmcgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIHNldCB0aGVpciB2YWx1ZVxuICogQHBhcmFtIHtSZWZPYmplY3R8UmVmfSByZWZzXG4gKiBAcmV0dXJucyB7TXV0YWJsZVJlZk9iamVjdH0gLSBhIG5ldyByZWYsIHdoaWNoIHRyYW5zbGF0ZXMgYWxsIGNoYW5nZXMgdG8ge3JlZnN9XG4gKlxuICogQHNlZSB7QGxpbmsgbWVyZ2VSZWZzfSBhIHZlcnNpb24gd2l0aG91dCBidWl0LWluIG1lbW9pemF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VtZXJnZXJlZnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IG93blJlZiA9IHVzZVJlZigpO1xuICogICBjb25zdCBkb21SZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgb3duUmVmXSk7IC8vIPCfkYggbWVyZ2UgdG9nZXRoZXJcbiAqICAgcmV0dXJuIDxkaXYgcmVmPXtkb21SZWZ9Pi4uLjwvZGl2PlxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiB1c2VDYWxsYmFja1JlZihkZWZhdWx0VmFsdWUgfHwgbnVsbCwgZnVuY3Rpb24gKG5ld1ZhbHVlKSB7IHJldHVybiByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gYXNzaWduUmVmKHJlZiwgbmV3VmFsdWUpOyB9KTsgfSk7XG59XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogY3JlYXRlcyBhIE11dGFibGVSZWYgd2l0aCByZWYgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIC0gaW5pdGlhbCByZWYgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gYSBjYWxsYmFjayB0byBydW4gd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlZiA9IHVzZUNhbGxiYWNrUmVmKDAsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IGNvbnNvbGUubG9nKG9sZFZhbHVlLCAnLT4nLCBuZXdWYWx1ZSk7XG4gKiByZWYuY3VycmVudCA9IDE7XG4gKiAvLyBwcmludHMgMCAtPiAxXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlcmVmXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VjYWxsYmFja3JlZi0tLXRvLXJlcGxhY2UtcmVhY3R1c2VyZWZcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoaW5pdGlhbFZhbHVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZWYgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAvLyB2YWx1ZVxuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAvLyBsYXN0IGNhbGxiYWNrXG4gICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgLy8gXCJtZW1vaXplZFwiIHB1YmxpYyBpbnRlcmZhY2VcbiAgICAgICAgZmFjYWRlOiB7XG4gICAgICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmLnZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBjdXJyZW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByZWYudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWYuY2FsbGJhY2sodmFsdWUsIGxhc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7IH0pWzBdO1xuICAgIC8vIHVwZGF0ZSBjYWxsYmFja1xuICAgIHJlZi5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiByZWYuZmFjYWRlO1xufVxuIiwiLyoqXG4gKiBBc3NpZ25zIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcmVmLCBubyBtYXR0ZXIgb2YgdGhlIHJlZiBmb3JtYXRcbiAqIEBwYXJhbSB7UmVmT2JqZWN0fSByZWYgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIHJlZiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZSAtIGEgbmV3IHZhbHVlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L3VzZS1jYWxsYmFjay1yZWYjYXNzaWducmVmXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmT2JqZWN0ID0gdXNlUmVmKCk7XG4gKiBjb25zdCByZWZGbiA9IChyZWYpID0+IHsuLi4ufVxuICpcbiAqIGFzc2lnblJlZihyZWZPYmplY3QsIFwicmVmVmFsdWVcIik7XG4gKiBhc3NpZ25SZWYocmVmRm4sIFwicmVmVmFsdWVcIik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25SZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZih2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmZ1bmN0aW9uIEl0b0koYSkge1xuICAgIHJldHVybiBhO1xufVxuZnVuY3Rpb24gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpIHtcbiAgICBpZiAobWlkZGxld2FyZSA9PT0gdm9pZCAwKSB7IG1pZGRsZXdhcmUgPSBJdG9JOyB9XG4gICAgdmFyIGJ1ZmZlciA9IFtdO1xuICAgIHZhciBhc3NpZ25lZCA9IGZhbHNlO1xuICAgIHZhciBtZWRpdW0gPSB7XG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhc3NpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhcjogY291bGQgbm90IGByZWFkYCBmcm9tIGFuIGBhc3NpZ25lZGAgbWVkaXVtLiBgcmVhZGAgY291bGQgYmUgdXNlZCBvbmx5IHdpdGggYHVzZU1lZGl1bWAuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgICAgICB9LFxuICAgICAgICB1c2VNZWRpdW06IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IG1pZGRsZXdhcmUoZGF0YSwgYXNzaWduZWQpO1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggIT09IGl0ZW07IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYXNzaWduU3luY01lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0ge1xuICAgICAgICAgICAgICAgIHB1c2g6IGZ1bmN0aW9uICh4KSB7IHJldHVybiBjYih4KTsgfSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJ1ZmZlcjsgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGFzc2lnbk1lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGVuZGluZ1F1ZXVlID0gW107XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBleGVjdXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IHBlbmRpbmdRdWV1ZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGN5Y2xlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihleGVjdXRlUXVldWUpOyB9O1xuICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgIGJ1ZmZlciA9IHtcbiAgICAgICAgICAgICAgICBwdXNoOiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBwZW5kaW5nUXVldWUuZmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbWVkaXVtO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSkge1xuICAgIGlmIChtaWRkbGV3YXJlID09PSB2b2lkIDApIHsgbWlkZGxld2FyZSA9IEl0b0k7IH1cbiAgICByZXR1cm4gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaWRlY2FyTWVkaXVtKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBtZWRpdW0gPSBpbm5lckNyZWF0ZU1lZGl1bShudWxsKTtcbiAgICBtZWRpdW0ub3B0aW9ucyA9IF9fYXNzaWduKHsgYXN5bmM6IHRydWUsIHNzcjogZmFsc2UgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG1lZGl1bTtcbn1cbiIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBTaWRlQ2FyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNpZGVDYXIgPSBfYS5zaWRlQ2FyLCByZXN0ID0gX19yZXN0KF9hLCBbXCJzaWRlQ2FyXCJdKTtcbiAgICBpZiAoIXNpZGVDYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXInKTtcbiAgICB9XG4gICAgdmFyIFRhcmdldCA9IHNpZGVDYXIucmVhZCgpO1xuICAgIGlmICghVGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhciBtZWRpdW0gbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhcmdldCwgX19hc3NpZ24oe30sIHJlc3QpKTtcbn07XG5TaWRlQ2FyLmlzU2lkZUNhckV4cG9ydCA9IHRydWU7XG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2lkZWNhcihtZWRpdW0sIGV4cG9ydGVkKSB7XG4gICAgbWVkaXVtLnVzZU1lZGl1bShleHBvcnRlZCk7XG4gICAgcmV0dXJuIFNpZGVDYXI7XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVTaWRlY2FyTWVkaXVtIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuZXhwb3J0IHZhciBlZmZlY3RDYXIgPSBjcmVhdGVTaWRlY2FyTWVkaXVtKCk7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSB9IGZyb20gJ3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VNZXJnZVJlZnMgfSBmcm9tICd1c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbnZhciBub3RoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybjtcbn07XG4vKipcbiAqIFJlbW92ZXMgc2Nyb2xsYmFyIGZyb20gdGhlIHBhZ2UgYW5kIGNvbnRhaW4gdGhlIHNjcm9sbCB3aXRoaW4gdGhlIExvY2tcbiAqL1xudmFyIFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBwYXJlbnRSZWYpIHtcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvbldoZWVsQ2FwdHVyZTogbm90aGluZyxcbiAgICAgICAgb25Ub3VjaE1vdmVDYXB0dXJlOiBub3RoaW5nLFxuICAgIH0pLCBjYWxsYmFja3MgPSBfYVswXSwgc2V0Q2FsbGJhY2tzID0gX2FbMV07XG4gICAgdmFyIGZvcndhcmRQcm9wcyA9IHByb3BzLmZvcndhcmRQcm9wcywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGVuYWJsZWQgPSBwcm9wcy5lbmFibGVkLCBzaGFyZHMgPSBwcm9wcy5zaGFyZHMsIHNpZGVDYXIgPSBwcm9wcy5zaWRlQ2FyLCBub0lzb2xhdGlvbiA9IHByb3BzLm5vSXNvbGF0aW9uLCBpbmVydCA9IHByb3BzLmluZXJ0LCBhbGxvd1BpbmNoWm9vbSA9IHByb3BzLmFsbG93UGluY2hab29tLCBfYiA9IHByb3BzLmFzLCBDb250YWluZXIgPSBfYiA9PT0gdm9pZCAwID8gJ2RpdicgOiBfYiwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZm9yd2FyZFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJyZW1vdmVTY3JvbGxCYXJcIiwgXCJlbmFibGVkXCIsIFwic2hhcmRzXCIsIFwic2lkZUNhclwiLCBcIm5vSXNvbGF0aW9uXCIsIFwiaW5lcnRcIiwgXCJhbGxvd1BpbmNoWm9vbVwiLCBcImFzXCJdKTtcbiAgICB2YXIgU2lkZUNhciA9IHNpZGVDYXI7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBwYXJlbnRSZWZdKTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdCksIGNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBlbmFibGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVDYXIsIHsgc2lkZUNhcjogZWZmZWN0Q2FyLCByZW1vdmVTY3JvbGxCYXI6IHJlbW92ZVNjcm9sbEJhciwgc2hhcmRzOiBzaGFyZHMsIG5vSXNvbGF0aW9uOiBub0lzb2xhdGlvbiwgaW5lcnQ6IGluZXJ0LCBzZXRDYWxsYmFja3M6IHNldENhbGxiYWNrcywgYWxsb3dQaW5jaFpvb206ICEhYWxsb3dQaW5jaFpvb20sIGxvY2tSZWY6IHJlZiB9KSksXG4gICAgICAgIGZvcndhcmRQcm9wcyA/IChSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcyksIHsgcmVmOiBjb250YWluZXJSZWYgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByZWY6IGNvbnRhaW5lclJlZiB9KSwgY2hpbGRyZW4pKSkpO1xufSk7XG5SZW1vdmVTY3JvbGwuZGVmYXVsdFByb3BzID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcmVtb3ZlU2Nyb2xsQmFyOiB0cnVlLFxuICAgIGluZXJ0OiBmYWxzZSxcbn07XG5SZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IHtcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aENsYXNzTmFtZSxcbiAgICB6ZXJvUmlnaHQ6IHplcm9SaWdodENsYXNzTmFtZSxcbn07XG5leHBvcnQgeyBSZW1vdmVTY3JvbGwgfTtcbiIsImltcG9ydCB7IGdldE5vbmNlIH0gZnJvbSAnZ2V0LW5vbmNlJztcbmZ1bmN0aW9uIG1ha2VTdHlsZVRhZygpIHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0YWcudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBub25jZSk7XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiBpbmplY3RTdHlsZXModGFnLCBjc3MpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhZy5zdHlsZVNoZWV0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnRTdHlsZVRhZyh0YWcpIHtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHRhZyk7XG59XG5leHBvcnQgdmFyIHN0eWxlc2hlZXRTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoc3R5bGVzaGVldCA9IG1ha2VTdHlsZVRhZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXMoc3R5bGVzaGVldCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTdHlsZVRhZyhzdHlsZXNoZWV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgaWYgKCFjb3VudGVyICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LnBhcmVudE5vZGUgJiYgc3R5bGVzaGVldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuIiwidmFyIGN1cnJlbnROb25jZTtcbmV4cG9ydCB2YXIgc2V0Tm9uY2UgPSBmdW5jdGlvbiAobm9uY2UpIHtcbiAgICBjdXJyZW50Tm9uY2UgPSBub25jZTtcbn07XG5leHBvcnQgdmFyIGdldE5vbmNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Tm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb25jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9fd2VicGFja19ub25jZV9fO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsImltcG9ydCB7IHN0eWxlSG9va1NpbmdsZXRvbiB9IGZyb20gJy4vaG9vayc7XG4vKipcbiAqIGNyZWF0ZSBhIENvbXBvbmVudCB0byBhZGQgc3R5bGVzIG9uIGRlbWFuZFxuICogLSBzdHlsZXMgYXJlIGFkZGVkIHdoZW4gZmlyc3QgaW5zdGFuY2UgaXMgbW91bnRlZFxuICogLSBzdHlsZXMgYXJlIHJlbW92ZWQgd2hlbiB0aGUgbGFzdCBpbnN0YW5jZSBpcyB1bm1vdW50ZWRcbiAqIC0gY2hhbmdpbmcgc3R5bGVzIGluIHJ1bnRpbWUgZG9lcyBub3RoaW5nIHVubGVzcyBkeW5hbWljIGlzIHNldC4gQnV0IHdpdGggbXVsdGlwbGUgY29tcG9uZW50cyB0aGF0IGNhbiBsZWFkIHRvIHRoZSB1bmRlZmluZWQgYmVoYXZpb3JcbiAqL1xuZXhwb3J0IHZhciBzdHlsZVNpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdXNlU3R5bGUgPSBzdHlsZUhvb2tTaW5nbGV0b24oKTtcbiAgICB2YXIgU2hlZXQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHN0eWxlcyA9IF9hLnN0eWxlcywgZHluYW1pYyA9IF9hLmR5bmFtaWM7XG4gICAgICAgIHVzZVN0eWxlKHN0eWxlcywgZHluYW1pYyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFNoZWV0O1xufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlc2hlZXRTaW5nbGV0b24gfSBmcm9tICcuL3NpbmdsZXRvbic7XG4vKipcbiAqIGNyZWF0ZXMgYSBob29rIHRvIGNvbnRyb2wgc3R5bGUgc2luZ2xldG9uXG4gKiBAc2VlIHtAbGluayBzdHlsZVNpbmdsZXRvbn0gZm9yIGEgc2FmZXIgY29tcG9uZW50IHZlcnNpb25cbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHVzZVN0eWxlID0gc3R5bGVIb29rU2luZ2xldG9uKCk7XG4gKiAvLy9cbiAqIHVzZVN0eWxlKCdib2R5IHsgb3ZlcmZsb3c6IGhpZGRlbn0nKTtcbiAqL1xuZXhwb3J0IHZhciBzdHlsZUhvb2tTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0ID0gc3R5bGVzaGVldFNpbmdsZXRvbigpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3R5bGVzLCBpc0R5bmFtaWMpIHtcbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNoZWV0LmFkZChzdHlsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaGVldC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtzdHlsZXMgJiYgaXNEeW5hbWljXSk7XG4gICAgfTtcbn07XG4iLCJleHBvcnQgdmFyIHplcm9HYXAgPSB7XG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgZ2FwOiAwLFxufTtcbnZhciBwYXJzZSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiBwYXJzZUludCh4IHx8ICcnLCAxMCkgfHwgMDsgfTtcbnZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiAoZ2FwTW9kZSkge1xuICAgIHZhciBjcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpO1xuICAgIHZhciBsZWZ0ID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdMZWZ0JyA6ICdtYXJnaW5MZWZ0J107XG4gICAgdmFyIHRvcCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nVG9wJyA6ICdtYXJnaW5Ub3AnXTtcbiAgICB2YXIgcmlnaHQgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ1JpZ2h0JyA6ICdtYXJnaW5SaWdodCddO1xuICAgIHJldHVybiBbcGFyc2UobGVmdCksIHBhcnNlKHRvcCksIHBhcnNlKHJpZ2h0KV07XG59O1xuZXhwb3J0IHZhciBnZXRHYXBXaWR0aCA9IGZ1bmN0aW9uIChnYXBNb2RlKSB7XG4gICAgaWYgKGdhcE1vZGUgPT09IHZvaWQgMCkgeyBnYXBNb2RlID0gJ21hcmdpbic7IH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHplcm9HYXA7XG4gICAgfVxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0KGdhcE1vZGUpO1xuICAgIHZhciBkb2N1bWVudFdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IG9mZnNldHNbMF0sXG4gICAgICAgIHRvcDogb2Zmc2V0c1sxXSxcbiAgICAgICAgcmlnaHQ6IG9mZnNldHNbMl0sXG4gICAgICAgIGdhcDogTWF0aC5tYXgoMCwgd2luZG93V2lkdGggLSBkb2N1bWVudFdpZHRoICsgb2Zmc2V0c1syXSAtIG9mZnNldHNbMF0pLFxuICAgIH07XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgZnVsbFdpZHRoQ2xhc3NOYW1lLCB6ZXJvUmlnaHRDbGFzc05hbWUsIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEdhcFdpZHRoIH0gZnJvbSAnLi91dGlscyc7XG52YXIgU3R5bGUgPSBzdHlsZVNpbmdsZXRvbigpO1xuLy8gaW1wb3J0YW50IHRpcCAtIG9uY2Ugd2UgbWVhc3VyZSBzY3JvbGxCYXIgd2lkdGggYW5kIHJlbW92ZSB0aGVtXG4vLyB3ZSBjb3VsZCBub3QgcmVwZWF0IHRoaXMgb3BlcmF0aW9uXG4vLyB0aHVzIHdlIGFyZSB1c2luZyBzdHlsZS1zaW5nbGV0b24gLSBvbmx5IHRoZSBmaXJzdCBcInlldCBjb3JyZWN0XCIgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChfYSwgYWxsb3dSZWxhdGl2ZSwgZ2FwTW9kZSwgaW1wb3J0YW50KSB7XG4gICAgdmFyIGxlZnQgPSBfYS5sZWZ0LCB0b3AgPSBfYS50b3AsIHJpZ2h0ID0gX2EucmlnaHQsIGdhcCA9IF9hLmdhcDtcbiAgICBpZiAoZ2FwTW9kZSA9PT0gdm9pZCAwKSB7IGdhcE1vZGUgPSAnbWFyZ2luJzsgfVxuICAgIHJldHVybiBcIlxcbiAgLlwiLmNvbmNhdChub1Njcm9sbGJhcnNDbGFzc05hbWUsIFwiIHtcXG4gICBvdmVyZmxvdzogaGlkZGVuIFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICBwYWRkaW5nLXJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBib2R5IHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XFxuICAgIFwiKS5jb25jYXQoW1xuICAgICAgICBhbGxvd1JlbGF0aXZlICYmIFwicG9zaXRpb246IHJlbGF0aXZlIFwiLmNvbmNhdChpbXBvcnRhbnQsIFwiO1wiKSxcbiAgICAgICAgZ2FwTW9kZSA9PT0gJ21hcmdpbicgJiZcbiAgICAgICAgICAgIFwiXFxuICAgIHBhZGRpbmctbGVmdDogXCIuY29uY2F0KGxlZnQsIFwicHg7XFxuICAgIHBhZGRpbmctdG9wOiBcIikuY29uY2F0KHRvcCwgXCJweDtcXG4gICAgcGFkZGluZy1yaWdodDogXCIpLmNvbmNhdChyaWdodCwgXCJweDtcXG4gICAgbWFyZ2luLWxlZnQ6MDtcXG4gICAgbWFyZ2luLXRvcDowO1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICAgXCIpLFxuICAgICAgICBnYXBNb2RlID09PSAncGFkZGluZycgJiYgXCJwYWRkaW5nLXJpZ2h0OiBcIi5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcIiksXG4gICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcnKSwgXCJcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiB7XFxuICAgIHJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIHtcXG4gICAgcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdChmdWxsV2lkdGhDbGFzc05hbWUsIFwiIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICBib2R5IHtcXG4gICAgXCIpLmNvbmNhdChyZW1vdmVkQmFyU2l6ZVZhcmlhYmxlLCBcIjogXCIpLmNvbmNhdChnYXAsIFwicHg7XFxuICB9XFxuXCIpO1xufTtcbi8qKlxuICogUmVtb3ZlcyBwYWdlIHNjcm9sbGJhciBhbmQgYmxvY2tzIHBhZ2Ugc2Nyb2xsIHdoZW4gbW91bnRlZFxuICovXG5leHBvcnQgdmFyIFJlbW92ZVNjcm9sbEJhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBub1JlbGF0aXZlID0gcHJvcHMubm9SZWxhdGl2ZSwgbm9JbXBvcnRhbnQgPSBwcm9wcy5ub0ltcG9ydGFudCwgX2EgPSBwcm9wcy5nYXBNb2RlLCBnYXBNb2RlID0gX2EgPT09IHZvaWQgMCA/ICdtYXJnaW4nIDogX2E7XG4gICAgLypcbiAgICAgZ2FwIHdpbGwgYmUgbWVhc3VyZWQgb24gZXZlcnkgY29tcG9uZW50IG1vdW50XG4gICAgIGhvd2V2ZXIgaXQgd2lsbCBiZSB1c2VkIG9ubHkgYnkgdGhlIFwiZmlyc3RcIiBpbnZvY2F0aW9uXG4gICAgIGR1ZSB0byBzaW5nbGV0b24gbmF0dXJlIG9mIDxTdHlsZVxuICAgICAqL1xuICAgIHZhciBnYXAgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldEdhcFdpZHRoKGdhcE1vZGUpOyB9LCBbZ2FwTW9kZV0pO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlLCB7IHN0eWxlczogZ2V0U3R5bGVzKGdhcCwgIW5vUmVsYXRpdmUsIGdhcE1vZGUsICFub0ltcG9ydGFudCA/ICchaW1wb3J0YW50JyA6ICcnKSB9KTtcbn07XG4iLCJ2YXIgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCB2YXIgbm9uUGFzc2l2ZSA9IHBhc3NpdmVTdXBwb3J0ZWQgPyB7IHBhc3NpdmU6IGZhbHNlIH0gOiBmYWxzZTtcbiIsInZhciBhbHdheXNDb250YWluc1Njcm9sbCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gdGV4dGFyZWEgd2lsbCBhbHdheXMgX2NvbnRhaW5fIHNjcm9sbCBpbnNpZGUgc2VsZi4gSXQgb25seSBjYW4gYmUgaGlkZGVuXG4gICAgcmV0dXJuIG5vZGUudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJztcbn07XG52YXIgZWxlbWVudENhbkJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSwgb3ZlcmZsb3cpIHtcbiAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgcmV0dXJuIChcbiAgICAvLyBub3Qtbm90LXNjcm9sbGFibGVcbiAgICBzdHlsZXNbb3ZlcmZsb3ddICE9PSAnaGlkZGVuJyAmJlxuICAgICAgICAvLyBjb250YWlucyBzY3JvbGwgaW5zaWRlIHNlbGZcbiAgICAgICAgIShzdHlsZXMub3ZlcmZsb3dZID09PSBzdHlsZXMub3ZlcmZsb3dYICYmICFhbHdheXNDb250YWluc1Njcm9sbChub2RlKSAmJiBzdHlsZXNbb3ZlcmZsb3ddID09PSAndmlzaWJsZScpKTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVWU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSkgeyByZXR1cm4gZWxlbWVudENhbkJlU2Nyb2xsZWQobm9kZSwgJ292ZXJmbG93WScpOyB9O1xudmFyIGVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkID0gZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIGVsZW1lbnRDYW5CZVNjcm9sbGVkKG5vZGUsICdvdmVyZmxvd1gnKTsgfTtcbmV4cG9ydCB2YXIgbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAoYXhpcywgbm9kZSkge1xuICAgIHZhciBjdXJyZW50ID0gbm9kZTtcbiAgICBkbyB7XG4gICAgICAgIC8vIFNraXAgb3ZlciBzaGFkb3cgcm9vdFxuICAgICAgICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgIT09ICd1bmRlZmluZWQnICYmIGN1cnJlbnQgaW5zdGFuY2VvZiBTaGFkb3dSb290KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5ob3N0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1Njcm9sbGFibGUgPSBlbGVtZW50Q291bGRCZVNjcm9sbGVkKGF4aXMsIGN1cnJlbnQpO1xuICAgICAgICBpZiAoaXNTY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBnZXRTY3JvbGxWYXJpYWJsZXMoYXhpcywgY3VycmVudCksIHMgPSBfYVsxXSwgZCA9IF9hWzJdO1xuICAgICAgICAgICAgaWYgKHMgPiBkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQgIT09IGRvY3VtZW50LmJvZHkpO1xuICAgIHJldHVybiBmYWxzZTtcbn07XG52YXIgZ2V0VlNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxUb3AgPSBfYS5zY3JvbGxUb3AsIHNjcm9sbEhlaWdodCA9IF9hLnNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0ID0gX2EuY2xpZW50SGVpZ2h0O1xuICAgIHJldHVybiBbXG4gICAgICAgIHNjcm9sbFRvcCxcbiAgICAgICAgc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBjbGllbnRIZWlnaHQsXG4gICAgXTtcbn07XG52YXIgZ2V0SFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxMZWZ0ID0gX2Euc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGggPSBfYS5zY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggPSBfYS5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gW1xuICAgICAgICBzY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxXaWR0aCxcbiAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgXTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkKG5vZGUpIDogZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQobm9kZSk7XG59O1xudmFyIGdldFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGdldFZTY3JvbGxWYXJpYWJsZXMobm9kZSkgOiBnZXRIU2Nyb2xsVmFyaWFibGVzKG5vZGUpO1xufTtcbnZhciBnZXREaXJlY3Rpb25GYWN0b3IgPSBmdW5jdGlvbiAoYXhpcywgZGlyZWN0aW9uKSB7XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb24gaXMgcnRsIChyaWdodC10by1sZWZ0KSwgdGhlbiBzY3JvbGxMZWZ0IGlzIDAgd2hlbiB0aGUgc2Nyb2xsYmFyIGlzIGF0IGl0cyByaWdodG1vc3QgcG9zaXRpb24sXG4gICAgICogYW5kIHRoZW4gaW5jcmVhc2luZ2x5IG5lZ2F0aXZlIGFzIHlvdSBzY3JvbGwgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBjb250ZW50LlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvc2Nyb2xsTGVmdFxuICAgICAqL1xuICAgIHJldHVybiBheGlzID09PSAnaCcgJiYgZGlyZWN0aW9uID09PSAncnRsJyA/IC0xIDogMTtcbn07XG5leHBvcnQgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uIChheGlzLCBlbmRUYXJnZXQsIGV2ZW50LCBzb3VyY2VEZWx0YSwgbm9PdmVyc2Nyb2xsKSB7XG4gICAgdmFyIGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihheGlzLCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbmRUYXJnZXQpLmRpcmVjdGlvbik7XG4gICAgdmFyIGRlbHRhID0gZGlyZWN0aW9uRmFjdG9yICogc291cmNlRGVsdGE7XG4gICAgLy8gZmluZCBzY3JvbGxhYmxlIHRhcmdldFxuICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHRhcmdldEluTG9jayA9IGVuZFRhcmdldC5jb250YWlucyh0YXJnZXQpO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGxUb3AgPSAwO1xuICAgIGRvIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0U2Nyb2xsVmFyaWFibGVzKGF4aXMsIHRhcmdldCksIHBvc2l0aW9uID0gX2FbMF0sIHNjcm9sbF8xID0gX2FbMV0sIGNhcGFjaXR5ID0gX2FbMl07XG4gICAgICAgIHZhciBlbGVtZW50U2Nyb2xsID0gc2Nyb2xsXzEgLSBjYXBhY2l0eSAtIGRpcmVjdGlvbkZhY3RvciAqIHBvc2l0aW9uO1xuICAgICAgICBpZiAocG9zaXRpb24gfHwgZWxlbWVudFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQoYXhpcywgdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbCArPSBlbGVtZW50U2Nyb2xsO1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbFRvcCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChcbiAgICAvLyBwb3J0YWxlZCBjb250ZW50XG4gICAgKCF0YXJnZXRJbkxvY2sgJiYgdGFyZ2V0ICE9PSBkb2N1bWVudC5ib2R5KSB8fFxuICAgICAgICAvLyBzZWxmIGNvbnRlbnRcbiAgICAgICAgKHRhcmdldEluTG9jayAmJiAoZW5kVGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgZW5kVGFyZ2V0ID09PSB0YXJnZXQpKSk7XG4gICAgaWYgKGlzRGVsdGFQb3NpdGl2ZSAmJiAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGwgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSkpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzRGVsdGFQb3NpdGl2ZSAmJlxuICAgICAgICAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGxUb3AgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIC1kZWx0YSA+IGF2YWlsYWJsZVNjcm9sbFRvcCkpKSB7XG4gICAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaG91bGRDYW5jZWxTY3JvbGw7XG59O1xuIiwiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsQmFyIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXInO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgbm9uUGFzc2l2ZSB9IGZyb20gJy4vYWdncmVzaXZlQ2FwdHVyZSc7XG5pbXBvcnQgeyBoYW5kbGVTY3JvbGwsIGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIH0gZnJvbSAnLi9oYW5kbGVTY3JvbGwnO1xuZXhwb3J0IHZhciBnZXRUb3VjaFhZID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdjaGFuZ2VkVG91Y2hlcycgaW4gZXZlbnQgPyBbZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WV0gOiBbMCwgMF07XG59O1xuZXhwb3J0IHZhciBnZXREZWx0YVhZID0gZnVuY3Rpb24gKGV2ZW50KSB7IHJldHVybiBbZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0YVldOyB9O1xudmFyIGV4dHJhY3RSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgcmV0dXJuIHJlZiAmJiAnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWY7XG59O1xudmFyIGRlbHRhQ29tcGFyZSA9IGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4WzBdID09PSB5WzBdICYmIHhbMV0gPT09IHlbMV07IH07XG52YXIgZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gXCJcXG4gIC5ibG9jay1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCwgXCIge3BvaW50ZXItZXZlbnRzOiBub25lO31cXG4gIC5hbGxvdy1pbnRlcmFjdGl2aXR5LVwiKS5jb25jYXQoaWQsIFwiIHtwb2ludGVyLWV2ZW50czogYWxsO31cXG5cIik7IH07XG52YXIgaWRDb3VudGVyID0gMDtcbnZhciBsb2NrU3RhY2sgPSBbXTtcbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVTY3JvbGxTaWRlQ2FyKHByb3BzKSB7XG4gICAgdmFyIHNob3VsZFByZXZlbnRRdWV1ZSA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgdmFyIHRvdWNoU3RhcnRSZWYgPSBSZWFjdC51c2VSZWYoWzAsIDBdKTtcbiAgICB2YXIgYWN0aXZlQXhpcyA9IFJlYWN0LnVzZVJlZigpO1xuICAgIHZhciBpZCA9IFJlYWN0LnVzZVN0YXRlKGlkQ291bnRlcisrKVswXTtcbiAgICB2YXIgU3R5bGUgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiBzdHlsZVNpbmdsZXRvbigpOyB9KVswXTtcbiAgICB2YXIgbGFzdFByb3BzID0gUmVhY3QudXNlUmVmKHByb3BzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0UHJvcHMuY3VycmVudCA9IHByb3BzO1xuICAgIH0sIFtwcm9wc10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChwcm9wcy5pbmVydCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiYmxvY2staW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTtcbiAgICAgICAgICAgIHZhciBhbGxvd18xID0gX19zcHJlYWRBcnJheShbcHJvcHMubG9ja1JlZi5jdXJyZW50XSwgKHByb3BzLnNoYXJkcyB8fCBbXSkubWFwKGV4dHJhY3RSZWYpLCB0cnVlKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICBhbGxvd18xLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKFwiYWxsb3ctaW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTsgfSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImJsb2NrLWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7XG4gICAgICAgICAgICAgICAgYWxsb3dfMS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShcImFsbG93LWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSwgW3Byb3BzLmluZXJ0LCBwcm9wcy5sb2NrUmVmLmN1cnJlbnQsIHByb3BzLnNoYXJkc10pO1xuICAgIHZhciBzaG91bGRDYW5jZWxFdmVudCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCwgcGFyZW50KSB7XG4gICAgICAgIGlmICgndG91Y2hlcycgaW4gZXZlbnQgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAhbGFzdFByb3BzLmN1cnJlbnQuYWxsb3dQaW5jaFpvb207XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdWNoID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgICAgIHZhciB0b3VjaFN0YXJ0ID0gdG91Y2hTdGFydFJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgZGVsdGFYID0gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOiB0b3VjaFN0YXJ0WzBdIC0gdG91Y2hbMF07XG4gICAgICAgIHZhciBkZWx0YVkgPSAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IHRvdWNoU3RhcnRbMV0gLSB0b3VjaFsxXTtcbiAgICAgICAgdmFyIGN1cnJlbnRBeGlzO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB2YXIgbW92ZURpcmVjdGlvbiA9IE1hdGguYWJzKGRlbHRhWCkgPiBNYXRoLmFicyhkZWx0YVkpID8gJ2gnIDogJ3YnO1xuICAgICAgICAvLyBhbGxvdyBob3Jpem9udGFsIHRvdWNoIG1vdmUgb24gUmFuZ2UgaW5wdXRzLiBUaGV5IHdpbGwgbm90IGNhdXNlIGFueSBzY3JvbGxcbiAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBldmVudCAmJiBtb3ZlRGlyZWN0aW9uID09PSAnaCcgJiYgdGFyZ2V0LnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgIGlmICghY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbiA9PT0gJ3YnID8gJ2gnIDogJ3YnO1xuICAgICAgICAgICAgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgICAgICAvLyBvdGhlciBheGlzIG1pZ2h0IGJlIG5vdCBzY3JvbGxhYmxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY3RpdmVBeGlzLmN1cnJlbnQgJiYgJ2NoYW5nZWRUb3VjaGVzJyBpbiBldmVudCAmJiAoZGVsdGFYIHx8IGRlbHRhWSkpIHtcbiAgICAgICAgICAgIGFjdGl2ZUF4aXMuY3VycmVudCA9IGN1cnJlbnRBeGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VycmVudEF4aXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxpbmdBeGlzID0gYWN0aXZlQXhpcy5jdXJyZW50IHx8IGN1cnJlbnRBeGlzO1xuICAgICAgICByZXR1cm4gaGFuZGxlU2Nyb2xsKGNhbmNlbGluZ0F4aXMsIHBhcmVudCwgZXZlbnQsIGNhbmNlbGluZ0F4aXMgPT09ICdoJyA/IGRlbHRhWCA6IGRlbHRhWSwgdHJ1ZSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRQcmV2ZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKF9ldmVudCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBfZXZlbnQ7XG4gICAgICAgIGlmICghbG9ja1N0YWNrLmxlbmd0aCB8fCBsb2NrU3RhY2tbbG9ja1N0YWNrLmxlbmd0aCAtIDFdICE9PSBTdHlsZSkge1xuICAgICAgICAgICAgLy8gbm90IHRoZSBsYXN0IGFjdGl2ZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWx0YSA9ICdkZWx0YVknIGluIGV2ZW50ID8gZ2V0RGVsdGFYWShldmVudCkgOiBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICAgICAgdmFyIHNvdXJjZUV2ZW50ID0gc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLm5hbWUgPT09IGV2ZW50LnR5cGUgJiYgZS50YXJnZXQgPT09IGV2ZW50LnRhcmdldCAmJiBkZWx0YUNvbXBhcmUoZS5kZWx0YSwgZGVsdGEpOyB9KVswXTtcbiAgICAgICAgLy8gc2VsZiBldmVudCwgYW5kIHNob3VsZCBiZSBjYW5jZWxlZFxuICAgICAgICBpZiAoc291cmNlRXZlbnQgJiYgc291cmNlRXZlbnQuc2hvdWxkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3V0c2lkZSBvciBzaGFyZCBldmVudFxuICAgICAgICBpZiAoIXNvdXJjZUV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgc2hhcmROb2RlcyA9IChsYXN0UHJvcHMuY3VycmVudC5zaGFyZHMgfHwgW10pXG4gICAgICAgICAgICAgICAgLm1hcChleHRyYWN0UmVmKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7IH0pO1xuICAgICAgICAgICAgdmFyIHNob3VsZFN0b3AgPSBzaGFyZE5vZGVzLmxlbmd0aCA+IDAgPyBzaG91bGRDYW5jZWxFdmVudChldmVudCwgc2hhcmROb2Rlc1swXSkgOiAhbGFzdFByb3BzLmN1cnJlbnQubm9Jc29sYXRpb247XG4gICAgICAgICAgICBpZiAoc2hvdWxkU3RvcCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRDYW5jZWwgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobmFtZSwgZGVsdGEsIHRhcmdldCwgc2hvdWxkKSB7XG4gICAgICAgIHZhciBldmVudCA9IHsgbmFtZTogbmFtZSwgZGVsdGE6IGRlbHRhLCB0YXJnZXQ6IHRhcmdldCwgc2hvdWxkOiBzaG91bGQgfTtcbiAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQucHVzaChldmVudCk7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQgPSBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgIT09IGV2ZW50OyB9KTtcbiAgICAgICAgfSwgMSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxUb3VjaFN0YXJ0ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRvdWNoU3RhcnRSZWYuY3VycmVudCA9IGdldFRvdWNoWFkoZXZlbnQpO1xuICAgICAgICBhY3RpdmVBeGlzLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxXaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBzaG91bGRDYW5jZWwoZXZlbnQudHlwZSwgZ2V0RGVsdGFYWShldmVudCksIGV2ZW50LnRhcmdldCwgc2hvdWxkQ2FuY2VsRXZlbnQoZXZlbnQsIHByb3BzLmxvY2tSZWYuY3VycmVudCkpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgc2Nyb2xsVG91Y2hNb3ZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHNob3VsZENhbmNlbChldmVudC50eXBlLCBnZXRUb3VjaFhZKGV2ZW50KSwgZXZlbnQudGFyZ2V0LCBzaG91bGRDYW5jZWxFdmVudChldmVudCwgcHJvcHMubG9ja1JlZi5jdXJyZW50KSk7XG4gICAgfSwgW10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvY2tTdGFjay5wdXNoKFN0eWxlKTtcbiAgICAgICAgcHJvcHMuc2V0Q2FsbGJhY2tzKHtcbiAgICAgICAgICAgIG9uU2Nyb2xsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvbldoZWVsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvblRvdWNoTW92ZUNhcHR1cmU6IHNjcm9sbFRvdWNoTW92ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NrU3RhY2sgPSBsb2NrU3RhY2suZmlsdGVyKGZ1bmN0aW9uIChpbnN0KSB7IHJldHVybiBpbnN0ICE9PSBTdHlsZTsgfSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHZhciByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGluZXJ0ID0gcHJvcHMuaW5lcnQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBpbmVydCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGUsIHsgc3R5bGVzOiBnZW5lcmF0ZVN0eWxlKGlkKSB9KSA6IG51bGwsXG4gICAgICAgIHJlbW92ZVNjcm9sbEJhciA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsQmFyLCB7IGdhcE1vZGU6IFwibWFyZ2luXCIgfSkgOiBudWxsKSk7XG59XG4iLCJpbXBvcnQgeyBleHBvcnRTaWRlY2FyIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsU2lkZUNhciB9IGZyb20gJy4vU2lkZUVmZmVjdCc7XG5pbXBvcnQgeyBlZmZlY3RDYXIgfSBmcm9tICcuL21lZGl1bSc7XG5leHBvcnQgZGVmYXVsdCBleHBvcnRTaWRlY2FyKGVmZmVjdENhciwgUmVtb3ZlU2Nyb2xsU2lkZUNhcik7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsIH0gZnJvbSAnLi9VSSc7XG5pbXBvcnQgU2lkZUNhciBmcm9tICcuL3NpZGVjYXInO1xudmFyIFJlYWN0UmVtb3ZlU2Nyb2xsID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgcmVmOiByZWYsIHNpZGVDYXI6IFNpZGVDYXIgfSkpKTsgfSk7XG5SZWFjdFJlbW92ZVNjcm9sbC5jbGFzc05hbWVzID0gUmVtb3ZlU2Nyb2xsLmNsYXNzTmFtZXM7XG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlbW92ZVNjcm9sbDtcbiIsInZhciBnZXREZWZhdWx0UGFyZW50ID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzYW1wbGVUYXJnZXQgPSBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0WzBdIDogb3JpZ2luYWxUYXJnZXQ7XG4gICAgcmV0dXJuIHNhbXBsZVRhcmdldC5vd25lckRvY3VtZW50LmJvZHk7XG59O1xudmFyIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xudmFyIHVuY29udHJvbGxlZE5vZGVzID0gbmV3IFdlYWtNYXAoKTtcbnZhciBtYXJrZXJNYXAgPSB7fTtcbnZhciBsb2NrQ291bnQgPSAwO1xudmFyIHVud3JhcEhvc3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlICYmIChub2RlLmhvc3QgfHwgdW53cmFwSG9zdChub2RlLnBhcmVudE5vZGUpKTtcbn07XG52YXIgY29ycmVjdFRhcmdldHMgPSBmdW5jdGlvbiAocGFyZW50LCB0YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRhcmdldHNcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIGlmIChwYXJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29ycmVjdGVkVGFyZ2V0ID0gdW53cmFwSG9zdCh0YXJnZXQpO1xuICAgICAgICBpZiAoY29ycmVjdGVkVGFyZ2V0ICYmIHBhcmVudC5jb250YWlucyhjb3JyZWN0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29ycmVjdGVkVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FyaWEtaGlkZGVuJywgdGFyZ2V0LCAnaW4gbm90IGNvbnRhaW5lZCBpbnNpZGUnLCBwYXJlbnQsICcuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4gQm9vbGVhbih4KTsgfSk7XG59O1xuLyoqXG4gKiBNYXJrcyBldmVyeXRoaW5nIGV4Y2VwdCBnaXZlbiBub2RlKG9yIG5vZGVzKSBhcyBhcmlhLWhpZGRlblxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2NvbnRyb2xBdHRyaWJ1dGVdIC0gaHRtbCBBdHRyaWJ1dGUgdG8gY29udHJvbFxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbnZhciBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lLCBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgdmFyIHRhcmdldHMgPSBjb3JyZWN0VGFyZ2V0cyhwYXJlbnROb2RlLCBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICAgICAgbWFya2VyTWFwW21hcmtlck5hbWVdID0gbmV3IFdlYWtNYXAoKTtcbiAgICB9XG4gICAgdmFyIG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gICAgdmFyIGhpZGRlbk5vZGVzID0gW107XG4gICAgdmFyIGVsZW1lbnRzVG9LZWVwID0gbmV3IFNldCgpO1xuICAgIHZhciBlbGVtZW50c1RvU3RvcCA9IG5ldyBTZXQodGFyZ2V0cyk7XG4gICAgdmFyIGtlZXAgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgaWYgKCFlbCB8fCBlbGVtZW50c1RvS2VlcC5oYXMoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudHNUb0tlZXAuYWRkKGVsKTtcbiAgICAgICAga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgICB9O1xuICAgIHRhcmdldHMuZm9yRWFjaChrZWVwKTtcbiAgICB2YXIgZGVlcCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKCFwYXJlbnQgfHwgZWxlbWVudHNUb1N0b3AuaGFzKHBhcmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHBhcmVudC5jaGlsZHJlbiwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1RvS2VlcC5oYXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgYWxyZWFkeUhpZGRlbiA9IGF0dHIgIT09IG51bGwgJiYgYXR0ciAhPT0gJ2ZhbHNlJztcbiAgICAgICAgICAgICAgICB2YXIgY291bnRlclZhbHVlID0gKGNvdW50ZXJNYXAuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgICAgICAgICB2YXIgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJWYWx1ZSA9PT0gMSAmJiBhbHJlYWR5SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuY29udHJvbGxlZE5vZGVzLnNldChub2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG1hcmtlck5hbWUsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBkZWVwKHBhcmVudE5vZGUpO1xuICAgIGVsZW1lbnRzVG9LZWVwLmNsZWFyKCk7XG4gICAgbG9ja0NvdW50Kys7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaGlkZGVuTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXJWYWx1ZSA9IGNvdW50ZXJNYXAuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIHZhciBtYXJrZXJWYWx1ZSA9IG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWNvdW50ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdW5jb250cm9sbGVkTm9kZXMuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1bmNvbnRyb2xsZWROb2Rlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobWFya2VyTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsb2NrQ291bnQtLTtcbiAgICAgICAgaWYgKCFsb2NrQ291bnQpIHtcbiAgICAgICAgICAgIC8vIGNsZWFyXG4gICAgICAgICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgdW5jb250cm9sbGVkTm9kZXMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgbWFya2VyTWFwID0ge307XG4gICAgICAgIH1cbiAgICB9O1xufTtcbi8qKlxuICogTWFya3MgZXZlcnl0aGluZyBleGNlcHQgZ2l2ZW4gbm9kZShvciBub2RlcykgYXMgYXJpYS1oaWRkZW5cbiAqIEBwYXJhbSB7RWxlbWVudCB8IEVsZW1lbnRbXX0gb3JpZ2luYWxUYXJnZXQgLSBlbGVtZW50cyB0byBrZWVwIG9uIHRoZSBwYWdlXG4gKiBAcGFyYW0gW3BhcmVudE5vZGVdIC0gdG9wIGVsZW1lbnQsIGRlZmF1bHRzIHRvIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbWFya2VyTmFtZV0gLSBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgZXZlcnkgbm9kZVxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbmV4cG9ydCB2YXIgaGlkZU90aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLWFyaWEtaGlkZGVuJzsgfVxuICAgIHZhciB0YXJnZXRzID0gQXJyYXkuZnJvbShBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgLy8gd2Ugc2hvdWxkIG5vdCBoaWRlIGFyaWFMaXZlIGVsZW1lbnRzIC0gaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS9hcmlhLWhpZGRlbi9pc3N1ZXMvMTBcbiAgICB0YXJnZXRzLnB1c2guYXBwbHkodGFyZ2V0cywgQXJyYXkuZnJvbShhY3RpdmVQYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKTtcbiAgICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh0YXJnZXRzLCBhY3RpdmVQYXJlbnROb2RlLCBtYXJrZXJOYW1lLCAnYXJpYS1oaWRkZW4nKTtcbn07XG4vKipcbiAqIE1hcmtzIGV2ZXJ5dGhpbmcgZXhjZXB0IGdpdmVuIG5vZGUob3Igbm9kZXMpIGFzIGluZXJ0XG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEByZXR1cm4ge1VuZG99IHVuZG8gY29tbWFuZFxuICovXG5leHBvcnQgdmFyIGluZXJ0T3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtaW5lcnQtZWQnOyB9XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMob3JpZ2luYWxUYXJnZXQsIGFjdGl2ZVBhcmVudE5vZGUsIG1hcmtlck5hbWUsICdpbmVydCcpO1xufTtcbi8qKlxuICogQHJldHVybnMgaWYgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIGluZXJ0XG4gKi9cbmV4cG9ydCB2YXIgc3VwcG9ydHNJbmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ2luZXJ0Jyk7XG59O1xuLyoqXG4gKiBBdXRvbWF0aWMgZnVuY3Rpb24gdG8gXCJzdXBwcmVzc1wiIERPTSBlbGVtZW50cyAtIF9oaWRlXyBvciBfaW5lcnRfIGluIHRoZSBiZXN0IHBvc3NpYmxlIHdheVxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xuZXhwb3J0IHZhciBzdXBwcmVzc090aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLXN1cHByZXNzZWQnOyB9XG4gICAgcmV0dXJuIChzdXBwb3J0c0luZXJ0KCkgPyBpbmVydE90aGVycyA6IGhpZGVPdGhlcnMpKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKTtcbn07XG4iLCJpbXBvcnQgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVJlZiBhcyAkNjdVSG0kdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ2N1VIbSRjcmVhdGVFbGVtZW50LCB1c2VDYWxsYmFjayBhcyAkNjdVSG0kdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgYXMgJDY3VUhtJGZvcndhcmRSZWYsIENoaWxkcmVuIGFzICQ2N1VIbSRDaGlsZHJlbiwgdXNlRWZmZWN0IGFzICQ2N1VIbSR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQ2N1VIbSRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ2N1VIbSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlLCBjcmVhdGVDb250ZXh0IGFzICQ2N1VIbSRjcmVhdGVDb250ZXh0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDY3VUhtJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDY3VUhtJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7Rm9jdXNTY29wZSBhcyAkNjdVSG0kRm9jdXNTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1zY29wZVwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDY3VUhtJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDY3VUhtJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkNjdVSG0kUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VGb2N1c0d1YXJkcyBhcyAkNjdVSG0kdXNlRm9jdXNHdWFyZHN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzXCI7XG5pbXBvcnQge1JlbW92ZVNjcm9sbCBhcyAkNjdVSG0kUmVtb3ZlU2Nyb2xsfSBmcm9tIFwicmVhY3QtcmVtb3ZlLXNjcm9sbFwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQ2N1VIbSRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7U2xvdCBhcyAkNjdVSG0kU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSA9ICdEaWFsb2cnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRjcmVhdGVEaWFsb2dDb250ZXh0LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkY2M3MDI3NzNiOGVhM2U0MV0gPSAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlKCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSk7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ1Byb3ZpZGVyLCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dF0gPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUpO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIG1vZGFsOiBtb2RhbCA9IHRydWUgIH0gPSBwcm9wcztcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbb3BlbiA9IGZhbHNlLCBzZXRPcGVuXSA9ICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVEaWFsb2csXG4gICAgICAgIHRyaWdnZXJSZWY6IHRyaWdnZXJSZWYsXG4gICAgICAgIGNvbnRlbnRSZWY6IGNvbnRlbnRSZWYsXG4gICAgICAgIGNvbnRlbnRJZDogJDY3VUhtJHVzZUlkKCksXG4gICAgICAgIHRpdGxlSWQ6ICQ2N1VIbSR1c2VJZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbklkOiAkNjdVSG0kdXNlSWQoKSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBvbk9wZW5Ub2dnbGU6ICQ2N1VIbSR1c2VDYWxsYmFjaygoKT0+c2V0T3BlbigocHJldk9wZW4pPT4hcHJldk9wZW5cbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXG4gICAgICAgICAgICBzZXRPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBtb2RhbDogbW9kYWxcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzZGRmMmQxNzRjZTAxMTUzLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUUgPSAnRGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMmUxZTExMjJjZjBjYmE4OCA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgY29tcG9zZWRUcmlnZ2VyUmVmID0gJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQudHJpZ2dlclJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5idXR0b24sICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImRpYWxvZ1wiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogY29udGV4dC5vcGVuLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkVHJpZ2dlclJlZixcbiAgICAgICAgb25DbGljazogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIGNvbnRleHQub25PcGVuVG9nZ2xlKVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSA9ICdEaWFsb2dQb3J0YWwnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FLCB7XG4gICAgZm9yY2VNb3VudDogdW5kZWZpbmVkXG59KTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkUE9SVEFMX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZURpYWxvZyxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sICQ2N1VIbSRDaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCk9Pi8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByZXNlbmNlLCB7XG4gICAgICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQb3J0YWwsIHtcbiAgICAgICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgICAgICB9LCBjaGlsZCkpXG4gICAgKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dPdmVybGF5XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUgPSAnRGlhbG9nT3ZlcmxheSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dPdmVybGF5SW1wbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUVcbn0pO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkT1ZFUkxBWV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4oLyojX19QVVJFX18qLyAvLyBNYWtlIHN1cmUgYENvbnRlbnRgIGlzIHNjcm9sbGFibGUgZXZlbiB3aGVuIGl0IGRvZXNuJ3QgbGl2ZSBpbnNpZGUgYFJlbW92ZVNjcm9sbGBcbiAgICAvLyBpZS4gd2hlbiBgT3ZlcmxheWAgYW5kIGBDb250ZW50YCBhcmUgc2libGluZ3NcbiAgICAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkNjdVSG0kU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWUsXG4gICAgICAgIHNoYXJkczogW1xuICAgICAgICAgICAgY29udGV4dC5jb250ZW50UmVmXG4gICAgICAgIF1cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuZGl2LCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlKGNvbnRleHQub3BlbilcbiAgICB9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYgLy8gV2UgcmUtZW5hYmxlIHBvaW50ZXItZXZlbnRzIHByZXZlbnRlZCBieSBgRGlhbG9nLkNvbnRlbnRgIHRvIGFsbG93IHNjcm9sbGluZyB0aGUgb3ZlcmxheS5cbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICAgICAgICAgICAgLi4ub3ZlcmxheVByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FID0gJ0RpYWxvZ0NvbnRlbnQnO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHBvcnRhbENvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlUG9ydGFsQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCB7IGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgPSBwb3J0YWxDb250ZXh0LmZvcmNlTW91bnQgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50TW9kYWwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNjdVSG0kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb250ZW50UmVmLCBjb250ZW50UmVmKTsgLy8gYXJpYS1oaWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjb250ZW50IChiZXR0ZXIgc3VwcG9ydGVkIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBhcmlhLW1vZGFsKVxuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGNvbnRlbnQpIHJldHVybiAkNjdVSG0kaGlkZU90aGVycyhjb250ZW50KTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIHdlIG1ha2Ugc3VyZSBmb2N1cyBpc24ndCB0cmFwcGVkIG9uY2UgYERpYWxvZ0NvbnRlbnRgIGhhcyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBGb2N1czogY29udGV4dC5vcGVuLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlclJlZiRjO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyUmVmJGMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjLmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25PdXRzaWRlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQ7XG4gICAgICAgICAgICBjb25zdCBjdHJsTGVmdENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDAgJiYgb3JpZ2luYWxFdmVudC5jdHJsS2V5ID09PSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNSaWdodENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDIgfHwgY3RybExlZnRDbGljazsgLy8gSWYgdGhlIGV2ZW50IGlzIGEgcmlnaHQtY2xpY2ssIHdlIHNob3VsZG4ndCBjbG9zZSBiZWNhdXNlXG4gICAgICAgICAgICAvLyBpdCBpcyBlZmZlY3RpdmVseSBhcyBpZiB3ZSByaWdodC1jbGlja2VkIHRoZSBgT3ZlcmxheWAuXG4gICAgICAgICAgICBpZiAoaXNSaWdodENsaWNrKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgYGZvY3Vzb3V0YCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c091dHNpZGUsIChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgKVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE5vbk1vZGFsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHRyYXBGb2N1czogZmFsc2UsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25DbG9zZUF1dG9Gb2M7XG4gICAgICAgICAgICAoX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID0gcHJvcHMub25DbG9zZUF1dG9Gb2N1cykgPT09IG51bGwgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGMyO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCkgKF9jb250ZXh0JHRyaWdnZXJSZWYkYzIgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzIuZm9jdXMoKTsgLy8gQWx3YXlzIHByZXZlbnQgYXV0byBmb2N1cyBiZWNhdXNlIHdlIGVpdGhlciBmb2N1cyBtYW51YWxseSBvciB3YW50IHVzZXIgYWdlbnQgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25JbnRlcmFjdE91dHMsIF9jb250ZXh0JHRyaWdnZXJSZWYkYzM7XG4gICAgICAgICAgICAoX3Byb3BzJG9uSW50ZXJhY3RPdXRzID0gcHJvcHMub25JbnRlcmFjdE91dHNpZGUpID09PSBudWxsIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cyA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cy5jYWxsKHByb3BzLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJykgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSAvLyBQcmV2ZW50IGRpc21pc3Npbmcgd2hlbiBjbGlja2luZyB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGlzIGFscmVhZHkgc2V0dXAgdG8gY2xvc2UsIHdpdGhvdXQgZG9pbmcgc28gd291bGRcbiAgICAgICAgICAgIC8vIGNhdXNlIGl0IHRvIGNsb3NlIGFuZCBpbW1lZGlhdGVseSBvcGVuLlxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0SXNUcmlnZ2VyID0gKF9jb250ZXh0JHRyaWdnZXJSZWYkYzMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRleHQkdHJpZ2dlclJlZiRjMy5jb250YWlucyh0YXJnZXQpO1xuICAgICAgICAgICAgaWYgKHRhcmdldElzVHJpZ2dlcikgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT24gU2FmYXJpIGlmIHRoZSB0cmlnZ2VyIGlzIGluc2lkZSBhIGNvbnRhaW5lciB3aXRoIHRhYkluZGV4PXswfSwgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICAvLyB3ZSB3aWxsIGdldCB0aGUgcG9pbnRlciBkb3duIG91dHNpZGUgZXZlbnQgb24gdGhlIHRyaWdnZXIsIGJ1dCB0aGVuIGEgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gZm9jdXMgb3V0c2lkZSBldmVudCBvbiB0aGUgY29udGFpbmVyLCB3ZSBpZ25vcmUgYW55IGZvY3VzIG91dHNpZGUgZXZlbnQgd2hlbiB3ZSd2ZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYWQgYSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudC5cbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAnZm9jdXNpbicgJiYgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCB0cmFwRm9jdXM6IHRyYXBGb2N1cyAsIG9uT3BlbkF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2N1VIbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBEaWFsb2dgIHdpbGwgYmVcbiAgICAvLyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBET00gKGJlYWN1c2Ugb2YgdGhlIGBQb3J0YWxgKVxuICAgICQ2N1VIbSR1c2VGb2N1c0d1YXJkcygpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRm9jdXNTY29wZSwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB0cmFwcGVkOiB0cmFwRm9jdXMsXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IG9uT3BlbkF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzXG4gICAgfSwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRGlzbWlzc2FibGVMYXllciwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgaWQ6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogY29udGV4dC5kZXNjcmlwdGlvbklkLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBjb250ZXh0LnRpdGxlSWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSkpKSwgZmFsc2UpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVElUTEVfTkFNRSA9ICdEaWFsb2dUaXRsZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udGl0bGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmgyLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogY29udGV4dC50aXRsZUlkXG4gICAgfSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ0Rlc2NyaXB0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5kZXNjcmlwdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERFU0NSSVBUSU9OX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUucCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGNvbnRleHQuZGVzY3JpcHRpb25JZFxuICAgIH0sIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dDbG9zZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRSA9ICdEaWFsb2dDbG9zZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4uY2xvc2VQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmJ1dHRvbiwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgIH0sIGNsb3NlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uQ2xpY2s6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShvcGVuKSB7XG4gICAgcmV0dXJuIG9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJztcbn1cbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUgPSAnRGlhbG9nVGl0bGVXYXJuaW5nJztcbmNvbnN0IFskNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0XSA9ICQ2N1VIbSRjcmVhdGVDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUsIHtcbiAgICBjb250ZW50TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSxcbiAgICB0aXRsZU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLFxuICAgIGRvY3NTbHVnOiAnZGlhbG9nJ1xufSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVGl0bGVXYXJuaW5nID0gKHsgdGl0bGVJZDogdGl0bGVJZCAgfSk9PntcbiAgICBjb25zdCB0aXRsZVdhcm5pbmdDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUpO1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LmNvbnRlbnROYW1lfVxcYCByZXF1aXJlcyBhIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbklmIHlvdSB3YW50IHRvIGhpZGUgdGhlIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgLCB5b3UgY2FuIHdyYXAgaXQgd2l0aCBvdXIgVmlzdWFsbHlIaWRkZW4gY29tcG9uZW50LlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcmFkaXgtdWkuY29tL3ByaW1pdGl2ZXMvZG9jcy9jb21wb25lbnRzLyR7dGl0bGVXYXJuaW5nQ29udGV4dC5kb2NzU2x1Z31gO1xuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRpdGxlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGl0bGVJZCk7XG4gICAgICAgICAgICBpZiAoIWhhc1RpdGxlKSB0aHJvdyBuZXcgRXJyb3IoTUVTU0FHRSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIE1FU1NBR0UsXG4gICAgICAgIHRpdGxlSWRcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uV2FybmluZyc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGVzY3JpcHRpb25XYXJuaW5nID0gKHsgY29udGVudFJlZjogY29udGVudFJlZiAsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQgIH0pPT57XG4gICAgY29uc3QgZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VXYXJuaW5nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FKTtcbiAgICBjb25zdCBNRVNTQUdFID0gYFdhcm5pbmc6IE1pc3NpbmcgXFxgRGVzY3JpcHRpb25cXGAgb3IgXFxgYXJpYS1kZXNjcmliZWRieT17dW5kZWZpbmVkfVxcYCBmb3IgeyR7ZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dC5jb250ZW50TmFtZX19LmA7XG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRSZWYkY3VycmVudDtcbiAgICAgICAgY29uc3QgZGVzY3JpYmVkQnlJZCA9IChfY29udGVudFJlZiRjdXJyZW50ID0gY29udGVudFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGVudFJlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudFJlZiRjdXJyZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpOyAvLyBpZiB3ZSBoYXZlIGFuIGlkIGFuZCB0aGUgdXNlciBoYXNuJ3Qgc2V0IGFyaWEtZGVzY3JpYmVkYnk9e3VuZGVmaW5lZH1cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uSWQgJiYgZGVzY3JpYmVkQnlJZCkge1xuICAgICAgICAgICAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXNjcmlwdGlvbklkKTtcbiAgICAgICAgICAgIGlmICghaGFzRGVzY3JpcHRpb24pIGNvbnNvbGUud2FybihNRVNTQUdFKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgTUVTU0FHRSxcbiAgICAgICAgY29udGVudFJlZixcbiAgICAgICAgZGVzY3JpcHRpb25JZFxuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTM7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZGFkN2M5NTU0MmJhY2NlMDtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiNmQ5NTY1ZGUxZTA2OGNmO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDU7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjO1xuXG5cblxuXG5leHBvcnQgeyQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIGFzIGNyZWF0ZURpYWxvZ1Njb3BlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MyBhcyBEaWFsb2csICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4IGFzIERpYWxvZ1RyaWdnZXIsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwIGFzIERpYWxvZ1BvcnRhbCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTcgYXMgRGlhbG9nT3ZlcmxheSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgYXMgRGlhbG9nQ29udGVudCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDkgYXMgRGlhbG9nVGl0bGUsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IGFzIERpYWxvZ0Rlc2NyaXB0aW9uLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyBhcyBEaWFsb2dDbG9zZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCBhcyBUaXRsZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgYXMgRGVzY3JpcHRpb24sICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIGFzIENsb3NlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiBhcyBXYXJuaW5nUHJvdmlkZXJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4MlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4MilcIj5cbjxwYXRoIGQ9XCJNMTIgMTMuMDUzOEw2LjkyNjg5IDE4LjEyNjlDNi43ODg0NCAxOC4yNjU0IDYuNjE0NCAxOC4zMzYyIDYuNDA0NzkgMTguMzM5NEM2LjE5NTE5IDE4LjM0MjYgNi4wMTc5NSAxOC4yNzE4IDUuODczMDkgMTguMTI2OUM1LjcyODIgMTcuOTgyIDUuNjU1NzYgMTcuODA2NCA1LjY1NTc2IDE3LjZDNS42NTU3NiAxNy4zOTM2IDUuNzI4MiAxNy4yMTggNS44NzMwOSAxNy4wNzMxTDEwLjk0NjIgMTJMNS44NzMwOSA2LjkyNjg5QzUuNzM0NjIgNi43ODg0NCA1LjY2Mzc5IDYuNjE0NCA1LjY2MDU5IDYuNDA0NzlDNS42NTczNyA2LjE5NTE5IDUuNzI4MiA2LjAxNzk1IDUuODczMDkgNS44NzMwOUM2LjAxNzk1IDUuNzI4MiA2LjE5MzU5IDUuNjU1NzYgNi4zOTk5OSA1LjY1NTc2QzYuNjA2MzkgNS42NTU3NiA2Ljc4MjAyIDUuNzI4MiA2LjkyNjg5IDUuODczMDlMMTIgMTAuOTQ2MkwxNy4wNzMxIDUuODczMDlDMTcuMjExNSA1LjczNDYyIDE3LjM4NTYgNS42NjM3OSAxNy41OTUyIDUuNjYwNTlDMTcuODA0OCA1LjY1NzM3IDE3Ljk4MiA1LjcyODIgMTguMTI2OSA1Ljg3MzA5QzE4LjI3MTggNi4wMTc5NSAxOC4zNDQyIDYuMTkzNTkgMTguMzQ0MiA2LjM5OTk5QzE4LjM0NDIgNi42MDYzOSAxOC4yNzE4IDYuNzgyMDIgMTguMTI2OSA2LjkyNjg5TDEzLjA1MzggMTJMMTguMTI2OSAxNy4wNzMxQzE4LjI2NTQgMTcuMjExNSAxOC4zMzYyIDE3LjM4NTYgMTguMzM5NCAxNy41OTUyQzE4LjM0MjYgMTcuODA0OCAxOC4yNzE4IDE3Ljk4MiAxOC4xMjY5IDE4LjEyNjlDMTcuOTgyIDE4LjI3MTggMTcuODA2NCAxOC4zNDQyIDE3LjYgMTguMzQ0MkMxNy4zOTM2IDE4LjM0NDIgMTcuMjE4IDE4LjI3MTggMTcuMDczMSAxOC4xMjY5TDEyIDEzLjA1MzhaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsImltcG9ydCAkNnZZaFUkcmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNnZZaFUkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ2dlloVSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDZ2WWhVJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cbi8vIFdlIGhhdmUgcmVzb3J0ZWQgdG8gcmV0dXJuaW5nIHNsb3RzIGRpcmVjdGx5IHJhdGhlciB0aGFuIGV4cG9zaW5nIHByaW1pdGl2ZXMgdGhhdCBjYW4gdGhlblxuLy8gYmUgc2xvdHRlZCBsaWtlIGA8Q29sbGVjdGlvbkl0ZW0gYXM9e1Nsb3R9PuKApjwvQ29sbGVjdGlvbkl0ZW0+YC5cbi8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBpc3N1ZXMgd2l0aCBnZW5lcmljIHR5cGVzIHRoYXQgY2Fubm90IGJlIHN0YXRpY2FsbHkgYW5hbHlzZWRcbi8vIGR1ZSB0byBjcmVhdGluZyB0aGVtIGR5bmFtaWNhbGx5IHZpYSBjcmVhdGVDb2xsZWN0aW9uLlxuZnVuY3Rpb24gJGUwMmE3ZDljYjFkYzEyOGMkZXhwb3J0JGM3NDEyNWE4ZTNhZjZiYjIobmFtZSkge1xuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25Qcm92aWRlclxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBQUk9WSURFUl9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uUHJvdmlkZXInO1xuICAgIGNvbnN0IFtjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCwgY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUoUFJPVklERVJfTkFNRSk7XG4gICAgY29uc3QgW0NvbGxlY3Rpb25Qcm92aWRlckltcGwsIHVzZUNvbGxlY3Rpb25Db250ZXh0XSA9IGNyZWF0ZUNvbGxlY3Rpb25Db250ZXh0KFBST1ZJREVSX05BTUUsIHtcbiAgICAgICAgY29sbGVjdGlvblJlZjoge1xuICAgICAgICAgICAgY3VycmVudDogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBpdGVtTWFwOiBuZXcgTWFwKClcbiAgICB9KTtcbiAgICBjb25zdCBDb2xsZWN0aW9uUHJvdmlkZXIgPSAocHJvcHMpPT57XG4gICAgICAgIGNvbnN0IHsgc2NvcGU6IHNjb3BlICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHJlZiA9ICQ2dlloVSRyZWFjdC51c2VSZWYobnVsbCk7XG4gICAgICAgIGNvbnN0IGl0ZW1NYXAgPSAkNnZZaFUkcmVhY3QudXNlUmVmKG5ldyBNYXAoKSkuY3VycmVudDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29sbGVjdGlvblByb3ZpZGVySW1wbCwge1xuICAgICAgICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgICAgICAgaXRlbU1hcDogaXRlbU1hcCxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWY6IHJlZlxuICAgICAgICB9LCBjaGlsZHJlbik7XG4gICAgfTtcbiAgICAvKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oQ29sbGVjdGlvblByb3ZpZGVyLCB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBQUk9WSURFUl9OQU1FXG4gICAgfSk7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvblNsb3RcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgQ09MTEVDVElPTl9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25TbG90JztcbiAgICBjb25zdCBDb2xsZWN0aW9uU2xvdCA9IC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgc2NvcGU6IHNjb3BlICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChDT0xMRUNUSU9OX1NMT1RfTkFNRSwgc2NvcGUpO1xuICAgICAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNnZZaFUkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb2xsZWN0aW9uUmVmKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmNyZWF0ZUVsZW1lbnQoJDZ2WWhVJFNsb3QsIHtcbiAgICAgICAgICAgIHJlZjogY29tcG9zZWRSZWZzXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgICAvKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oQ29sbGVjdGlvblNsb3QsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IENPTExFQ1RJT05fU0xPVF9OQU1FXG4gICAgfSk7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvbkl0ZW1cbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgSVRFTV9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25JdGVtU2xvdCc7XG4gICAgY29uc3QgSVRFTV9EQVRBX0FUVFIgPSAnZGF0YS1yYWRpeC1jb2xsZWN0aW9uLWl0ZW0nO1xuICAgIGNvbnN0IENvbGxlY3Rpb25JdGVtU2xvdCA9IC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgc2NvcGU6IHNjb3BlICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uaXRlbURhdGEgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCByZWYgPSAkNnZZaFUkcmVhY3QudXNlUmVmKG51bGwpO1xuICAgICAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNnZZaFUkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KElURU1fU0xPVF9OQU1FLCBzY29wZSk7XG4gICAgICAgICQ2dlloVSRyZWFjdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIGNvbnRleHQuaXRlbU1hcC5zZXQocmVmLCB7XG4gICAgICAgICAgICAgICAgcmVmOiByZWYsXG4gICAgICAgICAgICAgICAgLi4uaXRlbURhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52b2lkIGNvbnRleHQuaXRlbU1hcC5kZWxldGUocmVmKVxuICAgICAgICAgICAgO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDZ2WWhVJHJlYWN0LmNyZWF0ZUVsZW1lbnQoJDZ2WWhVJFNsb3QsIHtcbiAgICAgICAgICAgIFtJVEVNX0RBVEFfQVRUUl06ICcnLFxuICAgICAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH0pO1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uSXRlbVNsb3QsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IElURU1fU0xPVF9OQU1FXG4gICAgfSk7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogdXNlQ29sbGVjdGlvblxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiB1c2VDb2xsZWN0aW9uKHNjb3BlKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChuYW1lICsgJ0NvbGxlY3Rpb25Db25zdW1lcicsIHNjb3BlKTtcbiAgICAgICAgY29uc3QgZ2V0SXRlbXMgPSAkNnZZaFUkcmVhY3QudXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25Ob2RlID0gY29udGV4dC5jb2xsZWN0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25Ob2RlKSByZXR1cm4gW107XG4gICAgICAgICAgICBjb25zdCBvcmRlcmVkTm9kZXMgPSBBcnJheS5mcm9tKGNvbGxlY3Rpb25Ob2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0lURU1fREFUQV9BVFRSfV1gKSk7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IEFycmF5LmZyb20oY29udGV4dC5pdGVtTWFwLnZhbHVlcygpKTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyZWRJdGVtcyA9IGl0ZW1zLnNvcnQoKGEsIGIpPT5vcmRlcmVkTm9kZXMuaW5kZXhPZihhLnJlZi5jdXJyZW50KSAtIG9yZGVyZWROb2Rlcy5pbmRleE9mKGIucmVmLmN1cnJlbnQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG9yZGVyZWRJdGVtcztcbiAgICAgICAgfSwgW1xuICAgICAgICAgICAgY29udGV4dC5jb2xsZWN0aW9uUmVmLFxuICAgICAgICAgICAgY29udGV4dC5pdGVtTWFwXG4gICAgICAgIF0pO1xuICAgICAgICByZXR1cm4gZ2V0SXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIFByb3ZpZGVyOiBDb2xsZWN0aW9uUHJvdmlkZXIsXG4gICAgICAgICAgICBTbG90OiBDb2xsZWN0aW9uU2xvdCxcbiAgICAgICAgICAgIEl0ZW1TbG90OiBDb2xsZWN0aW9uSXRlbVNsb3RcbiAgICAgICAgfSxcbiAgICAgICAgdXNlQ29sbGVjdGlvbixcbiAgICAgICAgY3JlYXRlQ29sbGVjdGlvblNjb3BlXG4gICAgXTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiBhcyBjcmVhdGVDb2xsZWN0aW9ufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkN0dqY2QkY3JlYXRlQ29udGV4dCwgY3JlYXRlRWxlbWVudCBhcyAkN0dqY2QkY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkN0dqY2QkdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXJlY3Rpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGM3NjBjMDlmZGQ1NTgzNTEgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBkaXI6IGRpciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVFbGVtZW50KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBkaXJcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyhsb2NhbERpcikge1xuICAgIGNvbnN0IGdsb2JhbERpciA9ICQ3R2pjZCR1c2VDb250ZXh0KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0KTtcbiAgICByZXR1cm4gbG9jYWxEaXIgfHwgZ2xvYmFsRGlyIHx8ICdsdHInO1xufVxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MTtcblxuXG5cblxuZXhwb3J0IHskZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyBhcyB1c2VEaXJlY3Rpb24sICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhIGFzIFByb3ZpZGVyLCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSBhcyBEaXJlY3Rpb25Qcm92aWRlcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDk4SXllJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDk4SXllJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAkOThJeWUkdXNlUmVmLCB1c2VTdGF0ZSBhcyAkOThJeWUkdXNlU3RhdGUsIHVzZUVmZmVjdCBhcyAkOThJeWUkdXNlRWZmZWN0LCB1c2VDYWxsYmFjayBhcyAkOThJeWUkdXNlQ2FsbGJhY2t9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge2NyZWF0ZUNvbGxlY3Rpb24gYXMgJDk4SXllJGNyZWF0ZUNvbGxlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvblwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDk4SXllJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ5OEl5ZSRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkOThJeWUkdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ5OEl5ZSRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICQ5OEl5ZSR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ5OEl5ZSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkOThJeWUkdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTID0gJ3JvdmluZ0ZvY3VzR3JvdXAub25FbnRyeUZvY3VzJztcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRFVkVOVF9PUFRJT05TID0ge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNhbmNlbGFibGU6IHRydWVcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSb3ZpbmdGb2N1c0dyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FID0gJ1JvdmluZ0ZvY3VzR3JvdXAnO1xuY29uc3QgWyRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbiwgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSAkOThJeWUkY3JlYXRlQ29sbGVjdGlvbigkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSk7XG5jb25zdCBbJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBDb250ZXh0LCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYzcxMDk0ODk1NTFhNGY0XSA9ICQ5OEl5ZSRjcmVhdGVDb250ZXh0U2NvcGUoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUsIFtcbiAgICAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXG5dKTtcbmNvbnN0IFskZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNQcm92aWRlciwgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZVJvdmluZ0ZvY3VzQ29udGV4dF0gPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUpO1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzggPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLlByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlUm92aW5nRm9jdXNHcm91cFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVJvdmluZ0ZvY3VzR3JvdXBcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c0dyb3VwSW1wbCwgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwgPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXA6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwICwgb3JpZW50YXRpb246IG9yaWVudGF0aW9uICwgbG9vcDogbG9vcCA9IGZhbHNlICwgZGlyOiBkaXIgLCBjdXJyZW50VGFiU3RvcElkOiBjdXJyZW50VGFiU3RvcElkUHJvcCAsIGRlZmF1bHRDdXJyZW50VGFiU3RvcElkOiBkZWZhdWx0Q3VycmVudFRhYlN0b3BJZCAsIG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZTogb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlICwgb25FbnRyeUZvY3VzOiBvbkVudHJ5Rm9jdXMgLCAuLi5ncm91cFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkOThJeWUkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ5OEl5ZSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQ5OEl5ZSR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbY3VycmVudFRhYlN0b3BJZCA9IG51bGwsIHNldEN1cnJlbnRUYWJTdG9wSWRdID0gJDk4SXllJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogY3VycmVudFRhYlN0b3BJZFByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0Q3VycmVudFRhYlN0b3BJZCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IFtpc1RhYmJpbmdCYWNrT3V0LCBzZXRJc1RhYmJpbmdCYWNrT3V0XSA9ICQ5OEl5ZSR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlRW50cnlGb2N1cyA9ICQ5OEl5ZSR1c2VDYWxsYmFja1JlZihvbkVudHJ5Rm9jdXMpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IGlzQ2xpY2tGb2N1c1JlZiA9ICQ5OEl5ZSR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtmb2N1c2FibGVJdGVtc0NvdW50LCBzZXRGb2N1c2FibGVJdGVtc0NvdW50XSA9ICQ5OEl5ZSR1c2VTdGF0ZSgwKTtcbiAgICAkOThJeWUkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcigkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMsIGhhbmRsZUVudHJ5Rm9jdXMpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT5ub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTLCBoYW5kbGVFbnRyeUZvY3VzKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVFbnRyeUZvY3VzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwLFxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG4gICAgICAgIGRpcjogZGlyZWN0aW9uLFxuICAgICAgICBsb29wOiBsb29wLFxuICAgICAgICBjdXJyZW50VGFiU3RvcElkOiBjdXJyZW50VGFiU3RvcElkLFxuICAgICAgICBvbkl0ZW1Gb2N1czogJDk4SXllJHVzZUNhbGxiYWNrKCh0YWJTdG9wSWQpPT5zZXRDdXJyZW50VGFiU3RvcElkKHRhYlN0b3BJZClcbiAgICAgICAgLCBbXG4gICAgICAgICAgICBzZXRDdXJyZW50VGFiU3RvcElkXG4gICAgICAgIF0pLFxuICAgICAgICBvbkl0ZW1TaGlmdFRhYjogJDk4SXllJHVzZUNhbGxiYWNrKCgpPT5zZXRJc1RhYmJpbmdCYWNrT3V0KHRydWUpXG4gICAgICAgICwgW10pLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQ6ICQ5OEl5ZSR1c2VDYWxsYmFjaygoKT0+c2V0Rm9jdXNhYmxlSXRlbXNDb3VudCgocHJldkNvdW50KT0+cHJldkNvdW50ICsgMVxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtdKSxcbiAgICAgICAgb25Gb2N1c2FibGVJdGVtUmVtb3ZlOiAkOThJeWUkdXNlQ2FsbGJhY2soKCk9PnNldEZvY3VzYWJsZUl0ZW1zQ291bnQoKHByZXZDb3VudCk9PnByZXZDb3VudCAtIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXSlcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCQ5OEl5ZSRQcmltaXRpdmUuZGl2LCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogaXNUYWJiaW5nQmFja091dCB8fCBmb2N1c2FibGVJdGVtc0NvdW50ID09PSAwID8gLTEgOiAwLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb25cbiAgICB9LCBncm91cFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25Nb3VzZURvd246ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbk1vdXNlRG93biwgKCk9PntcbiAgICAgICAgICAgIGlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uRm9jdXM6ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXZSBub3JtYWxseSB3b3VsZG4ndCBuZWVkIHRoaXMgY2hlY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja1xuICAgICAgICAgICAgLy8gdGhhdCB0aGUgZm9jdXMgaXMgb24gdGhlIGN1cnJlbnQgdGFyZ2V0IGFuZCBub3QgYnViYmxpbmcgdG8gaXQuXG4gICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2UgU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYnV0dG9ucyB3aGVuIGNsaWNrZWQsIGFuZFxuICAgICAgICAgICAgLy8gaW5zdGVhZCwgdGhlIHdyYXBwZXIgd2lsbCBnZXQgZm9jdXNlZCBhbmQgbm90IHRocm91Z2ggYSBidWJibGluZyBldmVudC5cbiAgICAgICAgICAgIGNvbnN0IGlzS2V5Ym9hcmRGb2N1cyA9ICFpc0NsaWNrRm9jdXNSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNLZXlib2FyZEZvY3VzICYmICFpc1RhYmJpbmdCYWNrT3V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnlGb2N1c0V2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUywgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChlbnRyeUZvY3VzRXZlbnQpO1xuICAgICAgICAgICAgICAgIGlmICghZW50cnlGb2N1c0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9Pml0ZW0uZm9jdXNhYmxlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKT0+aXRlbS5hY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKT0+aXRlbS5pZCA9PT0gY3VycmVudFRhYlN0b3BJZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJdGVtcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVOb2RlcyA9IGNhbmRpZGF0ZUl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkJsdXI6ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkJsdXIsICgpPT5zZXRJc1RhYmJpbmdCYWNrT3V0KGZhbHNlKVxuICAgICAgICApXG4gICAgfSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUm92aW5nRm9jdXNHcm91cEl0ZW1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRSA9ICdSb3ZpbmdGb2N1c0dyb3VwSXRlbSc7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0ID0gLyojX19QVVJFX18qLyAkOThJeWUkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCAsIGZvY3VzYWJsZTogZm9jdXNhYmxlID0gdHJ1ZSAsIGFjdGl2ZTogYWN0aXZlID0gZmFsc2UgLCB0YWJTdG9wSWQ6IHRhYlN0b3BJZCAsIC4uLml0ZW1Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgYXV0b0lkID0gJDk4SXllJHVzZUlkKCk7XG4gICAgY29uc3QgaWQgPSB0YWJTdG9wSWQgfHwgYXV0b0lkO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRJVEVNX05BTUUsIF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwKTtcbiAgICBjb25zdCBpc0N1cnJlbnRUYWJTdG9wID0gY29udGV4dC5jdXJyZW50VGFiU3RvcElkID09PSBpZDtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwKTtcbiAgICBjb25zdCB7IG9uRm9jdXNhYmxlSXRlbUFkZDogb25Gb2N1c2FibGVJdGVtQWRkICwgb25Gb2N1c2FibGVJdGVtUmVtb3ZlOiBvbkZvY3VzYWJsZUl0ZW1SZW1vdmUgIH0gPSBjb250ZXh0O1xuICAgICQ5OEl5ZSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgICAgICAgb25Gb2N1c2FibGVJdGVtQWRkKCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9Pm9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGZvY3VzYWJsZSxcbiAgICAgICAgb25Gb2N1c2FibGVJdGVtQWRkLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1SZW1vdmVcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbi5JdGVtU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgZm9jdXNhYmxlOiBmb2N1c2FibGUsXG4gICAgICAgIGFjdGl2ZTogYWN0aXZlXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkOThJeWUkUHJpbWl0aXZlLnNwYW4sICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiBpc0N1cnJlbnRUYWJTdG9wID8gMCA6IC0xLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogY29udGV4dC5vcmllbnRhdGlvblxuICAgIH0sIGl0ZW1Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25Nb3VzZURvd246ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbk1vdXNlRG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gV2UgcHJldmVudCBmb2N1c2luZyBub24tZm9jdXNhYmxlIGl0ZW1zIG9uIGBtb3VzZWRvd25gLlxuICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGl0ZW0gaGFzIHRhYkluZGV4PXstMX0sIHRoYXQgb25seSBtZWFucyB0YWtlIGl0IG91dCBvZiB0aGUgdGFiIG9yZGVyLlxuICAgICAgICAgICAgaWYgKCFmb2N1c2FibGUpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGEgYnV0dG9uIHdoZW4gY2xpY2tlZCBzbyB3ZSBydW4gb3VyIGxvZ2ljIG9uIG1vdXNlZG93biBhbHNvXG4gICAgICAgICAgICBlbHNlIGNvbnRleHQub25JdGVtRm9jdXMoaWQpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpPT5jb250ZXh0Lm9uSXRlbUZvY3VzKGlkKVxuICAgICAgICApLFxuICAgICAgICBvbktleURvd246ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5vbkl0ZW1TaGlmdFRhYigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzSW50ZW50ID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldEZvY3VzSW50ZW50KGV2ZW50LCBjb250ZXh0Lm9yaWVudGF0aW9uLCBjb250ZXh0LmRpcik7XG4gICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9Pml0ZW0uZm9jdXNhYmxlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgY2FuZGlkYXRlTm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdsYXN0JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvY3VzSW50ZW50ID09PSAncHJldicgfHwgZm9jdXNJbnRlbnQgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVOb2Rlcy5pbmRleE9mKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2RlcyA9IGNvbnRleHQubG9vcCA/ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR3cmFwQXJyYXkoY2FuZGlkYXRlTm9kZXMsIGN1cnJlbnRJbmRleCArIDEpIDogY2FuZGlkYXRlTm9kZXMuc2xpY2UoY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAgICovIHNldFRpbWVvdXQoKCk9PiRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0KGNhbmRpZGF0ZU5vZGVzKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8vIHByZXR0aWVyLWlnbm9yZVxuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJE1BUF9LRVlfVE9fRk9DVVNfSU5URU5UID0ge1xuICAgIEFycm93TGVmdDogJ3ByZXYnLFxuICAgIEFycm93VXA6ICdwcmV2JyxcbiAgICBBcnJvd1JpZ2h0OiAnbmV4dCcsXG4gICAgQXJyb3dEb3duOiAnbmV4dCcsXG4gICAgUGFnZVVwOiAnZmlyc3QnLFxuICAgIEhvbWU6ICdmaXJzdCcsXG4gICAgUGFnZURvd246ICdsYXN0JyxcbiAgICBFbmQ6ICdsYXN0J1xufTtcbmZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXREaXJlY3Rpb25Bd2FyZUtleShrZXksIGRpcikge1xuICAgIGlmIChkaXIgIT09ICdydGwnKSByZXR1cm4ga2V5O1xuICAgIHJldHVybiBrZXkgPT09ICdBcnJvd0xlZnQnID8gJ0Fycm93UmlnaHQnIDoga2V5ID09PSAnQXJyb3dSaWdodCcgPyAnQXJyb3dMZWZ0JyA6IGtleTtcbn1cbmZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXRGb2N1c0ludGVudChldmVudCwgb3JpZW50YXRpb24sIGRpcikge1xuICAgIGNvbnN0IGtleSA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXREaXJlY3Rpb25Bd2FyZUtleShldmVudC5rZXksIGRpcik7XG4gICAgaWYgKG9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIFtcbiAgICAgICAgJ0Fycm93TGVmdCcsXG4gICAgICAgICdBcnJvd1JpZ2h0J1xuICAgIF0uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAob3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiBbXG4gICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgJ0Fycm93RG93bidcbiAgICBdLmluY2x1ZGVzKGtleSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICRkN2JkZmI5ZWIwZmRmMzExJHZhciRNQVBfS0VZX1RPX0ZPQ1VTX0lOVEVOVFtrZXldO1xufVxuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlcykge1xuICAgIGNvbnN0IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKXtcbiAgICAgICAgLy8gaWYgZm9jdXMgaXMgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IHRvIGdvLCB3ZSBkb24ndCB3YW50IHRvIGtlZXAgZ29pbmcgdGhyb3VnaCB0aGUgY2FuZGlkYXRlc1xuICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgICAgICBjYW5kaWRhdGUuZm9jdXMoKTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgfVxufVxuLyoqXG4gKiBXcmFwcyBhbiBhcnJheSBhcm91bmQgaXRzZWxmIGF0IGEgZ2l2ZW4gc3RhcnQgaW5kZXhcbiAqIEV4YW1wbGU6IGB3cmFwQXJyYXkoWydhJywgJ2InLCAnYycsICdkJ10sIDIpID09PSBbJ2MnLCAnZCcsICdhJywgJ2InXWBcbiAqLyBmdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkd3JhcEFycmF5KGFycmF5LCBzdGFydEluZGV4KSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoXywgaW5kZXgpPT5hcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF1cbiAgICApO1xufVxuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzODtcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyID0gJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NDtcblxuXG5cblxuZXhwb3J0IHskZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYzcxMDk0ODk1NTFhNGY0IGFzIGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzggYXMgUm92aW5nRm9jdXNHcm91cCwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCBhcyBSb3ZpbmdGb2N1c0dyb3VwSXRlbSwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgYXMgSXRlbX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDFJSHprJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDFJSHprJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAkMUlIemskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDFJSHprJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQxSUh6ayRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgYXMgJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSwgUm9vdCBhcyAkMUlIemskUm9vdCwgSXRlbSBhcyAkMUlIemskSXRlbX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1yb3ZpbmctZm9jdXNcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDFJSHprJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkMUlIemskUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VEaXJlY3Rpb24gYXMgJDFJSHprJHVzZURpcmVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDFJSHprJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDFJSHprJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUgPSAnVGFicyc7XG5jb25zdCBbJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkMzU1ZjViZDIwOWQ3YjEzYV0gPSAkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlKCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUsIFtcbiAgICAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlXG5dKTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlKCk7XG5jb25zdCBbJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciwgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0XSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRjcmVhdGVUYWJzQ29udGV4dCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FKTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiMjUzOWJlZDUwMjNjMjFjID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZVByb3AgLCBvblZhbHVlQ2hhbmdlOiBvblZhbHVlQ2hhbmdlICwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCcgLCBkaXI6IGRpciAsIGFjdGl2YXRpb25Nb2RlOiBhY3RpdmF0aW9uTW9kZSA9ICdhdXRvbWF0aWMnICwgLi4udGFic1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkMUlIemskdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiB2YWx1ZVByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvblZhbHVlQ2hhbmdlLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlXG4gICAgfSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVRhYnMsXG4gICAgICAgIGJhc2VJZDogJDFJSHprJHVzZUlkKCksXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgb25WYWx1ZUNoYW5nZTogc2V0VmFsdWUsXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGFjdGl2YXRpb25Nb2RlOiBhY3RpdmF0aW9uTW9kZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGRpcjogZGlyZWN0aW9uLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb25cbiAgICB9LCB0YWJzUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzTGlzdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRSA9ICdUYWJzTGlzdCc7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSA9IC8qI19fUFVSRV9fKi8gJDFJSHprJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVGFiczogX19zY29wZVRhYnMgLCBsb29wOiBsb29wID0gdHJ1ZSAsIC4uLmxpc3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VUYWJzQ29udGV4dCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVRhYnMpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRSb290LCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIG9yaWVudGF0aW9uOiBjb250ZXh0Lm9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBsb29wOiBsb29wXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogY29udGV4dC5vcmllbnRhdGlvblxuICAgIH0sIGxpc3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVFJJR0dFUl9OQU1FID0gJ1RhYnNUcmlnZ2VyJztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlKF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZVRyaWdnZXJJZChjb250ZXh0LmJhc2VJZCwgdmFsdWUpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlID09PSBjb250ZXh0LnZhbHVlO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRJdGVtLCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIGZvY3VzYWJsZTogIWRpc2FibGVkLFxuICAgICAgICBhY3RpdmU6IGlzU2VsZWN0ZWRcbiAgICB9KSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmJ1dHRvbiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJ0YWJcIixcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGlzU2VsZWN0ZWQsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICBpZDogdHJpZ2dlcklkXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBvbmx5IGNhbGwgaGFuZGxlciBpZiBpdCdzIHRoZSBsZWZ0IGJ1dHRvbiAobW91c2Vkb3duIGdldHMgdHJpZ2dlcmVkIGJ5IGFsbCBtb3VzZSBidXR0b25zKVxuICAgICAgICAgICAgLy8gYnV0IG5vdCB3aGVuIHRoZSBjb250cm9sIGtleSBpcyBwcmVzc2VkIChhdm9pZGluZyBNYWNPUyByaWdodCBjbGljaylcbiAgICAgICAgICAgIGlmICghZGlzYWJsZWQgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmN0cmxLZXkgPT09IGZhbHNlKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgZWxzZSAvLyBwcmV2ZW50IGZvY3VzIHRvIGF2b2lkIGFjY2lkZW50YWwgYWN0aXZhdGlvblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAnICcsXG4gICAgICAgICAgICAgICAgJ0VudGVyJ1xuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpPT57XG4gICAgICAgICAgICAvLyBoYW5kbGUgXCJhdXRvbWF0aWNcIiBhY3RpdmF0aW9uIGlmIG5lY2Vzc2FyeVxuICAgICAgICAgICAgLy8gaWUuIGFjdGl2YXRlIHRhYiBmb2xsb3dpbmcgZm9jdXNcbiAgICAgICAgICAgIGNvbnN0IGlzQXV0b21hdGljQWN0aXZhdGlvbiA9IGNvbnRleHQuYWN0aXZhdGlvbk1vZGUgIT09ICdtYW51YWwnO1xuICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGVkICYmICFkaXNhYmxlZCAmJiBpc0F1dG9tYXRpY0FjdGl2YXRpb24pIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGFic0NvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRSA9ICdUYWJzQ29udGVudCc7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYiA9IC8qI19fUFVSRV9fKi8gJDFJSHprJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVGFiczogX19zY29wZVRhYnMgLCB2YWx1ZTogdmFsdWUgLCBmb3JjZU1vdW50OiBmb3JjZU1vdW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZVRyaWdnZXJJZChjb250ZXh0LmJhc2VJZCwgdmFsdWUpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlID09PSBjb250ZXh0LnZhbHVlO1xuICAgIGNvbnN0IGlzTW91bnRBbmltYXRpb25QcmV2ZW50ZWRSZWYgPSAkMUlIemskdXNlUmVmKGlzU2VsZWN0ZWQpO1xuICAgICQxSUh6ayR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgckFGID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5pc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gKCk9PmNhbmNlbEFuaW1hdGlvbkZyYW1lKHJBRilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBpc1NlbGVjdGVkXG4gICAgfSwgKHsgcHJlc2VudDogcHJlc2VudCAgfSk9Pi8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgICAgICBcImRhdGEtc3RhdGVcIjogaXNTZWxlY3RlZCA/ICdhY3RpdmUnIDogJ2luYWN0aXZlJyxcbiAgICAgICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uLFxuICAgICAgICAgICAgcm9sZTogXCJ0YWJwYW5lbFwiLFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdHJpZ2dlcklkLFxuICAgICAgICAgICAgaGlkZGVuOiAhcHJlc2VudCxcbiAgICAgICAgICAgIGlkOiBjb250ZW50SWQsXG4gICAgICAgICAgICB0YWJJbmRleDogMFxuICAgICAgICB9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZi5jdXJyZW50ID8gJzBzJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgcHJlc2VudCAmJiBjaGlsZHJlbilcbiAgICApO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGJhc2VJZCwgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7YmFzZUlkfS10cmlnZ2VyLSR7dmFsdWV9YDtcbn1cbmZ1bmN0aW9uICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGJhc2VJZCwgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7YmFzZUlkfS1jb250ZW50LSR7dmFsdWV9YDtcbn1cbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWM7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSA9ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkODExNGI5ZmRmZGY5ZjNiYTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmI7XG5cblxuXG5cbmV4cG9ydCB7JDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EgYXMgY3JlYXRlVGFic1Njb3BlLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYyBhcyBUYWJzLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSBhcyBUYWJzTGlzdCwgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEgYXMgVGFic1RyaWdnZXIsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZDkwNWQ3MGU4ZmQyZWJiIGFzIFRhYnNDb250ZW50LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSBhcyBMaXN0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlUmVmIGFzICQ4THZ2SyR1c2VSZWYsIHVzZU1lbW8gYXMgJDhMdnZLJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbmZ1bmN0aW9uICQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiKHZhbHVlKSB7XG4gICAgY29uc3QgcmVmID0gJDhMdnZLJHVzZVJlZih7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcHJldmlvdXM6IHZhbHVlXG4gICAgfSk7IC8vIFdlIGNvbXBhcmUgdmFsdWVzIGJlZm9yZSBtYWtpbmcgYW4gdXBkYXRlIHRvIGVuc3VyZSB0aGF0XG4gICAgLy8gYSBjaGFuZ2UgaGFzIGJlZW4gbWFkZS4gVGhpcyBlbnN1cmVzIHRoZSBwcmV2aW91cyB2YWx1ZSBpc1xuICAgIC8vIHBlcnNpc3RlZCBjb3JyZWN0bHkgYmV0d2VlbiByZW5kZXJzLlxuICAgIHJldHVybiAkOEx2dkskdXNlTWVtbygoKT0+e1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudC5wcmV2aW91cyA9IHJlZi5jdXJyZW50LnZhbHVlO1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmLmN1cnJlbnQucHJldmlvdXM7XG4gICAgfSwgW1xuICAgICAgICB2YWx1ZVxuICAgIF0pO1xufVxuXG5cblxuXG5leHBvcnQgeyQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIGFzIHVzZVByZXZpb3VzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlU3RhdGUgYXMgJDlneUdSJHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmZ1bmN0aW9uICRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4KGVsZW1lbnQpIHtcbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSAkOWd5R1IkdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBwcm92aWRlIHNpemUgYXMgZWFybHkgYXMgcG9zc2libGVcbiAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgb2JzZXJ2ZSB0aGUgb25lIGVsZW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIHRoZVxuICAgICAgICAgICAgICAgIC8vIGFycmF5XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg7XG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoJ2JvcmRlckJveFNpemUnIGluIGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemVFbnRyeSA9IGVudHJ5Wydib3JkZXJCb3hTaXplJ107IC8vIGlyb24gb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IEFycmF5LmlzQXJyYXkoYm9yZGVyU2l6ZUVudHJ5KSA/IGJvcmRlclNpemVFbnRyeVswXSA6IGJvcmRlclNpemVFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplWydpbmxpbmVTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbJ2Jsb2NrU2l6ZSddO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgYGJvcmRlckJveFNpemVgXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbGN1bGF0ZSBpdCBvdXJzZWx2ZXMgdG8gZ2V0IHRoZSBjb3JyZWN0IGJvcmRlciBib3guXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGJveDogJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+cmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0gZWxzZSAvLyBXZSBvbmx5IHdhbnQgdG8gcmVzZXQgdG8gYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWxlbWVudCBiZWNvbWVzIGBudWxsYCxcbiAgICAgICAgLy8gbm90IGlmIGl0IGNoYW5nZXMgdG8gYW5vdGhlciBlbGVtZW50LlxuICAgICAgICBzZXRTaXplKHVuZGVmaW5lZCk7XG4gICAgfSwgW1xuICAgICAgICBlbGVtZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIHNpemU7XG59XG5cblxuXG5cbmV4cG9ydCB7JGRiNmMzNDg1MTUwYjhlNjYkZXhwb3J0JDFhYjdhZTcxNDY5OGM0YjggYXMgdXNlU2l6ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGlyUElsJGZvcndhcmRSZWYsIHVzZVN0YXRlIGFzICRpclBJbCR1c2VTdGF0ZSwgdXNlUmVmIGFzICRpclBJbCR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGlyUElsJGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCBhcyAkaXJQSWwkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJGlyUElsJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJGlyUElsJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICRpclBJbCRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VQcmV2aW91cyBhcyAkaXJQSWwkdXNlUHJldmlvdXN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzXCI7XG5pbXBvcnQge3VzZVNpemUgYXMgJGlyUElsJHVzZVNpemV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXNpemVcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRpclBJbCRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFN3aXRjaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUgPSAnU3dpdGNoJztcbmNvbnN0IFskNmJlNDk2NmZkOWJiYzY5OCR2YXIkY3JlYXRlU3dpdGNoQ29udGV4dCwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDNdID0gJGlyUElsJGNyZWF0ZUNvbnRleHRTY29wZSgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUpO1xuY29uc3QgWyQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTd2l0Y2hQcm92aWRlciwgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHRdID0gJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGNyZWF0ZVN3aXRjaENvbnRleHQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FKTtcbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyID0gLyojX19QVVJFX18qLyAkaXJQSWwkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTd2l0Y2g6IF9fc2NvcGVTd2l0Y2ggLCBuYW1lOiBuYW1lICwgY2hlY2tlZDogY2hlY2tlZFByb3AgLCBkZWZhdWx0Q2hlY2tlZDogZGVmYXVsdENoZWNrZWQgLCByZXF1aXJlZDogcmVxdWlyZWQgLCBkaXNhYmxlZDogZGlzYWJsZWQgLCB2YWx1ZTogdmFsdWUgPSAnb24nICwgb25DaGVja2VkQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2UgLCAuLi5zd2l0Y2hQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2J1dHRvbiwgc2V0QnV0dG9uXSA9ICRpclBJbCR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkaXJQSWwkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRCdXR0b24obm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmID0gJGlyUElsJHVzZVJlZihmYWxzZSk7IC8vIFdlIHNldCB0aGlzIHRvIHRydWUgYnkgZGVmYXVsdCBzbyB0aGF0IGV2ZW50cyBidWJibGUgdG8gZm9ybXMgd2l0aG91dCBKUyAoU1NSKVxuICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSBidXR0b24gPyBCb29sZWFuKGJ1dHRvbi5jbG9zZXN0KCdmb3JtJykpIDogdHJ1ZTtcbiAgICBjb25zdCBbY2hlY2tlZCA9IGZhbHNlLCBzZXRDaGVja2VkXSA9ICRpclBJbCR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IGNoZWNrZWRQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdENoZWNrZWQsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU3dpdGNoUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTd2l0Y2gsXG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJGlyUElsJFByaW1pdGl2ZS5idXR0b24sICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIHJvbGU6IFwic3dpdGNoXCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWQsXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiByZXF1aXJlZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRnZXRTdGF0ZShjaGVja2VkKSxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGRpc2FibGVkID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfSwgc3dpdGNoUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uQ2xpY2s6ICRpclBJbCRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBzZXRDaGVja2VkKChwcmV2Q2hlY2tlZCk9PiFwcmV2Q2hlY2tlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpc0Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgICAgICAgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCA9IGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7IC8vIGlmIHN3aXRjaCBpcyBpbiBhIGZvcm0sIHN0b3AgcHJvcGFnYXRpb24gZnJvbSB0aGUgYnV0dG9uIHNvIHRoYXQgd2Ugb25seSBwcm9wYWdhdGVcbiAgICAgICAgICAgICAgICAvLyBvbmUgY2xpY2sgZXZlbnQgKGZyb20gdGhlIGlucHV0KS4gV2UgcHJvcGFnYXRlIGNoYW5nZXMgZnJvbSBhbiBpbnB1dCBzbyB0aGF0IG5hdGl2ZVxuICAgICAgICAgICAgICAgIC8vIGZvcm0gdmFsaWRhdGlvbiB3b3JrcyBhbmQgZm9ybSBldmVudHMgcmVmbGVjdCBzd2l0Y2ggdXBkYXRlcy5cbiAgICAgICAgICAgICAgICBpZiAoIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSwgaXNGb3JtQ29udHJvbCAmJiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRCdWJibGVJbnB1dCwge1xuICAgICAgICBjb250cm9sOiBidXR0b24sXG4gICAgICAgIGJ1YmJsZXM6ICFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50LFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkIC8vIFdlIHRyYW5zZm9ybSBiZWNhdXNlIHRoZSBpbnB1dCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYnV0IHdlIGhhdmVcbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2Miwge1xuICAgIGRpc3BsYXlOYW1lOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU3dpdGNoVGh1bWJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFRIVU1CX05BTUUgPSAnU3dpdGNoVGh1bWInO1xuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDYgPSAvKiNfX1BVUkVfXyovICRpclBJbCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVN3aXRjaDogX19zY29wZVN3aXRjaCAsIC4uLnRodW1iUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkdXNlU3dpdGNoQ29udGV4dCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkVEhVTUJfTkFNRSwgX19zY29wZVN3aXRjaCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJGlyUElsJFByaW1pdGl2ZS5zcGFuLCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlKGNvbnRleHQuY2hlY2tlZCksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCB0aHVtYlByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDYsIHtcbiAgICBkaXNwbGF5TmFtZTogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFRIVU1CX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBjb25zdCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkQnViYmxlSW5wdXQgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBjb250cm9sOiBjb250cm9sICwgY2hlY2tlZDogY2hlY2tlZCAsIGJ1YmJsZXM6IGJ1YmJsZXMgPSB0cnVlICwgLi4uaW5wdXRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gJGlyUElsJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2Q2hlY2tlZCA9ICRpclBJbCR1c2VQcmV2aW91cyhjaGVja2VkKTtcbiAgICBjb25zdCBjb250cm9sU2l6ZSA9ICRpclBJbCR1c2VTaXplKGNvbnRyb2wpOyAvLyBCdWJibGUgY2hlY2tlZCBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgICRpclBJbCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaW5wdXQgPSByZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaW5wdXRQcm90byA9IHdpbmRvdy5IVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaW5wdXRQcm90bywgJ2NoZWNrZWQnKTtcbiAgICAgICAgY29uc3Qgc2V0Q2hlY2tlZCA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgICAgICBpZiAocHJldkNoZWNrZWQgIT09IGNoZWNrZWQgJiYgc2V0Q2hlY2tlZCkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJywge1xuICAgICAgICAgICAgICAgIGJ1YmJsZXM6IGJ1YmJsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0Q2hlY2tlZC5jYWxsKGlucHV0LCBjaGVja2VkKTtcbiAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcmV2Q2hlY2tlZCxcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgYnViYmxlc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIGRlZmF1bHRDaGVja2VkOiBjaGVja2VkXG4gICAgfSwgaW5wdXRQcm9wcywge1xuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAuLi5jb250cm9sU2l6ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIG1hcmdpbjogMFxuICAgICAgICB9XG4gICAgfSkpO1xufTtcbmZ1bmN0aW9uICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRnZXRTdGF0ZShjaGVja2VkKSB7XG4gICAgcmV0dXJuIGNoZWNrZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJztcbn1cbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjI7XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNjUyMTQzM2VkMTVhMzRkYiA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2O1xuXG5cblxuXG5leHBvcnQgeyQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRjZjdmNWYxN2Y2OWNiZDQzIGFzIGNyZWF0ZVN3aXRjaFNjb3BlLCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiBhcyBTd2l0Y2gsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2IGFzIFN3aXRjaFRodW1iLCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNjUyMTQzM2VkMTVhMzRkYiBhcyBUaHVtYn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJmdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoRnJvbUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5cbmZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneCcgOiAneSc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1tsZW5ndGhdIC8gMjtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IG1haW5BeGlzID09PSAneCc7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgLi4ucmVjdCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgLi4ucmVjdHMuZmxvYXRpbmcsXG4gICAgeCxcbiAgICB5XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcblxuZnVuY3Rpb24gd2l0aGluKG1pbiQxLCB2YWx1ZSwgbWF4JDEpIHtcbiAgcmV0dXJuIG1heChtaW4kMSwgbWluKHZhbHVlLCBtYXgkMSkpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50c1xuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSB3aXRoaW4obWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRoaXMgc3RvcHMgYHNoaWZ0KClgIGZyb20gdGFraW5nIGFjdGlvbiwgYnV0IGNhblxuICAgIC8vIGJlIHdvcmtlZCBhcm91bmQgYnkgY2FsbGluZyBpdCBhZ2FpbiBhZnRlciB0aGUgYGFycm93KClgIGlmIGRlc2lyZWQuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBtaW4kMSAtIGNlbnRlciA6IG1heCAtIGNlbnRlciA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdIC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxsUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItc3RhcnRcIiwgc2lkZSArIFwiLWVuZFwiKSwgW10pO1xuXG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuXG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogbWFpbkFsaWdubWVudFNpZGUsXG4gICAgY3Jvc3M6IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKVxuICB9O1xufVxuXG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IGFsbFBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IGFsbFBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50c1tjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW4sXG4gICAgICAgIGNyb3NzXG4gICAgICB9ID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHNbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1ttYWluXSwgb3ZlcmZsb3dbY3Jvc3NdXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJykge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG1haW4sXG4gICAgICAgICAgY3Jvc3NcbiAgICAgICAgfSA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W21haW5dLCBvdmVyZmxvd1tjcm9zc10pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkbWFwJHNvO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRtYXAkc28gPSBvdmVyZmxvd3NEYXRhLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRtYXAkc29bMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gJ3gnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkgPT09ICd4JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsLFxuICAgIC4uLnJhd1ZhbHVlXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IGRpZmZDb29yZHNcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Q3Jvc3NBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSB3aXRoaW4obWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gd2l0aGluKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGF4aXMgPT09ICd4JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV07XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVXaWR0aCwgbWF4aW11bUNsaXBwaW5nV2lkdGgpIDogbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0LCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpIDogbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCByZWN0VG9DbGllbnRSZWN0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIHJldHVybiBpc05vZGUobm9kZSkgPyAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6ICcnO1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gQnJvd3NlcnMgd2l0aG91dCBgU2hhZG93Um9vdGAgc3VwcG9ydC5cbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgY29uc3Qgc2FmYXJpID0gaXNTYWZhcmkoKTtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgIXNhZmFyaSAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXNhZmFyaSAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5cbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBmYWxsYmFjazogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmNvbnN0IEZBTExCQUNLX1NDQUxFID0ge1xuICB4OiAxLFxuICB5OiAxXG59O1xuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIEZBTExCQUNLX1NDQUxFO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGZhbGxiYWNrXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9IChmYWxsYmFjayA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoZmFsbGJhY2sgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgdmFyIF93aW4kdmlzdWFsVmlld3BvcnQsIF93aW4kdmlzdWFsVmlld3BvcnQyO1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IHRydWU7XG4gIH1cbiAgaWYgKCFpc1NhZmFyaSgpKSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50ID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93O1xuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IHdpbikge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiAoKF93aW4kdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luJHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQpIHx8IDAsXG4gICAgeTogKChfd2luJHZpc3VhbFZpZXdwb3J0MiA9IHdpbi52aXN1YWxWaWV3cG9ydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW4kdmlzdWFsVmlld3BvcnQyLm9mZnNldFRvcCkgfHwgMFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IEZBTExCQUNLX1NDQUxFO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gd2luLmZyYW1lRWxlbWVudDtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSB3aW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBpZnJhbWVSZWN0LnggKz0gKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgaWZyYW1lUmVjdC55ICs9IChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGlmcmFtZVJlY3QueDtcbiAgICAgIHkgKz0gaWZyYW1lUmVjdC55O1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKS5mcmFtZUVsZW1lbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICByZXR1cm4gKChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnBhZ2VYT2Zmc2V0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5wYWdlWU9mZnNldFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgc3RyYXRlZ3kgIT09ICdmaXhlZCcpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUkMShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIC8vIGBnZXRQYXJlbnROb2RlYCB3aWxsIG5ldmVyIHJldHVybiBhIGBEb2N1bWVudGAgZHVlIHRvIHRoZSBmYWxsYmFja1xuICAgIC8vIGNoZWNrLCBzbyBpdCdzIGVpdGhlciB0aGUgPGh0bWw+IG9yIDxib2R5PiBlbGVtZW50LlxuICAgIHJldHVybiBwYXJlbnROb2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IpKTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1NhZmFyaSgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgLi4uY2xpcHBpbmdBbmNlc3RvcixcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZSQxKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50KS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUkMShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUkMShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgaXNFbGVtZW50LFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0U2NhbGUsXG4gIGFzeW5jIGdldEVsZW1lbnRSZWN0cyhfcmVmKSB7XG4gICAgbGV0IHtcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgc3RyYXRlZ3lcbiAgICB9ID0gX3JlZjtcbiAgICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQocmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihmbG9hdGluZyksIHN0cmF0ZWd5KSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIC4uLihhd2FpdCBnZXREaW1lbnNpb25zRm4oZmxvYXRpbmcpKVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldENsaWVudFJlY3RzOiBlbGVtZW50ID0+IEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKSxcbiAgaXNSVEw6IGVsZW1lbnQgPT4gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCdcbn07XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0cnVlLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAvLyBpZ25vcmVzIFdpbmRvdywgY2hlY2tzIGZvciBbb2JqZWN0IFZpc3VhbFZpZXdwb3J0XVxuICAgIGNvbnN0IGlzVmlzdWFsVmlld3BvcnQgPSAhaXNFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci50b1N0cmluZygpLmluY2x1ZGVzKCdWJyk7XG4gICAgaWYgKGFuY2VzdG9yU2Nyb2xsICYmIChhbmltYXRpb25GcmFtZSA/IGlzVmlzdWFsVmlld3BvcnQgOiB0cnVlKSkge1xuICAgICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICAgIHBhc3NpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgbGV0IG9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpc0VsZW1lbnQocmVmZXJlbmNlKSAmJiAhYW5pbWF0aW9uRnJhbWUgJiYgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UpO1xuICAgIGlmICghaXNFbGVtZW50KHJlZmVyZW5jZSkgJiYgcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpO1xuICAgIH1cbiAgICBvYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX29ic2VydmVyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIChfb2JzZXJ2ZXIgPSBvYnNlcnZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmdcbiAqIHN0cmF0ZWd5LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4ge1xuICBmdW5jdGlvbiBpc1JlZih2YWx1ZSkge1xuICAgIHJldHVybiB7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY3VycmVudCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmdcbiAgICAgIH0gPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMoc3RhdGUpIDogb3B0aW9ucztcbiAgICAgIGlmIChlbGVtZW50ICYmIGlzUmVmKGVsZW1lbnQpKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQuY3VycmVudCxcbiAgICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgICB9KS5mbihzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoLCBpLCBrZXlzO1xuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICghe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmIChrZXkgPT09ICdfb3duZXInICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdFxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIHJlZmVyZW5jZTogZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZzogZXh0ZXJuYWxGbG9hdGluZ1xuICAgIH0gPSB7fSxcbiAgICB0cmFuc2Zvcm0gPSB0cnVlLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkLFxuICAgIG9wZW5cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgc3RyYXRlZ3ksXG4gICAgcGxhY2VtZW50LFxuICAgIG1pZGRsZXdhcmVEYXRhOiB7fSxcbiAgICBpc1Bvc2l0aW9uZWQ6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBbbGF0ZXN0TWlkZGxld2FyZSwgc2V0TGF0ZXN0TWlkZGxld2FyZV0gPSBSZWFjdC51c2VTdGF0ZShtaWRkbGV3YXJlKTtcbiAgaWYgKCFkZWVwRXF1YWwobGF0ZXN0TWlkZGxld2FyZSwgbWlkZGxld2FyZSkpIHtcbiAgICBzZXRMYXRlc3RNaWRkbGV3YXJlKG1pZGRsZXdhcmUpO1xuICB9XG4gIGNvbnN0IFtfcmVmZXJlbmNlLCBfc2V0UmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbX2Zsb2F0aW5nLCBfc2V0RmxvYXRpbmddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9IHJlZmVyZW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICByZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgIH1cbiAgfSwgW19zZXRSZWZlcmVuY2VdKTtcbiAgY29uc3Qgc2V0RmxvYXRpbmcgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgfVxuICB9LCBbX3NldEZsb2F0aW5nXSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gZXh0ZXJuYWxSZWZlcmVuY2UgfHwgX3JlZmVyZW5jZTtcbiAgY29uc3QgZmxvYXRpbmdFbCA9IGV4dGVybmFsRmxvYXRpbmcgfHwgX2Zsb2F0aW5nO1xuICBjb25zdCByZWZlcmVuY2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRhUmVmID0gUmVhY3QudXNlUmVmKGRhdGEpO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiB0cnVlXG4gICAgICB9O1xuICAgICAgaWYgKGlzTW91bnRlZFJlZi5jdXJyZW50ICYmICFkZWVwRXF1YWwoZGF0YVJlZi5jdXJyZW50LCBmdWxsRGF0YSkpIHtcbiAgICAgICAgZGF0YVJlZi5jdXJyZW50ID0gZnVsbERhdGE7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0RGF0YShmdWxsRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbbGF0ZXN0TWlkZGxld2FyZSwgcGxhY2VtZW50LCBzdHJhdGVneSwgcGxhdGZvcm1SZWZdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChvcGVuID09PSBmYWxzZSAmJiBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICBzZXREYXRhKGRhdGEgPT4gKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAocmVmZXJlbmNlRWwpIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlRWw7XG4gICAgaWYgKGZsb2F0aW5nRWwpIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBmbG9hdGluZ0VsO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiBmbG9hdGluZ0VsKSB7XG4gICAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gd2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudChyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsLCB1cGRhdGUsIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmXSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VSZWYsXG4gICAgZmxvYXRpbmc6IGZsb2F0aW5nUmVmLFxuICAgIHNldFJlZmVyZW5jZSxcbiAgICBzZXRGbG9hdGluZ1xuICB9KSwgW3NldFJlZmVyZW5jZSwgc2V0RmxvYXRpbmddKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VFbCxcbiAgICBmbG9hdGluZzogZmxvYXRpbmdFbFxuICB9KSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsXSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDBcbiAgICB9O1xuICAgIGlmICghZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS54KTtcbiAgICBjb25zdCB5ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS55KTtcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZWxlbWVudHMuZmxvYXRpbmcpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiB4LFxuICAgICAgdG9wOiB5XG4gICAgfTtcbiAgfSwgW3N0cmF0ZWd5LCB0cmFuc2Zvcm0sIGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngsIGRhdGEueV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLmRhdGEsXG4gICAgdXBkYXRlLFxuICAgIHJlZnMsXG4gICAgZWxlbWVudHMsXG4gICAgZmxvYXRpbmdTdHlsZXNcbiAgfSksIFtkYXRhLCB1cGRhdGUsIHJlZnMsIGVsZW1lbnRzLCBmbG9hdGluZ1N0eWxlc10pO1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkamJuRXgkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkamJuRXgkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkamJuRXgkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRSA9ICdBcnJvdyc7XG5jb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9IC8qI19fUFVSRV9fKi8gJGpibkV4JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCB3aWR0aDogd2lkdGggPSAxMCAsIGhlaWdodDogaGVpZ2h0ID0gNSAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KCRqYm5FeCRQcmltaXRpdmUuc3ZnLCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDMwIDEwXCIsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IFwibm9uZVwiXG4gICAgfSksIHByb3BzLmFzQ2hpbGQgPyBjaGlsZHJlbiA6IC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgcG9pbnRzOiBcIjAsMCAzMCwwIDE1LDEwXCJcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDU7XG5cblxuXG5cbmV4cG9ydCB7JDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAka1k5M1YkdXNlU3RhdGUsIGNyZWF0ZUVsZW1lbnQgYXMgJGtZOTNWJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJGtZOTNWJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAka1k5M1YkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGtZOTNWJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUZsb2F0aW5nIGFzICRrWTkzViR1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSBhcyAka1k5M1YkYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzICRrWTkzViRvZmZzZXQsIHNoaWZ0IGFzICRrWTkzViRzaGlmdCwgbGltaXRTaGlmdCBhcyAka1k5M1YkbGltaXRTaGlmdCwgZmxpcCBhcyAka1k5M1YkZmxpcCwgc2l6ZSBhcyAka1k5M1Ykc2l6ZSwgYXJyb3cgYXMgJGtZOTNWJGFycm93LCBoaWRlIGFzICRrWTkzViRoaWRlfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHtSb290IGFzICRrWTkzViRSb290fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWFycm93XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka1k5M1YkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka1k5M1YkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka1k5M1YkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGtZOTNWJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0IHt1c2VTaXplIGFzICRrWTkzViR1c2VTaXplfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2ZjAwODZkYTA5YzRiOWYgPSBbXG4gICAgJ3RvcCcsXG4gICAgJ3JpZ2h0JyxcbiAgICAnYm90dG9tJyxcbiAgICAnbGVmdCdcbl07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzY3MWZmYWI3YjMwMmZjOSA9IFtcbiAgICAnc3RhcnQnLFxuICAgICdjZW50ZXInLFxuICAgICdlbmQnXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRSA9ICdQb3BwZXInO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzIyYWFjMTk0YWU5MjNdID0gJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZSgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUpO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHRdID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FKTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFthbmNob3IsIHNldEFuY2hvcl0gPSAka1k5M1YkdXNlU3RhdGUobnVsbCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlclByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBhbmNob3I6IGFuY2hvcixcbiAgICAgICAgb25BbmNob3JDaGFuZ2U6IHNldEFuY2hvclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFuY2hvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQU5DSE9SX05BTUUgPSAnUG9wcGVyQW5jaG9yJztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgPSAvKiNfX1BVUkVfXyovICRrWTkzViRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIHZpcnR1YWxSZWY6IHZpcnR1YWxSZWYgLCAuLi5hbmNob3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgcmVmID0gJGtZOTNWJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka1k5M1YkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka1k5M1YkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIENvbnN1bWVyIGNhbiBhbmNob3IgdGhlIHBvcHBlciB0byBzb21ldGhpbmcgdGhhdCBpc24ndFxuICAgICAgICAvLyBhIERPTSBub2RlIGUuZy4gcG9pbnRlciBwb3NpdGlvbiwgc28gd2Ugb3ZlcnJpZGUgdGhlXG4gICAgICAgIC8vIGBhbmNob3JSZWZgIHdpdGggdGhlaXIgdmlydHVhbCByZWYgaW4gdGhpcyBjYXNlLlxuICAgICAgICBjb250ZXh0Lm9uQW5jaG9yQ2hhbmdlKCh2aXJ0dWFsUmVmID09PSBudWxsIHx8IHZpcnR1YWxSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZpcnR1YWxSZWYuY3VycmVudCkgfHwgcmVmLmN1cnJlbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiB2aXJ0dWFsUmVmID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFByaW1pdGl2ZS5kaXYsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYW5jaG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUgPSAnUG9wcGVyQ29udGVudCc7XG5jb25zdCBbJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlckNvbnRlbnRQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0XSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUpO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9hcnJvd1NpemUkd2lkdGgsIF9hcnJvd1NpemUkaGVpZ2h0LCBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRhcnJvdzIsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzMsIF9taWRkbGV3YXJlRGF0YSR0cmFucywgX21pZGRsZXdhcmVEYXRhJHRyYW5zMiwgX21pZGRsZXdhcmVEYXRhJGhpZGU7XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgc2lkZTogc2lkZSA9ICdib3R0b20nICwgc2lkZU9mZnNldDogc2lkZU9mZnNldCA9IDAgLCBhbGlnbjogYWxpZ24gPSAnY2VudGVyJyAsIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldCA9IDAgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyA9IDAgLCBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnkgPSBbXSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmdQcm9wID0gMCAsIHN0aWNreTogc3RpY2t5ID0gJ3BhcnRpYWwnICwgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCA9IGZhbHNlICwgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnMgPSB0cnVlICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrWTkzViR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFthcnJvdywgc2V0QXJyb3ddID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGFycm93U2l6ZSA9ICRrWTkzViR1c2VTaXplKGFycm93KTtcbiAgICBjb25zdCBhcnJvd1dpZHRoID0gKF9hcnJvd1NpemUkd2lkdGggPSBhcnJvd1NpemUgPT09IG51bGwgfHwgYXJyb3dTaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJvd1NpemUud2lkdGgpICE9PSBudWxsICYmIF9hcnJvd1NpemUkd2lkdGggIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkd2lkdGggOiAwO1xuICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gKF9hcnJvd1NpemUkaGVpZ2h0ID0gYXJyb3dTaXplID09PSBudWxsIHx8IGFycm93U2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dTaXplLmhlaWdodCkgIT09IG51bGwgJiYgX2Fycm93U2l6ZSRoZWlnaHQgIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkaGVpZ2h0IDogMDtcbiAgICBjb25zdCBkZXNpcmVkUGxhY2VtZW50ID0gc2lkZSArIChhbGlnbiAhPT0gJ2NlbnRlcicgPyAnLScgKyBhbGlnbiA6ICcnKTtcbiAgICBjb25zdCBjb2xsaXNpb25QYWRkaW5nID0gdHlwZW9mIGNvbGxpc2lvblBhZGRpbmdQcm9wID09PSAnbnVtYmVyJyA/IGNvbGxpc2lvblBhZGRpbmdQcm9wIDoge1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIC4uLmNvbGxpc2lvblBhZGRpbmdQcm9wXG4gICAgfTtcbiAgICBjb25zdCBib3VuZGFyeSA9IEFycmF5LmlzQXJyYXkoY29sbGlzaW9uQm91bmRhcnkpID8gY29sbGlzaW9uQm91bmRhcnkgOiBbXG4gICAgICAgIGNvbGxpc2lvbkJvdW5kYXJ5XG4gICAgXTtcbiAgICBjb25zdCBoYXNFeHBsaWNpdEJvdW5kYXJpZXMgPSBib3VuZGFyeS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGRldGVjdE92ZXJmbG93T3B0aW9ucyA9IHtcbiAgICAgICAgcGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LmZpbHRlcigkY2YxYWM1ZDlmZTBlODIwNiR2YXIkaXNOb3ROdWxsKSxcbiAgICAgICAgLy8gd2l0aCBgc3RyYXRlZ3k6ICdmaXhlZCdgLCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBnZXQgaXQgdG8gcmVzcGVjdCBib3VuZGFyaWVzXG4gICAgICAgIGFsdEJvdW5kYXJ5OiBoYXNFeHBsaWNpdEJvdW5kYXJpZXNcbiAgICB9O1xuICAgIGNvbnN0IHsgcmVmczogcmVmcyAsIGZsb2F0aW5nU3R5bGVzOiBmbG9hdGluZ1N0eWxlcyAsIHBsYWNlbWVudDogcGxhY2VtZW50ICwgaXNQb3NpdGlvbmVkOiBpc1Bvc2l0aW9uZWQgLCBtaWRkbGV3YXJlRGF0YTogbWlkZGxld2FyZURhdGEgIH0gPSAka1k5M1YkdXNlRmxvYXRpbmcoe1xuICAgICAgICAvLyBkZWZhdWx0IHRvIGBmaXhlZGAgc3RyYXRlZ3kgc28gdXNlcnMgZG9uJ3QgaGF2ZSB0byBwaWNrIGFuZCB3ZSBhbHNvIGF2b2lkIGZvY3VzIHNjcm9sbCBpc3N1ZXNcbiAgICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICAgIHBsYWNlbWVudDogZGVzaXJlZFBsYWNlbWVudCxcbiAgICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6ICRrWTkzViRhdXRvVXBkYXRlLFxuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgcmVmZXJlbmNlOiBjb250ZXh0LmFuY2hvclxuICAgICAgICB9LFxuICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICAka1k5M1Ykb2Zmc2V0KHtcbiAgICAgICAgICAgICAgICBtYWluQXhpczogc2lkZU9mZnNldCArIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgIGFsaWdubWVudEF4aXM6IGFsaWduT2Zmc2V0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGF2b2lkQ29sbGlzaW9ucyAmJiAka1k5M1Ykc2hpZnQoe1xuICAgICAgICAgICAgICAgIG1haW5BeGlzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNyb3NzQXhpczogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGltaXRlcjogc3RpY2t5ID09PSAncGFydGlhbCcgPyAka1k5M1YkbGltaXRTaGlmdCgpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhdm9pZENvbGxpc2lvbnMgJiYgJGtZOTNWJGZsaXAoe1xuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAka1k5M1Ykc2l6ZSh7XG4gICAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICAgIGFwcGx5OiAoeyBlbGVtZW50czogZWxlbWVudHMgLCByZWN0czogcmVjdHMgLCBhdmFpbGFibGVXaWR0aDogYXZhaWxhYmxlV2lkdGggLCBhdmFpbGFibGVIZWlnaHQ6IGF2YWlsYWJsZUhlaWdodCAgfSk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogYW5jaG9yV2lkdGggLCBoZWlnaHQ6IGFuY2hvckhlaWdodCAgfSA9IHJlY3RzLnJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFN0eWxlID0gZWxlbWVudHMuZmxvYXRpbmcuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoJywgYCR7YXZhaWxhYmxlV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoJywgYCR7YW5jaG9yV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0JywgYCR7YW5jaG9ySGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhcnJvdyAmJiAka1k5M1YkYXJyb3coe1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGFycm93LFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IGFycm93UGFkZGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luKHtcbiAgICAgICAgICAgICAgICBhcnJvd1dpZHRoOiBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgIGFycm93SGVpZ2h0OiBhcnJvd0hlaWdodFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoaWRlV2hlbkRldGFjaGVkICYmICRrWTkzViRoaWRlKHtcbiAgICAgICAgICAgICAgICBzdHJhdGVneTogJ3JlZmVyZW5jZUhpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbiAgICBjb25zdCBbcGxhY2VkU2lkZSwgcGxhY2VkQWxpZ25dID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICBjb25zdCBoYW5kbGVQbGFjZWQgPSAka1k5M1YkdXNlQ2FsbGJhY2tSZWYob25QbGFjZWQpO1xuICAgICRrWTkzViR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGlzUG9zaXRpb25lZCkgaGFuZGxlUGxhY2VkID09PSBudWxsIHx8IGhhbmRsZVBsYWNlZCA9PT0gdm9pZCAwIHx8IGhhbmRsZVBsYWNlZCgpO1xuICAgIH0sIFtcbiAgICAgICAgaXNQb3NpdGlvbmVkLFxuICAgICAgICBoYW5kbGVQbGFjZWRcbiAgICBdKTtcbiAgICBjb25zdCBhcnJvd1ggPSAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Lng7XG4gICAgY29uc3QgYXJyb3dZID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzIgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Mi55O1xuICAgIGNvbnN0IGNhbm5vdENlbnRlckFycm93ID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3czID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMuY2VudGVyT2Zmc2V0KSAhPT0gMDtcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAka1k5M1YkdXNlU3RhdGUoKTtcbiAgICAka1k5M1YkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHJlZnMuc2V0RmxvYXRpbmcsXG4gICAgICAgIFwiZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXCI6IFwiXCIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5mbG9hdGluZ1N0eWxlcyxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogaXNQb3NpdGlvbmVkID8gZmxvYXRpbmdTdHlsZXMudHJhbnNmb3JtIDogJ3RyYW5zbGF0ZSgwLCAtMjAwJSknLFxuICAgICAgICAgICAgLy8ga2VlcCBvZmYgdGhlIHBhZ2Ugd2hlbiBtZWFzdXJpbmdcbiAgICAgICAgICAgIG1pbldpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgICAgICAgICAgekluZGV4OiBjb250ZW50WkluZGV4LFxuICAgICAgICAgICAgWyctLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luJ106IFtcbiAgICAgICAgICAgICAgICAoX21pZGRsZXdhcmVEYXRhJHRyYW5zID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSR0cmFucy54LFxuICAgICAgICAgICAgICAgIChfbWlkZGxld2FyZURhdGEkdHJhbnMyID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkdHJhbnMyLnlcbiAgICAgICAgICAgIF0uam9pbignICcpXG4gICAgICAgIH0gLy8gRmxvYXRpbmcgVUkgaW50ZXJhbGx5IGNhbGN1bGF0ZXMgbG9naWNhbCBhbGlnbm1lbnQgYmFzZWQgdGhlIGBkaXJgIGF0dHJpYnV0ZSBvblxuICAgICAgICAsXG4gICAgICAgIGRpcjogcHJvcHMuZGlyXG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBwbGFjZWRTaWRlOiBwbGFjZWRTaWRlLFxuICAgICAgICBvbkFycm93Q2hhbmdlOiBzZXRBcnJvdyxcbiAgICAgICAgYXJyb3dYOiBhcnJvd1gsXG4gICAgICAgIGFycm93WTogYXJyb3dZLFxuICAgICAgICBzaG91bGRIaWRlQXJyb3c6IGNhbm5vdENlbnRlckFycm93XG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgka1k5M1YkUHJpbWl0aXZlLmRpdiwgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXNpZGVcIjogcGxhY2VkU2lkZSxcbiAgICAgICAgXCJkYXRhLWFsaWduXCI6IHBsYWNlZEFsaWduXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLy8gaWYgdGhlIFBvcHBlckNvbnRlbnQgaGFzbid0IGJlZW4gcGxhY2VkIHlldCAobm90IGFsbCBtZWFzdXJlbWVudHMgZG9uZSlcbiAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgYW5pbWF0aW9ucyBzbyB0aGF0IHVzZXJzJ3MgYW5pbWF0aW9uIGRvbid0IGtpY2sgaW4gdG9vIGVhcmx5IHJlZmVycmluZyB3cm9uZyBzaWRlc1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAhaXNQb3NpdGlvbmVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gaGlkZSB0aGUgY29udGVudCBpZiB1c2luZyB0aGUgaGlkZSBtaWRkbGV3YXJlIGFuZCBzaG91bGQgYmUgaGlkZGVuXG4gICAgICAgICAgICBvcGFjaXR5OiAoX21pZGRsZXdhcmVEYXRhJGhpZGUgPSBtaWRkbGV3YXJlRGF0YS5oaWRlKSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkaGlkZSAhPT0gdm9pZCAwICYmIF9taWRkbGV3YXJlRGF0YSRoaWRlLnJlZmVyZW5jZUhpZGRlbiA/IDAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FID0gJ1BvcHBlckFycm93JztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFID0ge1xuICAgIHRvcDogJ2JvdHRvbScsXG4gICAgcmlnaHQ6ICdsZWZ0JyxcbiAgICBib3R0b206ICd0b3AnLFxuICAgIGxlZnQ6ICdyaWdodCdcbn07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FLCBfX3Njb3BlUG9wcGVyKTtcbiAgICBjb25zdCBiYXNlU2lkZSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFW2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdO1xuICAgIHJldHVybigvKiNfX1BVUkVfXyovIC8vIHdlIGhhdmUgdG8gdXNlIGFuIGV4dHJhIHdyYXBwZXIgYmVjYXVzZSBgUmVzaXplT2JzZXJ2ZXJgICh1c2VkIGJ5IGB1c2VTaXplYClcbiAgICAvLyBkb2Vzbid0IHJlcG9ydCBzaXplIGFzIHdlJ2QgZXhwZWN0IG9uIFNWRyBlbGVtZW50cy5cbiAgICAvLyBpdCByZXBvcnRzIHRoZWlyIGJvdW5kaW5nIGJveCB3aGljaCBpcyBlZmZlY3RpdmVseSB0aGUgbGFyZ2VzdCBwYXRoIGluc2lkZSB0aGUgU1ZHLlxuICAgICRrWTkzViRjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIHJlZjogY29udGVudENvbnRleHQub25BcnJvd0NoYW5nZSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgbGVmdDogY29udGVudENvbnRleHQuYXJyb3dYLFxuICAgICAgICAgICAgdG9wOiBjb250ZW50Q29udGV4dC5hcnJvd1ksXG4gICAgICAgICAgICBbYmFzZVNpZGVdOiAwLFxuICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAnJyxcbiAgICAgICAgICAgICAgICByaWdodDogJzAgMCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnY2VudGVyIDAnLFxuICAgICAgICAgICAgICAgIGxlZnQ6ICcxMDAlIDAnXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAndHJhbnNsYXRlWSgxMDAlKScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICd0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpJyxcbiAgICAgICAgICAgICAgICBib3R0b206IGByb3RhdGUoMTgwZGVnKWAsXG4gICAgICAgICAgICAgICAgbGVmdDogJ3RyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSknXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogY29udGVudENvbnRleHQuc2hvdWxkSGlkZUFycm93ID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFJvb3QsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYXJyb3dQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmFycm93UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAvLyBlbnN1cmVzIHRoZSBlbGVtZW50IGNhbiBiZSBtZWFzdXJlZCBjb3JyZWN0bHkgKG1vc3RseSBmb3IgaWYgU1ZHKVxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGw7XG59XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luID0gKG9wdGlvbnMpPT4oe1xuICAgICAgICBuYW1lOiAndHJhbnNmb3JtT3JpZ2luJyxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgZm4gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3c0LCBfbWlkZGxld2FyZURhdGEkYXJyb3c1LCBfbWlkZGxld2FyZURhdGEkYXJyb3c2LCBfbWlkZGxld2FyZURhdGEkYXJyb3c3LCBfbWlkZGxld2FyZURhdGEkYXJyb3c4O1xuICAgICAgICAgICAgY29uc3QgeyBwbGFjZW1lbnQ6IHBsYWNlbWVudCAsIHJlY3RzOiByZWN0cyAsIG1pZGRsZXdhcmVEYXRhOiBtaWRkbGV3YXJlRGF0YSAgfSA9IGRhdGE7XG4gICAgICAgICAgICBjb25zdCBjYW5ub3RDZW50ZXJBcnJvdyA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NCA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3c0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3c0LmNlbnRlck9mZnNldCkgIT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93SGlkZGVuID0gY2Fubm90Q2VudGVyQXJyb3c7XG4gICAgICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gaXNBcnJvd0hpZGRlbiA/IDAgOiBvcHRpb25zLmFycm93V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhcnJvd0hlaWdodCA9IGlzQXJyb3dIaWRkZW4gPyAwIDogb3B0aW9ucy5hcnJvd0hlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IFtwbGFjZWRTaWRlLCBwbGFjZWRBbGlnbl0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgICAgICAgY29uc3Qgbm9BcnJvd0FsaWduID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiAnMCUnLFxuICAgICAgICAgICAgICAgIGNlbnRlcjogJzUwJScsXG4gICAgICAgICAgICAgICAgZW5kOiAnMTAwJSdcbiAgICAgICAgICAgIH1bcGxhY2VkQWxpZ25dO1xuICAgICAgICAgICAgY29uc3QgYXJyb3dYQ2VudGVyID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3c1ID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzYgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93NiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Ni54KSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3c1ICE9PSB2b2lkIDAgPyBfbWlkZGxld2FyZURhdGEkYXJyb3c1IDogMCkgKyBhcnJvd1dpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGFycm93WUNlbnRlciA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NyA9IChfbWlkZGxld2FyZURhdGEkYXJyb3c4ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzgueSkgIT09IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93NyAhPT0gdm9pZCAwID8gX21pZGRsZXdhcmVEYXRhJGFycm93NyA6IDApICsgYXJyb3dIZWlnaHQgLyAyO1xuICAgICAgICAgICAgbGV0IHggPSAnJztcbiAgICAgICAgICAgIGxldCB5ID0gJyc7XG4gICAgICAgICAgICBpZiAocGxhY2VkU2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGAkey1hcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgeCA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1hDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBgJHtyZWN0cy5mbG9hdGluZy5oZWlnaHQgKyBhcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICB4ID0gYCR7LWFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgIHggPSBgJHtyZWN0cy5mbG9hdGluZy53aWR0aCArIGFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgICAgICAgICAgeTogeVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KVxuO1xuZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gICAgY29uc3QgW3NpZGUsIGFsaWduID0gJ2NlbnRlciddID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2lkZSxcbiAgICAgICAgYWxpZ25cbiAgICBdO1xufVxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZDtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDA7XG5cblxuXG5cbmV4cG9ydCB7JGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDcyMmFhYzE5NGFlOTIzIGFzIGNyZWF0ZVBvcHBlclNjb3BlLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOSBhcyBQb3BwZXIsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgYXMgUG9wcGVyQW5jaG9yLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjIGFzIFBvcHBlckNvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwIGFzIFBvcHBlckFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyBhcyBBbmNob3IsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzZmMDA4NmRhMDljNGI5ZiBhcyBTSURFX09QVElPTlMsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNjcxZmZhYjdiMzAyZmM5IGFzIEFMSUdOX09QVElPTlN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRrVndudyRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICRrVndudyRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrVndudyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFZpc3VhbGx5SGlkZGVuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJHZhciROQU1FID0gJ1Zpc3VhbGx5SGlkZGVuJztcbmNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0ID0gLyojX19QVVJFX18qLyAka1Z3bnckZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1Z3bnckY3JlYXRlRWxlbWVudCgka1Z3bnckUHJpbWl0aXZlLnNwYW4sICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9zY3NzL21peGlucy9fc2NyZWVuLXJlYWRlci5zY3NzXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICBjbGlwOiAncmVjdCgwLCAwLCAwLCAwKScsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIHdvcmRXcmFwOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZWExZWY1OTRjZjU3MGQ4MyR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQ7XG5cblxuXG5cbmV4cG9ydCB7JGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQgYXMgVmlzdWFsbHlIaWRkZW4sICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkOHdlcEskdXNlU3RhdGUsIHVzZVJlZiBhcyAkOHdlcEskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDh3ZXBLJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkOHdlcEskY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJDh3ZXBLJHVzZUNhbGxiYWNrLCB1c2VNZW1vIGFzICQ4d2VwSyR1c2VNZW1vLCBmb3J3YXJkUmVmIGFzICQ4d2VwSyRmb3J3YXJkUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDh3ZXBLJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQ4d2VwSyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUlkIGFzICQ4d2VwSyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDh3ZXBLJFJvb3QsIEFuY2hvciBhcyAkOHdlcEskQW5jaG9yLCBDb250ZW50IGFzICQ4d2VwSyRDb250ZW50LCBBcnJvdyBhcyAkOHdlcEskQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkOHdlcEskUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkOHdlcEskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ4d2VwSyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkOHdlcEskU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDh3ZXBLJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7Um9vdCBhcyAkOHdlcEskUm9vdDF9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1XSA9ICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUoJ1Rvb2x0aXAnLCBbXG4gICAgJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZSA9ICQ4d2VwSyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFByb3ZpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FID0gJ1Rvb2x0aXBQcm92aWRlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiA9IDcwMDtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4gPSAndG9vbHRpcC5vcGVuJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBST1ZJREVSX05BTUUpO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCBkZWxheUR1cmF0aW9uOiBkZWxheUR1cmF0aW9uID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04gLCBza2lwRGVsYXlEdXJhdGlvbjogc2tpcERlbGF5RHVyYXRpb24gPSAzMDAgLCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPSBmYWxzZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpc09wZW5EZWxheWVkLCBzZXRJc09wZW5EZWxheWVkXSA9ICQ4d2VwSyR1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBpc1BvaW50ZXJJblRyYW5zaXRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBza2lwRGVsYXlUaW1lclJlZiA9ICQ4d2VwSyR1c2VSZWYoMCk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBza2lwRGVsYXlUaW1lciA9IHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dChza2lwRGVsYXlUaW1lcilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgaXNPcGVuRGVsYXllZDogaXNPcGVuRGVsYXllZCxcbiAgICAgICAgZGVsYXlEdXJhdGlvbjogZGVsYXlEdXJhdGlvbixcbiAgICAgICAgb25PcGVuOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBzZXRJc09wZW5EZWxheWVkKGZhbHNlKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbkNsb3NlOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBza2lwRGVsYXlUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnNldElzT3BlbkRlbGF5ZWQodHJ1ZSlcbiAgICAgICAgICAgICwgc2tpcERlbGF5RHVyYXRpb24pO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBza2lwRGVsYXlEdXJhdGlvblxuICAgICAgICBdKSxcbiAgICAgICAgaXNQb2ludGVySW5UcmFuc2l0UmVmOiBpc1BvaW50ZXJJblRyYW5zaXRSZWYsXG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZTogJDh3ZXBLJHVzZUNhbGxiYWNrKChpblRyYW5zaXQpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJJblRyYW5zaXRSZWYuY3VycmVudCA9IGluVHJhbnNpdDtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSA9ICdUb29sdGlwJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRleHRQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gPSBmYWxzZSAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAsIGRlbGF5RHVyYXRpb246IGRlbGF5RHVyYXRpb25Qcm9wICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJvdmlkZXJDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29udGVudElkID0gJDh3ZXBLJHVzZUlkKCk7XG4gICAgY29uc3Qgb3BlblRpbWVyUmVmID0gJDh3ZXBLJHVzZVJlZigwKTtcbiAgICBjb25zdCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudCA9IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAhPT0gbnVsbCAmJiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgIT09IHZvaWQgMCA/IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCA6IHByb3ZpZGVyQ29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudDtcbiAgICBjb25zdCBkZWxheUR1cmF0aW9uID0gZGVsYXlEdXJhdGlvblByb3AgIT09IG51bGwgJiYgZGVsYXlEdXJhdGlvblByb3AgIT09IHZvaWQgMCA/IGRlbGF5RHVyYXRpb25Qcm9wIDogcHJvdmlkZXJDb250ZXh0LmRlbGF5RHVyYXRpb247XG4gICAgY29uc3Qgd2FzT3BlbkRlbGF5ZWRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBbb3BlbjEgPSBmYWxzZSwgc2V0T3Blbl0gPSAkOHdlcEskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogKG9wZW4pPT57XG4gICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5vbk9wZW4oKTsgLy8gYXMgYG9uQ2hhbmdlYCBpcyBjYWxsZWQgd2l0aGluIGEgbGlmZWN5Y2xlIG1ldGhvZCB3ZVxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGRpc3BhdGNoaW5nIHZpYSBgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50YC5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOKSk7XG4gICAgICAgICAgICB9IGVsc2UgcHJvdmlkZXJDb250ZXh0Lm9uQ2xvc2UoKTtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCB8fCBvbk9wZW5DaGFuZ2Uob3Blbik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZSA9ICQ4d2VwSyR1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBvcGVuMSA/IHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPyAnZGVsYXllZC1vcGVuJyA6ICdpbnN0YW50LW9wZW4nIDogJ2Nsb3NlZCc7XG4gICAgfSwgW1xuICAgICAgICBvcGVuMVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9LCBbXG4gICAgICAgIHNldE9wZW5cbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlRGVsYXllZE9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIG9wZW5UaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICAgICAgfSwgZGVsYXlEdXJhdGlvbik7XG4gICAgfSwgW1xuICAgICAgICBkZWxheUR1cmF0aW9uLFxuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgY29udGVudElkOiBjb250ZW50SWQsXG4gICAgICAgIG9wZW46IG9wZW4xLFxuICAgICAgICBzdGF0ZUF0dHJpYnV0ZTogc3RhdGVBdHRyaWJ1dGUsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyRW50ZXI6ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkKSBoYW5kbGVEZWxheWVkT3BlbigpO1xuICAgICAgICAgICAgZWxzZSBoYW5kbGVPcGVuKCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkLFxuICAgICAgICAgICAgaGFuZGxlRGVsYXllZE9wZW4sXG4gICAgICAgICAgICBoYW5kbGVPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBvblRyaWdnZXJMZWF2ZTogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQpIGhhbmRsZUNsb3NlKCk7XG4gICAgICAgICAgICBlbHNlIC8vIENsZWFyIHRoZSB0aW1lciBpbiBjYXNlIHRoZSBwb2ludGVyIGxlYXZlcyB0aGUgdHJpZ2dlciBiZWZvcmUgdGhlIHRvb2x0aXAgaXMgb3BlbmVkLlxuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlLFxuICAgICAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICAgICAgXSksXG4gICAgICAgIG9uT3BlbjogaGFuZGxlT3BlbixcbiAgICAgICAgb25DbG9zZTogaGFuZGxlQ2xvc2UsXG4gICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50OiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFxuICAgIH0sIGNoaWxkcmVuKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhLCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSA9ICdUb29sdGlwVHJpZ2dlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHByb3ZpZGVyQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgaXNQb2ludGVyRG93blJlZiA9ICQ4d2VwSyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT5pc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICwgW10pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXApXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVBvaW50ZXJVcFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRBbmNob3IsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByaW1pdGl2ZS5idXR0b24sICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIC8vIFdlIHB1cnBvc2VmdWxseSBhdm9pZCBhZGRpbmcgYHR5cGU9YnV0dG9uYCBoZXJlIGJlY2F1c2UgdG9vbHRpcCB0cmlnZ2VycyBhcmUgYWxzb1xuICAgICAgICAvLyBjb21tb25seSBhbmNob3JzIGFuZCB0aGUgYW5jaG9yIGB0eXBlYCBhdHRyaWJ1dGUgc2lnbmlmaWVzIE1JTUUgdHlwZS5cbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGNvbnRleHQub3BlbiA/IGNvbnRleHQuY29udGVudElkIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCFoYXNQb2ludGVyTW92ZU9wZW5lZFJlZi5jdXJyZW50ICYmICFwcm92aWRlckNvbnRleHQuaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uVHJpZ2dlckVudGVyKCk7XG4gICAgICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckxlYXZlLCAoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5vblRyaWdnZXJMZWF2ZSgpO1xuICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIGlmICghaXNQb2ludGVyRG93blJlZi5jdXJyZW50KSBjb250ZXh0Lm9uT3BlbigpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25CbHVyOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCBjb250ZXh0Lm9uQ2xvc2UpLFxuICAgICAgICBvbkNsaWNrOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbkNsb3NlKVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FID0gJ1Rvb2x0aXBQb3J0YWwnO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRQb3J0YWxQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSwge1xuICAgIGZvcmNlTW91bnQ6IHVuZGVmaW5lZFxufSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskUG9ydGFsLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfSwgY2hpbGRyZW4pKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YjM2YjhmOTI1YWI3NDk3LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FID0gJ1Rvb2x0aXBDb250ZW50JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIHNpZGU6IHNpZGUgPSAndG9wJyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgY29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudCA/IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgc2lkZTogc2lkZVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBzaWRlOiBzaWRlXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwcm92aWRlckNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBbcG9pbnRlckdyYWNlQXJlYSwgc2V0UG9pbnRlckdyYWNlQXJlYV0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VyICwgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgY29udGVudCA9IHJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHsgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOiBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UgIH0gPSBwcm92aWRlckNvbnRleHQ7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNldFBvaW50ZXJHcmFjZUFyZWEobnVsbCk7XG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZShmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDcmVhdGVHcmFjZUFyZWEgPSAkOHdlcEskdXNlQ2FsbGJhY2soKGV2ZW50LCBob3ZlclRhcmdldCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IGV4aXRQb2ludCA9IHtcbiAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXRTaWRlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEV4aXRTaWRlRnJvbVJlY3QoZXhpdFBvaW50LCBjdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUpO1xuICAgICAgICBjb25zdCBob3ZlclRhcmdldFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChob3ZlclRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IGdyYWNlQXJlYSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsKFtcbiAgICAgICAgICAgIC4uLnBhZGRlZEV4aXRQb2ludHMsXG4gICAgICAgICAgICAuLi5ob3ZlclRhcmdldFBvaW50c1xuICAgICAgICBdKTtcbiAgICAgICAgc2V0UG9pbnRlckdyYWNlQXJlYShncmFjZUFyZWEpO1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UodHJ1ZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJpZ2dlciAmJiBjb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIGNvbnRlbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVDb250ZW50TGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIHRyaWdnZXIpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZUNvbnRlbnRMZWF2ZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICAgICAgY29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVDb250ZW50TGVhdmUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgaGFuZGxlQ3JlYXRlR3JhY2VBcmVhLFxuICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWFcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwb2ludGVyR3JhY2VBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFbnRlcmVkVGFyZ2V0ID0gKHRyaWdnZXIgPT09IG51bGwgfHwgdHJpZ2dlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHJpZ2dlci5jb250YWlucyh0YXJnZXQpKSB8fCAoY29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUG9pbnRlck91dHNpZGVHcmFjZUFyZWEgPSAhJGEwOTNjN2UxZWMyNWEwNTckdmFyJGlzUG9pbnRJblBvbHlnb24ocG9pbnRlclBvc2l0aW9uLCBwb2ludGVyR3JhY2VBcmVhKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRW50ZXJlZFRhcmdldCkgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQb2ludGVyT3V0c2lkZUdyYWNlQXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWEoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVRyYWNrUG9pbnRlckdyYWNlKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgcG9pbnRlckdyYWNlQXJlYSxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FLCB7XG4gICAgaXNJbnNpZGU6IGZhbHNlXG59KTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ4d2VwSyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7IC8vIENsb3NlIHRoaXMgdG9vbHRpcCBpZiBhbm90aGVyIG9uZSBvcGVuc1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOLCBvbkNsb3NlKTtcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4sIG9uQ2xvc2UpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uQ2xvc2VcbiAgICBdKTsgLy8gQ2xvc2UgdGhlIHRvb2x0aXAgaWYgdGhlIHRyaWdnZXIgaXMgc2Nyb2xsZWRcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHZvaWQgMCAmJiB0YXJnZXQuY29udGFpbnMoY29udGV4dC50cmlnZ2VyKSkgb25DbG9zZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBvbkNsb3NlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLFxuICAgICAgICBvbkRpc21pc3M6IG9uQ2xvc2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRDb250ZW50LCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHBvcHBlclNjb3BlLCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJ1xuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVUb29sdGlwLFxuICAgICAgICBpc0luc2lkZTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QxLCB7XG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgcm9sZTogXCJ0b29sdGlwXCJcbiAgICB9LCBhcmlhTGFiZWwgfHwgY2hpbGRyZW4pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUgPSAnVG9vbHRpcEFycm93JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5ID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB2aXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVUb29sdGlwKTsgLy8gaWYgdGhlIGFycm93IGlzIGluc2lkZSB0aGUgYFZpc3VhbGx5SGlkZGVuYCwgd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgaXQgYWxsIHRvXG4gICAgLy8gcHJldmVudCBpc3N1ZXMgaW4gcG9zaXRpb25pbmcgdGhlIGFycm93IGR1ZSB0byB0aGUgZHVwbGljYXRlXG4gICAgcmV0dXJuIHZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQuaXNJbnNpZGUgPyBudWxsIDogLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQXJyb3csICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0KHBvaW50LCByZWN0KSB7XG4gICAgY29uc3QgdG9wID0gTWF0aC5hYnMocmVjdC50b3AgLSBwb2ludC55KTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmFicyhyZWN0LmJvdHRvbSAtIHBvaW50LnkpO1xuICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5hYnMocmVjdC5yaWdodCAtIHBvaW50LngpO1xuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmFicyhyZWN0LmxlZnQgLSBwb2ludC54KTtcbiAgICBzd2l0Y2goTWF0aC5taW4odG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0KSl7XG4gICAgICAgIGNhc2UgbGVmdDpcbiAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgIGNhc2UgcmlnaHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgY2FzZSB0b3A6XG4gICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGNhc2UgYm90dG9tOlxuICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUsIHBhZGRpbmcgPSA1KSB7XG4gICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9IFtdO1xuICAgIHN3aXRjaChleGl0U2lkZSl7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSArIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55IC0gcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54ICsgcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcGFkZGVkRXhpdFBvaW50cztcbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChyZWN0KSB7XG4gICAgY29uc3QgeyB0b3A6IHRvcCAsIHJpZ2h0OiByaWdodCAsIGJvdHRvbTogYm90dG9tICwgbGVmdDogbGVmdCAgfSA9IHJlY3Q7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IGJvdHRvbVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogYm90dG9tXG4gICAgICAgIH1cbiAgICBdO1xufSAvLyBEZXRlcm1pbmUgaWYgYSBwb2ludCBpcyBpbnNpZGUgb2YgYSBwb2x5Z29uLlxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3N1YnN0YWNrL3BvaW50LWluLXBvbHlnb25cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gICAgY29uc3QgeyB4OiB4ICwgeTogeSAgfSA9IHBvaW50O1xuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspe1xuICAgICAgICBjb25zdCB4aSA9IHBvbHlnb25baV0ueDtcbiAgICAgICAgY29uc3QgeWkgPSBwb2x5Z29uW2ldLnk7XG4gICAgICAgIGNvbnN0IHhqID0gcG9seWdvbltqXS54O1xuICAgICAgICBjb25zdCB5aiA9IHBvbHlnb25bal0ueTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgIGNvbnN0IGludGVyc2VjdCA9IHlpID4geSAhPT0geWogPiB5ICYmIHggPCAoeGogLSB4aSkgKiAoeSAtIHlpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufSAvLyBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGNvbnZleCBodWxsIG9mIHRoZSBnaXZlbiBzZXQgb2YgcG9pbnRzLlxuLy8gaHR0cHM6Ly93d3cubmF5dWtpLmlvL3BhZ2UvY29udmV4LWh1bGwtYWxnb3JpdGhtXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbChwb2ludHMpIHtcbiAgICBjb25zdCBuZXdQb2ludHMgPSBwb2ludHMuc2xpY2UoKTtcbiAgICBuZXdQb2ludHMuc29ydCgoYSwgYik9PntcbiAgICAgICAgaWYgKGEueCA8IGIueCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmIChhLnggPiBiLngpIHJldHVybiAxO1xuICAgICAgICBlbHNlIGlmIChhLnkgPCBiLnkpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAoYS55ID4gYi55KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGxQcmVzb3J0ZWQobmV3UG9pbnRzKTtcbn0gLy8gUmV0dXJucyB0aGUgY29udmV4IGh1bGwsIGFzc3VtaW5nIHRoYXQgZWFjaCBwb2ludHNbaV0gPD0gcG9pbnRzW2kgKyAxXS4gUnVucyBpbiBPKG4pIHRpbWUuXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbFByZXNvcnRlZChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gcG9pbnRzLnNsaWNlKCk7XG4gICAgY29uc3QgdXBwZXJIdWxsID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIHdoaWxlKHVwcGVySHVsbC5sZW5ndGggPj0gMil7XG4gICAgICAgICAgICBjb25zdCBxID0gdXBwZXJIdWxsW3VwcGVySHVsbC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSB1cHBlckh1bGxbdXBwZXJIdWxsLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgaWYgKChxLnggLSByLngpICogKHAueSAtIHIueSkgPj0gKHEueSAtIHIueSkgKiAocC54IC0gci54KSkgdXBwZXJIdWxsLnBvcCgpO1xuICAgICAgICAgICAgZWxzZSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB1cHBlckh1bGwucHVzaChwKTtcbiAgICB9XG4gICAgdXBwZXJIdWxsLnBvcCgpO1xuICAgIGNvbnN0IGxvd2VySHVsbCA9IFtdO1xuICAgIGZvcihsZXQgaTEgPSBwb2ludHMubGVuZ3RoIC0gMTsgaTEgPj0gMDsgaTEtLSl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaTFdO1xuICAgICAgICB3aGlsZShsb3dlckh1bGwubGVuZ3RoID49IDIpe1xuICAgICAgICAgICAgY29uc3QgcSA9IGxvd2VySHVsbFtsb3dlckh1bGwubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCByID0gbG93ZXJIdWxsW2xvd2VySHVsbC5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIGlmICgocS54IC0gci54KSAqIChwLnkgLSByLnkpID49IChxLnkgLSByLnkpICogKHAueCAtIHIueCkpIGxvd2VySHVsbC5wb3AoKTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbG93ZXJIdWxsLnB1c2gocCk7XG4gICAgfVxuICAgIGxvd2VySHVsbC5wb3AoKTtcbiAgICBpZiAodXBwZXJIdWxsLmxlbmd0aCA9PT0gMSAmJiBsb3dlckh1bGwubGVuZ3RoID09PSAxICYmIHVwcGVySHVsbFswXS54ID09PSBsb3dlckh1bGxbMF0ueCAmJiB1cHBlckh1bGxbMF0ueSA9PT0gbG93ZXJIdWxsWzBdLnkpIHJldHVybiB1cHBlckh1bGw7XG4gICAgZWxzZSByZXR1cm4gdXBwZXJIdWxsLmNvbmNhdChsb3dlckh1bGwpO1xufVxuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZjc4NjQ5ZmI5Y2E1NjZiODtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4YzY2MGM2M2I3OTJkZWE7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ4YzYxMDc0NGVmY2Y4YTFkO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjA7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5O1xuXG5cblxuXG5leHBvcnQgeyRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1IGFzIGNyZWF0ZVRvb2x0aXBTY29wZSwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggYXMgVG9vbHRpcFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSBhcyBUb29sdGlwLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCBhcyBUb29sdGlwVHJpZ2dlciwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTcgYXMgVG9vbHRpcFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAgYXMgVG9vbHRpcENvbnRlbnQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5IGFzIFRvb2x0aXBBcnJvdywgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiZnVuY3Rpb24gJGFlNjkzM2U1MzUyNDdkM2QkZXhwb3J0JDdkMTViNjRjZjVhM2E0YzQodmFsdWUsIFttaW4sIG1heF0pIHtcbiAgICByZXR1cm4gTWF0aC5taW4obWF4LCBNYXRoLm1heChtaW4sIHZhbHVlKSk7XG59XG5cblxuXG5cbmV4cG9ydCB7JGFlNjkzM2U1MzUyNDdkM2QkZXhwb3J0JDdkMTViNjRjZjVhM2E0YzQgYXMgY2xhbXB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkMDFiOWMkdXNlU3RhdGUsIHVzZVJlZiBhcyAkMDFiOWMkdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICQwMWI5YyRjcmVhdGVFbGVtZW50LCB1c2VDYWxsYmFjayBhcyAkMDFiOWMkdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgYXMgJDAxYjljJGZvcndhcmRSZWYsIHVzZUVmZmVjdCBhcyAkMDFiOWMkdXNlRWZmZWN0LCBGcmFnbWVudCBhcyAkMDFiOWMkRnJhZ21lbnQsIHVzZU1lbW8gYXMgJDAxYjljJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVQb3J0YWwgYXMgJDAxYjljJGNyZWF0ZVBvcnRhbH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHtjbGFtcCBhcyAkMDFiOWMkY2xhbXB9IGZyb20gXCJAcmFkaXgtdWkvbnVtYmVyXCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29sbGVjdGlvbiBhcyAkMDFiOWMkY3JlYXRlQ29sbGVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkMDFiOWMkdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQwMWI5YyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUZvY3VzR3VhcmRzIGFzICQwMWI5YyR1c2VGb2N1c0d1YXJkc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHNcIjtcbmltcG9ydCB7Rm9jdXNTY29wZSBhcyAkMDFiOWMkRm9jdXNTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1zY29wZVwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkMDFiOWMkdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7Y3JlYXRlUG9wcGVyU2NvcGUgYXMgJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlLCBSb290IGFzICQwMWI5YyRSb290LCBBbmNob3IgYXMgJDAxYjljJEFuY2hvciwgQ29udGVudCBhcyAkMDFiOWMkQ29udGVudCwgQXJyb3cgYXMgJDAxYjljJEFycm93fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcHBlclwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDAxYjljJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQwMWI5YyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDAxYjljJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkMDFiOWMkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJDAxYjljJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0IHt1c2VQcmV2aW91cyBhcyAkMDFiOWMkdXNlUHJldmlvdXN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzXCI7XG5pbXBvcnQge1Zpc3VhbGx5SGlkZGVuIGFzICQwMWI5YyRWaXN1YWxseUhpZGRlbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC12aXN1YWxseS1oaWRkZW5cIjtcbmltcG9ydCB7aGlkZU90aGVycyBhcyAkMDFiOWMkaGlkZU90aGVyc30gZnJvbSBcImFyaWEtaGlkZGVuXCI7XG5pbXBvcnQge1JlbW92ZVNjcm9sbCBhcyAkMDFiOWMkUmVtb3ZlU2Nyb2xsfSBmcm9tIFwicmVhY3QtcmVtb3ZlLXNjcm9sbFwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRPUEVOX0tFWVMgPSBbXG4gICAgJyAnLFxuICAgICdFbnRlcicsXG4gICAgJ0Fycm93VXAnLFxuICAgICdBcnJvd0Rvd24nXG5dO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVElPTl9LRVlTID0gW1xuICAgICcgJyxcbiAgICAnRW50ZXInXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSA9ICdTZWxlY3QnO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbiwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSAkMDFiOWMkY3JlYXRlQ29sbGVjdGlvbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjg2NzI3YTc1ZGMwMzliZF0gPSAkMDFiOWMkY3JlYXRlQ29udGV4dFNjb3BlKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSwgW1xuICAgICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGUsXG4gICAgJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZSA9ICQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FKTtcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0TmF0aXZlT3B0aW9uc1Byb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0TmF0aXZlT3B0aW9uc0NvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZjliMWE1OWU1OTIyODhmID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIG9wZW46IG9wZW5Qcm9wICwgZGVmYXVsdE9wZW46IGRlZmF1bHRPcGVuICwgb25PcGVuQ2hhbmdlOiBvbk9wZW5DaGFuZ2UgLCB2YWx1ZTogdmFsdWVQcm9wICwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgLCBvblZhbHVlQ2hhbmdlOiBvblZhbHVlQ2hhbmdlICwgZGlyOiBkaXIgLCBuYW1lOiBuYW1lICwgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUgLCBkaXNhYmxlZDogZGlzYWJsZWQgLCByZXF1aXJlZDogcmVxdWlyZWQgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3ZhbHVlTm9kZSwgc2V0VmFsdWVOb2RlXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmFsdWVOb2RlSGFzQ2hpbGRyZW4sIHNldFZhbHVlTm9kZUhhc0NoaWxkcmVuXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gJDAxYjljJHVzZURpcmVjdGlvbihkaXIpO1xuICAgIGNvbnN0IFtvcGVuID0gZmFsc2UsIHNldE9wZW5dID0gJDAxYjljJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogb3BlblByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0T3BlbixcbiAgICAgICAgb25DaGFuZ2U6IG9uT3BlbkNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gJDAxYjljJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogdmFsdWVQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlLFxuICAgICAgICBvbkNoYW5nZTogb25WYWx1ZUNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZiA9ICQwMWI5YyR1c2VSZWYobnVsbCk7IC8vIFdlIHNldCB0aGlzIHRvIHRydWUgYnkgZGVmYXVsdCBzbyB0aGF0IGV2ZW50cyBidWJibGUgdG8gZm9ybXMgd2l0aG91dCBKUyAoU1NSKVxuICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSB0cmlnZ2VyID8gQm9vbGVhbih0cmlnZ2VyLmNsb3Nlc3QoJ2Zvcm0nKSkgOiB0cnVlO1xuICAgIGNvbnN0IFtuYXRpdmVPcHRpb25zU2V0LCBzZXROYXRpdmVPcHRpb25zU2V0XSA9ICQwMWI5YyR1c2VTdGF0ZShuZXcgU2V0KCkpOyAvLyBUaGUgbmF0aXZlIGBzZWxlY3RgIG9ubHkgYXNzb2NpYXRlcyB0aGUgY29ycmVjdCBkZWZhdWx0IHZhbHVlIGlmIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgLy8gYG9wdGlvbmAgaXMgcmVuZGVyZWQgYXMgYSBjaGlsZCAqKmF0IHRoZSBzYW1lIHRpbWUqKiBhcyBpdHNlbGYuXG4gICAgLy8gQmVjYXVzZSBpdCBtaWdodCB0YWtlIGEgZmV3IHJlbmRlcnMgZm9yIG91ciBpdGVtcyB0byBnYXRoZXIgdGhlIGluZm9ybWF0aW9uIHRvIGJ1aWxkXG4gICAgLy8gdGhlIG5hdGl2ZSBgb3B0aW9uYChzKSwgd2UgZ2VuZXJhdGUgYSBrZXkgb24gdGhlIGBzZWxlY3RgIHRvIG1ha2Ugc3VyZSBSZWFjdCByZS1idWlsZHMgaXRcbiAgICAvLyBlYWNoIHRpbWUgdGhlIG9wdGlvbnMgY2hhbmdlLlxuICAgIGNvbnN0IG5hdGl2ZVNlbGVjdEtleSA9IEFycmF5LmZyb20obmF0aXZlT3B0aW9uc1NldCkubWFwKChvcHRpb24pPT5vcHRpb24ucHJvcHMudmFsdWVcbiAgICApLmpvaW4oJzsnKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUm9vdCwgcG9wcGVyU2NvcGUsIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFByb3ZpZGVyLCB7XG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgdmFsdWVOb2RlOiB2YWx1ZU5vZGUsXG4gICAgICAgIG9uVmFsdWVOb2RlQ2hhbmdlOiBzZXRWYWx1ZU5vZGUsXG4gICAgICAgIHZhbHVlTm9kZUhhc0NoaWxkcmVuOiB2YWx1ZU5vZGVIYXNDaGlsZHJlbixcbiAgICAgICAgb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZTogc2V0VmFsdWVOb2RlSGFzQ2hpbGRyZW4sXG4gICAgICAgIGNvbnRlbnRJZDogJDAxYjljJHVzZUlkKCksXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgb25WYWx1ZUNoYW5nZTogc2V0VmFsdWUsXG4gICAgICAgIG9wZW46IG9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZTogc2V0T3BlbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjogdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLlByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0XG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0TmF0aXZlT3B0aW9uc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0LFxuICAgICAgICBvbk5hdGl2ZU9wdGlvbkFkZDogJDAxYjljJHVzZUNhbGxiYWNrKChvcHRpb24pPT57XG4gICAgICAgICAgICBzZXROYXRpdmVPcHRpb25zU2V0KChwcmV2KT0+bmV3IFNldChwcmV2KS5hZGQob3B0aW9uKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbk5hdGl2ZU9wdGlvblJlbW92ZTogJDAxYjljJHVzZUNhbGxiYWNrKChvcHRpb24pPT57XG4gICAgICAgICAgICBzZXROYXRpdmVPcHRpb25zU2V0KChwcmV2KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNTZXQgPSBuZXcgU2V0KHByZXYpO1xuICAgICAgICAgICAgICAgIG9wdGlvbnNTZXQuZGVsZXRlKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNTZXQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pXG4gICAgfSwgY2hpbGRyZW4pKSwgaXNGb3JtQ29udHJvbCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEJ1YmJsZVNlbGVjdCwge1xuICAgICAgICBrZXk6IG5hdGl2ZVNlbGVjdEtleSxcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSAvLyBlbmFibGUgZm9ybSBhdXRvZmlsbFxuICAgICAgICAsXG4gICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQpPT5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwge1xuICAgICAgICB2YWx1ZTogXCJcIlxuICAgIH0pIDogbnVsbCwgQXJyYXkuZnJvbShuYXRpdmVPcHRpb25zU2V0KSkgOiBudWxsKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZjliMWE1OWU1OTIyODhmLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRUUklHR0VSX05BTUUgPSAnU2VsZWN0VHJpZ2dlcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBkaXNhYmxlZDogZGlzYWJsZWQgPSBmYWxzZSAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBjb250ZXh0LmRpc2FibGVkIHx8IGRpc2FibGVkO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbc2VhcmNoUmVmLCBoYW5kbGVUeXBlYWhlYWRTZWFyY2gsIHJlc2V0VHlwZWFoZWFkXSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2goKHNlYXJjaCk9PntcbiAgICAgICAgY29uc3QgZW5hYmxlZEl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGVuYWJsZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS52YWx1ZSA9PT0gY29udGV4dC52YWx1ZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0SXRlbSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oZW5hYmxlZEl0ZW1zLCBzZWFyY2gsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgaWYgKG5leHRJdGVtICE9PSB1bmRlZmluZWQpIGNvbnRleHQub25WYWx1ZUNoYW5nZShuZXh0SXRlbS52YWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3BlbiA9ICgpPT57XG4gICAgICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UodHJ1ZSk7IC8vIHJlc2V0IHR5cGVhaGVhZCB3aGVuIHdlIG9wZW5cbiAgICAgICAgICAgIHJlc2V0VHlwZWFoZWFkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRBbmNob3IsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5idXR0b24sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIHJvbGU6IFwiY29tYm9ib3hcIixcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogY29udGV4dC5vcGVuLFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjogY29udGV4dC5yZXF1aXJlZCxcbiAgICAgICAgXCJhcmlhLWF1dG9jb21wbGV0ZVwiOiBcIm5vbmVcIixcbiAgICAgICAgZGlyOiBjb250ZXh0LmRpcixcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQub3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnLFxuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGlzRGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLXBsYWNlaG9sZGVyXCI6IGNvbnRleHQudmFsdWUgPT09IHVuZGVmaW5lZCA/ICcnIDogdW5kZWZpbmVkXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIEVuYWJsZSBjb21wYXRpYmlsaXR5IHdpdGggbmF0aXZlIGxhYmVsIG9yIGN1c3RvbSBgTGFiZWxgIFwiY2xpY2tcIiBmb3IgU2FmYXJpOlxuICAgICAgICAsXG4gICAgICAgIG9uQ2xpY2s6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh0cmlnZ2VyUHJvcHMub25DbGljaywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gV2hpbHN0IGJyb3dzZXJzIGdlbmVyYWxseSBoYXZlIG5vIGlzc3VlIGZvY3VzaW5nIHRoZSB0cmlnZ2VyIHdoZW4gY2xpY2tpbmdcbiAgICAgICAgICAgIC8vIG9uIGEgbGFiZWwsIFNhZmFyaSBzZWVtcyB0byBzdHJ1Z2dsZSB3aXRoIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBubyBgb25DbGlja2AuXG4gICAgICAgICAgICAvLyBXZSBmb3JjZSBgZm9jdXNgIGluIHRoaXMgY2FzZS4gTm90ZTogdGhpcyBkb2Vzbid0IGNyZWF0ZSBhbnkgb3RoZXIgc2lkZS1lZmZlY3RcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgYXJlIHByZXZlbnRpbmcgZGVmYXVsdCBpbiBgb25Qb2ludGVyRG93bmAgc28gZWZmZWN0aXZlbHlcbiAgICAgICAgICAgIC8vIHRoaXMgb25seSBydW5zIGZvciBhIGxhYmVsIFwiY2xpY2tcIlxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5mb2N1cygpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vblBvaW50ZXJEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBwcmV2ZW50IGltcGxpY2l0IHBvaW50ZXIgY2FwdHVyZVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3BvaW50ZXJldmVudHMzLyNpbXBsaWNpdC1wb2ludGVyLWNhcHR1cmVcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSkgdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpO1xuICAgICAgICAgICAgIC8vIG9ubHkgY2FsbCBoYW5kbGVyIGlmIGl0J3MgdGhlIGxlZnQgYnV0dG9uIChtb3VzZWRvd24gZ2V0cyB0cmlnZ2VyZWQgYnkgYWxsIG1vdXNlIGJ1dHRvbnMpXG4gICAgICAgICAgICAvLyBidXQgbm90IHdoZW4gdGhlIGNvbnRyb2wga2V5IGlzIHByZXNzZWQgKGF2b2lkaW5nIE1hY09TIHJpZ2h0IGNsaWNrKVxuICAgICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBldmVudC5jdHJsS2V5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW4oKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VYKSxcbiAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5yb3VuZChldmVudC5wYWdlWSlcbiAgICAgICAgICAgICAgICB9OyAvLyBwcmV2ZW50IHRyaWdnZXIgZnJvbSBzdGVhbGluZyBmb2N1cyBmcm9tIHRoZSBhY3RpdmUgaXRlbSBhZnRlciBvcGVuaW5nLlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvbktleURvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh0cmlnZ2VyUHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBpc1R5cGluZ0FoZWFkID0gc2VhcmNoUmVmLmN1cnJlbnQgIT09ICcnO1xuICAgICAgICAgICAgY29uc3QgaXNNb2RpZmllcktleSA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG4gICAgICAgICAgICBpZiAoIWlzTW9kaWZpZXJLZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgaGFuZGxlVHlwZWFoZWFkU2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBpZiAoaXNUeXBpbmdBaGVhZCAmJiBldmVudC5rZXkgPT09ICcgJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRPUEVOX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW4oKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0VmFsdWVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZBTFVFX05BTUUgPSAnU2VsZWN0VmFsdWUnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIC8vIFdlIGlnbm9yZSBgY2xhc3NOYW1lYCBhbmQgYHN0eWxlYCBhcyB0aGlzIHBhcnQgc2hvdWxkbid0IGJlIHN0eWxlZC5cbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjbGFzc05hbWU6IGNsYXNzTmFtZSAsIHN0eWxlOiBzdHlsZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciAsIC4uLnZhbHVlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgeyBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlOiBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlICB9ID0gY29udGV4dDtcbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9IGNoaWxkcmVuICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQub25WYWx1ZU5vZGVDaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZShoYXNDaGlsZHJlbik7XG4gICAgfSwgW1xuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlLFxuICAgICAgICBoYXNDaGlsZHJlblxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCB2YWx1ZVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIHdlIGRvbid0IHdhbnQgZXZlbnRzIGZyb20gdGhlIHBvcnRhbGxlZCBgU2VsZWN0VmFsdWVgIGNoaWxkcmVuIHRvIGJ1YmJsZVxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZSdcbiAgICAgICAgfVxuICAgIH0pLCBjb250ZXh0LnZhbHVlID09PSB1bmRlZmluZWQgJiYgcGxhY2Vob2xkZXIgIT09IHVuZGVmaW5lZCA/IHBsYWNlaG9sZGVyIDogY2hpbGRyZW4pO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZBTFVFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SWNvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSUNPTl9OQU1FID0gJ1NlbGVjdEljb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDk5YjQwMGNhYmI1OGM1MTUgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLmljb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBpY29uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSwgY2hpbGRyZW4gfHwgJ+KWvCcpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDk5YjQwMGNhYmI1OGM1MTUsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElDT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUlRBTF9OQU1FID0gJ1NlbGVjdFBvcnRhbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMyA9IChwcm9wcyk9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUG9ydGFsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcHJvcHMpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIyYWY2Yzk5NDQyOTYyMTMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdENvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSA9ICdTZWxlY3RDb250ZW50JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2ZyYWdtZW50LCBzZXRGcmFnbWVudF0gPSAkMDFiOWMkdXNlU3RhdGUoKTsgLy8gc2V0dGluZyB0aGUgZnJhZ21lbnQgaW4gYHVzZUxheW91dEVmZmVjdGAgYXMgYERvY3VtZW50RnJhZ21lbnRgIGRvZXNuJ3QgZXhpc3Qgb24gdGhlIHNlcnZlclxuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgc2V0RnJhZ21lbnQobmV3IERvY3VtZW50RnJhZ21lbnQoKSk7XG4gICAgfSwgW10pO1xuICAgIGlmICghY29udGV4dC5vcGVuKSB7XG4gICAgICAgIGNvbnN0IGZyYWcgPSBmcmFnbWVudDtcbiAgICAgICAgcmV0dXJuIGZyYWcgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVQb3J0YWwoLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVNlbGVjdFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLlNsb3QsIHtcbiAgICAgICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgcHJvcHMuY2hpbGRyZW4pKSksIGZyYWcpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RDb250ZW50SW1wbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gPSAxMDtcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9JTVBMX05BTUUgPSAnU2VsZWN0Q29udGVudEltcGwnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBwb3NpdGlvbjogcG9zaXRpb24gPSAnaXRlbS1hbGlnbmVkJyAsIG9uQ2xvc2VBdXRvRm9jdXM6IG9uQ2xvc2VBdXRvRm9jdXMgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIHNpZGU6IC8vXG4gICAgLy8gUG9wcGVyQ29udGVudCBwcm9wc1xuICAgIHNpZGUgLCBzaWRlT2Zmc2V0OiBzaWRlT2Zmc2V0ICwgYWxpZ246IGFsaWduICwgYWxpZ25PZmZzZXQ6IGFsaWduT2Zmc2V0ICwgYXJyb3dQYWRkaW5nOiBhcnJvd1BhZGRpbmcgLCBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnkgLCBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nICwgc3RpY2t5OiBzdGlja3kgLCBoaWRlV2hlbkRldGFjaGVkOiBoaWRlV2hlbkRldGFjaGVkICwgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnMgLCAvL1xuICAgIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtjb250ZW50LCBzZXRDb250ZW50XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmlld3BvcnQsIHNldFZpZXdwb3J0XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRDb250ZW50KG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRJdGVtLCBzZXRTZWxlY3RlZEl0ZW1dID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzZWxlY3RlZEl0ZW1UZXh0LCBzZXRTZWxlY3RlZEl0ZW1UZXh0XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtpc1Bvc2l0aW9uZWQsIHNldElzUG9zaXRpb25lZF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZpcnN0VmFsaWRJdGVtRm91bmRSZWYgPSAkMDFiOWMkdXNlUmVmKGZhbHNlKTsgLy8gYXJpYS1oaWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjb250ZW50IChiZXR0ZXIgc3VwcG9ydGVkIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBhcmlhLW1vZGFsKVxuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHJldHVybiAkMDFiOWMkaGlkZU90aGVycyhjb250ZW50KTtcbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBTZWxlY3RgIG1heSBiZVxuICAgIC8vIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIERPTSAoYmVjYXVzZSBvZiB0aGUgYFBvcnRhbGApXG4gICAgJDAxYjljJHVzZUZvY3VzR3VhcmRzKCk7XG4gICAgY29uc3QgZm9jdXNGaXJzdCA9ICQwMWI5YyR1c2VDYWxsYmFjaygoY2FuZGlkYXRlcyk9PntcbiAgICAgICAgY29uc3QgW2ZpcnN0SXRlbSwgLi4ucmVzdEl0ZW1zXSA9IGdldEl0ZW1zKCkubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBbbGFzdEl0ZW1dID0gcmVzdEl0ZW1zLnNsaWNlKC0xKTtcbiAgICAgICAgY29uc3QgUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKXtcbiAgICAgICAgICAgIC8vIGlmIGZvY3VzIGlzIGFscmVhZHkgd2hlcmUgd2Ugd2FudCB0byBnbywgd2UgZG9uJ3Qgd2FudCB0byBrZWVwIGdvaW5nIHRocm91Z2ggdGhlIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgICAgICBjYW5kaWRhdGUgPT09IG51bGwgfHwgY2FuZGlkYXRlID09PSB2b2lkIDAgfHwgY2FuZGlkYXRlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICBibG9jazogJ25lYXJlc3QnXG4gICAgICAgICAgICB9KTsgLy8gdmlld3BvcnQgbWlnaHQgaGF2ZSBwYWRkaW5nIHNvIHNjcm9sbCB0byBpdHMgZWRnZXMgd2hlbiBmb2N1c2luZyBmaXJzdC9sYXN0IGl0ZW1zLlxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gZmlyc3RJdGVtICYmIHZpZXdwb3J0KSB2aWV3cG9ydC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gbGFzdEl0ZW0gJiYgdmlld3BvcnQpIHZpZXdwb3J0LnNjcm9sbFRvcCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNhbmRpZGF0ZSA9PT0gbnVsbCB8fCBjYW5kaWRhdGUgPT09IHZvaWQgMCB8fCBjYW5kaWRhdGUuZm9jdXMoKTtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtcyxcbiAgICAgICAgdmlld3BvcnRcbiAgICBdKTtcbiAgICBjb25zdCBmb2N1c1NlbGVjdGVkSXRlbSA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+Zm9jdXNGaXJzdChbXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgICBjb250ZW50XG4gICAgICAgIF0pXG4gICAgLCBbXG4gICAgICAgIGZvY3VzRmlyc3QsXG4gICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBTaW5jZSB0aGlzIGlzIG5vdCBkZXBlbmRlbnQgb24gbGF5b3V0LCB3ZSB3YW50IHRvIGVuc3VyZSB0aGlzIHJ1bnMgYXQgdGhlIHNhbWUgdGltZSBhc1xuICAgIC8vIG90aGVyIGVmZmVjdHMgYWNyb3NzIGNvbXBvbmVudHMuIEhlbmNlIHdoeSB3ZSBkb24ndCBjYWxsIGBmb2N1c1NlbGVjdGVkSXRlbWAgaW5zaWRlIGBwb3NpdGlvbmAuXG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoaXNQb3NpdGlvbmVkKSBmb2N1c1NlbGVjdGVkSXRlbSgpO1xuICAgIH0sIFtcbiAgICAgICAgaXNQb3NpdGlvbmVkLFxuICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbVxuICAgIF0pOyAvLyBwcmV2ZW50IHNlbGVjdGluZyBpdGVtcyBvbiBgcG9pbnRlcnVwYCBpbiBzb21lIGNhc2VzIGFmdGVyIG9wZW5pbmcgZnJvbSBgcG9pbnRlcmRvd25gXG4gICAgLy8gYW5kIGNsb3NlIG9uIGBwb2ludGVydXBgIG91dHNpZGUuXG4gICAgY29uc3QgeyBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjogdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmICB9ID0gY29udGV4dDtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICBsZXQgcG9pbnRlck1vdmVEZWx0YSA9IHtcbiAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyTW92ZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICB2YXIgX3RyaWdnZXJQb2ludGVyRG93blBvLCBfdHJpZ2dlclBvaW50ZXJEb3duUG8yLCBfdHJpZ2dlclBvaW50ZXJEb3duUG8zLCBfdHJpZ2dlclBvaW50ZXJEb3duUG80O1xuICAgICAgICAgICAgICAgIHBvaW50ZXJNb3ZlRGVsdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6IE1hdGguYWJzKE1hdGgucm91bmQoZXZlbnQucGFnZVgpIC0gKChfdHJpZ2dlclBvaW50ZXJEb3duUG8gPSAoX3RyaWdnZXJQb2ludGVyRG93blBvMiA9IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfdHJpZ2dlclBvaW50ZXJEb3duUG8yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJpZ2dlclBvaW50ZXJEb3duUG8yLngpICE9PSBudWxsICYmIF90cmlnZ2VyUG9pbnRlckRvd25QbyAhPT0gdm9pZCAwID8gX3RyaWdnZXJQb2ludGVyRG93blBvIDogMCkpLFxuICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLmFicyhNYXRoLnJvdW5kKGV2ZW50LnBhZ2VZKSAtICgoX3RyaWdnZXJQb2ludGVyRG93blBvMyA9IChfdHJpZ2dlclBvaW50ZXJEb3duUG80ID0gdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF90cmlnZ2VyUG9pbnRlckRvd25QbzQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmlnZ2VyUG9pbnRlckRvd25QbzQueSkgIT09IG51bGwgJiYgX3RyaWdnZXJQb2ludGVyRG93blBvMyAhPT0gdm9pZCAwID8gX3RyaWdnZXJQb2ludGVyRG93blBvMyA6IDApKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwb2ludGVyIGhhc24ndCBtb3ZlZCBieSBhIGNlcnRhaW4gdGhyZXNob2xkIHRoZW4gd2UgcHJldmVudCBzZWxlY3RpbmcgaXRlbSBvbiBgcG9pbnRlcnVwYC5cbiAgICAgICAgICAgICAgICBpZiAocG9pbnRlck1vdmVEZWx0YS54IDw9IDEwICYmIHBvaW50ZXJNb3ZlRGVsdGEueSA8PSAxMCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBlbHNlIC8vIG90aGVyd2lzZSwgaWYgdGhlIGV2ZW50IHdhcyBvdXRzaWRlIHRoZSBjb250ZW50LCBjbG9zZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkgb25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVBvaW50ZXJNb3ZlKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyTW92ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlck1vdmUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIGhhbmRsZVBvaW50ZXJVcCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50LFxuICAgICAgICBvbk9wZW5DaGFuZ2UsXG4gICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZlxuICAgIF0pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY2xvc2UgPSAoKT0+b25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgICAgICA7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgY2xvc2UpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2UpO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgY2xvc2UpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG9uT3BlbkNoYW5nZVxuICAgIF0pO1xuICAgIGNvbnN0IFtzZWFyY2hSZWYsIGhhbmRsZVR5cGVhaGVhZFNlYXJjaF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoKChzZWFyY2gpPT57XG4gICAgICAgIGNvbnN0IGVuYWJsZWRJdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+IWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBlbmFibGVkSXRlbXMuZmluZCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtKGVuYWJsZWRJdGVtcywgc2VhcmNoLCBjdXJyZW50SXRlbSk7XG4gICAgICAgIGlmIChuZXh0SXRlbSkgLyoqXG4gICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgKiB0byBhdm9pZCBwb3RlbnRpYWwgYnVncy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzIwMzMyXG4gICAgICAgKi8gc2V0VGltZW91dCgoKT0+bmV4dEl0ZW0ucmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgICAgICApO1xuICAgIH0pO1xuICAgIGNvbnN0IGl0ZW1SZWZDYWxsYmFjayA9ICQwMWI5YyR1c2VDYWxsYmFjaygobm9kZSwgdmFsdWUsIGRpc2FibGVkKT0+e1xuICAgICAgICBjb25zdCBpc0ZpcnN0VmFsaWRJdGVtID0gIWZpcnN0VmFsaWRJdGVtRm91bmRSZWYuY3VycmVudCAmJiAhZGlzYWJsZWQ7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWRJdGVtID0gY29udGV4dC52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQudmFsdWUgPT09IHZhbHVlO1xuICAgICAgICBpZiAoaXNTZWxlY3RlZEl0ZW0gfHwgaXNGaXJzdFZhbGlkSXRlbSkge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRJdGVtKG5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzRmlyc3RWYWxpZEl0ZW0pIGZpcnN0VmFsaWRJdGVtRm91bmRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRleHQudmFsdWVcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTGVhdmUgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PmNvbnRlbnQgPT09IG51bGwgfHwgY29udGVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGVudC5mb2N1cygpXG4gICAgLCBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTtcbiAgICBjb25zdCBpdGVtVGV4dFJlZkNhbGxiYWNrID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlLCB2YWx1ZSwgZGlzYWJsZWQpPT57XG4gICAgICAgIGNvbnN0IGlzRmlyc3RWYWxpZEl0ZW0gPSAhZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ICYmICFkaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZEl0ZW0gPSBjb250ZXh0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkSXRlbSB8fCBpc0ZpcnN0VmFsaWRJdGVtKSBzZXRTZWxlY3RlZEl0ZW1UZXh0KG5vZGUpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC52YWx1ZVxuICAgIF0pO1xuICAgIGNvbnN0IFNlbGVjdFBvc2l0aW9uID0gcG9zaXRpb24gPT09ICdwb3BwZXInID8gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uIDogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb247IC8vIFNpbGVudGx5IGlnbm9yZSBwcm9wcyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGBTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uYFxuICAgIGNvbnN0IHBvcHBlckNvbnRlbnRQcm9wcyA9IFNlbGVjdFBvc2l0aW9uID09PSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24gPyB7XG4gICAgICAgIHNpZGU6IHNpZGUsXG4gICAgICAgIHNpZGVPZmZzZXQ6IHNpZGVPZmZzZXQsXG4gICAgICAgIGFsaWduOiBhbGlnbixcbiAgICAgICAgYWxpZ25PZmZzZXQ6IGFsaWduT2Zmc2V0LFxuICAgICAgICBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyxcbiAgICAgICAgY29sbGlzaW9uQm91bmRhcnk6IGNvbGxpc2lvbkJvdW5kYXJ5LFxuICAgICAgICBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nLFxuICAgICAgICBzdGlja3k6IHN0aWNreSxcbiAgICAgICAgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCxcbiAgICAgICAgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnNcbiAgICB9IDoge307XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgdmlld3BvcnQ6IHZpZXdwb3J0LFxuICAgICAgICBvblZpZXdwb3J0Q2hhbmdlOiBzZXRWaWV3cG9ydCxcbiAgICAgICAgaXRlbVJlZkNhbGxiYWNrOiBpdGVtUmVmQ2FsbGJhY2ssXG4gICAgICAgIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtLFxuICAgICAgICBvbkl0ZW1MZWF2ZTogaGFuZGxlSXRlbUxlYXZlLFxuICAgICAgICBpdGVtVGV4dFJlZkNhbGxiYWNrOiBpdGVtVGV4dFJlZkNhbGxiYWNrLFxuICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbTogZm9jdXNTZWxlY3RlZEl0ZW0sXG4gICAgICAgIHNlbGVjdGVkSXRlbVRleHQ6IHNlbGVjdGVkSXRlbVRleHQsXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBpc1Bvc2l0aW9uZWQsXG4gICAgICAgIHNlYXJjaFJlZjogc2VhcmNoUmVmXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkMDFiOWMkU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGb2N1c1Njb3BlLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUgLy8gd2UgbWFrZSBzdXJlIHdlJ3JlIG5vdCB0cmFwcGluZyBvbmNlIGl0J3MgYmVlbiBjbG9zZWRcbiAgICAgICAgLFxuICAgICAgICB0cmFwcGVkOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgb3BlbiBhdXRvZm9jdXMgYmVjYXVzZSB3ZSBtYW51YWxseSBmb2N1cyB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMob25DbG9zZUF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZXh0JHRyaWdnZXI7XG4gICAgICAgICAgICAoX2NvbnRleHQkdHJpZ2dlciA9IGNvbnRleHQudHJpZ2dlcikgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlciA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXIuZm9jdXMoe1xuICAgICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSlcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyREaXNtaXNzYWJsZUxheWVyLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgZm9jdXNvdXQgZXZlbnQgbWF5IHN0aWxsIGhhcHBlbi5cbiAgICAgICAgLFxuICAgICAgICBvbkZvY3VzT3V0c2lkZTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsXG4gICAgICAgIG9uRGlzbWlzczogKCk9PmNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoU2VsZWN0UG9zaXRpb24sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwibGlzdGJveFwiLFxuICAgICAgICBpZDogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBjb250ZXh0Lm9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJyxcbiAgICAgICAgZGlyOiBjb250ZXh0LmRpcixcbiAgICAgICAgb25Db250ZXh0TWVudTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH0sIGNvbnRlbnRQcm9wcywgcG9wcGVyQ29udGVudFByb3BzLCB7XG4gICAgICAgIG9uUGxhY2VkOiAoKT0+c2V0SXNQb3NpdGlvbmVkKHRydWUpXG4gICAgICAgICxcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBmbGV4IGxheW91dCBzbyB3ZSBjYW4gcGxhY2UgdGhlIHNjcm9sbCBidXR0b25zIHByb3Blcmx5XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBvdXRsaW5lIGJ5IGRlZmF1bHQgYXMgdGhlIGNvbnRlbnQgTUFZIGdldCBmb2N1c2VkXG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25LZXlEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgY29uc3QgaXNNb2RpZmllcktleSA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50Lm1ldGFLZXk7IC8vIHNlbGVjdCBzaG91bGQgbm90IGJlIG5hdmlnYXRlZCB1c2luZyB0YWIga2V5IHNvIHdlIHByZXZlbnQgaXRcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFpc01vZGlmaWVyS2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIGhhbmRsZVR5cGVhaGVhZFNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICAgICAgICAgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAgICAgJ0hvbWUnLFxuICAgICAgICAgICAgICAgICdFbmQnXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+IWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IGl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChbXG4gICAgICAgICAgICAgICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgICAgICAgICAgICAgJ0VuZCdcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlTm9kZXMuc2xpY2UoKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgICAgICAgICAnQXJyb3dEb3duJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY2FuZGlkYXRlTm9kZXMuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlTm9kZXMuc2xpY2UoY3VycmVudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAgICovIHNldFRpbWVvdXQoKCk9PmZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfSU1QTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fQUxJR05FRF9QT1NJVElPTl9OQU1FID0gJ1NlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24gPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIG9uUGxhY2VkOiBvblBsYWNlZCAsIC4uLnBvcHBlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NvbnRlbnRXcmFwcGVyLCBzZXRDb250ZW50V3JhcHBlcl0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYgPSAkMDFiOWMkdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzaG91bGRSZXBvc2l0aW9uUmVmID0gJDAxYjljJHVzZVJlZih0cnVlKTtcbiAgICBjb25zdCB7IHZpZXdwb3J0OiB2aWV3cG9ydCAsIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtICwgc2VsZWN0ZWRJdGVtVGV4dDogc2VsZWN0ZWRJdGVtVGV4dCAsIGZvY3VzU2VsZWN0ZWRJdGVtOiBmb2N1c1NlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgIGNvbnN0IHBvc2l0aW9uID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIgJiYgY29udGV4dC52YWx1ZU5vZGUgJiYgY29udGVudFdyYXBwZXIgJiYgY29udGVudCAmJiB2aWV3cG9ydCAmJiBzZWxlY3RlZEl0ZW0gJiYgc2VsZWN0ZWRJdGVtVGV4dCkge1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlclJlY3QgPSBjb250ZXh0LnRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyAgSG9yaXpvbnRhbCBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRSZWN0ID0gY29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlTm9kZVJlY3QgPSBjb250ZXh0LnZhbHVlTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1UZXh0UmVjdCA9IHNlbGVjdGVkSXRlbVRleHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZiAoY29udGV4dC5kaXIgIT09ICdydGwnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVRleHRPZmZzZXQgPSBpdGVtVGV4dFJlY3QubGVmdCAtIGNvbnRlbnRSZWN0LmxlZnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IHZhbHVlTm9kZVJlY3QubGVmdCAtIGl0ZW1UZXh0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnREZWx0YSA9IHRyaWdnZXJSZWN0LmxlZnQgLSBsZWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbkNvbnRlbnRXaWR0aCA9IHRyaWdnZXJSZWN0LndpZHRoICsgbGVmdERlbHRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KG1pbkNvbnRlbnRXaWR0aCwgY29udGVudFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0RWRnZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRMZWZ0ID0gJDAxYjljJGNsYW1wKGxlZnQsIFtcbiAgICAgICAgICAgICAgICAgICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOLFxuICAgICAgICAgICAgICAgICAgICByaWdodEVkZ2UgLSBjb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5taW5XaWR0aCA9IG1pbkNvbnRlbnRXaWR0aCArICdweCc7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubGVmdCA9IGNsYW1wZWRMZWZ0ICsgJ3B4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVRleHRPZmZzZXQgPSBjb250ZW50UmVjdC5yaWdodCAtIGl0ZW1UZXh0UmVjdC5yaWdodDtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdmFsdWVOb2RlUmVjdC5yaWdodCAtIGl0ZW1UZXh0T2Zmc2V0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0RGVsdGEgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHRyaWdnZXJSZWN0LnJpZ2h0IC0gcmlnaHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluQ29udGVudFdpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGggKyByaWdodERlbHRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KG1pbkNvbnRlbnRXaWR0aCwgY29udGVudFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRFZGdlID0gd2luZG93LmlubmVyV2lkdGggLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU47XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFJpZ2h0ID0gJDAxYjljJGNsYW1wKHJpZ2h0LCBbXG4gICAgICAgICAgICAgICAgICAgICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTixcbiAgICAgICAgICAgICAgICAgICAgbGVmdEVkZ2UgLSBjb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5taW5XaWR0aCA9IG1pbkNvbnRlbnRXaWR0aCArICdweCc7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUucmlnaHQgPSBjbGFtcGVkUmlnaHQgKyAncHgnO1xuICAgICAgICAgICAgfSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gVmVydGljYWwgcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCk7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gKiAyO1xuICAgICAgICAgICAgY29uc3QgaXRlbXNIZWlnaHQgPSB2aWV3cG9ydC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY29udGVudCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50Qm9yZGVyVG9wV2lkdGggPSBwYXJzZUludChjb250ZW50U3R5bGVzLmJvcmRlclRvcFdpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UGFkZGluZ1RvcCA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMucGFkZGluZ1RvcCwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29udGVudEJvcmRlckJvdHRvbVdpZHRoID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5ib3JkZXJCb3R0b21XaWR0aCwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29udGVudFBhZGRpbmdCb3R0b20gPSBwYXJzZUludChjb250ZW50U3R5bGVzLnBhZGRpbmdCb3R0b20sIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxDb250ZW50SGVpZ2h0ID0gY29udGVudEJvcmRlclRvcFdpZHRoICsgY29udGVudFBhZGRpbmdUb3AgKyBpdGVtc0hlaWdodCArIGNvbnRlbnRQYWRkaW5nQm90dG9tICsgY29udGVudEJvcmRlckJvdHRvbVdpZHRoOyAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IG1pbkNvbnRlbnRIZWlnaHQgPSBNYXRoLm1pbihzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0ICogNSwgZnVsbENvbnRlbnRIZWlnaHQpO1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh2aWV3cG9ydCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFBhZGRpbmdUb3AgPSBwYXJzZUludCh2aWV3cG9ydFN0eWxlcy5wYWRkaW5nVG9wLCAxMCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFBhZGRpbmdCb3R0b20gPSBwYXJzZUludCh2aWV3cG9ydFN0eWxlcy5wYWRkaW5nQm90dG9tLCAxMCk7XG4gICAgICAgICAgICBjb25zdCB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlID0gdHJpZ2dlclJlY3QudG9wICsgdHJpZ2dlclJlY3QuaGVpZ2h0IC8gMiAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTjtcbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UgPSBhdmFpbGFibGVIZWlnaHQgLSB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtSGFsZkhlaWdodCA9IHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3QgaXRlbU9mZnNldE1pZGRsZSA9IHNlbGVjdGVkSXRlbS5vZmZzZXRUb3AgKyBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgY29udGVudFRvcFRvSXRlbU1pZGRsZSA9IGNvbnRlbnRCb3JkZXJUb3BXaWR0aCArIGNvbnRlbnRQYWRkaW5nVG9wICsgaXRlbU9mZnNldE1pZGRsZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1NaWRkbGVUb0NvbnRlbnRCb3R0b20gPSBmdWxsQ29udGVudEhlaWdodCAtIGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGU7XG4gICAgICAgICAgICBjb25zdCB3aWxsQWxpZ25XaXRob3V0VG9wT3ZlcmZsb3cgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlIDw9IHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGU7XG4gICAgICAgICAgICBpZiAod2lsbEFsaWduV2l0aG91dFRvcE92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0SXRlbSA9IHNlbGVjdGVkSXRlbSA9PT0gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0ucmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuYm90dG9tID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydE9mZnNldEJvdHRvbSA9IGNvbnRlbnQuY2xpZW50SGVpZ2h0IC0gdmlld3BvcnQub2Zmc2V0VG9wIC0gdmlld3BvcnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRUcmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlID0gTWF0aC5tYXgodHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSwgc2VsZWN0ZWRJdGVtSGFsZkhlaWdodCArIChpc0xhc3RJdGVtID8gdmlld3BvcnRQYWRkaW5nQm90dG9tIDogMCkgKyB2aWV3cG9ydE9mZnNldEJvdHRvbSArIGNvbnRlbnRCb3JkZXJCb3R0b21XaWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGVudFRvcFRvSXRlbU1pZGRsZSArIGNsYW1wZWRUcmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gc2VsZWN0ZWRJdGVtID09PSBpdGVtc1swXS5yZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS50b3AgPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRUb3BFZGdlVG9UcmlnZ2VyTWlkZGxlID0gTWF0aC5tYXgodG9wRWRnZVRvVHJpZ2dlck1pZGRsZSwgY29udGVudEJvcmRlclRvcFdpZHRoICsgdmlld3BvcnQub2Zmc2V0VG9wICsgKGlzRmlyc3RJdGVtID8gdmlld3BvcnRQYWRkaW5nVG9wIDogMCkgKyBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjbGFtcGVkVG9wRWRnZVRvVHJpZ2dlck1pZGRsZSArIGl0ZW1NaWRkbGVUb0NvbnRlbnRCb3R0b207XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICB2aWV3cG9ydC5zY3JvbGxUb3AgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlIC0gdG9wRWRnZVRvVHJpZ2dlck1pZGRsZSArIHZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1hcmdpbiA9IGAkeyRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTn1weCAwYDtcbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbkhlaWdodCA9IG1pbkNvbnRlbnRIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWF4SGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0ICsgJ3B4JzsgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIG9uUGxhY2VkID09PSBudWxsIHx8IG9uUGxhY2VkID09PSB2b2lkIDAgfHwgb25QbGFjZWQoKTsgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gYWRqdXN0bWVudCB0byB0cmlnZ2VyIFwiZXhwYW5kIG9uIHNjcm9sbFwiXG4gICAgICAgICAgICAvLyBzbyB3ZSBleHBsaWNpdGx5IHR1cm4gaXQgb24gb25seSBhZnRlciB0aGV5J3ZlIHJlZ2lzdGVyZWQuXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtcyxcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBjb250ZXh0LnZhbHVlTm9kZSxcbiAgICAgICAgY29udGVudFdyYXBwZXIsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIHZpZXdwb3J0LFxuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIHNlbGVjdGVkSXRlbVRleHQsXG4gICAgICAgIGNvbnRleHQuZGlyLFxuICAgICAgICBvblBsYWNlZFxuICAgIF0pO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PnBvc2l0aW9uKClcbiAgICAsIFtcbiAgICAgICAgcG9zaXRpb25cbiAgICBdKTsgLy8gY29weSB6LWluZGV4IGZyb20gY29udGVudCB0byB3cmFwcGVyXG4gICAgY29uc3QgW2NvbnRlbnRaSW5kZXgsIHNldENvbnRlbnRaSW5kZXhdID0gJDAxYjljJHVzZVN0YXRlKCk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkgc2V0Q29udGVudFpJbmRleCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KS56SW5kZXgpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBXaGVuIHRoZSB2aWV3cG9ydCBiZWNvbWVzIHNjcm9sbGFibGUgYXQgdGhlIHRvcCwgdGhlIHNjcm9sbCB1cCBidXR0b24gd2lsbCBtb3VudC5cbiAgICAvLyBCZWNhdXNlIGl0IGlzIHBhcnQgb2YgdGhlIG5vcm1hbCBmbG93LCBpdCB3aWxsIHB1c2ggZG93biB0aGUgdmlld3BvcnQsIHRodXMgdGhyb3dpbmcgb3VyXG4gICAgLy8gdHJpZ2dlciA9PiBzZWxlY3RlZEl0ZW0gYWxpZ25tZW50IG9mZiBieSB0aGUgYW1vdW50IHRoZSB2aWV3cG9ydCB3YXMgcHVzaGVkIGRvd24uXG4gICAgLy8gV2Ugd2FpdCBmb3IgdGhpcyB0byBoYXBwZW4gYW5kIHRoZW4gcmUtcnVuIHRoZSBwb3NpdGluaW5nIGxvZ2ljIG9uZSBtb3JlIHRpbWUgdG8gYWNjb3VudCBmb3IgaXQuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlKT0+e1xuICAgICAgICBpZiAobm9kZSAmJiBzaG91bGRSZXBvc2l0aW9uUmVmLmN1cnJlbnQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uKCk7XG4gICAgICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbSA9PT0gbnVsbCB8fCBmb2N1c1NlbGVjdGVkSXRlbSA9PT0gdm9pZCAwIHx8IGZvY3VzU2VsZWN0ZWRJdGVtKCk7XG4gICAgICAgICAgICBzaG91bGRSZXBvc2l0aW9uUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIGNvbnRlbnRXcmFwcGVyOiBjb250ZW50V3JhcHBlcixcbiAgICAgICAgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWY6IHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmLFxuICAgICAgICBvblNjcm9sbEJ1dHRvbkNoYW5nZTogaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHJlZjogc2V0Q29udGVudFdyYXBwZXIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgICAgICAgekluZGV4OiBjb250ZW50WkluZGV4XG4gICAgICAgIH1cbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCwgaXQgaW5jbHVkZXMgYm9yZGVycy4gSWYgd2Ugd2VyZSB0byBzZXRcbiAgICAgICAgICAgIC8vIHRoZSBoZWlnaHQgd2l0aG91dCBoYXZpbmcgYGJveFNpemluZzogJ2JvcmRlci1ib3gnYCBpdCB3b3VsZCBiZSB0b28gYmlnLlxuICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGUgY29udGVudCBkb2Vzbid0IGdldCB0YWxsZXIgdGhhbiB0aGUgd3JhcHBlclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAuLi5wb3BwZXJQcm9wcy5zdHlsZVxuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9BTElHTkVEX1BPU0lUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0UG9wcGVyUG9zaXRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUFBFUl9QT1NJVElPTl9OQU1FID0gJ1NlbGVjdFBvcHBlclBvc2l0aW9uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgYWxpZ246IGFsaWduID0gJ3N0YXJ0JyAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gLCAuLi5wb3BwZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJENvbnRlbnQsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIHBvcHBlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBhbGlnbjogYWxpZ24sXG4gICAgICAgIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBFbnN1cmUgYm9yZGVyLWJveCBmb3IgZmxvYXRpbmctdWkgY2FsY3VsYXRpb25zXG4gICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgIC4uLnBvcHBlclByb3BzLnN0eWxlLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCknXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24sIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFBPUFBFUl9QT1NJVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFZpZXdwb3J0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Vmlld3BvcnRQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCB7fSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSA9ICdTZWxlY3RWaWV3cG9ydCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4udmlld3BvcnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50Q29udGV4dC5vblZpZXdwb3J0Q2hhbmdlKTtcbiAgICBjb25zdCBwcmV2U2Nyb2xsVG9wUmVmID0gJDAxYjljJHVzZVJlZigwKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7XG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICBfX2h0bWw6IGBbZGF0YS1yYWRpeC1zZWxlY3Qtdmlld3BvcnRde3Njcm9sbGJhci13aWR0aDpub25lOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO31bZGF0YS1yYWRpeC1zZWxlY3Qtdmlld3BvcnRdOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9YFxuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1yYWRpeC1zZWxlY3Qtdmlld3BvcnRcIjogXCJcIixcbiAgICAgICAgcm9sZTogXCJwcmVzZW50YXRpb25cIlxuICAgIH0sIHZpZXdwb3J0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyB3ZSB1c2UgcG9zaXRpb246ICdyZWxhdGl2ZScgaGVyZSBvbiB0aGUgYHZpZXdwb3J0YCBzbyB0aGF0IHdoZW4gd2UgY2FsbFxuICAgICAgICAgICAgLy8gYHNlbGVjdGVkSXRlbS5vZmZzZXRUb3BgIGluIGNhbGN1bGF0aW9ucywgdGhlIG9mZnNldCBpcyByZWxhdGl2ZSB0byB0aGUgdmlld3BvcnRcbiAgICAgICAgICAgIC8vIChpbmRlcGVuZGVudCBvZiB0aGUgc2Nyb2xsVXBCdXR0b24pLlxuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIC4uLnZpZXdwb3J0UHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25TY3JvbGw6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh2aWV3cG9ydFByb3BzLm9uU2Nyb2xsLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICBjb25zdCB7IGNvbnRlbnRXcmFwcGVyOiBjb250ZW50V3JhcHBlciAsIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOiBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiAgfSA9IHZpZXdwb3J0Q29udGV4dDtcbiAgICAgICAgICAgIGlmIChzaG91bGRFeHBhbmRPblNjcm9sbFJlZiAhPT0gbnVsbCAmJiBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiAhPT0gdm9pZCAwICYmIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmLmN1cnJlbnQgJiYgY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxlZEJ5ID0gTWF0aC5hYnMocHJldlNjcm9sbFRvcFJlZi5jdXJyZW50IC0gdmlld3BvcnQuc2Nyb2xsVG9wKTtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsZWRCeSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOICogMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3NzTWluSGVpZ2h0ID0gcGFyc2VGbG9hdChjb250ZW50V3JhcHBlci5zdHlsZS5taW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbnRlbnRXcmFwcGVyLnN0eWxlLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZIZWlnaHQgPSBNYXRoLm1heChjc3NNaW5IZWlnaHQsIGNzc0hlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2SGVpZ2h0IDwgYXZhaWxhYmxlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0SGVpZ2h0ID0gcHJldkhlaWdodCArIHNjcm9sbGVkQnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkTmV4dEhlaWdodCA9IE1hdGgubWluKGF2YWlsYWJsZUhlaWdodCwgbmV4dEhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmID0gbmV4dEhlaWdodCAtIGNsYW1wZWROZXh0SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gY2xhbXBlZE5leHRIZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRXcmFwcGVyLnN0eWxlLmJvdHRvbSA9PT0gJzBweCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydC5zY3JvbGxUb3AgPSBoZWlnaHREaWZmID4gMCA/IGhlaWdodERpZmYgOiAwOyAvLyBlbnN1cmUgdGhlIGNvbnRlbnQgc3RheXMgcGlubmVkIHRvIHRoZSBib3R0b21cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdmbGV4LWVuZCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSB2aWV3cG9ydC5zY3JvbGxUb3A7XG4gICAgICAgIH0pXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RHcm91cFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkR1JPVVBfTkFNRSA9ICdTZWxlY3RHcm91cCc7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEdyb3VwQ29udGV4dFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0R3JvdXBDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRHUk9VUF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5ncm91cFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBncm91cElkID0gJDAxYjljJHVzZUlkKCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEdyb3VwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICBpZDogZ3JvdXBJZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwiZ3JvdXBcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogZ3JvdXBJZFxuICAgIH0sIGdyb3VwUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEdST1VQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0TGFiZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUUgPSAnU2VsZWN0TGFiZWwnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjggPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmxhYmVsUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGdyb3VwQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RHcm91cENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogZ3JvdXBDb250ZXh0LmlkXG4gICAgfSwgbGFiZWxQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmNjczMzhkMjliZDk3MmY4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRMQUJFTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSA9ICdTZWxlY3RJdGVtJztcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUNvbnRleHRQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIHZhbHVlOiB2YWx1ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgdGV4dFZhbHVlOiB0ZXh0VmFsdWVQcm9wICwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IGNvbnRleHQudmFsdWUgPT09IHZhbHVlO1xuICAgIGNvbnN0IFt0ZXh0VmFsdWUsIHNldFRleHRWYWx1ZV0gPSAkMDFiOWMkdXNlU3RhdGUodGV4dFZhbHVlUHJvcCAhPT0gbnVsbCAmJiB0ZXh0VmFsdWVQcm9wICE9PSB2b2lkIDAgPyB0ZXh0VmFsdWVQcm9wIDogJycpO1xuICAgIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PntcbiAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRpdGVtUjtcbiAgICAgICAgcmV0dXJuIChfY29udGVudENvbnRleHQkaXRlbVIgPSBjb250ZW50Q29udGV4dC5pdGVtUmVmQ2FsbGJhY2spID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRpdGVtUiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRDb250ZXh0JGl0ZW1SLmNhbGwoY29udGVudENvbnRleHQsIG5vZGUsIHZhbHVlLCBkaXNhYmxlZCk7XG4gICAgfSk7XG4gICAgY29uc3QgdGV4dElkID0gJDAxYjljJHVzZUlkKCk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKCk9PntcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgY29udGV4dC5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB0ZXh0SWQ6IHRleHRJZCxcbiAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgb25JdGVtVGV4dENoYW5nZTogJDAxYjljJHVzZUNhbGxiYWNrKChub2RlKT0+e1xuICAgICAgICAgICAgc2V0VGV4dFZhbHVlKChwcmV2VGV4dFZhbHVlKT0+e1xuICAgICAgICAgICAgICAgIHZhciBfbm9kZSR0ZXh0Q29udGVudDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldlRleHRWYWx1ZSB8fCAoKF9ub2RlJHRleHRDb250ZW50ID0gbm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlLnRleHRDb250ZW50KSAhPT0gbnVsbCAmJiBfbm9kZSR0ZXh0Q29udGVudCAhPT0gdm9pZCAwID8gX25vZGUkdGV4dENvbnRlbnQgOiAnJykudHJpbSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIFtdKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uSXRlbVNsb3QsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB0ZXh0VmFsdWU6IHRleHRWYWx1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwib3B0aW9uXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IHRleHRJZCxcbiAgICAgICAgXCJkYXRhLWhpZ2hsaWdodGVkXCI6IGlzRm9jdXNlZCA/ICcnIDogdW5kZWZpbmVkIC8vIGBpc0ZvY3VzZWRgIGNhdmVhdCBmaXhlcyBzdHV0dGVyaW5nIGluIFZvaWNlT3ZlclxuICAgICAgICAsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBpc1NlbGVjdGVkICYmIGlzRm9jdXNlZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGlzU2VsZWN0ZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJyxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IGRpc2FibGVkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGRpc2FibGVkID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIHRhYkluZGV4OiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IC0xXG4gICAgfSwgaXRlbVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkZvY3VzOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uRm9jdXMsICgpPT5zZXRJc0ZvY3VzZWQodHJ1ZSlcbiAgICAgICAgKSxcbiAgICAgICAgb25CbHVyOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uQmx1ciwgKCk9PnNldElzRm9jdXNlZChmYWxzZSlcbiAgICAgICAgKSxcbiAgICAgICAgb25Qb2ludGVyVXA6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Qb2ludGVyVXAsIGhhbmRsZVNlbGVjdCksXG4gICAgICAgIG9uUG9pbnRlck1vdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Qb2ludGVyTW92ZSwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRvbkl0ZTtcbiAgICAgICAgICAgICAgICAoX2NvbnRlbnRDb250ZXh0JG9uSXRlID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZSA9PT0gdm9pZCAwIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZS5jYWxsKGNvbnRlbnRDb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSAvLyBldmVuIHRob3VnaCBzYWZhcmkgZG9lc24ndCBzdXBwb3J0IHRoaXMgb3B0aW9uLCBpdCdzIGFjY2VwdGFibGVcbiAgICAgICAgICAgIC8vIGFzIGl0IG9ubHkgbWVhbnMgaXQgbWlnaHQgc2Nyb2xsIGEgZmV3IHBpeGVscyB3aGVuIHVzaW5nIHRoZSBwb2ludGVyLlxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJMZWF2ZSwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlMjtcbiAgICAgICAgICAgICAgICAoX2NvbnRlbnRDb250ZXh0JG9uSXRlMiA9IGNvbnRlbnRDb250ZXh0Lm9uSXRlbUxlYXZlKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkb25JdGUyID09PSB2b2lkIDAgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMi5jYWxsKGNvbnRlbnRDb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkc2VhcmM7XG4gICAgICAgICAgICBjb25zdCBpc1R5cGluZ0FoZWFkID0gKChfY29udGVudENvbnRleHQkc2VhcmMgPSBjb250ZW50Q29udGV4dC5zZWFyY2hSZWYpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRzZWFyYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRDb250ZXh0JHNlYXJjLmN1cnJlbnQpICE9PSAnJztcbiAgICAgICAgICAgIGlmIChpc1R5cGluZ0FoZWFkICYmIGV2ZW50LmtleSA9PT0gJyAnKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVElPTl9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkpIGhhbmRsZVNlbGVjdCgpOyAvLyBwcmV2ZW50IHBhZ2Ugc2Nyb2xsIGlmIHVzaW5nIHRoZSBzcGFjZSBrZXkgdG8gc2VsZWN0IGFuIGl0ZW1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICcgJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSlcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbVRleHRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FID0gJ1NlbGVjdEl0ZW1UZXh0JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAvLyBXZSBpZ25vcmUgYGNsYXNzTmFtZWAgYW5kIGBzdHlsZWAgYXMgdGhpcyBwYXJ0IHNob3VsZG4ndCBiZSBzdHlsZWQuXG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2xhc3NOYW1lOiBjbGFzc05hbWUgLCBzdHlsZTogc3R5bGUgLCAuLi5pdGVtVGV4dFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGl0ZW1Db250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgbmF0aXZlT3B0aW9uc0NvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0TmF0aXZlT3B0aW9uc0NvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbaXRlbVRleHROb2RlLCBzZXRJdGVtVGV4dE5vZGVdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldEl0ZW1UZXh0Tm9kZShub2RlKVxuICAgICwgaXRlbUNvbnRleHQub25JdGVtVGV4dENoYW5nZSwgKG5vZGUpPT57XG4gICAgICAgIHZhciBfY29udGVudENvbnRleHQkaXRlbVQ7XG4gICAgICAgIHJldHVybiAoX2NvbnRlbnRDb250ZXh0JGl0ZW1UID0gY29udGVudENvbnRleHQuaXRlbVRleHRSZWZDYWxsYmFjaykgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JGl0ZW1UID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkaXRlbVQuY2FsbChjb250ZW50Q29udGV4dCwgbm9kZSwgaXRlbUNvbnRleHQudmFsdWUsIGl0ZW1Db250ZXh0LmRpc2FibGVkKTtcbiAgICB9KTtcbiAgICBjb25zdCB0ZXh0Q29udGVudCA9IGl0ZW1UZXh0Tm9kZSA9PT0gbnVsbCB8fCBpdGVtVGV4dE5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1UZXh0Tm9kZS50ZXh0Q29udGVudDtcbiAgICBjb25zdCBuYXRpdmVPcHRpb24gPSAkMDFiOWMkdXNlTWVtbygoKT0+LyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7XG4gICAgICAgICAgICBrZXk6IGl0ZW1Db250ZXh0LnZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1Db250ZXh0LnZhbHVlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGl0ZW1Db250ZXh0LmRpc2FibGVkXG4gICAgICAgIH0sIHRleHRDb250ZW50KVxuICAgICwgW1xuICAgICAgICBpdGVtQ29udGV4dC5kaXNhYmxlZCxcbiAgICAgICAgaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgIHRleHRDb250ZW50XG4gICAgXSk7XG4gICAgY29uc3QgeyBvbk5hdGl2ZU9wdGlvbkFkZDogb25OYXRpdmVPcHRpb25BZGQgLCBvbk5hdGl2ZU9wdGlvblJlbW92ZTogb25OYXRpdmVPcHRpb25SZW1vdmUgIH0gPSBuYXRpdmVPcHRpb25zQ29udGV4dDtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkKG5hdGl2ZU9wdGlvbik7XG4gICAgICAgIHJldHVybiAoKT0+b25OYXRpdmVPcHRpb25SZW1vdmUobmF0aXZlT3B0aW9uKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbk5hdGl2ZU9wdGlvbkFkZCxcbiAgICAgICAgb25OYXRpdmVPcHRpb25SZW1vdmUsXG4gICAgICAgIG5hdGl2ZU9wdGlvblxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBpdGVtQ29udGV4dC50ZXh0SWRcbiAgICB9LCBpdGVtVGV4dFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzXG4gICAgfSkpLCBpdGVtQ29udGV4dC5pc1NlbGVjdGVkICYmIGNvbnRleHQudmFsdWVOb2RlICYmICFjb250ZXh0LnZhbHVlTm9kZUhhc0NoaWxkcmVuID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlUG9ydGFsKGl0ZW1UZXh0UHJvcHMuY2hpbGRyZW4sIGNvbnRleHQudmFsdWVOb2RlKSA6IG51bGwpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1JbmRpY2F0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fSU5ESUNBVE9SX05BTUUgPSAnU2VsZWN0SXRlbUluZGljYXRvcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4uaXRlbUluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBpdGVtQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RJdGVtQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9JTkRJQ0FUT1JfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIGl0ZW1Db250ZXh0LmlzU2VsZWN0ZWQgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgaXRlbUluZGljYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0lORElDQVRPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFNjcm9sbFVwQnV0dG9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUgPSAnU2VsZWN0U2Nyb2xsVXBCdXR0b24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDcgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NhblNjcm9sbFVwMSwgc2V0Q2FuU2Nyb2xsVXBdID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgdmlld3BvcnRDb250ZXh0Lm9uU2Nyb2xsQnV0dG9uQ2hhbmdlKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50Q29udGV4dC52aWV3cG9ydCAmJiBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gY29udGVudENvbnRleHQudmlld3BvcnQ7XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuU2Nyb2xsVXAgPSB2aWV3cG9ydC5zY3JvbGxUb3AgPiAwO1xuICAgICAgICAgICAgICAgIHNldENhblNjcm9sbFVwKGNhblNjcm9sbFVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbCgpO1xuICAgICAgICAgICAgdmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+dmlld3BvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50Q29udGV4dC52aWV3cG9ydCxcbiAgICAgICAgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkXG4gICAgXSk7XG4gICAgcmV0dXJuIGNhblNjcm9sbFVwMSA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFNjcm9sbEJ1dHRvbkltcGwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uQXV0b1Njcm9sbDogKCk9PntcbiAgICAgICAgICAgIGNvbnN0IHsgdmlld3BvcnQ6IHZpZXdwb3J0ICwgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0gIH0gPSBjb250ZW50Q29udGV4dDtcbiAgICAgICAgICAgIGlmICh2aWV3cG9ydCAmJiBzZWxlY3RlZEl0ZW0pIHZpZXdwb3J0LnNjcm9sbFRvcCA9IHZpZXdwb3J0LnNjcm9sbFRvcCAtIHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDcsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RTY3JvbGxEb3duQnV0dG9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSA9ICdTZWxlY3RTY3JvbGxEb3duQnV0dG9uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODkgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX0RPV05fQlVUVE9OX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtjYW5TY3JvbGxEb3duMSwgc2V0Q2FuU2Nyb2xsRG93bl0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCB2aWV3cG9ydENvbnRleHQub25TY3JvbGxCdXR0b25DaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0ICYmIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZW50Q29udGV4dC52aWV3cG9ydDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhTY3JvbGwgPSB2aWV3cG9ydC5zY3JvbGxIZWlnaHQgLSB2aWV3cG9ydC5jbGllbnRIZWlnaHQ7IC8vIHdlIHVzZSBNYXRoLmNlaWwgaGVyZSBiZWNhdXNlIGlmIHRoZSBVSSBpcyB6b29tZWQtaW5cbiAgICAgICAgICAgICAgICAvLyBgc2Nyb2xsVG9wYCBpcyBub3QgYWx3YXlzIHJlcG9ydGVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5TY3JvbGxEb3duID0gTWF0aC5jZWlsKHZpZXdwb3J0LnNjcm9sbFRvcCkgPCBtYXhTY3JvbGw7XG4gICAgICAgICAgICAgICAgc2V0Q2FuU2Nyb2xsRG93bihjYW5TY3JvbGxEb3duKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVNjcm9sbCgpO1xuICAgICAgICAgICAgdmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+dmlld3BvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50Q29udGV4dC52aWV3cG9ydCxcbiAgICAgICAgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkXG4gICAgXSk7XG4gICAgcmV0dXJuIGNhblNjcm9sbERvd24xID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25BdXRvU2Nyb2xsOiAoKT0+e1xuICAgICAgICAgICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnQgLCBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsVG9wICsgc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRVxufSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgb25BdXRvU2Nyb2xsOiBvbkF1dG9TY3JvbGwgLCAuLi5zY3JvbGxJbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJ1NlbGVjdFNjcm9sbEJ1dHRvbicsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGF1dG9TY3JvbGxUaW1lclJlZiA9ICQwMWI5YyR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjbGVhckF1dG9TY3JvbGxUaW1lciA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+Y2xlYXJBdXRvU2Nyb2xsVGltZXIoKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBjbGVhckF1dG9TY3JvbGxUaW1lclxuICAgIF0pOyAvLyBXaGVuIHRoZSB2aWV3cG9ydCBiZWNvbWVzIHNjcm9sbGFibGUgb24gZWl0aGVyIHNpZGUsIHRoZSByZWxldmFudCBzY3JvbGwgYnV0dG9uIHdpbGwgbW91bnQuXG4gICAgLy8gQmVjYXVzZSBpdCBpcyBwYXJ0IG9mIHRoZSBub3JtYWwgZmxvdywgaXQgd2lsbCBwdXNoIGRvd24gKHRvcCBidXR0b24pIG9yIHNocmluayAoYm90dG9tIGJ1dHRvbilcbiAgICAvLyB0aGUgdmlld3BvcnQsIHBvdGVudGlhbGx5IGNhdXNpbmcgdGhlIGFjdGl2ZSBpdGVtIHRvIG5vdyBiZSBwYXJ0aWFsbHkgb3V0IG9mIHZpZXcuXG4gICAgLy8gV2UgcmUtcnVuIHRoZSBgc2Nyb2xsSW50b1ZpZXdgIGxvZ2ljIHRvIG1ha2Ugc3VyZSBpdCBzdGF5cyB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9hY3RpdmVJdGVtJHJlZiRjdXJyZTtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGdldEl0ZW1zKCkuZmluZCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgYWN0aXZlSXRlbSA9PT0gbnVsbCB8fCBhY3RpdmVJdGVtID09PSB2b2lkIDAgfHwgKF9hY3RpdmVJdGVtJHJlZiRjdXJyZSA9IGFjdGl2ZUl0ZW0ucmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHJlZiRjdXJyZSA9PT0gdm9pZCAwIHx8IF9hY3RpdmVJdGVtJHJlZiRjdXJyZS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICBibG9jazogJ25lYXJlc3QnXG4gICAgICAgIH0pO1xuICAgIH0sIFtcbiAgICAgICAgZ2V0SXRlbXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgc2Nyb2xsSW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBmbGV4U2hyaW5rOiAwLFxuICAgICAgICAgICAgLi4uc2Nyb2xsSW5kaWNhdG9yUHJvcHMuc3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHNjcm9sbEluZGljYXRvclByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPT09IG51bGwpIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldEludGVydmFsKG9uQXV0b1Njcm9sbCwgNTApO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHNjcm9sbEluZGljYXRvclByb3BzLm9uUG9pbnRlck1vdmUsICgpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlMztcbiAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUzID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTMgPT09IHZvaWQgMCB8fCBfY29udGVudENvbnRleHQkb25JdGUzLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID09PSBudWxsKSBhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRJbnRlcnZhbChvbkF1dG9TY3JvbGwsIDUwKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyTGVhdmUsICgpPT57XG4gICAgICAgICAgICBjbGVhckF1dG9TY3JvbGxUaW1lcigpO1xuICAgICAgICB9KVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0U2VwYXJhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRVBBUkFUT1JfTkFNRSA9ICdTZWxlY3RTZXBhcmF0b3InO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMyA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4uc2VwYXJhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBzZXBhcmF0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFUEFSQVRPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FID0gJ1NlbGVjdEFycm93JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5hcnJvd1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gY29udGV4dC5vcGVuICYmIGNvbnRlbnRDb250ZXh0LnBvc2l0aW9uID09PSAncG9wcGVyJyA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEFycm93LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclNjb3BlLCBhcnJvd1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEJ1YmJsZVNlbGVjdCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyB2YWx1ZTogdmFsdWUgLCAuLi5zZWxlY3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gJDAxYjljJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBwcmV2VmFsdWUgPSAkMDFiOWMkdXNlUHJldmlvdXModmFsdWUpOyAvLyBCdWJibGUgdmFsdWUgY2hhbmdlIHRvIHBhcmVudHMgKGUuZyBmb3JtIGNoYW5nZSBldmVudClcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHNlbGVjdCA9IHJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBzZWxlY3RQcm90byA9IHdpbmRvdy5IVE1MU2VsZWN0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGVjdFByb3RvLCAndmFsdWUnKTtcbiAgICAgICAgY29uc3Qgc2V0VmFsdWUgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgICAgaWYgKHByZXZWYWx1ZSAhPT0gdmFsdWUgJiYgc2V0VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRWYWx1ZS5jYWxsKHNlbGVjdCwgdmFsdWUpO1xuICAgICAgICAgICAgc2VsZWN0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcmV2VmFsdWUsXG4gICAgICAgIHZhbHVlXG4gICAgXSk7XG4gICAgLyoqXG4gICAqIFdlIHB1cnBvc2VmdWxseSB1c2UgYSBgc2VsZWN0YCBoZXJlIHRvIHN1cHBvcnQgZm9ybSBhdXRvZmlsbCBhcyBtdWNoXG4gICAqIGFzIHBvc3NpYmxlLlxuICAgKlxuICAgKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGFkZCB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgaGVyZSB0byBhbGxvdyB0aGUgdmFsdWVcbiAgICogdG8gYmUgc2V0IHByb2dyYW1hdGljYWxseSBhbmQgYnViYmxlIHRvIGFueSBwYXJlbnQgZm9ybSBgb25DaGFuZ2VgIGV2ZW50LlxuICAgKiBBZGRpbmcgdGhlIGB2YWx1ZWAgd2lsbCBjYXVzZSBSZWFjdCB0byBjb25zaWRlciB0aGUgcHJvZ3JhbWF0aWNcbiAgICogZGlzcGF0Y2ggYSBkdXBsaWNhdGUgYW5kIGl0IHdpbGwgZ2V0IHN3YWxsb3dlZC5cbiAgICpcbiAgICogV2UgdXNlIGBWaXN1YWxseUhpZGRlbmAgcmF0aGVyIHRoYW4gYGRpc3BsYXk6IFwibm9uZVwiYCBiZWNhdXNlIFNhZmFyaSBhdXRvZmlsbFxuICAgKiB3b24ndCB3b3JrIG90aGVyd2lzZS5cbiAgICovIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRWaXN1YWxseUhpZGRlbiwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcInNlbGVjdFwiLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNlbGVjdFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHZhbHVlXG4gICAgfSkpKTtcbn0pO1xuJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEJ1YmJsZVNlbGVjdC5kaXNwbGF5TmFtZSA9ICdCdWJibGVTZWxlY3QnO1xuZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaChvblNlYXJjaENoYW5nZSkge1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9ICQwMWI5YyR1c2VDYWxsYmFja1JlZihvblNlYXJjaENoYW5nZSk7XG4gICAgY29uc3Qgc2VhcmNoUmVmID0gJDAxYjljJHVzZVJlZignJyk7XG4gICAgY29uc3QgdGltZXJSZWYgPSAkMDFiOWMkdXNlUmVmKDApO1xuICAgIGNvbnN0IGhhbmRsZVR5cGVhaGVhZFNlYXJjaCA9ICQwMWI5YyR1c2VDYWxsYmFjaygoa2V5KT0+e1xuICAgICAgICBjb25zdCBzZWFyY2ggPSBzZWFyY2hSZWYuY3VycmVudCArIGtleTtcbiAgICAgICAgaGFuZGxlU2VhcmNoQ2hhbmdlKHNlYXJjaCk7XG4gICAgICAgIChmdW5jdGlvbiB1cGRhdGVTZWFyY2godmFsdWUpIHtcbiAgICAgICAgICAgIHNlYXJjaFJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpOyAvLyBSZXNldCBgc2VhcmNoUmVmYCAxIHNlY29uZCBhZnRlciBpdCB3YXMgbGFzdCB1cGRhdGVkXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09ICcnKSB0aW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnVwZGF0ZVNlYXJjaCgnJylcbiAgICAgICAgICAgICwgMTAwMCk7XG4gICAgICAgIH0pKHNlYXJjaCk7XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVTZWFyY2hDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCByZXNldFR5cGVhaGVhZCA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBzZWFyY2hSZWYuY3VycmVudCA9ICcnO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpO1xuICAgIH0sIFtdKTtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KVxuICAgICAgICA7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBbXG4gICAgICAgIHNlYXJjaFJlZixcbiAgICAgICAgaGFuZGxlVHlwZWFoZWFkU2VhcmNoLFxuICAgICAgICByZXNldFR5cGVhaGVhZFxuICAgIF07XG59XG4vKipcbiAqIFRoaXMgaXMgdGhlIFwibWVhdFwiIG9mIHRoZSB0eXBlYWhlYWQgbWF0Y2hpbmcgbG9naWMuIEl0IHRha2VzIGluIGEgbGlzdCBvZiBpdGVtcyxcbiAqIHRoZSBzZWFyY2ggYW5kIHRoZSBjdXJyZW50IGl0ZW0sIGFuZCByZXR1cm5zIHRoZSBuZXh0IGl0ZW0gKG9yIGB1bmRlZmluZWRgKS5cbiAqXG4gKiBXZSBub3JtYWxpemUgdGhlIHNlYXJjaCBiZWNhdXNlIGlmIGEgdXNlciBoYXMgcmVwZWF0ZWRseSBwcmVzc2VkIGEgY2hhcmFjdGVyLFxuICogd2Ugd2FudCB0aGUgZXhhY3Qgc2FtZSBiZWhhdmlvciBhcyBpZiB3ZSBvbmx5IGhhZCB0aGF0IG9uZSBjaGFyYWN0ZXJcbiAqIChpZS4gY3ljbGUgdGhyb3VnaCBpdGVtcyBzdGFydGluZyB3aXRoIHRoYXQgY2hhcmFjdGVyKVxuICpcbiAqIFdlIGFsc28gcmVvcmRlciB0aGUgaXRlbXMgYnkgd3JhcHBpbmcgdGhlIGFycmF5IGFyb3VuZCB0aGUgY3VycmVudCBpdGVtLlxuICogVGhpcyBpcyBzbyB3ZSBhbHdheXMgbG9vayBmb3J3YXJkIGZyb20gdGhlIGN1cnJlbnQgaXRlbSwgYW5kIHBpY2tpbmcgdGhlIGZpcnN0XG4gKiBpdGVtIHdpbGwgYWx3YXlzIGJlIHRoZSBjb3JyZWN0IG9uZS5cbiAqXG4gKiBGaW5hbGx5LCBpZiB0aGUgbm9ybWFsaXplZCBzZWFyY2ggaXMgZXhhY3RseSBvbmUgY2hhcmFjdGVyLCB3ZSBleGNsdWRlIHRoZVxuICogY3VycmVudCBpdGVtIGZyb20gdGhlIHZhbHVlcyBiZWNhdXNlIG90aGVyd2lzZSBpdCB3b3VsZCBiZSB0aGUgZmlyc3QgdG8gbWF0Y2ggYWx3YXlzXG4gKiBhbmQgZm9jdXMgd291bGQgbmV2ZXIgbW92ZS4gVGhpcyBpcyBhcyBvcHBvc2VkIHRvIHRoZSByZWd1bGFyIGNhc2UsIHdoZXJlIHdlXG4gKiBkb24ndCB3YW50IGZvY3VzIHRvIG1vdmUgaWYgdGhlIGN1cnJlbnQgaXRlbSBzdGlsbCBtYXRjaGVzLlxuICovIGZ1bmN0aW9uICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oaXRlbXMsIHNlYXJjaCwgY3VycmVudEl0ZW0pIHtcbiAgICBjb25zdCBpc1JlcGVhdGVkID0gc2VhcmNoLmxlbmd0aCA+IDEgJiYgQXJyYXkuZnJvbShzZWFyY2gpLmV2ZXJ5KChjaGFyKT0+Y2hhciA9PT0gc2VhcmNoWzBdXG4gICAgKTtcbiAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoID0gaXNSZXBlYXRlZCA/IHNlYXJjaFswXSA6IHNlYXJjaDtcbiAgICBjb25zdCBjdXJyZW50SXRlbUluZGV4ID0gY3VycmVudEl0ZW0gPyBpdGVtcy5pbmRleE9mKGN1cnJlbnRJdGVtKSA6IC0xO1xuICAgIGxldCB3cmFwcGVkSXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkd3JhcEFycmF5KGl0ZW1zLCBNYXRoLm1heChjdXJyZW50SXRlbUluZGV4LCAwKSk7XG4gICAgY29uc3QgZXhjbHVkZUN1cnJlbnRJdGVtID0gbm9ybWFsaXplZFNlYXJjaC5sZW5ndGggPT09IDE7XG4gICAgaWYgKGV4Y2x1ZGVDdXJyZW50SXRlbSkgd3JhcHBlZEl0ZW1zID0gd3JhcHBlZEl0ZW1zLmZpbHRlcigodik9PnYgIT09IGN1cnJlbnRJdGVtXG4gICAgKTtcbiAgICBjb25zdCBuZXh0SXRlbSA9IHdyYXBwZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS50ZXh0VmFsdWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG5vcm1hbGl6ZWRTZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICAgIHJldHVybiBuZXh0SXRlbSAhPT0gY3VycmVudEl0ZW0gPyBuZXh0SXRlbSA6IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogV3JhcHMgYW4gYXJyYXkgYXJvdW5kIGl0c2VsZiBhdCBhIGdpdmVuIHN0YXJ0IGluZGV4XG4gKiBFeGFtcGxlOiBgd3JhcEFycmF5KFsnYScsICdiJywgJ2MnLCAnZCddLCAyKSA9PT0gWydjJywgJ2QnLCAnYScsICdiJ11gXG4gKi8gZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHdyYXBBcnJheShhcnJheSwgc3RhcnRJbmRleCkge1xuICAgIHJldHVybiBhcnJheS5tYXAoKF8sIGluZGV4KT0+YXJyYXlbKHN0YXJ0SW5kZXggKyBpbmRleCkgJSBhcnJheS5sZW5ndGhdXG4gICAgKTtcbn1cbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjE7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNGM4ZDFhNTdhNzYxZWY5NCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGYwNGE2MTI5OGE0N2E0MGYgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIyYWY2Yzk5NDQyOTYyMTM7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViMmZjZmRiZDdiYTk3ZDQgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNDtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjg7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjMzQ2OGUyNzE0ZDE3NWZhID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJmMWFlZGMzMDM5YzhkNjMgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDFmZjNjM2YwOGFlOTYzYzAgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyODtcblxuXG5cblxuZXhwb3J0IHskY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjg2NzI3YTc1ZGMwMzliZCBhcyBjcmVhdGVTZWxlY3RTY29wZSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYgYXMgU2VsZWN0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxIGFzIFNlbGVjdFRyaWdnZXIsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwIGFzIFNlbGVjdFZhbHVlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSBhcyBTZWxlY3RJY29uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMyBhcyBTZWxlY3RQb3J0YWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkIGFzIFNlbGVjdENvbnRlbnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkIGFzIFNlbGVjdFZpZXdwb3J0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNCBhcyBTZWxlY3RHcm91cCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjggYXMgU2VsZWN0TGFiZWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2IGFzIFNlbGVjdEl0ZW0sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5IGFzIFNlbGVjdEl0ZW1UZXh0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNiBhcyBTZWxlY3RJdGVtSW5kaWNhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyBhcyBTZWxlY3RTY3JvbGxVcEJ1dHRvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSBhcyBTZWxlY3RTY3JvbGxEb3duQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzIGFzIFNlbGVjdFNlcGFyYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjggYXMgU2VsZWN0QXJyb3csICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0IGFzIFZhbHVlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiBhcyBJY29uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNWM2YzA4ZGMyZDNjYTcgYXMgVmlld3BvcnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYjJmY2ZkYmQ3YmE5N2Q0IGFzIEdyb3VwLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSBhcyBMYWJlbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgYXMgSXRlbSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkgYXMgSXRlbVRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjMzQ2OGUyNzE0ZDE3NWZhIGFzIEl0ZW1JbmRpY2F0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyZjYwZDNlYzlhZDQ2OGYyIGFzIFNjcm9sbFVwQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyBhcyBTY3JvbGxEb3duQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMWZmM2MzZjA4YWU5NjNjMCBhcyBTZXBhcmF0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwODVcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwODUpXCI+XG48cGF0aCBkPVwiTTExLjk5OTcgMTguNzVDMTEuNzg3MSAxOC43NSAxMS42MDkgMTguNjc4MSAxMS40NjU0IDE4LjUzNDRDMTEuMzIxOCAxOC4zOTA2IDExLjI1IDE4LjIxMjUgMTEuMjUgMThWMTIuNzVINS45OTk5N0M1Ljc4NzQ3IDEyLjc1IDUuNjA5MzYgMTIuNjc4IDUuNDY1NjMgMTIuNTM0MkM1LjMyMTg4IDEyLjM5MDQgNS4yNSAxMi4yMTIyIDUuMjUgMTEuOTk5N0M1LjI1IDExLjc4NzEgNS4zMjE4OCAxMS42MDkgNS40NjU2MyAxMS40NjU0QzUuNjA5MzYgMTEuMzIxOCA1Ljc4NzQ3IDExLjI1IDUuOTk5OTcgMTEuMjVIMTEuMjVWNS45OTk5N0MxMS4yNSA1Ljc4NzQ3IDExLjMyMTkgNS42MDkzNSAxMS40NjU3IDUuNDY1NkMxMS42MDk1IDUuMzIxODcgMTEuNzg3NyA1LjI1IDEyLjAwMDMgNS4yNUMxMi4yMTI5IDUuMjUgMTIuMzkxIDUuMzIxODcgMTIuNTM0NiA1LjQ2NTZDMTIuNjc4MiA1LjYwOTM1IDEyLjc0OTkgNS43ODc0NyAxMi43NDk5IDUuOTk5OTdWMTEuMjVIMThDMTguMjEyNSAxMS4yNSAxOC4zOTA2IDExLjMyMTkgMTguNTM0NCAxMS40NjU3QzE4LjY3ODEgMTEuNjA5NSAxOC43NSAxMS43ODc3IDE4Ljc1IDEyLjAwMDNDMTguNzUgMTIuMjEyOSAxOC42NzgxIDEyLjM5MSAxOC41MzQ0IDEyLjUzNDZDMTguMzkwNiAxMi42NzgyIDE4LjIxMjUgMTIuNzUgMTggMTIuNzVIMTIuNzQ5OVYxOEMxMi43NDk5IDE4LjIxMjUgMTIuNjc4IDE4LjM5MDYgMTIuNTM0MiAxOC41MzQ0QzEyLjM5MDQgMTguNjc4MSAxMi4yMTIyIDE4Ljc1IDExLjk5OTcgMTguNzVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTQuNjc3YS45My45MyAwIDAgMS0uMzQtLjA2Ni44NC44NCAwIDAgMS0uMjkzLS4xOUw2Ljg3MyA5LjkyN2EuNzE3LjcxNyAwIDAgMS0uMjE3LS41MjdjMC0uMjA2LjA3Mi0uMzgyLjIxNy0uNTI3YS43MTcuNzE3IDAgMCAxIC41MjctLjIxN2MuMjA2IDAgLjM4Mi4wNzIuNTI3LjIxN0wxMiAxMi45NDZsNC4wNzMtNC4wNzNhLjcxNy43MTcgMCAwIDEgLjUyNy0uMjE3Yy4yMDYgMCAuMzgyLjA3Mi41MjcuMjE3LjE0NS4xNDUuMjE3LjMyLjIxNy41MjdhLjcxNy43MTcgMCAwIDEtLjIxNy41MjdsLTQuNDk0IDQuNDk0YS44My44MyAwIDAgMS0uNjMzLjI1NlpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF8yMDJfOTA5NFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzIwMl85MDk0KVwiPlxuPHBhdGggZD1cIk0xMi4wMDE2IDIxLjVDMTAuNjg3NyAyMS41IDkuNDUyNjggMjEuMjUwNiA4LjI5NjU1IDIwLjc1MkM3LjE0MDQgMjAuMjUzMyA2LjEzNDcyIDE5LjU3NjUgNS4yNzk1IDE4LjcyMTdDNC40MjQyNyAxNy44NjY5IDMuNzQ3MjEgMTYuODYxNiAzLjI0ODMzIDE1LjcwNkMyLjc0OTQ0IDE0LjU1MDQgMi41IDEzLjMxNTYgMi41IDEyLjAwMTdDMi41IDEwLjY4NzcgMi43NDkzMyA5LjQ1MjY4IDMuMjQ4IDguMjk2NTVDMy43NDY2NyA3LjE0MDQgNC40MjM0MiA2LjEzNDcyIDUuMjc4MjUgNS4yNzk1QzYuMTMzMSA0LjQyNDI3IDcuMTM4MzQgMy43NDcyMSA4LjI5Mzk4IDMuMjQ4MzNDOS40NDk1OSAyLjc0OTQ0IDEwLjY4NDQgMi41IDExLjk5ODMgMi41QzEzLjMxMjIgMi41IDE0LjU0NzMgMi43NDkzMyAxNS43MDM0IDMuMjQ4QzE2Ljg1OTYgMy43NDY2NyAxNy44NjUyIDQuNDIzNDIgMTguNzIwNSA1LjI3ODI1QzE5LjU3NTcgNi4xMzMxIDIwLjI1MjcgNy4xMzgzNCAyMC43NTE2IDguMjkzOThDMjEuMjUwNSA5LjQ0OTU5IDIxLjUgMTAuNjg0NCAyMS41IDExLjk5ODNDMjEuNSAxMy4zMTIyIDIxLjI1MDYgMTQuNTQ3MyAyMC43NTIgMTUuNzAzNEMyMC4yNTMzIDE2Ljg1OTYgMTkuNTc2NSAxNy44NjUyIDE4LjcyMTcgMTguNzIwNUMxNy44NjY5IDE5LjU3NTcgMTYuODYxNiAyMC4yNTI3IDE1LjcwNiAyMC43NTE2QzE0LjU1MDQgMjEuMjUwNSAxMy4zMTU2IDIxLjUgMTIuMDAxNiAyMS41Wk0xMiAyMEMxNC4yMzMzIDIwIDE2LjEyNSAxOS4yMjUgMTcuNjc1IDE3LjY3NUMxOS4yMjUgMTYuMTI1IDIwIDE0LjIzMzMgMjAgMTJDMjAgMTEuMDYxOCAxOS44Mzk3IDEwLjE1ODMgMTkuNTE5MiA5LjI4OTU4QzE5LjE5ODcgOC40MjA4NiAxOC43NDEgNy42MjY4OCAxOC4xNDYxIDYuOTA3NjVMNi45MDc2NSAxOC4xNDYxQzcuNjI2ODggMTguNzQ3NCA4LjQyMDg2IDE5LjIwNjcgOS4yODk1OCAxOS41MjRDMTAuMTU4MyAxOS44NDEzIDExLjA2MTggMjAgMTIgMjBaTTUuODUzODMgMTcuMDkyM0wxNy4wOTIzIDUuODUzODJDMTYuMzc5NSA1LjI0NjE0IDE1LjU4NzcgNC43ODUyNCAxNC43MTY5IDQuNDcxMTNDMTMuODQ2MSA0LjE1NzAzIDEyLjk0MDQgMy45OTk5NyAxMiAzLjk5OTk3QzkuNzY2NjQgMy45OTk5NyA3Ljg3NDk4IDQuNzc0OTggNi4zMjQ5OCA2LjMyNDk4QzQuNzc0OTggNy44NzQ5OCAzLjk5OTk4IDkuNzY2NjQgMy45OTk5OCAxMkMzLjk5OTk4IDEyLjkzODIgNC4xNTg2MyAxMy44NDE3IDQuNDc1OTUgMTQuNzEwNEM0Ljc5MzI1IDE1LjU3OTEgNS4yNTI1NCAxNi4zNzMxIDUuODUzODMgMTcuMDkyM1pcIiBmaWxsPVwiIzQyNDU0QlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA3MFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA3MClcIj5cbjxwYXRoIGQ9XCJNMyAxNC41QzIuODY2NjcgMTQuNSAyLjc1IDE0LjQ1IDIuNjUgMTQuMzVDMi41NSAxNC4yNSAyLjUgMTQuMTMzMyAyLjUgMTRDMi41IDEzLjg2NjcgMi41NSAxMy43NSAyLjY1IDEzLjY1QzIuNzUgMTMuNTUgMi44NjY2NyAxMy41IDMgMTMuNUMzLjEzMzMzIDEzLjUgMy4yNSAxMy41NSAzLjM1IDEzLjY1QzMuNDUgMTMuNzUgMy41IDEzLjg2NjcgMy41IDE0QzMuNSAxNC4xMzMzIDMuNDUgMTQuMjUgMy4zNSAxNC4zNUMzLjI1IDE0LjQ1IDMuMTMzMzMgMTQuNSAzIDE0LjVaTTMgMTAuNUMyLjg2NjY3IDEwLjUgMi43NSAxMC40NSAyLjY1IDEwLjM1QzIuNTUgMTAuMjUgMi41IDEwLjEzMzMgMi41IDEwQzIuNSA5Ljg2NjY3IDIuNTUgOS43NSAyLjY1IDkuNjVDMi43NSA5LjU1IDIuODY2NjcgOS41IDMgOS41QzMuMTMzMzMgOS41IDMuMjUgOS41NSAzLjM1IDkuNjVDMy40NSA5Ljc1IDMuNSA5Ljg2NjY3IDMuNSAxMEMzLjUgMTAuMTMzMyAzLjQ1IDEwLjI1IDMuMzUgMTAuMzVDMy4yNSAxMC40NSAzLjEzMzMzIDEwLjUgMyAxMC41Wk02IDE4LjkyMzFDNS43Mzg0NyAxOC45MjMxIDUuNTE5MjMgMTguODM0NiA1LjM0MjMgMTguNjU3N0M1LjE2NTM4IDE4LjQ4MDggNS4wNzY5MyAxOC4yNjE1IDUuMDc2OTMgMThDNS4wNzY5MyAxNy43Mzg1IDUuMTY1MzggMTcuNTE5MiA1LjM0MjMgMTcuMzQyM0M1LjUxOTIzIDE3LjE2NTQgNS43Mzg0NyAxNy4wNzY5IDYgMTcuMDc2OUM2LjI2MTUzIDE3LjA3NjkgNi40ODA3NyAxNy4xNjU0IDYuNjU3NyAxNy4zNDIzQzYuODM0NjIgMTcuNTE5MiA2LjkyMzA4IDE3LjczODUgNi45MjMwOCAxOEM2LjkyMzA4IDE4LjI2MTUgNi44MzQ2MiAxOC40ODA4IDYuNjU3NyAxOC42NTc3QzYuNDgwNzcgMTguODM0NiA2LjI2MTUzIDE4LjkyMzEgNiAxOC45MjMxWk02IDE0LjkyMzFDNS43Mzg0NyAxNC45MjMxIDUuNTE5MjMgMTQuODM0NiA1LjM0MjMgMTQuNjU3N0M1LjE2NTM4IDE0LjQ4MDggNS4wNzY5MyAxNC4yNjE1IDUuMDc2OTMgMTRDNS4wNzY5MyAxMy43Mzg1IDUuMTY1MzggMTMuNTE5MiA1LjM0MjMgMTMuMzQyM0M1LjUxOTIzIDEzLjE2NTQgNS43Mzg0NyAxMy4wNzY5IDYgMTMuMDc2OUM2LjI2MTUzIDEzLjA3NjkgNi40ODA3NyAxMy4xNjU0IDYuNjU3NyAxMy4zNDIzQzYuODM0NjIgMTMuNTE5MiA2LjkyMzA4IDEzLjczODUgNi45MjMwOCAxNEM2LjkyMzA4IDE0LjI2MTUgNi44MzQ2MiAxNC40ODA4IDYuNjU3NyAxNC42NTc3QzYuNDgwNzcgMTQuODM0NiA2LjI2MTUzIDE0LjkyMzEgNiAxNC45MjMxWk02IDEwLjkyMzFDNS43Mzg0NyAxMC45MjMxIDUuNTE5MjMgMTAuODM0NiA1LjM0MjMgMTAuNjU3N0M1LjE2NTM4IDEwLjQ4MDggNS4wNzY5MyAxMC4yNjE1IDUuMDc2OTMgMTBDNS4wNzY5MyA5LjczODQ3IDUuMTY1MzggOS41MTkyNCA1LjM0MjMgOS4zNDIzMkM1LjUxOTIzIDkuMTY1MzkgNS43Mzg0NyA5LjA3NjkyIDYgOS4wNzY5MkM2LjI2MTUzIDkuMDc2OTIgNi40ODA3NyA5LjE2NTM5IDYuNjU3NyA5LjM0MjMyQzYuODM0NjIgOS41MTkyNCA2LjkyMzA4IDkuNzM4NDcgNi45MjMwOCAxMEM2LjkyMzA4IDEwLjI2MTUgNi44MzQ2MiAxMC40ODA4IDYuNjU3NyAxMC42NTc3QzYuNDgwNzcgMTAuODM0NiA2LjI2MTUzIDEwLjkyMzEgNiAxMC45MjMxWk02IDYuOTIzMDhDNS43Mzg0NyA2LjkyMzA4IDUuNTE5MjMgNi44MzQ2MSA1LjM0MjMgNi42NTc2OEM1LjE2NTM4IDYuNDgwNzYgNS4wNzY5MyA2LjI2MTUzIDUuMDc2OTMgNkM1LjA3NjkzIDUuNzM4NDcgNS4xNjUzOCA1LjUxOTI0IDUuMzQyMyA1LjM0MjMyQzUuNTE5MjMgNS4xNjUzOSA1LjczODQ3IDUuMDc2OTMgNiA1LjA3NjkzQzYuMjYxNTMgNS4wNzY5MyA2LjQ4MDc3IDUuMTY1MzkgNi42NTc3IDUuMzQyMzJDNi44MzQ2MiA1LjUxOTI0IDYuOTIzMDggNS43Mzg0NyA2LjkyMzA4IDZDNi45MjMwOCA2LjI2MTUzIDYuODM0NjIgNi40ODA3NiA2LjY1NzcgNi42NTc2OEM2LjQ4MDc3IDYuODM0NjEgNi4yNjE1MyA2LjkyMzA4IDYgNi45MjMwOFpNMTAuMDAyMyAxNS4zNDYyQzkuNjI4OTcgMTUuMzQ2MiA5LjMxMDkxIDE1LjIxNTUgOS4wNDgwOCAxNC45NTQyQzguNzg1MjYgMTQuNjkyOSA4LjY1Mzg1IDE0LjM3NTYgOC42NTM4NSAxNC4wMDIzQzguNjUzODUgMTMuNjI5IDguNzg0NTEgMTMuMzEwOSA5LjA0NTgzIDEzLjA0ODFDOS4zMDcxNCAxMi43ODUzIDkuNjI0NDQgMTIuNjUzOCA5Ljk5NzczIDEyLjY1MzhDMTAuMzcxIDEyLjY1MzggMTAuNjg5MSAxMi43ODQ1IDEwLjk1MTkgMTMuMDQ1OEMxMS4yMTQ3IDEzLjMwNzEgMTEuMzQ2MiAxMy42MjQ0IDExLjM0NjIgMTMuOTk3N0MxMS4zNDYyIDE0LjM3MSAxMS4yMTU1IDE0LjY4OTEgMTAuOTU0MiAxNC45NTE5QzEwLjY5MjkgMTUuMjE0NyAxMC4zNzU2IDE1LjM0NjIgMTAuMDAyMyAxNS4zNDYyWk0xMC4wMDIzIDExLjM0NjJDOS42Mjg5NyAxMS4zNDYyIDkuMzEwOTEgMTEuMjE1NSA5LjA0ODA4IDEwLjk1NDJDOC43ODUyNiAxMC42OTI5IDguNjUzODUgMTAuMzc1NiA4LjY1Mzg1IDEwLjAwMjNDOC42NTM4NSA5LjYyODk3IDguNzg0NTEgOS4zMTA5MSA5LjA0NTgzIDkuMDQ4MDhDOS4zMDcxNCA4Ljc4NTI2IDkuNjI0NDQgOC42NTM4NSA5Ljk5NzczIDguNjUzODVDMTAuMzcxIDguNjUzODUgMTAuNjg5MSA4Ljc4NDUxIDEwLjk1MTkgOS4wNDU4M0MxMS4yMTQ3IDkuMzA3MTMgMTEuMzQ2MiA5LjYyNDQyIDExLjM0NjIgOS45OTc3M0MxMS4zNDYyIDEwLjM3MSAxMS4yMTU1IDEwLjY4OTEgMTAuOTU0MiAxMC45NTE5QzEwLjY5MjkgMTEuMjE0NyAxMC4zNzU2IDExLjM0NjIgMTAuMDAyMyAxMS4zNDYyWk0xMCAxOC45MjMxQzkuNzM4NDcgMTguOTIzMSA5LjUxOTIzIDE4LjgzNDYgOS4zNDIzIDE4LjY1NzdDOS4xNjUzOCAxOC40ODA4IDkuMDc2OTIgMTguMjYxNSA5LjA3NjkyIDE4QzkuMDc2OTIgMTcuNzM4NSA5LjE2NTM4IDE3LjUxOTIgOS4zNDIzIDE3LjM0MjNDOS41MTkyMyAxNy4xNjU0IDkuNzM4NDcgMTcuMDc2OSAxMCAxNy4wNzY5QzEwLjI2MTUgMTcuMDc2OSAxMC40ODA4IDE3LjE2NTQgMTAuNjU3NyAxNy4zNDIzQzEwLjgzNDYgMTcuNTE5MiAxMC45MjMxIDE3LjczODUgMTAuOTIzMSAxOEMxMC45MjMxIDE4LjI2MTUgMTAuODM0NiAxOC40ODA4IDEwLjY1NzcgMTguNjU3N0MxMC40ODA4IDE4LjgzNDYgMTAuMjYxNSAxOC45MjMxIDEwIDE4LjkyMzFaTTEwIDYuOTIzMDhDOS43Mzg0NyA2LjkyMzA4IDkuNTE5MjMgNi44MzQ2MSA5LjM0MjMgNi42NTc2OEM5LjE2NTM4IDYuNDgwNzYgOS4wNzY5MiA2LjI2MTUzIDkuMDc2OTIgNkM5LjA3NjkyIDUuNzM4NDcgOS4xNjUzOCA1LjUxOTI0IDkuMzQyMyA1LjM0MjMyQzkuNTE5MjMgNS4xNjUzOSA5LjczODQ3IDUuMDc2OTMgMTAgNS4wNzY5M0MxMC4yNjE1IDUuMDc2OTMgMTAuNDgwOCA1LjE2NTM5IDEwLjY1NzcgNS4zNDIzMkMxMC44MzQ2IDUuNTE5MjQgMTAuOTIzMSA1LjczODQ3IDEwLjkyMzEgNkMxMC45MjMxIDYuMjYxNTMgMTAuODM0NiA2LjQ4MDc2IDEwLjY1NzcgNi42NTc2OEMxMC40ODA4IDYuODM0NjEgMTAuMjYxNSA2LjkyMzA4IDEwIDYuOTIzMDhaTTEwIDIxLjVDOS44NjY2NyAyMS41IDkuNzUgMjEuNDUgOS42NSAyMS4zNUM5LjU1IDIxLjI1IDkuNSAyMS4xMzMzIDkuNSAyMUM5LjUgMjAuODY2NyA5LjU1IDIwLjc1IDkuNjUgMjAuNjVDOS43NSAyMC41NSA5Ljg2NjY3IDIwLjUgMTAgMjAuNUMxMC4xMzMzIDIwLjUgMTAuMjUgMjAuNTUgMTAuMzUgMjAuNjVDMTAuNDUgMjAuNzUgMTAuNSAyMC44NjY3IDEwLjUgMjFDMTAuNSAyMS4xMzMzIDEwLjQ1IDIxLjI1IDEwLjM1IDIxLjM1QzEwLjI1IDIxLjQ1IDEwLjEzMzMgMjEuNSAxMCAyMS41Wk0xMCAzLjVDOS44NjY2NyAzLjUgOS43NSAzLjQ1IDkuNjUgMy4zNUM5LjU1IDMuMjUgOS41IDMuMTMzMzMgOS41IDNDOS41IDIuODY2NjcgOS41NSAyLjc1IDkuNjUgMi42NUM5Ljc1IDIuNTUgOS44NjY2NyAyLjUgMTAgMi41QzEwLjEzMzMgMi41IDEwLjI1IDIuNTUgMTAuMzUgMi42NUMxMC40NSAyLjc1IDEwLjUgMi44NjY2NyAxMC41IDNDMTAuNSAzLjEzMzMzIDEwLjQ1IDMuMjUgMTAuMzUgMy4zNUMxMC4yNSAzLjQ1IDEwLjEzMzMgMy41IDEwIDMuNVpNMTQuMDAyMyAxNS4zNDYyQzEzLjYyOSAxNS4zNDYyIDEzLjMxMDkgMTUuMjE1NSAxMy4wNDgxIDE0Ljk1NDJDMTIuNzg1MyAxNC42OTI5IDEyLjY1MzggMTQuMzc1NiAxMi42NTM4IDE0LjAwMjNDMTIuNjUzOCAxMy42MjkgMTIuNzg0NSAxMy4zMTA5IDEzLjA0NTggMTMuMDQ4MUMxMy4zMDcxIDEyLjc4NTMgMTMuNjI0NCAxMi42NTM4IDEzLjk5NzcgMTIuNjUzOEMxNC4zNzEgMTIuNjUzOCAxNC42ODkxIDEyLjc4NDUgMTQuOTUxOSAxMy4wNDU4QzE1LjIxNDcgMTMuMzA3MSAxNS4zNDYyIDEzLjYyNDQgMTUuMzQ2MiAxMy45OTc3QzE1LjM0NjIgMTQuMzcxIDE1LjIxNTUgMTQuNjg5MSAxNC45NTQyIDE0Ljk1MTlDMTQuNjkyOSAxNS4yMTQ3IDE0LjM3NTYgMTUuMzQ2MiAxNC4wMDIzIDE1LjM0NjJaTTE0LjAwMjMgMTEuMzQ2MkMxMy42MjkgMTEuMzQ2MiAxMy4zMTA5IDExLjIxNTUgMTMuMDQ4MSAxMC45NTQyQzEyLjc4NTMgMTAuNjkyOSAxMi42NTM4IDEwLjM3NTYgMTIuNjUzOCAxMC4wMDIzQzEyLjY1MzggOS42Mjg5NyAxMi43ODQ1IDkuMzEwOTEgMTMuMDQ1OCA5LjA0ODA4QzEzLjMwNzEgOC43ODUyNiAxMy42MjQ0IDguNjUzODUgMTMuOTk3NyA4LjY1Mzg1QzE0LjM3MSA4LjY1Mzg1IDE0LjY4OTEgOC43ODQ1MSAxNC45NTE5IDkuMDQ1ODNDMTUuMjE0NyA5LjMwNzEzIDE1LjM0NjIgOS42MjQ0MiAxNS4zNDYyIDkuOTk3NzNDMTUuMzQ2MiAxMC4zNzEgMTUuMjE1NSAxMC42ODkxIDE0Ljk1NDIgMTAuOTUxOUMxNC42OTI5IDExLjIxNDcgMTQuMzc1NiAxMS4zNDYyIDE0LjAwMjMgMTEuMzQ2MlpNMTQgMTguOTIzMUMxMy43Mzg1IDE4LjkyMzEgMTMuNTE5MiAxOC44MzQ2IDEzLjM0MjMgMTguNjU3N0MxMy4xNjU0IDE4LjQ4MDggMTMuMDc2OSAxOC4yNjE1IDEzLjA3NjkgMThDMTMuMDc2OSAxNy43Mzg1IDEzLjE2NTQgMTcuNTE5MiAxMy4zNDIzIDE3LjM0MjNDMTMuNTE5MiAxNy4xNjU0IDEzLjczODUgMTcuMDc2OSAxNCAxNy4wNzY5QzE0LjI2MTUgMTcuMDc2OSAxNC40ODA4IDE3LjE2NTQgMTQuNjU3NyAxNy4zNDIzQzE0LjgzNDYgMTcuNTE5MiAxNC45MjMxIDE3LjczODUgMTQuOTIzMSAxOEMxNC45MjMxIDE4LjI2MTUgMTQuODM0NiAxOC40ODA4IDE0LjY1NzcgMTguNjU3N0MxNC40ODA4IDE4LjgzNDYgMTQuMjYxNSAxOC45MjMxIDE0IDE4LjkyMzFaTTE0IDYuOTIzMDhDMTMuNzM4NSA2LjkyMzA4IDEzLjUxOTIgNi44MzQ2MSAxMy4zNDIzIDYuNjU3NjhDMTMuMTY1NCA2LjQ4MDc2IDEzLjA3NjkgNi4yNjE1MyAxMy4wNzY5IDZDMTMuMDc2OSA1LjczODQ3IDEzLjE2NTQgNS41MTkyNCAxMy4zNDIzIDUuMzQyMzJDMTMuNTE5MiA1LjE2NTM5IDEzLjczODUgNS4wNzY5MyAxNCA1LjA3NjkzQzE0LjI2MTUgNS4wNzY5MyAxNC40ODA4IDUuMTY1MzkgMTQuNjU3NyA1LjM0MjMyQzE0LjgzNDYgNS41MTkyNCAxNC45MjMxIDUuNzM4NDcgMTQuOTIzMSA2QzE0LjkyMzEgNi4yNjE1MyAxNC44MzQ2IDYuNDgwNzYgMTQuNjU3NyA2LjY1NzY4QzE0LjQ4MDggNi44MzQ2MSAxNC4yNjE1IDYuOTIzMDggMTQgNi45MjMwOFpNMTQgMjEuNUMxMy44NjY3IDIxLjUgMTMuNzUgMjEuNDUgMTMuNjUgMjEuMzVDMTMuNTUgMjEuMjUgMTMuNSAyMS4xMzMzIDEzLjUgMjFDMTMuNSAyMC44NjY3IDEzLjU1IDIwLjc1IDEzLjY1IDIwLjY1QzEzLjc1IDIwLjU1IDEzLjg2NjcgMjAuNSAxNCAyMC41QzE0LjEzMzMgMjAuNSAxNC4yNSAyMC41NSAxNC4zNSAyMC42NUMxNC40NSAyMC43NSAxNC41IDIwLjg2NjcgMTQuNSAyMUMxNC41IDIxLjEzMzMgMTQuNDUgMjEuMjUgMTQuMzUgMjEuMzVDMTQuMjUgMjEuNDUgMTQuMTMzMyAyMS41IDE0IDIxLjVaTTE0IDMuNUMxMy44NjY3IDMuNSAxMy43NSAzLjQ1IDEzLjY1IDMuMzVDMTMuNTUgMy4yNSAxMy41IDMuMTMzMzMgMTMuNSAzQzEzLjUgMi44NjY2NyAxMy41NSAyLjc1IDEzLjY1IDIuNjVDMTMuNzUgMi41NSAxMy44NjY3IDIuNSAxNCAyLjVDMTQuMTMzMyAyLjUgMTQuMjUgMi41NSAxNC4zNSAyLjY1QzE0LjQ1IDIuNzUgMTQuNSAyLjg2NjY3IDE0LjUgM0MxNC41IDMuMTMzMzMgMTQuNDUgMy4yNSAxNC4zNSAzLjM1QzE0LjI1IDMuNDUgMTQuMTMzMyAzLjUgMTQgMy41Wk0xOCAxOC45MjMxQzE3LjczODUgMTguOTIzMSAxNy41MTkyIDE4LjgzNDYgMTcuMzQyMyAxOC42NTc3QzE3LjE2NTQgMTguNDgwOCAxNy4wNzY5IDE4LjI2MTUgMTcuMDc2OSAxOEMxNy4wNzY5IDE3LjczODUgMTcuMTY1NCAxNy41MTkyIDE3LjM0MjMgMTcuMzQyM0MxNy41MTkyIDE3LjE2NTQgMTcuNzM4NSAxNy4wNzY5IDE4IDE3LjA3NjlDMTguMjYxNSAxNy4wNzY5IDE4LjQ4MDggMTcuMTY1NCAxOC42NTc3IDE3LjM0MjNDMTguODM0NiAxNy41MTkyIDE4LjkyMzEgMTcuNzM4NSAxOC45MjMxIDE4QzE4LjkyMzEgMTguMjYxNSAxOC44MzQ2IDE4LjQ4MDggMTguNjU3NyAxOC42NTc3QzE4LjQ4MDggMTguODM0NiAxOC4yNjE1IDE4LjkyMzEgMTggMTguOTIzMVpNMTggMTQuOTIzMUMxNy43Mzg1IDE0LjkyMzEgMTcuNTE5MiAxNC44MzQ2IDE3LjM0MjMgMTQuNjU3N0MxNy4xNjU0IDE0LjQ4MDggMTcuMDc2OSAxNC4yNjE1IDE3LjA3NjkgMTRDMTcuMDc2OSAxMy43Mzg1IDE3LjE2NTQgMTMuNTE5MiAxNy4zNDIzIDEzLjM0MjNDMTcuNTE5MiAxMy4xNjU0IDE3LjczODUgMTMuMDc2OSAxOCAxMy4wNzY5QzE4LjI2MTUgMTMuMDc2OSAxOC40ODA4IDEzLjE2NTQgMTguNjU3NyAxMy4zNDIzQzE4LjgzNDYgMTMuNTE5MiAxOC45MjMxIDEzLjczODUgMTguOTIzMSAxNEMxOC45MjMxIDE0LjI2MTUgMTguODM0NiAxNC40ODA4IDE4LjY1NzcgMTQuNjU3N0MxOC40ODA4IDE0LjgzNDYgMTguMjYxNSAxNC45MjMxIDE4IDE0LjkyMzFaTTE4IDEwLjkyMzFDMTcuNzM4NSAxMC45MjMxIDE3LjUxOTIgMTAuODM0NiAxNy4zNDIzIDEwLjY1NzdDMTcuMTY1NCAxMC40ODA4IDE3LjA3NjkgMTAuMjYxNSAxNy4wNzY5IDEwQzE3LjA3NjkgOS43Mzg0NyAxNy4xNjU0IDkuNTE5MjQgMTcuMzQyMyA5LjM0MjMyQzE3LjUxOTIgOS4xNjUzOSAxNy43Mzg1IDkuMDc2OTIgMTggOS4wNzY5MkMxOC4yNjE1IDkuMDc2OTIgMTguNDgwOCA5LjE2NTM5IDE4LjY1NzcgOS4zNDIzMkMxOC44MzQ2IDkuNTE5MjQgMTguOTIzMSA5LjczODQ3IDE4LjkyMzEgMTBDMTguOTIzMSAxMC4yNjE1IDE4LjgzNDYgMTAuNDgwOCAxOC42NTc3IDEwLjY1NzdDMTguNDgwOCAxMC44MzQ2IDE4LjI2MTUgMTAuOTIzMSAxOCAxMC45MjMxWk0xOCA2LjkyMzA4QzE3LjczODUgNi45MjMwOCAxNy41MTkyIDYuODM0NjEgMTcuMzQyMyA2LjY1NzY4QzE3LjE2NTQgNi40ODA3NiAxNy4wNzY5IDYuMjYxNTMgMTcuMDc2OSA2QzE3LjA3NjkgNS43Mzg0NyAxNy4xNjU0IDUuNTE5MjQgMTcuMzQyMyA1LjM0MjMyQzE3LjUxOTIgNS4xNjUzOSAxNy43Mzg1IDUuMDc2OTMgMTggNS4wNzY5M0MxOC4yNjE1IDUuMDc2OTMgMTguNDgwOCA1LjE2NTM5IDE4LjY1NzcgNS4zNDIzMkMxOC44MzQ2IDUuNTE5MjQgMTguOTIzMSA1LjczODQ3IDE4LjkyMzEgNkMxOC45MjMxIDYuMjYxNTMgMTguODM0NiA2LjQ4MDc2IDE4LjY1NzcgNi42NTc2OEMxOC40ODA4IDYuODM0NjEgMTguMjYxNSA2LjkyMzA4IDE4IDYuOTIzMDhaTTIxIDE0LjVDMjAuODY2NyAxNC41IDIwLjc1IDE0LjQ1IDIwLjY1IDE0LjM1QzIwLjU1IDE0LjI1IDIwLjUgMTQuMTMzMyAyMC41IDE0QzIwLjUgMTMuODY2NyAyMC41NSAxMy43NSAyMC42NSAxMy42NUMyMC43NSAxMy41NSAyMC44NjY3IDEzLjUgMjEgMTMuNUMyMS4xMzMzIDEzLjUgMjEuMjUgMTMuNTUgMjEuMzUgMTMuNjVDMjEuNDUgMTMuNzUgMjEuNSAxMy44NjY3IDIxLjUgMTRDMjEuNSAxNC4xMzMzIDIxLjQ1IDE0LjI1IDIxLjM1IDE0LjM1QzIxLjI1IDE0LjQ1IDIxLjEzMzMgMTQuNSAyMSAxNC41Wk0yMSAxMC41QzIwLjg2NjcgMTAuNSAyMC43NSAxMC40NSAyMC42NSAxMC4zNUMyMC41NSAxMC4yNSAyMC41IDEwLjEzMzMgMjAuNSAxMEMyMC41IDkuODY2NjcgMjAuNTUgOS43NSAyMC42NSA5LjY1QzIwLjc1IDkuNTUgMjAuODY2NyA5LjUgMjEgOS41QzIxLjEzMzMgOS41IDIxLjI1IDkuNTUgMjEuMzUgOS42NUMyMS40NSA5Ljc1IDIxLjUgOS44NjY2NyAyMS41IDEwQzIxLjUgMTAuMTMzMyAyMS40NSAxMC4yNSAyMS4zNSAxMC4zNUMyMS4yNSAxMC40NSAyMS4xMzMzIDEwLjUgMjEgMTAuNVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA5MVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA5MSlcIj5cbjxwYXRoIGQ9XCJNMTIuMDUgMTkuNzVDOS44ODcxOSAxOS43NSA4LjA0NjQ5IDE4Ljk5NzQgNi41Mjc5MSAxNy40OTIzQzUuMDA5MzMgMTUuOTg3MSA0LjI1MDA0IDE0LjE1NjQgNC4yNTAwNCAxMlYxMS4yMTkyTDIuOTI2OTEgMTIuNTQyM0MyLjc4ODQ2IDEyLjY4MDcgMi42MTQ0MyAxMi43NTE2IDIuNDA0ODEgMTIuNzU0OEMyLjE5NTIxIDEyLjc1OCAyLjAxNzk4IDEyLjY4NzEgMS44NzMxMSAxMi41NDIzQzEuNzI4MjEgMTIuMzk3NCAxLjY1NTc2IDEyLjIyMTggMS42NTU3NiAxMi4wMTUzQzEuNjU1NzYgMTEuODA4OSAxLjcyODIgMTEuNjMzMyAxLjg3MzA5IDExLjQ4ODVMNC4zNjczMSA4Ljk5NDIyQzQuNTQ4MDggOC44MTM0NiA0Ljc1ODk3IDguNzIzMDggNC45OTk5OSA4LjcyMzA4QzUuMjQxIDguNzIzMDggNS40NTE4OSA4LjgxMzQ2IDUuNjMyNjYgOC45OTQyMkw4LjEyNjg5IDExLjQ4ODVDOC4yNjUzNSAxMS42MjY5IDguMzM2MTkgMTEuODAwOSA4LjMzOTM5IDEyLjAxMDVDOC4zNDI2IDEyLjIyMDIgOC4yNzE3NyAxMi4zOTc0IDguMTI2ODkgMTIuNTQyM0M3Ljk4MjAyIDEyLjY4NzEgNy44MDYzOSAxMi43NTk2IDcuNTk5OTkgMTIuNzU5NkM3LjM5MzU5IDEyLjc1OTYgNy4yMTc5NSAxMi42ODcxIDcuMDczMDkgMTIuNTQyM0w1Ljc0OTk2IDExLjIxOTJWMTJDNS43NDk5NiAxMy43MzcyIDYuMzYxNSAxNS4yMTMxIDcuNTg0NTkgMTYuNDI3OUM4LjgwNzY5IDE3LjY0MjYgMTAuMjk2MiAxOC4yNSAxMi4wNSAxOC4yNUMxMi4zNDIzIDE4LjI1IDEyLjYzMzcgMTguMjMwMSAxMi45MjQxIDE4LjE5MDRDMTMuMjE0NCAxOC4xNTA2IDEzLjUwMDcgMTguMDgyNyAxMy43ODI3IDE3Ljk4NjVDMTMuOTk1NSAxNy45MjI0IDE0LjE5NjUgMTcuOTI5MiAxNC4zODU2IDE4LjAwNjdDMTQuNTc0NyAxOC4wODQzIDE0LjcxNjcgMTguMjE2IDE0LjgxMTUgMTguNDAxOUMxNC45MDY0IDE4LjU5ODEgMTQuOTEyNSAxOC43OTMyIDE0LjgyOTggMTguOTg3NUMxNC43NDcxIDE5LjE4MTcgMTQuNTk5NCAxOS4zMTA5IDE0LjM4NjUgMTkuMzc1QzE0LjAwOTYgMTkuNTA4MyAxMy42MjQ0IDE5LjYwNDEgMTMuMjMwOCAxOS42NjI1QzEyLjgzNzIgMTkuNzIwOCAxMi40NDM2IDE5Ljc1IDEyLjA1IDE5Ljc1Wk0xMS45NSA1Ljc0OTk1QzExLjY1NzcgNS43NDk5NSAxMS4zNjYzIDUuNzY5ODIgMTEuMDc2IDUuODA5NTdDMTAuNzg1NiA1Ljg0OTMyIDEwLjQ5OTQgNS45MTcyNyAxMC4yMTczIDYuMDEzNDJDMTAuMDA0NSA2LjA3NzUyIDkuODAwOTcgNi4wNzA3OSA5LjYwNjc0IDUuOTkzMjNDOS40MTI1MiA1LjkxNTY2IDkuMjY3OTggNS43ODM5MyA5LjE3MzExIDUuNTk4MDVDOS4wNzgyMyA1LjQxMjE1IDkuMDcwNTQgNS4yMjIwOSA5LjE1MDA0IDUuMDI3ODdDOS4yMjk1MiA0LjgzMzY0IDkuMzcwNTQgNC43MDQ0NyA5LjU3MzA5IDQuNjQwMzdDOS45NjAyNyA0LjUwNzA0IDEwLjM1MjMgNC40MDg2NCAxMC43NDkxIDQuMzQ1MThDMTEuMTQ1OCA0LjI4MTczIDExLjU0NjIgNC4yNSAxMS45NSA0LjI1QzE0LjExMjggNC4yNSAxNS45NTM1IDUuMDAyNTYgMTcuNDcyMSA2LjUwNzY4QzE4Ljk5MDcgOC4wMTI4MSAxOS43NSA5Ljg0MzU3IDE5Ljc1IDEyVjEyLjc4MDhMMjEuMDczMSAxMS40NTc3QzIxLjIxMTYgMTEuMzE5MiAyMS4zODU2IDExLjI0ODQgMjEuNTk1MiAxMS4yNDUyQzIxLjgwNDggMTEuMjQyIDIxLjk4MiAxMS4zMTI4IDIyLjEyNjkgMTEuNDU3N0MyMi4yNzE4IDExLjYwMjUgMjIuMzQ0MiAxMS43NzgyIDIyLjM0NDIgMTEuOTg0NkMyMi4zNDQyIDEyLjE5MSAyMi4yNzE4IDEyLjM2NjYgMjIuMTI2OSAxMi41MTE1TDE5LjYzMjcgMTUuMDA1N0MxOS40NTE5IDE1LjE4NjUgMTkuMjQxIDE1LjI3NjkgMTkgMTUuMjc2OUMxOC43NTkgMTUuMjc2OSAxOC41NDgxIDE1LjE4NjUgMTguMzY3MyAxNS4wMDU3TDE1Ljg3MzEgMTIuNTExNUMxNS43MzQ2IDEyLjM3MzEgMTUuNjYzOCAxMi4xOTkgMTUuNjYwNiAxMS45ODk0QzE1LjY1NzQgMTEuNzc5OCAxNS43MjgyIDExLjYwMjUgMTUuODczMSAxMS40NTc3QzE2LjAxOCAxMS4zMTI4IDE2LjE5MzYgMTEuMjQwNCAxNi40IDExLjI0MDRDMTYuNjA2NCAxMS4yNDA0IDE2Ljc4MiAxMS4zMTI4IDE2LjkyNjkgMTEuNDU3N0wxOC4yNSAxMi43ODA4VjEyQzE4LjI1IDEwLjI2MjggMTcuNjM4NSA4Ljc4NjgzIDE2LjQxNTQgNy41NzIwN0MxNS4xOTIzIDYuMzU3MzIgMTMuNzAzOSA1Ljc0OTk1IDExLjk1IDUuNzQ5OTVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJtMTAuNTggMTQuMTQ2LTIuMzIyLTIuMzIzYS43MjQuNzI0IDAgMCAwLS41MjItLjIxMi43MDcuNzA3IDAgMCAwLS41MzIuMjEyLjcxNy43MTcgMCAwIDAtLjIxNy41MjdjMCAuMjA2LjA3Mi4zODIuMjE3LjUyN2wyLjc0NCAyLjc0NGEuODcuODcgMCAwIDAgLjYzMy4yNzFjLjI0IDAgLjQ1Mi0uMDkuNjMyLS4yN2w1LjU2NC01LjU2NGEuNzI1LjcyNSAwIDAgMCAuMjEyLS41MjIuNzA3LjcwNyAwIDAgMC0uMjEyLS41MzIuNzE4LjcxOCAwIDAgMC0uNTI3LS4yMTcuNzE3LjcxNyAwIDAgMC0uNTI3LjIxN2wtNS4xNDIgNS4xNDJabTEuNDIyIDcuMzU0YTkuMjU1IDkuMjU1IDAgMCAxLTMuNzA1LS43NDggOS41OTggOS41OTggMCAwIDEtMy4wMTgtMi4wMyA5LjU5MSA5LjU5MSAwIDAgMS0yLjAzLTMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxLS43NDktMy43MDRjMC0xLjMxNC4yNS0yLjU1Ljc0OC0zLjcwNWE5LjU5NyA5LjU5NyAwIDAgMSAyLjAzLTMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxIDMuMDE2LTIuMDMgOS4yNDUgOS4yNDUgMCAwIDEgMy43MDQtLjc0OWMxLjMxNCAwIDIuNTUuMjUgMy43MDUuNzQ4YTkuNTk3IDkuNTk3IDAgMCAxIDMuMDE4IDIuMDMgOS41OTIgOS41OTIgMCAwIDEgMi4wMyAzLjAxNiA5LjI0NSA5LjI0NSAwIDAgMSAuNzQ5IDMuNzA0YzAgMS4zMTQtLjI1IDIuNTUtLjc0OCAzLjcwNWE5LjU5OCA5LjU5OCAwIDAgMS0yLjAzIDMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxLTMuMDE2IDIuMDMgOS4yNDUgOS4yNDUgMCAwIDEtMy43MDQuNzQ5WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk03LjMwOCAyMC41Yy0uNTA1IDAtLjkzMy0uMTc1LTEuMjgzLS41MjVhMS43NDUgMS43NDUgMCAwIDEtLjUyNS0xLjI4M1Y2aC0uMjVhLjcyNi43MjYgMCAwIDEtLjUzNS0uMjE1LjcyNi43MjYgMCAwIDEtLjIxNS0uNTM1LjczLjczIDAgMCAxIC4yMTUtLjUzNS43MjYuNzI2IDAgMCAxIC41MzUtLjIxNUg5YS44NC44NCAwIDAgMSAuMjYzLS42My44ODkuODg5IDAgMCAxIC42NC0uMjU1aDQuMTkzYy4yNTEgMCAuNDY1LjA4NS42NC4yNTRBLjg0Ljg0IDAgMCAxIDE1IDQuNWgzLjc1YS43My43MyAwIDAgMSAuNTM1LjIxNS43MjYuNzI2IDAgMCAxIC4yMTUuNTM1LjcyNi43MjYgMCAwIDEtLjIxNS41MzUuNzI2LjcyNiAwIDAgMS0uNTM1LjIxNWgtLjI1djEyLjY5MmMwIC41MDYtLjE3NS45MzMtLjUyNSAxLjI4My0uMzUuMzUtLjc3OC41MjUtMS4yODMuNTI1SDcuMzA4Wk03IDZ2MTIuNjkyYS4zLjMgMCAwIDAgLjA4Ny4yMjEuMy4zIDAgMCAwIC4yMi4wODdoOS4zODVhLjMuMyAwIDAgMCAuMjIxLS4wODcuMy4zIDAgMCAwIC4wODctLjIyVjZIN1ptMi40MDQgMTAuMjVhLjczLjczIDAgMCAwIC4yMTUuNTM1LjcyNi43MjYgMCAwIDAgLjUzNS4yMTUuNzI2LjcyNiAwIDAgMCAuNTM0LS4yMTUuNzI2LjcyNiAwIDAgMCAuMjE2LS41MzV2LTcuNWEuNzI2LjcyNiAwIDAgMC0uMjE2LS41MzUuNzI2LjcyNiAwIDAgMC0uNTM0LS4yMTUuNzI2LjcyNiAwIDAgMC0uNTM1LjIxNS43MjYuNzI2IDAgMCAwLS4yMTUuNTM1djcuNVptMy42OTIgMGMwIC4yMTMuMDcyLjM5MS4yMTYuNTM1YS43MjYuNzI2IDAgMCAwIC41MzQuMjE1LjcyNi43MjYgMCAwIDAgLjUzNS0uMjE1LjcyNi43MjYgMCAwIDAgLjIxNS0uNTM1di03LjVhLjcyNi43MjYgMCAwIDAtLjIxNS0uNTM1LjcyNi43MjYgMCAwIDAtLjUzNS0uMjE1LjcyNi43MjYgMCAwIDAtLjUzNC4yMTUuNzI2LjcyNiAwIDAgMC0uMjE2LjUzNXY3LjVaTTcgNnYxMi42OTJhLjMuMyAwIDAgMCAuMDg3LjIyMS4zLjMgMCAwIDAgLjIyLjA4N0g3VjZaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTEyIDE2Ljc1YS43MjYuNzI2IDAgMCAwIC41MzUtLjIxNi43MjYuNzI2IDAgMCAwIC4yMTUtLjUzNHYtNC4yNWEuNzI2LjcyNiAwIDAgMC0uMjE2LS41MzRBLjcyNy43MjcgMCAwIDAgMTIgMTFhLjcyNS43MjUgMCAwIDAtLjUzNS4yMTYuNzI2LjcyNiAwIDAgMC0uMjE1LjUzNFYxNmMwIC4yMTIuMDcyLjM5LjIxNi41MzRhLjcyNi43MjYgMCAwIDAgLjUzNC4yMTZabTAtNy40NjJhLjc4Ljc4IDAgMCAwIC41NzUtLjIzMi43ODEuNzgxIDAgMCAwIC4yMzMtLjU3NS43ODIuNzgyIDAgMCAwLS4yMzItLjU3Ni43ODIuNzgyIDAgMCAwLS41NzYtLjIzMi43ODEuNzgxIDAgMCAwLS41NzUuMjMyLjc4Mi43ODIgMCAwIDAtLjIzMy41NzZjMCAuMjI5LjA3OC40Mi4yMzIuNTc1YS43ODEuNzgxIDAgMCAwIC41NzYuMjMyWm0uMDAyIDEyLjIxMmE5LjI1NSA5LjI1NSAwIDAgMS0zLjcwNS0uNzQ4IDkuNTk4IDkuNTk4IDAgMCAxLTMuMDE4LTIuMDMgOS41OTEgOS41OTEgMCAwIDEtMi4wMy0zLjAxNiA5LjI0NSA5LjI0NSAwIDAgMS0uNzQ5LTMuNzA0YzAtMS4zMTQuMjUtMi41NS43NDgtMy43MDVhOS41OTcgOS41OTcgMCAwIDEgMi4wMy0zLjAxOCA5LjU5MiA5LjU5MiAwIDAgMSAzLjAxNi0yLjAzIDkuMjQ1IDkuMjQ1IDAgMCAxIDMuNzA0LS43NDljMS4zMTQgMCAyLjU1LjI1IDMuNzA1Ljc0OGE5LjU5NyA5LjU5NyAwIDAgMSAzLjAxOCAyLjAzIDkuNTkyIDkuNTkyIDAgMCAxIDIuMDMgMy4wMTYgOS4yNDUgOS4yNDUgMCAwIDEgLjc0OSAzLjcwNGMwIDEuMzE0LS4yNSAyLjU1LS43NDggMy43MDVhOS41OTggOS41OTggMCAwIDEtMi4wMyAzLjAxOCA5LjU5MiA5LjU5MiAwIDAgMS0zLjAxNiAyLjAzIDkuMjQ1IDkuMjQ1IDAgMCAxLTMuNzA0Ljc0OVpNMTIgMjBjMi4yMzMgMCA0LjEyNS0uNzc1IDUuNjc1LTIuMzI1QzE5LjIyNSAxNi4xMjUgMjAgMTQuMjMzIDIwIDEyYzAtMi4yMzMtLjc3NS00LjEyNS0yLjMyNS01LjY3NUMxNi4xMjUgNC43NzUgMTQuMjMzIDQgMTIgNGMtMi4yMzMgMC00LjEyNS43NzUtNS42NzUgMi4zMjVDNC43NzUgNy44NzUgNCA5Ljc2NyA0IDEyYzAgMi4yMzMuNzc1IDQuMTI1IDIuMzI1IDUuNjc1QzcuODc1IDE5LjIyNSA5Ljc2NyAyMCAxMiAyMFpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTdhLjk3Ljk3IDAgMCAwIC43MTMtLjI4OEEuOTY4Ljk2OCAwIDAgMCAxMyAxNnYtNGEuOTY4Ljk2OCAwIDAgMC0uMjg3LS43MTNBLjk2OC45NjggMCAwIDAgMTIgMTFhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2OC45NjggMCAwIDAgMTEgMTJ2NGMwIC4yODMuMDk2LjUyLjI4Ny43MTIuMTkyLjE5Mi40My4yODguNzEzLjI4OFptMC04Yy4yODMgMCAuNTItLjA5Ni43MTMtLjI4N0EuOTY3Ljk2NyAwIDAgMCAxMyA4YS45NjcuOTY3IDAgMCAwLS4yODctLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiA3YS45NjguOTY4IDAgMCAwLS43MTMuMjg3QS45NjcuOTY3IDAgMCAwIDExIDhjMCAuMjgzLjA5Ni41Mi4yODcuNzEzLjE5Mi4xOTEuNDMuMjg3LjcxMy4yODdabTAgMTNhOS43MzggOS43MzggMCAwIDEtMy45LS43ODggMTAuMDk5IDEwLjA5OSAwIDAgMS0zLjE3NS0yLjEzN2MtLjktLjktMS42MTItMS45NTgtMi4xMzctMy4xNzVBOS43MzggOS43MzggMCAwIDEgMiAxMmE5Ljc0IDkuNzQgMCAwIDEgLjc4OC0zLjkgMTAuMDk5IDEwLjA5OSAwIDAgMSAyLjEzNy0zLjE3NWMuOS0uOSAxLjk1OC0xLjYxMiAzLjE3NS0yLjEzN0E5LjczOCA5LjczOCAwIDAgMSAxMiAyYTkuNzQgOS43NCAwIDAgMSAzLjkuNzg4IDEwLjA5OCAxMC4wOTggMCAwIDEgMy4xNzUgMi4xMzdjLjkuOSAxLjYxMyAxLjk1OCAyLjEzNyAzLjE3NUE5LjczOCA5LjczOCAwIDAgMSAyMiAxMmE5LjczOCA5LjczOCAwIDAgMS0uNzg4IDMuOSAxMC4wOTggMTAuMDk4IDAgMCAxLTIuMTM3IDMuMTc1Yy0uOS45LTEuOTU4IDEuNjEzLTMuMTc1IDIuMTM3QTkuNzM4IDkuNzM4IDAgMCAxIDEyIDIyWlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA3M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA3MylcIj5cbjxwYXRoIGQ9XCJNMTcuMjQwMyAxNC4xODA3TDE2LjEzNjUgMTMuMDU3NkMxNi4yNDE3IDEyLjg2NTMgMTYuMzM1NiAxMi42NTM1IDE2LjQxODIgMTIuNDIyMUMxNi41MDA5IDEyLjE5MDcgMTYuNTYwOSAxMS45NDYxIDE2LjU5OCAxMS42ODg0QzE2LjYzNTIgMTEuNDk2MSAxNi43MjQgMTEuMzMzMyAxNi44NjQ0IDExLjJDMTcuMDA0OCAxMS4wNjY2IDE3LjE2NiAxMSAxNy4zNDggMTFDMTcuNTgxNCAxMSAxNy43NzI0IDExLjA3OTUgMTcuOTIxMSAxMS4yMzg0QzE4LjA2OTggMTEuMzk3NCAxOC4xMjg4IDExLjU4MzMgMTguMDk4IDExLjc5NjFDMTguMDQwMyAxMi4yNTI1IDE3LjkzNzEgMTIuNjc2NSAxNy43ODg0IDEzLjA2ODJDMTcuNjM5NyAxMy40NTk5IDE3LjQ1NyAxMy44MzA3IDE3LjI0MDMgMTQuMTgwN1pNMTQuMDIxMSAxMC45MzA3TDEyLjY0NDIgOS41NTM3OFY0Ljk5OTk3QzEyLjY0NDIgNC43MTY2NCAxMi41NDg0IDQuNDc5MTQgMTIuMzU2NyA0LjI4NzQ3QzEyLjE2NSA0LjA5NTgxIDExLjkyNzUgMy45OTk5NyAxMS42NDQyIDMuOTk5OTdDMTEuMzYwOSAzLjk5OTk3IDExLjEyMzQgNC4wOTU4MSAxMC45MzE3IDQuMjg3NDdDMTAuNzQgNC40NzkxNCAxMC42NDQyIDQuNzE2NjQgMTAuNjQ0MiA0Ljk5OTk3VjcuNTM0NTVMOS4xNDQyNCA2LjAzNDU3VjQuOTk5OTdDOS4xNDQyNCA0LjMwMTI4IDkuMzg2MjMgMy43MDk5MyA5Ljg3MDE5IDMuMjI1OTVDMTAuMzU0MiAyLjc0MTk4IDEwLjk0NTUgMi41IDExLjY0NDIgMi41QzEyLjM0MjkgMi41IDEyLjkzNDMgMi43NDE5OCAxMy40MTgyIDMuMjI1OTVDMTMuOTAyMiAzLjcwOTkzIDE0LjE0NDIgNC4zMDEyOCAxNC4xNDQyIDQuOTk5OTdWMTAuMzQ2MUMxNC4xNDQyIDEwLjQ1ODkgMTQuMTMxMyAxMC41NjE1IDE0LjEwNTcgMTAuNjUzOEMxNC4wODAxIDEwLjc0NjEgMTQuMDUxOSAxMC44Mzg0IDE0LjAyMTEgMTAuOTMwN1pNMTkuMzQwNCAyMS4xODg0TDIuMjA1NzcgNC4wNTM3NUMyLjA2NzMyIDMuOTE1MyAxLjk5NjQ4IDMuNzQxMjcgMS45OTMyNyAzLjUzMTY1QzEuOTkwMDcgMy4zMjIwNSAyLjA2MDkgMy4xNDQ4MiAyLjIwNTc3IDIuOTk5OTVDMi4zNTA2MyAyLjg1NTA3IDIuNTI2MjcgMi43ODI2MiAyLjczMjY3IDIuNzgyNjJDMi45MzkwOCAyLjc4MjYyIDMuMTE0NzMgMi44NTUwNyAzLjI1OTU5IDIuOTk5OTVMMjAuMzk0MiAyMC4xMzQ2QzIwLjUzMjcgMjAuMjczIDIwLjYwMzUgMjAuNDQ3MSAyMC42MDY3IDIwLjY1NjdDMjAuNjA5OSAyMC44NjYzIDIwLjUzOTEgMjEuMDQzNSAyMC4zOTQyIDIxLjE4ODRDMjAuMjQ5MyAyMS4zMzMzIDIwLjA3MzcgMjEuNDA1NyAxOS44NjczIDIxLjQwNTdDMTkuNjYwOSAyMS40MDU3IDE5LjQ4NTMgMjEuMzMzMyAxOS4zNDA0IDIxLjE4ODRaTTEwLjg5NDIgMjBWMTcuNDUzOEM5LjM4MjY4IDE3LjI3NTYgOC4wOTgwNyAxNi42NTkyIDcuMDQwMzcgMTUuNjA0N0M1Ljk4MjY4IDE0LjU1MDMgNS4zNjYwMyAxMy4yODA3IDUuMTkwMzkgMTEuNzk2MUM1LjE1OTYzIDExLjU4MzMgNS4yMTg2IDExLjM5NzQgNS4zNjczMiAxMS4yMzg0QzUuNTE2MDIgMTEuMDc5NSA1LjcxMjE2IDExIDUuOTU1NzQgMTFDNi4xMzEzOSAxMSA2LjI4ODQ0IDExLjA2NjYgNi40MjY4OSAxMS4yQzYuNTY1MzYgMTEuMzMzMyA2LjY1MzE4IDExLjQ5NjEgNi42OTAzNCAxMS42ODg0QzYuODU1NzMgMTIuOTA2NCA3LjQwNjM3IDEzLjkyOTUgOC4zNDIyNyAxNC43NTc3QzkuMjc4MTcgMTUuNTg1OSAxMC4zNzg4IDE2IDExLjY0NDIgMTZDMTIuMjg3OCAxNiAxMi44OTI2IDE1Ljg4NTIgMTMuNDU4NiAxNS42NTU3QzE0LjAyNDcgMTUuNDI2MiAxNC41MjU2IDE1LjEwODMgMTQuOTYxNSAxNC43MDE5TDE2LjAzMDcgMTUuNzcxMUMxNS41NDc0IDE2LjIyNDkgMTQuOTk3NCAxNi42MDEyIDE0LjM4MDcgMTYuOUMxMy43NjQxIDE3LjE5ODcgMTMuMTAxOSAxNy4zODMzIDEyLjM5NDIgMTcuNDUzOFYyMEMxMi4zOTQyIDIwLjIxMjggMTIuMzIyNCAyMC4zOTEgMTIuMTc4OCAyMC41MzQ2QzEyLjAzNTIgMjAuNjc4MiAxMS44NTcgMjAuNzUgMTEuNjQ0MiAyMC43NUMxMS40MzE0IDIwLjc1IDExLjI1MzIgMjAuNjc4MiAxMS4xMDk2IDIwLjUzNDZDMTAuOTY2IDIwLjM5MSAxMC44OTQyIDIwLjIxMjggMTAuODk0MiAyMFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA2N1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA2NylcIj5cbjxwYXRoIGQ9XCJNMTcuMjQwMyAxNC4xODA3TDE2LjEzNjUgMTMuMDU3NkMxNi4yNDE3IDEyLjg2NTMgMTYuMzM1NiAxMi42NTM1IDE2LjQxODIgMTIuNDIyMUMxNi41MDA5IDEyLjE5MDcgMTYuNTYwOSAxMS45NDYxIDE2LjU5OCAxMS42ODg0QzE2LjYzNTIgMTEuNDk2MSAxNi43MjQgMTEuMzMzMyAxNi44NjQ0IDExLjJDMTcuMDA0OCAxMS4wNjY2IDE3LjE2NiAxMSAxNy4zNDggMTFDMTcuNTgxNCAxMSAxNy43NzI0IDExLjA3OTUgMTcuOTIxMSAxMS4yMzg0QzE4LjA2OTggMTEuMzk3NCAxOC4xMjg4IDExLjU4MzMgMTguMDk4IDExLjc5NjFDMTguMDQwMyAxMi4yNTI1IDE3LjkzNzEgMTIuNjc2NSAxNy43ODg0IDEzLjA2ODJDMTcuNjM5NyAxMy40NTk5IDE3LjQ1NyAxMy44MzA3IDE3LjI0MDMgMTQuMTgwN1pNMTQuMDIxMSAxMC45MzA3TDkuMTQ0MjQgNi4wMzQ1N1Y0Ljk5OTk3QzkuMTQ0MjQgNC4zMDEyOCA5LjM4NjIzIDMuNzA5OTMgOS44NzAxOSAzLjIyNTk1QzEwLjM1NDIgMi43NDE5OCAxMC45NDU1IDIuNSAxMS42NDQyIDIuNUMxMi4zNDI5IDIuNSAxMi45MzQzIDIuNzQxOTggMTMuNDE4MiAzLjIyNTk1QzEzLjkwMjIgMy43MDk5MyAxNC4xNDQyIDQuMzAxMjggMTQuMTQ0MiA0Ljk5OTk3VjEwLjM0NjFDMTQuMTQ0MiAxMC40NTg5IDE0LjEzMTMgMTAuNTYxNSAxNC4xMDU3IDEwLjY1MzhDMTQuMDgwMSAxMC43NDYxIDE0LjA1MTkgMTAuODM4NCAxNC4wMjExIDEwLjkzMDdaTTE5LjM0MDQgMjEuMTg4NEwyLjIwNTc3IDQuMDUzNzVDMi4wNjczMiAzLjkxNTMgMS45OTY0OCAzLjc0MTI3IDEuOTkzMjcgMy41MzE2NUMxLjk5MDA3IDMuMzIyMDUgMi4wNjA5IDMuMTQ0ODIgMi4yMDU3NyAyLjk5OTk1QzIuMzUwNjMgMi44NTUwNyAyLjUyNjI3IDIuNzgyNjIgMi43MzI2NyAyLjc4MjYyQzIuOTM5MDggMi43ODI2MiAzLjExNDczIDIuODU1MDcgMy4yNTk1OSAyLjk5OTk1TDIwLjM5NDIgMjAuMTM0NkMyMC41MzI3IDIwLjI3MyAyMC42MDM1IDIwLjQ0NzEgMjAuNjA2NyAyMC42NTY3QzIwLjYwOTkgMjAuODY2MyAyMC41MzkxIDIxLjA0MzUgMjAuMzk0MiAyMS4xODg0QzIwLjI0OTMgMjEuMzMzMyAyMC4wNzM3IDIxLjQwNTcgMTkuODY3MyAyMS40MDU3QzE5LjY2MDkgMjEuNDA1NyAxOS40ODUzIDIxLjMzMzMgMTkuMzQwNCAyMS4xODg0Wk0xMC44OTQyIDIwVjE3LjQ1NzZDOS4zODI2OCAxNy4yODMzIDguMDk4MDcgMTYuNjY3MyA3LjA0MDM3IDE1LjYwOTZDNS45ODI2OCAxNC41NTE5IDUuMzY2MDMgMTMuMjgwNyA1LjE5MDM5IDExLjc5NjFDNS4xNTk2MyAxMS41ODMzIDUuMjE4NiAxMS4zOTc0IDUuMzY3MzIgMTEuMjM4NEM1LjUxNjAyIDExLjA3OTUgNS43MTIxNiAxMSA1Ljk1NTc0IDExQzYuMTMxMzkgMTEgNi4yODg0NCAxMS4wNjY2IDYuNDI2ODkgMTEuMkM2LjU2NTM2IDExLjMzMzMgNi42NTMxOCAxMS40OTYxIDYuNjkwMzQgMTEuNjg4NEM2Ljg1NTczIDEyLjkwNjQgNy40MDYzNyAxMy45Mjk1IDguMzQyMjcgMTQuNzU3N0M5LjI3ODE3IDE1LjU4NTkgMTAuMzc4OCAxNiAxMS42NDQyIDE2QzEyLjI4NzggMTYgMTIuODkyNiAxNS44ODUyIDEzLjQ1ODYgMTUuNjU1N0MxNC4wMjQ3IDE1LjQyNjIgMTQuNTI1NiAxNS4xMDgzIDE0Ljk2MTUgMTQuNzAxOUwxNi4wMzA3IDE1Ljc3MTFDMTUuNTQ3NCAxNi4yMjQ5IDE0Ljk5NzQgMTYuNTk4NiAxNC4zODA3IDE2Ljg5MjJDMTMuNzY0MSAxNy4xODU4IDEzLjEwMTkgMTcuMzc0MyAxMi4zOTQyIDE3LjQ1NzZWMjBDMTIuMzk0MiAyMC4yMTI4IDEyLjMyMjQgMjAuMzkxIDEyLjE3ODggMjAuNTM0NkMxMi4wMzUyIDIwLjY3ODIgMTEuODU3IDIwLjc1IDExLjY0NDIgMjAuNzVDMTEuNDMxNCAyMC43NSAxMS4yNTMyIDIwLjY3ODIgMTEuMTA5NiAyMC41MzQ2QzEwLjk2NiAyMC4zOTEgMTAuODk0MiAyMC4yMTI4IDEwLjg5NDIgMjBaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNjFcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNjEpXCI+XG48cGF0aCBkPVwiTTExLjk5OTggMTMuNUMxMS4zMDExIDEzLjUgMTAuNzA5OCAxMy4yNTggMTAuMjI1OCAxMi43NzRDOS43NDE4MSAxMi4yOSA5LjQ5OTgzIDExLjY5ODcgOS40OTk4MyAxMVY0Ljk5OTk3QzkuNDk5ODMgNC4zMDEyNyA5Ljc0MTgxIDMuNzA5OTMgMTAuMjI1OCAzLjIyNTk1QzEwLjcwOTggMi43NDE5OCAxMS4zMDExIDIuNSAxMS45OTk4IDIuNUMxMi42OTg1IDIuNSAxMy4yODk4IDIuNzQxOTggMTMuNzczOCAzLjIyNTk1QzE0LjI1NzggMy43MDk5MyAxNC40OTk4IDQuMzAxMjcgMTQuNDk5OCA0Ljk5OTk3VjExQzE0LjQ5OTggMTEuNjk4NyAxNC4yNTc4IDEyLjI5IDEzLjc3MzggMTIuNzc0QzEzLjI4OTggMTMuMjU4IDEyLjY5ODUgMTMuNSAxMS45OTk4IDEzLjVaTTExLjk5OTggMjAuNzVDMTEuNzg3IDIwLjc1IDExLjYwODggMjAuNjc4MiAxMS40NjUyIDIwLjUzNDZDMTEuMzIxNiAyMC4zOTEgMTEuMjQ5OCAyMC4yMTI4IDExLjI0OTggMjBWMTcuNDUzOEM5LjczODMgMTcuMjc1NiA4LjQ1MzY4IDE2LjY1OTIgNy4zOTU5OCAxNS42MDQ3QzYuMzM4MyAxNC41NTAzIDUuNzIxNjQgMTMuMjgwNyA1LjU0NiAxMS43OTYxQzUuNTE1MjIgMTEuNTgzMyA1LjU3NDE5IDExLjM5NzQgNS43MjI5IDExLjIzODRDNS44NzE2MiAxMS4wNzk1IDYuMDY3NzcgMTEgNi4zMTEzNSAxMUM2LjQ4Njk5IDExIDYuNjQ0MDQgMTEuMDY2NiA2Ljc4MjUgMTEuMkM2LjkyMDk1IDExLjMzMzMgNy4wMDg3NyAxMS40OTYxIDcuMDQ1OTUgMTEuNjg4NEM3LjIxMTM0IDEyLjkwNjQgNy43NjE5OCAxMy45Mjk1IDguNjk3ODggMTQuNzU3N0M5LjYzMzc4IDE1LjU4NTkgMTAuNzM0NCAxNiAxMS45OTk4IDE2QzEzLjI2NTIgMTYgMTQuMzY1OCAxNS41ODU5IDE1LjMwMTcgMTQuNzU3N0MxNi4yMzc2IDEzLjkyOTUgMTYuNzg4MyAxMi45MDY0IDE2Ljk1MzcgMTEuNjg4NEMxNi45OTA4IDExLjQ5NjEgMTcuMDc5NiAxMS4zMzMzIDE3LjIyIDExLjJDMTcuMzYwNCAxMS4wNjY2IDE3LjUyMTYgMTEgMTcuNzAzNiAxMUMxNy45MzcgMTEgMTguMTI4IDExLjA3OTUgMTguMjc2NyAxMS4yMzg0QzE4LjQyNTQgMTEuMzk3NCAxOC40ODQ0IDExLjU4MzMgMTguNDUzNiAxMS43OTYxQzE4LjI3OCAxMy4yODA3IDE3LjY2MTMgMTQuNTUwMyAxNi42MDM2IDE1LjYwNDdDMTUuNTQ1OSAxNi42NTkyIDE0LjI2MTMgMTcuMjc1NiAxMi43NDk4IDE3LjQ1MzhWMjBDMTIuNzQ5OCAyMC4yMTI4IDEyLjY3OCAyMC4zOTEgMTIuNTM0NCAyMC41MzQ2QzEyLjM5MDggMjAuNjc4MiAxMi4yMTI2IDIwLjc1IDExLjk5OTggMjAuNzVaTTExLjk5OTggMTJDMTIuMjgzMSAxMiAxMi41MjA2IDExLjkwNDEgMTIuNzEyMyAxMS43MTI1QzEyLjkwNCAxMS41MjA4IDEyLjk5OTggMTEuMjgzMyAxMi45OTk4IDExVjQuOTk5OTdDMTIuOTk5OCA0LjcxNjY0IDEyLjkwNCA0LjQ3OTE0IDEyLjcxMjMgNC4yODc0N0MxMi41MjA2IDQuMDk1ODEgMTIuMjgzMSAzLjk5OTk3IDExLjk5OTggMy45OTk5N0MxMS43MTY1IDMuOTk5OTcgMTEuNDc5IDQuMDk1ODEgMTEuMjg3MyA0LjI4NzQ3QzExLjA5NTYgNC40NzkxNCAxMC45OTk4IDQuNzE2NjQgMTAuOTk5OCA0Ljk5OTk3VjExQzEwLjk5OTggMTEuMjgzMyAxMS4wOTU2IDExLjUyMDggMTEuMjg3MyAxMS43MTI1QzExLjQ3OSAxMS45MDQxIDExLjcxNjUgMTIgMTEuOTk5OCAxMlpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA2NFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA2NClcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5OCAxMy41QzExLjMwMTEgMTMuNSAxMC43MDk4IDEzLjI1OCAxMC4yMjU4IDEyLjc3NEM5Ljc0MTgxIDEyLjI5IDkuNDk5ODMgMTEuNjk4NyA5LjQ5OTgzIDExVjQuOTk5OTdDOS40OTk4MyA0LjMwMTI3IDkuNzQxODEgMy43MDk5MyAxMC4yMjU4IDMuMjI1OTVDMTAuNzA5OCAyLjc0MTk4IDExLjMwMTEgMi41IDExLjk5OTggMi41QzEyLjY5ODUgMi41IDEzLjI4OTggMi43NDE5OCAxMy43NzM4IDMuMjI1OTVDMTQuMjU3OCAzLjcwOTkzIDE0LjQ5OTggNC4zMDEyNyAxNC40OTk4IDQuOTk5OTdWMTFDMTQuNDk5OCAxMS42OTg3IDE0LjI1NzggMTIuMjkgMTMuNzczOCAxMi43NzRDMTMuMjg5OCAxMy4yNTggMTIuNjk4NSAxMy41IDExLjk5OTggMTMuNVpNMTEuOTk5OCAyMC43NUMxMS43ODcgMjAuNzUgMTEuNjA4OCAyMC42NzgyIDExLjQ2NTIgMjAuNTM0NkMxMS4zMjE2IDIwLjM5MSAxMS4yNDk4IDIwLjIxMjggMTEuMjQ5OCAyMFYxNy40NTc2QzkuNzM4MyAxNy4yODMzIDguNDUzNjggMTYuNjY3MyA3LjM5NTk4IDE1LjYwOTZDNi4zMzgzIDE0LjU1MTkgNS43MjE2NCAxMy4yODA3IDUuNTQ2IDExLjc5NjFDNS41MTUyMiAxMS41ODMzIDUuNTc0MTkgMTEuMzk3NCA1LjcyMjkgMTEuMjM4NEM1Ljg3MTYyIDExLjA3OTUgNi4wNjc3NyAxMSA2LjMxMTM1IDExQzYuNDg2OTkgMTEgNi42NDQwNCAxMS4wNjY2IDYuNzgyNSAxMS4yQzYuOTIwOTUgMTEuMzMzMyA3LjAwODc3IDExLjQ5NjEgNy4wNDU5NSAxMS42ODg0QzcuMjExMzQgMTIuOTA2NCA3Ljc2MTk4IDEzLjkyOTUgOC42OTc4OCAxNC43NTc3QzkuNjMzNzggMTUuNTg1OSAxMC43MzQ0IDE2IDExLjk5OTggMTZDMTMuMjY1MiAxNiAxNC4zNjU4IDE1LjU4NTkgMTUuMzAxNyAxNC43NTc3QzE2LjIzNzYgMTMuOTI5NSAxNi43ODgzIDEyLjkwNjQgMTYuOTUzNyAxMS42ODg0QzE2Ljk5MDggMTEuNDk2MSAxNy4wNzk2IDExLjMzMzMgMTcuMjIgMTEuMkMxNy4zNjA0IDExLjA2NjYgMTcuNTIxNiAxMSAxNy43MDM2IDExQzE3LjkzNyAxMSAxOC4xMjggMTEuMDc5NSAxOC4yNzY3IDExLjIzODRDMTguNDI1NCAxMS4zOTc0IDE4LjQ4NDQgMTEuNTgzMyAxOC40NTM2IDExLjc5NjFDMTguMjc4IDEzLjI4MDcgMTcuNjYxMyAxNC41NTE5IDE2LjYwMzYgMTUuNjA5NkMxNS41NDU5IDE2LjY2NzMgMTQuMjYxMyAxNy4yODMzIDEyLjc0OTggMTcuNDU3NlYyMEMxMi43NDk4IDIwLjIxMjggMTIuNjc4IDIwLjM5MSAxMi41MzQ0IDIwLjUzNDZDMTIuMzkwOCAyMC42NzgyIDEyLjIxMjYgMjAuNzUgMTEuOTk5OCAyMC43NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gIDxwYXRoIGZpbGw9XCIjNDI0NTRCXCIgZD1cIm0xNS4yNjIgNi43MDgtMTEtNi41MDNDMy4zNy0uMzIzIDIgLjE5IDIgMS40OTVWMTQuNWMwIDEuMTcyIDEuMjcyIDEuODc4IDIuMjYzIDEuMjlsMTEtNi41Yy45OC0uNTc4Ljk4NC0yLjAwMiAwLTIuNThaXCIvPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzAzN1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzAzNylcIj5cbjxwYXRoIGQ9XCJNMjAuNTA1OSAxNS44NTE4TDE3Ljc2OTQgMTMuMTE1M1YxNS4wMTE1TDE2LjI2OTUgMTMuNTExNVY2LjMwNzY4QzE2LjI2OTUgNi4yMTc5MyAxNi4yNDA2IDYuMTQ0MiAxNi4xODI5IDYuMDg2NUMxNi4xMjUyIDYuMDI4OCAxNi4wNTE1IDUuOTk5OTUgMTUuOTYxNyA1Ljk5OTk1SDguNzU3ODhMNy4yNTc5MyA0LjQ5OTk4SDE1Ljk2MTdDMTYuNDY2OSA0LjQ5OTk4IDE2Ljg5NDQgNC42NzQ5OCAxNy4yNDQ0IDUuMDI0OThDMTcuNTk0NCA1LjM3NDk4IDE3Ljc2OTQgNS44MDI1NCAxNy43Njk0IDYuMzA3NjhWMTAuODg0NkwyMC41MDU5IDguMTQ4MDhDMjAuNjU5OCA3Ljk5NDI0IDIwLjgyODcgNy45NTczOCAyMS4wMTI3IDguMDM3NUMyMS4xOTY2IDguMTE3NjMgMjEuMjg4NiA4LjI2NDc1IDIxLjI4ODYgOC40Nzg4NVYxNS41MjExQzIxLjI4ODYgMTUuNzM1MiAyMS4xOTY2IDE1Ljg4MjMgMjEuMDEyNyAxNS45NjI0QzIwLjgyODcgMTYuMDQyNSAyMC42NTk4IDE2LjAwNTcgMjAuNTA1OSAxNS44NTE4Wk0xOS40NDYzIDIxLjYzMDdMMi4wMzY4IDQuMjIxMUMxLjg5ODMzIDQuMDgyNjUgMS44MjkxIDMuOTE1MzUgMS44MjkxIDMuNzE5MkMxLjgyOTEgMy41MjMwNSAxLjkwNjY3IDMuMzQ3NDIgMi4wNjE4IDMuMTkyM0MyLjIwNjY3IDMuMDQ3NDIgMi4zODIzIDIuOTc0OTggMi41ODg3IDIuOTc0OThDMi43OTUxIDIuOTc0OTggMi45NzA3MyAzLjA0NzQyIDMuMTE1NiAzLjE5MjNMMjAuNTI1MiAyMC42MDE4QzIwLjY2MzYgMjAuNzQwMyAyMC43MzI4IDIwLjkwNzYgMjAuNzMyOCAyMS4xMDM3QzIwLjczMjggMjEuMjk5OSAyMC42NTUzIDIxLjQ3NTUgMjAuNTAwMiAyMS42MzA3QzIwLjM1NTMgMjEuNzc1NSAyMC4xNzggMjEuODQ3OSAxOS45Njg0IDIxLjg0NzlDMTkuNzU4OCAyMS44NDc5IDE5LjU4NDggMjEuNzc1NSAxOS40NDYzIDIxLjYzMDdaTTQuNDQyNTUgNC41MTkyM0w1LjkyMzI4IDUuOTk5OTVINC41NzcxOEM0LjQ4NzQzIDUuOTk5OTUgNC40MTM3IDYuMDI4OCA0LjM1NiA2LjA4NjVDNC4yOTgzIDYuMTQ0MiA0LjI2OTQ1IDYuMjE3OTMgNC4yNjk0NSA2LjMwNzY4VjE3LjY5MjJDNC4yNjk0NSAxNy43ODIgNC4yOTgzIDE3Ljg1NTcgNC4zNTYgMTcuOTEzNEM0LjQxMzcgMTcuOTcxMSA0LjQ4NzQzIDE4IDQuNTc3MTggMThIMTUuOTYxN0MxNi4wNTE1IDE4IDE2LjEyNTIgMTcuOTcxMSAxNi4xODI5IDE3LjkxMzRDMTYuMjQwNiAxNy44NTU3IDE2LjI2OTUgMTcuNzgyIDE2LjI2OTUgMTcuNjkyMlYxNi4zNDYxTDE3Ljc1MDIgMTcuODI2OEMxNy43MTgxIDE4LjI5MzUgMTcuNTMxOSAxOC42ODkgMTcuMTkxNSAxOS4wMTM0QzE2Ljg1MTEgMTkuMzM3NyAxNi40NDEyIDE5LjQ5OTkgMTUuOTYxNyAxOS40OTk5SDQuNTc3MThDNC4wNzIwNCAxOS40OTk5IDMuNjQ0NDggMTkuMzI0OSAzLjI5NDQ4IDE4Ljk3NDlDMi45NDQ0OCAxOC42MjQ5IDIuNzY5NDggMTguMTk3NCAyLjc2OTQ4IDE3LjY5MjJWNi4zMDc2OEMyLjc2OTQ4IDUuODI4MTkgMi45MzE2NiA1LjQxODI2IDMuMjU2MDMgNS4wNzc4OEMzLjU4MDM4IDQuNzM3NDkgMy45NzU4OSA0LjU1MTI4IDQuNDQyNTUgNC41MTkyM1pcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0MylcIj5cbjxwYXRoIGQ9XCJNMTkuNDcxMiAyMS42MzA3TDIuMDYxNyA0LjIyMTFDMS45MjMyNCA0LjA4MjY1IDEuODU0IDMuOTE1MzUgMS44NTQgMy43MTkyQzEuODU0IDMuNTIzMDUgMS45MzE1NyAzLjM0NzQyIDIuMDg2NyAzLjE5MjNDMi4yMzE1NyAzLjA0NzQyIDIuNDA3MiAyLjk3NDk4IDIuNjEzNiAyLjk3NDk4QzIuODIgMi45NzQ5OCAyLjk5NTY0IDMuMDQ3NDIgMy4xNDA1IDMuMTkyM0wyMC41NTAxIDIwLjYwMThDMjAuNjg4NSAyMC43NDAzIDIwLjc1NzcgMjAuOTA3NiAyMC43NTc3IDIxLjEwMzdDMjAuNzU3NyAyMS4yOTk5IDIwLjY4MDIgMjEuNDc1NSAyMC41MjUxIDIxLjYzMDdDMjAuMzgwMiAyMS43NzU1IDIwLjIwNDUgMjEuODQ2NCAxOS45OTgxIDIxLjg0MzJDMTkuNzkxNyAyMS44Mzk5IDE5LjYxNjEgMjEuNzY5MSAxOS40NzEyIDIxLjYzMDdaTTE3Ljc5NDMgMTUuMDExNUw3LjI4MjgzIDQuNDk5OThIMTUuOTg2NkMxNi40OTE4IDQuNDk5OTggMTYuOTE5MyA0LjY3NDk4IDE3LjI2OTMgNS4wMjQ5OEMxNy42MTkzIDUuMzc0OTggMTcuNzk0MyA1LjgwMjU0IDE3Ljc5NDMgNi4zMDc2OFYxMC44ODQ2TDIwLjUzMDggOC4xNDgwOEMyMC42NzQ0IDguMDA0NDkgMjAuODQwOCA3Ljk3MDIgMjEuMDI5OSA4LjA0NTJDMjEuMjE5IDguMTIwMiAyMS4zMTM1IDguMjY0NzUgMjEuMzEzNSA4LjQ3ODg1VjE1LjUyMTFDMjEuMzEzNSAxNS43MzUyIDIxLjIxOSAxNS44Nzk3IDIxLjAyOTkgMTUuOTU0N0MyMC44NDA4IDE2LjAyOTcgMjAuNjc0NCAxNS45OTU0IDIwLjUzMDggMTUuODUxOEwxNy43OTQzIDEzLjExNTNWMTUuMDExNVpNNC40Njc0NSA0LjUxOTIzTDE3Ljc3NTEgMTcuODI2OEMxNy43NTg0IDE4LjI4MzMgMTcuNTY2MSAxOC42NzYyIDE3LjE5ODIgMTkuMDA1N0MxNi44MzAyIDE5LjMzNTIgMTYuNDE4IDE5LjQ5OTkgMTUuOTYxNiAxOS40OTk5SDQuNTc3MDhDNC4wNzE5NSAxOS40OTk5IDMuNjQ0MzggMTkuMzI0OSAzLjI5NDM4IDE4Ljk3NDlDMi45NDQzOCAxOC42MjQ5IDIuNzY5MzggMTguMTk3NCAyLjc2OTM4IDE3LjY5MjJWNi4zMDc2OEMyLjc2OTM4IDUuODUxMjYgMi45MzY2OSA1LjQzOTA4IDMuMjcxMyA1LjA3MTE1QzMuNjA1OTIgNC43MDMyIDQuMDA0NjQgNC41MTkyMyA0LjQ2NzQ1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwMzRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwMzQpXCI+XG48cGF0aCBkPVwiTTQuNTQ3OTEgMTkuNUM0LjA0Mjc4IDE5LjUgMy42MTUyMSAxOS4zMjUgMy4yNjUyMSAxOC45NzVDMi45MTUyMyAxOC42MjUgMi43NDAyMyAxOC4xOTc0IDIuNzQwMjMgMTcuNjkyMlY2LjMwNzdDMi43NDAyMyA1LjgwMjU3IDIuOTE1MjMgNS4zNzUgMy4yNjUyMSA1LjAyNUMzLjYxNTIxIDQuNjc1IDQuMDQyNzggNC41IDQuNTQ3OTEgNC41SDE1LjkzMjVDMTYuNDM3NiA0LjUgMTYuODY1MiA0LjY3NSAxNy4yMTUyIDUuMDI1QzE3LjU2NTIgNS4zNzUgMTcuNzQwMiA1LjgwMjU3IDE3Ljc0MDIgNi4zMDc3VjEwLjg4NDZMMjAuNDc2NyA4LjE0ODFDMjAuNjMwNSA3Ljk5NDI3IDIwLjc5OTQgNy45NTc0MSAyMC45ODM0IDguMDM3NTNDMjEuMTY3NCA4LjExNzY2IDIxLjI1OTMgOC4yNjQ3NyAyMS4yNTkzIDguNDc4ODdWMTUuNTIxMUMyMS4yNTkzIDE1LjczNTIgMjEuMTY3NCAxNS44ODIzIDIwLjk4MzQgMTUuOTYyNEMyMC43OTk0IDE2LjA0MjUgMjAuNjMwNSAxNi4wMDU3IDIwLjQ3NjcgMTUuODUxOUwxNy43NDAyIDEzLjExNTNWMTcuNjkyMkMxNy43NDAyIDE4LjE5NzQgMTcuNTY1MiAxOC42MjUgMTcuMjE1MiAxOC45NzVDMTYuODY1MiAxOS4zMjUgMTYuNDM3NiAxOS41IDE1LjkzMjUgMTkuNUg0LjU0NzkxWk00LjU0NzkxIDE4SDE1LjkzMjVDMTYuMDIyMiAxOCAxNi4wOTYgMTcuOTcxMSAxNi4xNTM2IDE3LjkxMzRDMTYuMjExMyAxNy44NTU3IDE2LjI0MDIgMTcuNzgyIDE2LjI0MDIgMTcuNjkyMlY2LjMwNzdDMTYuMjQwMiA2LjIxNzk1IDE2LjIxMTMgNi4xNDQyMyAxNi4xNTM2IDYuMDg2NTJDMTYuMDk2IDYuMDI4ODIgMTYuMDIyMiA1Ljk5OTk3IDE1LjkzMjUgNS45OTk5N0g0LjU0NzkxQzQuNDU4MTYgNS45OTk5NyA0LjM4NDQzIDYuMDI4ODIgNC4zMjY3MyA2LjA4NjUyQzQuMjY5MDMgNi4xNDQyMyA0LjI0MDE4IDYuMjE3OTUgNC4yNDAxOCA2LjMwNzdWMTcuNjkyMkM0LjI0MDE4IDE3Ljc4MiA0LjI2OTAzIDE3Ljg1NTcgNC4zMjY3MyAxNy45MTM0QzQuMzg0NDMgMTcuOTcxMSA0LjQ1ODE2IDE4IDQuNTQ3OTEgMThaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNDBcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNDApXCI+XG48cGF0aCBkPVwiTTQuNTQ3OTEgMTkuNUM0LjA0Mjc4IDE5LjUgMy42MTUyMSAxOS4zMjUgMy4yNjUyMSAxOC45NzVDMi45MTUyMyAxOC42MjUgMi43NDAyMyAxOC4xOTc0IDIuNzQwMjMgMTcuNjkyMlY2LjMwNzdDMi43NDAyMyA1LjgwMjU3IDIuOTE1MjMgNS4zNzUgMy4yNjUyMSA1LjAyNUMzLjYxNTIxIDQuNjc1IDQuMDQyNzggNC41IDQuNTQ3OTEgNC41SDE1LjkzMjVDMTYuNDM3NiA0LjUgMTYuODY1MiA0LjY3NSAxNy4yMTUyIDUuMDI1QzE3LjU2NTIgNS4zNzUgMTcuNzQwMiA1LjgwMjU3IDE3Ljc0MDIgNi4zMDc3VjEwLjg4NDZMMjAuNDc2NyA4LjE0ODFDMjAuNjIwMiA4LjAwNDUyIDIwLjc4NjYgNy45NzAyMiAyMC45NzU3IDguMDQ1MjJDMjEuMTY0OCA4LjEyMDIyIDIxLjI1OTMgOC4yNjQ3NyAyMS4yNTkzIDguNDc4ODdWMTUuNTIxMUMyMS4yNTkzIDE1LjczNTIgMjEuMTY0OCAxNS44Nzk3IDIwLjk3NTcgMTUuOTU0N0MyMC43ODY2IDE2LjAyOTcgMjAuNjIwMiAxNS45OTU0IDIwLjQ3NjcgMTUuODUxOUwxNy43NDAyIDEzLjExNTNWMTcuNjkyMkMxNy43NDAyIDE4LjE5NzQgMTcuNTY1MiAxOC42MjUgMTcuMjE1MiAxOC45NzVDMTYuODY1MiAxOS4zMjUgMTYuNDM3NiAxOS41IDE1LjkzMjUgMTkuNUg0LjU0NzkxWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDU1XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDU1KVwiPlxuPHBhdGggZD1cIk0xOC45NDYyIDIxLjYxMTVMMTYuNDU3NyAxOS4xMjMxQzE2LjI1IDE5LjI0MzYgMTYuMDQzOSAxOS4zNTgzIDE1LjgzOTQgMTkuNDY3M0MxNS42MzUgMTkuNTc2MiAxNS40MjA2IDE5LjY3NzUgMTUuMTk2MiAxOS43NzExQzE0Ljk0NjIgMTkuODcyNCAxNC43MTMyIDE5Ljg0MTkgMTQuNDk3MiAxOS42Nzk4QzE0LjI4MTIgMTkuNTE3NiAxNC4xNzMyIDE5LjI5MjkgMTQuMTczMiAxOS4wMDU4QzE0LjE3MzIgMTguODY3MyAxNC4yMTQ1IDE4Ljc0NjUgMTQuMjk3MiAxOC42NDMzQzE0LjM3OTkgMTguNTQwMSAxNC40ODIxIDE4LjQ2MTUgMTQuNjAzOSAxOC40MDc3QzE0LjczNzIgMTguMzU3NyAxNC44NjggMTguMzAxOSAxNC45OTYyIDE4LjI0MDRDMTUuMTI0NCAxOC4xNzg5IDE1LjI1MDEgMTguMTExNSAxNS4zNzMxIDE4LjAzODVMMTEuNzg4NSAxNC40NTM4VjE2LjYwMzhDMTEuNzg4NSAxNy4wMDg5IDExLjYwMzYgMTcuMjg5MyAxMS4yMzM3IDE3LjQ0NTFDMTAuODYzOCAxNy42MDA5IDEwLjUzNjYgMTcuNTM2NSAxMC4yNTIgMTcuMjUxOUw3LjUwMDA4IDE0LjVINC42OTI0QzQuNDM0NzIgMTQuNSA0LjIxOTY2IDE0LjQxMzggNC4wNDcyMyAxNC4yNDEzQzMuODc0NzkgMTQuMDY4OSAzLjc4ODU4IDEzLjg1MzggMy43ODg1OCAxMy41OTYxVjEwLjQwMzlDMy43ODg1OCAxMC4xNDYyIDMuODc0NzkgOS45MzExNCA0LjA0NzIzIDkuNzU4NzFDNC4yMTk2NiA5LjU4NjI2IDQuNDM0NzIgOS41MDAwMyA0LjY5MjQgOS41MDAwM0g2LjgzNDdMMi41MjMxNSA1LjE4ODQ4QzIuMzg0NyA1LjA1MDAzIDIuMzEzODcgNC44NzYgMi4zMTA2NSA0LjY2NjM4QzIuMzA3NDUgNC40NTY3OCAyLjM3ODI4IDQuMjc5NTQgMi41MjMxNSA0LjEzNDY2QzIuNjY4MDIgMy45ODk3OSAyLjg0MzY2IDMuOTE3MzYgMy4wNTAwOCAzLjkxNzM2QzMuMjU2NDggMy45MTczNiAzLjQzMjExIDMuOTg5NzkgMy41NzY5OCA0LjEzNDY2TDIwIDIwLjU1NzdDMjAuMTM4NSAyMC42OTYyIDIwLjIwOTMgMjAuODcwMiAyMC4yMTI1IDIxLjA3OThDMjAuMjE1NyAyMS4yODk0IDIwLjE0NDkgMjEuNDY2NyAyMCAyMS42MTE1QzE5Ljg1NTEgMjEuNzU2NCAxOS42Nzk1IDIxLjgyODggMTkuNDczMSAyMS44Mjg4QzE5LjI2NjcgMjEuODI4OCAxOS4wOTExIDIxLjc1NjQgMTguOTQ2MiAyMS42MTE1Wk0xNS4xOTYyIDQuMTc4ODhDMTYuNzg3MiA0LjgzNjU4IDE4LjA2NTcgNS44NjU3NSAxOS4wMzE4IDcuMjY2MzhDMTkuOTk3OCA4LjY2NzAyIDIwLjQ4MDggMTAuMjM2NiAyMC40ODA4IDExLjk3NUMyMC40ODA4IDEyLjg1MTkgMjAuMzUwMyAxMy42OTM5IDIwLjA4OTQgMTQuNTAxQzE5LjgyODUgMTUuMzA4IDE5LjQ2MDMgMTYuMDUxOSAxOC45ODQ2IDE2LjczMjdMMTcuOTA5NiAxNS42NTc3QzE4LjI1NzEgMTUuMTE1NCAxOC41MjI1IDE0LjUzMzcgMTguNzA1OCAxMy45MTI1QzE4Ljg4OTIgMTMuMjkxNCAxOC45ODA4IDEyLjY0NTUgMTguOTgwOCAxMS45NzVDMTguOTgwOCAxMC41MzQgMTguNTgxNSA5LjIzNDk2IDE3Ljc4MjggOC4wNzc5MUMxNi45ODQgNi45MjA4NiAxNS45MjQ0IDYuMDc1NjcgMTQuNjAzOSA1LjU0MjMzQzE0LjQ2NTQgNS40ODg0OCAxNC4zNTkgNS40MDU3OSAxNC4yODQ3IDUuMjk0MjZDMTQuMjEwMyA1LjE4MjcyIDE0LjE3MzIgNS4wNTc3MiAxNC4xNzMyIDQuOTE5MjZDMTQuMTczMiA0LjY0MjM0IDE0LjI4MTIgNC40MjQ0IDE0LjQ5NzIgNC4yNjU0M0MxNC43MTMyIDQuMTA2NDcgMTQuOTQ2MiA0LjA3NzYyIDE1LjE5NjIgNC4xNzg4OFpNMTUuOTIzMSAxMy42NzEyTDE0LjE3MzIgMTEuOTIxMlY4LjI5NjE4QzE0Ljg0NzUgOC42NjI4NSAxNS4zNjg2IDkuMTc5MTkgMTUuNzM2NiA5Ljg0NTIxQzE2LjEwNDUgMTAuNTExMiAxNi4yODg1IDExLjIyOTUgMTYuMjg4NSAxMkMxNi4yODg1IDEyLjI5NDkgMTYuMjU4IDEyLjU4MjQgMTYuMTk3MiAxMi44NjI1QzE2LjEzNjMgMTMuMTQyNiAxNi4wNDQ5IDEzLjQxMjIgMTUuOTIzMSAxMy42NzEyWk0xMS43ODg1IDkuNTM2NThMOS42MzA4MyA3LjM2OTI4TDEwLjI1MiA2Ljc0ODE2QzEwLjUzNjYgNi40NjM1NCAxMC44NjM4IDYuMzk5MTIgMTEuMjMzNyA2LjU1NDg4QzExLjYwMzYgNi43MTA2NyAxMS43ODg1IDYuOTkxMTIgMTEuNzg4NSA3LjM5NjIzVjkuNTM2NThaTTEwLjI4ODUgMTUuMTVWMTIuOTUzOUw4LjMzNDY4IDExSDUuMjg4NTNWMTNIOC4xMzg1M0wxMC4yODg1IDE1LjE1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDUyXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDUyKVwiPlxuPHBhdGggZD1cIk0xOC45NDYyIDIxLjYxMTVMMTYuNDU3NyAxOS4xMjMxQzE2LjI1IDE5LjI0MzYgMTYuMDQzOSAxOS4zNTgzIDE1LjgzOTQgMTkuNDY3M0MxNS42MzUgMTkuNTc2MiAxNS40MjA2IDE5LjY3NzUgMTUuMTk2MiAxOS43NzExQzE0Ljk0NjIgMTkuODcyNCAxNC43MTMyIDE5Ljg0MTkgMTQuNDk3MiAxOS42Nzk4QzE0LjI4MTIgMTkuNTE3NiAxNC4xNzMyIDE5LjI5MjkgMTQuMTczMiAxOS4wMDU4QzE0LjE3MzIgMTguODY3MyAxNC4yMTQ1IDE4Ljc0NjUgMTQuMjk3MiAxOC42NDMzQzE0LjM3OTkgMTguNTQwMSAxNC40ODIxIDE4LjQ2MTUgMTQuNjAzOSAxOC40MDc3QzE0LjczNzIgMTguMzU3NyAxNC44NjggMTguMzAxOSAxNC45OTYyIDE4LjI0MDRDMTUuMTI0NCAxOC4xNzg5IDE1LjI1MDEgMTguMTExNSAxNS4zNzMxIDE4LjAzODVMMTEuNzg4NSAxNC40NTM4VjE2LjYwMzhDMTEuNzg4NSAxNy4wMDg5IDExLjYwMzYgMTcuMjg5MyAxMS4yMzM3IDE3LjQ0NTFDMTAuODYzOCAxNy42MDA5IDEwLjUzNjYgMTcuNTM2NSAxMC4yNTIgMTcuMjUxOUw3LjUwMDA4IDE0LjVINC42OTI0QzQuNDM0NzIgMTQuNSA0LjIxOTY2IDE0LjQxMzggNC4wNDcyMyAxNC4yNDEzQzMuODc0NzkgMTQuMDY4OSAzLjc4ODU4IDEzLjg1MzggMy43ODg1OCAxMy41OTYxVjEwLjQwMzlDMy43ODg1OCAxMC4xNDYyIDMuODc0NzkgOS45MzExNCA0LjA0NzIzIDkuNzU4NzFDNC4yMTk2NiA5LjU4NjI2IDQuNDM0NzIgOS41MDAwMyA0LjY5MjQgOS41MDAwM0g2LjgzNDdMMi41MjMxNSA1LjE4ODQ4QzIuMzg0NyA1LjA1MDAzIDIuMzEzODcgNC44NzYgMi4zMTA2NSA0LjY2NjM4QzIuMzA3NDUgNC40NTY3OCAyLjM3ODI4IDQuMjc5NTQgMi41MjMxNSA0LjEzNDY2QzIuNjY4MDIgMy45ODk3OSAyLjg0MzY2IDMuOTE3MzYgMy4wNTAwOCAzLjkxNzM2QzMuMjU2NDggMy45MTczNiAzLjQzMjExIDMuOTg5NzkgMy41NzY5OCA0LjEzNDY2TDIwIDIwLjU1NzdDMjAuMTM4NSAyMC42OTYyIDIwLjIwOTMgMjAuODcwMiAyMC4yMTI1IDIxLjA3OThDMjAuMjE1NyAyMS4yODk0IDIwLjE0NDkgMjEuNDY2NyAyMCAyMS42MTE1QzE5Ljg1NTEgMjEuNzU2NCAxOS42Nzk1IDIxLjgyODggMTkuNDczMSAyMS44Mjg4QzE5LjI2NjcgMjEuODI4OCAxOS4wOTExIDIxLjc1NjQgMTguOTQ2MiAyMS42MTE1Wk0xNS4xOTYyIDQuMTc4ODhDMTYuNzg3MiA0LjgzNjU4IDE4LjA2NTcgNS44NjU3NSAxOS4wMzE4IDcuMjY2MzhDMTkuOTk3OCA4LjY2NzAyIDIwLjQ4MDggMTAuMjM2NiAyMC40ODA4IDExLjk3NUMyMC40ODA4IDEyLjg1MTkgMjAuMzUwMyAxMy42OTM5IDIwLjA4OTQgMTQuNTAxQzE5LjgyODUgMTUuMzA4IDE5LjQ2MDMgMTYuMDUxOSAxOC45ODQ2IDE2LjczMjdMMTcuOTA5NiAxNS42NTc3QzE4LjI1NzEgMTUuMTE1NCAxOC41MjI1IDE0LjUzMzcgMTguNzA1OCAxMy45MTI1QzE4Ljg4OTIgMTMuMjkxNCAxOC45ODA4IDEyLjY0NTUgMTguOTgwOCAxMS45NzVDMTguOTgwOCAxMC41MzQgMTguNTgxNSA5LjIzNDk2IDE3Ljc4MjggOC4wNzc5MUMxNi45ODQgNi45MjA4NiAxNS45MjQ0IDYuMDc1NjcgMTQuNjAzOSA1LjU0MjMzQzE0LjQ2NTQgNS40ODg0OCAxNC4zNTkgNS40MDU3OSAxNC4yODQ3IDUuMjk0MjZDMTQuMjEwMyA1LjE4MjcyIDE0LjE3MzIgNS4wNTc3MiAxNC4xNzMyIDQuOTE5MjZDMTQuMTczMiA0LjY0MjM0IDE0LjI4MTIgNC40MjQ0IDE0LjQ5NzIgNC4yNjU0M0MxNC43MTMyIDQuMTA2NDcgMTQuOTQ2MiA0LjA3NzYyIDE1LjE5NjIgNC4xNzg4OFpNMTUuOTIzMSAxMy42NzEyTDE0LjE3MzIgMTEuOTIxMlY4LjI5NjE4QzE0Ljg0NzUgOC42NjI4NSAxNS4zNjg2IDkuMTc5MTkgMTUuNzM2NiA5Ljg0NTIxQzE2LjEwNDUgMTAuNTExMiAxNi4yODg1IDExLjIyOTUgMTYuMjg4NSAxMkMxNi4yODg1IDEyLjI5NDkgMTYuMjU4IDEyLjU4MjQgMTYuMTk3MiAxMi44NjI1QzE2LjEzNjMgMTMuMTQyNiAxNi4wNDQ5IDEzLjQxMjIgMTUuOTIzMSAxMy42NzEyWk0xMS43ODg1IDkuNTM2NThMOS42MzA4MyA3LjM2OTI4TDEwLjI1MiA2Ljc0ODE2QzEwLjUzNjYgNi40NjM1NCAxMC44NjM4IDYuMzk5MTIgMTEuMjMzNyA2LjU1NDg4QzExLjYwMzYgNi43MTA2NyAxMS43ODg1IDYuOTkxMTIgMTEuNzg4NSA3LjM5NjIzVjkuNTM2NThaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNThcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTgpXCI+XG48cGF0aCBkPVwiTTE1LjA2MTQgMTkuNzcxMUMxNC44MTE0IDE5Ljg3MjQgMTQuNTc4NCAxOS44NDE4IDE0LjM2MjQgMTkuNjc5M0MxNC4xNDY0IDE5LjUxNjggMTQuMDM4NCAxOS4yOTE4IDE0LjAzODQgMTkuMDA0M0MxNC4wMzg0IDE4Ljg2NjggMTQuMDc5NyAxOC43NDY0IDE0LjE2MjQgMTguNjQzMkMxNC4yNDUxIDE4LjU0IDE0LjM0NzMgMTguNDYxNSAxNC40NjkxIDE4LjQwNzdDMTUuNzg5NiAxNy44NzQzIDE2Ljg0OTMgMTcuMDI5MSAxNy42NDggMTUuODcyMUMxOC40NDY3IDE0LjcxNSAxOC44NDYxIDEzLjQxNiAxOC44NDYxIDExLjk3NUMxOC44NDYxIDEwLjUzNCAxOC40NDY3IDkuMjM0OTQgMTcuNjQ4IDguMDc3ODlDMTYuODQ5MyA2LjkyMDg0IDE1Ljc4OTYgNi4wNzU2NCAxNC40NjkxIDUuNTQyMzFDMTQuMzMwNyA1LjQ4ODQ2IDE0LjIyNDMgNS40MDUyIDE0LjE0OTkgNS4yOTI1NEMxNC4wNzU2IDUuMTc5ODcgMTQuMDM4NCA1LjA1NDY5IDE0LjAzODQgNC45MTY5OUMxNC4wMzg0IDQuNjQxNTcgMTQuMTQ2NCA0LjQyNDM4IDE0LjM2MjQgNC4yNjU0MUMxNC41Nzg0IDQuMTA2NDQgMTQuODExNCA0LjA3NzU5IDE1LjA2MTQgNC4xNzg4NkMxNi42NDYgNC44MzY1NiAxNy45MjI5IDUuODY1MDMgMTguODkyMiA3LjI2NDI2QzE5Ljg2MTQgOC42NjM0OCAyMC4zNDYgMTAuMjMzNyAyMC4zNDYgMTEuOTc1QzIwLjM0NiAxMy43MTYzIDE5Ljg2MTQgMTUuMjg2NSAxOC44OTIyIDE2LjY4NTdDMTcuOTIyOSAxOC4wODQ5IDE2LjY0NiAxOS4xMTM0IDE1LjA2MTQgMTkuNzcxMVpNNC41NTc2MyAxNC41QzQuMzAxNTUgMTQuNSA0LjA4Njg5IDE0LjQxMzMgMy45MTM2NiAxNC4yNDAxQzMuNzQwNDMgMTQuMDY2OSAzLjY1MzgxIDEzLjg1MjIgMy42NTM4MSAxMy41OTYxVjEwLjQwMzlDMy42NTM4MSAxMC4xNDc4IDMuNzQwNDMgOS45MzMxMiAzLjkxMzY2IDkuNzU5ODlDNC4wODY4OSA5LjU4NjY0IDQuMzAxNTUgOS41MDAwMSA0LjU1NzYzIDkuNTAwMDFINy4zNjUzMUwxMC4xMTcyIDYuNzQ4MTRDMTAuNDAxOCA2LjQ2MzUyIDEwLjcyOTEgNi4zOTk1OSAxMS4wOTg5IDYuNTU2MzZDMTEuNDY4OCA2LjcxMzE0IDExLjY1MzcgNi45OTMwOSAxMS42NTM3IDcuMzk2MjFWMTYuNjAzOEMxMS42NTM3IDE3LjAwNjkgMTEuNDY4OCAxNy4yODY4IDExLjA5ODkgMTcuNDQzNkMxMC43MjkxIDE3LjYwMDQgMTAuNDAxOCAxNy41MzY1IDEwLjExNzIgMTcuMjUxOEw3LjM2NTMxIDE0LjVINC41NTc2M1pNMTQuMDM4NCAxNS42NTM4VjguMjk2MTZDMTQuNjg1OCA4LjY0NjE2IDE1LjIwMDIgOS4xNTQxNyAxNS41ODE2IDkuODIwMTlDMTUuOTYzIDEwLjQ4NjIgMTYuMTUzNyAxMS4yMTI4IDE2LjE1MzcgMTJDMTYuMTUzNyAxMi43ODcyIDE1Ljk2MyAxMy41MDU0IDE1LjU4MTYgMTQuMTU0OEMxNS4yMDAyIDE0LjgwNDEgMTQuNjg1OCAxNS4zMDM4IDE0LjAzODQgMTUuNjUzOFpNMTAuMTUzOCA4Ljg0OTk5TDguMDAzNzYgMTFINS4xNTM3NlYxM0g4LjAwMzc2TDEwLjE1MzggMTUuMTVWOC44NDk5OVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0NlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0NilcIj5cbjxwYXRoIGQ9XCJNMTUuMDYxNCAxOS43NzExQzE0LjgxMTQgMTkuODcyNCAxNC41Nzg0IDE5Ljg0MTkgMTQuMzYyNCAxOS42Nzk4QzE0LjE0NjQgMTkuNTE3NiAxNC4wMzg0IDE5LjI5MjkgMTQuMDM4NCAxOS4wMDU3QzE0LjAzODQgMTguODY3MyAxNC4wNzk3IDE4Ljc0NjQgMTQuMTYyNCAxOC42NDMyQzE0LjI0NTEgMTguNTQgMTQuMzQ3MyAxOC40NjE1IDE0LjQ2OTEgMTguNDA3N0MxNS43ODk2IDE3Ljg3NDMgMTYuODQ5MyAxNy4wMjkxIDE3LjY0OCAxNS44NzIxQzE4LjQ0NjcgMTQuNzE1IDE4Ljg0NjEgMTMuNDE2IDE4Ljg0NjEgMTEuOTc1QzE4Ljg0NjEgMTAuNTM0IDE4LjQ0NjcgOS4yMzQ5NCAxNy42NDggOC4wNzc4OUMxNi44NDkzIDYuOTIwODQgMTUuNzg5NiA2LjA3NTY0IDE0LjQ2OTEgNS41NDIzMUMxNC4zMzA3IDUuNDg4NDYgMTQuMjI0MyA1LjQwNTc3IDE0LjE0OTkgNS4yOTQyNEMxNC4wNzU2IDUuMTgyNyAxNC4wMzg0IDUuMDU3NyAxNC4wMzg0IDQuOTE5MjRDMTQuMDM4NCA0LjY0MjMyIDE0LjE0NjQgNC40MjQzOCAxNC4zNjI0IDQuMjY1NDFDMTQuNTc4NCA0LjEwNjQ0IDE0LjgxMTQgNC4wNzc1OSAxNS4wNjE0IDQuMTc4ODZDMTYuNjQ2IDQuODM2NTYgMTcuOTIyOSA1Ljg2NTczIDE4Ljg5MjIgNy4yNjYzNkMxOS44NjE0IDguNjY2OTkgMjAuMzQ2IDEwLjIzNjUgMjAuMzQ2IDExLjk3NUMyMC4zNDYgMTMuNzEzNCAxOS44NjE0IDE1LjI4MyAxOC44OTIyIDE2LjY4MzZDMTcuOTIyOSAxOC4wODQyIDE2LjY0NiAxOS4xMTM0IDE1LjA2MTQgMTkuNzcxMVpNNC41NTc2MyAxNC41QzQuMjk5OTUgMTQuNSA0LjA4NDg5IDE0LjQxMzcgMy45MTI0NiAxNC4yNDEzQzMuNzQwMDMgMTQuMDY4OSAzLjY1MzgxIDEzLjg1MzggMy42NTM4MSAxMy41OTYxVjEwLjQwMzlDMy42NTM4MSAxMC4xNDYyIDMuNzQwMDMgOS45MzExMiAzLjkxMjQ2IDkuNzU4NjlDNC4wODQ4OSA5LjU4NjI0IDQuMjk5OTUgOS41MDAwMSA0LjU1NzYzIDkuNTAwMDFINy4zNjUzMUwxMC4xMTcyIDYuNzQ4MTRDMTAuNDAxOCA2LjQ2MzUyIDEwLjcyOTEgNi4zOTkwOSAxMS4wOTg5IDYuNTU0ODZDMTEuNDY4OCA2LjcxMDY0IDExLjY1MzcgNi45OTEwOSAxMS42NTM3IDcuMzk2MjFWMTYuNjAzOEMxMS42NTM3IDE3LjAwODkgMTEuNDY4OCAxNy4yODkzIDExLjA5ODkgMTcuNDQ1MUMxMC43MjkxIDE3LjYwMDkgMTAuNDAxOCAxNy41MzY1IDEwLjExNzIgMTcuMjUxOEw3LjM2NTMxIDE0LjVINC41NTc2M1pNMTQuMDM4NCAxNS42NTM4VjguMjk2MTZDMTQuNjg1OCA4LjY0NjE2IDE1LjIwMDIgOS4xNTQxNyAxNS41ODE2IDkuODIwMTlDMTUuOTYzIDEwLjQ4NjIgMTYuMTUzNyAxMS4yMTI4IDE2LjE1MzcgMTJDMTYuMTUzNyAxMi43ODcyIDE1Ljk2MyAxMy41MDU0IDE1LjU4MTYgMTQuMTU0OEMxNS4yMDAyIDE0LjgwNDEgMTQuNjg1OCAxNS4zMDM4IDE0LjAzODQgMTUuNjUzOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzU1NV8zMzY3XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNTU1XzMzNjcpXCI+XG48cGF0aCBkPVwiTTMuNDI1NTUgMjAuNUMzLjI1NjA1IDIwLjUgMy4xMDM4MiAyMC40NTg2IDIuOTY4ODcgMjAuMzc1N0MyLjgzMzkyIDIwLjI5MjkgMi43Mjg5NyAyMC4xODM2IDIuNjU0IDIwLjA0ODFDMi41NzYwMiAxOS45MTM1IDIuNTMzMTIgMTkuNzY3NiAyLjUyNTMyIDE5LjYxMDZDMi41MTc1MiAxOS40NTM1IDIuNTU5OSAxOS4yOTggMi42NTI0NSAxOS4xNDRMMTEuMjEzMiA0LjM1NjE2QzExLjMwNTcgNC4yMDIxMiAxMS40MjE2IDQuMDg4MjUgMTEuNTYwNyA0LjAxNDUzQzExLjY5OTggMy45NDA4IDExLjg0NjIgMy45MDM5MyAxMi4wMDAxIDMuOTAzOTNDMTIuMTUzOSAzLjkwMzkzIDEyLjMwMDQgMy45NDA4IDEyLjQzOTUgNC4wMTQ1M0MxMi41Nzg2IDQuMDg4MjUgMTIuNjk0NCA0LjIwMjEyIDEyLjc4NyA0LjM1NjE2TDIxLjM0NzcgMTkuMTQ0QzIxLjQ0MDMgMTkuMjk4IDIxLjQ4MjcgMTkuNDUzNSAyMS40NzQ5IDE5LjYxMDZDMjEuNDY3MSAxOS43Njc2IDIxLjQyNDIgMTkuOTEzNSAyMS4zNDYyIDIwLjA0ODFDMjEuMjcxMiAyMC4xODM2IDIxLjE2NjMgMjAuMjkyOSAyMS4wMzEzIDIwLjM3NTdDMjAuODk2NCAyMC40NTg2IDIwLjc0NDEgMjAuNSAyMC41NzQ2IDIwLjVIMy40MjU1NVpNNC40NTAxIDE5SDE5LjU1MDFMMTIuMDAwMSA2LjAwMDAzTDQuNDUwMSAxOVpNMTIuMDAwMSAxNy44MDc3QzEyLjIyODkgMTcuODA3NyAxMi40MjA4IDE3LjczMDMgMTIuNTc1NiAxNy41NzU1QzEyLjczMDQgMTcuNDIwNyAxMi44MDc4IDE3LjIyODkgMTIuODA3OCAxN0MxMi44MDc4IDE2Ljc3MTIgMTIuNzMwNCAxNi41Nzk0IDEyLjU3NTYgMTYuNDI0NkMxMi40MjA4IDE2LjI2OTggMTIuMjI4OSAxNi4xOTI0IDEyLjAwMDEgMTYuMTkyNEMxMS43NzEyIDE2LjE5MjQgMTEuNTc5NCAxNi4yNjk4IDExLjQyNDYgMTYuNDI0NkMxMS4yNjk4IDE2LjU3OTQgMTEuMTkyNCAxNi43NzEyIDExLjE5MjQgMTdDMTEuMTkyNCAxNy4yMjg5IDExLjI2OTggMTcuNDIwNyAxMS40MjQ2IDE3LjU3NTVDMTEuNTc5NCAxNy43MzAzIDExLjc3MTIgMTcuODA3NyAxMi4wMDAxIDE3LjgwNzdaTTEyLjAwMDQgMTUuMTkyNEMxMi4yMTMgMTUuMTkyNCAxMi4zOTExIDE1LjEyMDUgMTIuNTM0NyAxNC45NzY3QzEyLjY3ODMgMTQuODMzIDEyLjc1MDEgMTQuNjU0OSAxMi43NTAxIDE0LjQ0MjRWMTAuOTQyM0MxMi43NTAxIDEwLjcyOTggMTIuNjc4MiAxMC41NTE3IDEyLjUzNDQgMTAuNDA4QzEyLjM5MDYgMTAuMjY0MiAxMi4yMTI0IDEwLjE5MjQgMTEuOTk5OCAxMC4xOTI0QzExLjc4NzIgMTAuMTkyNCAxMS42MDkxIDEwLjI2NDIgMTEuNDY1NSAxMC40MDhDMTEuMzIxOSAxMC41NTE3IDExLjI1MDEgMTAuNzI5OCAxMS4yNTAxIDEwLjk0MjNWMTQuNDQyNEMxMS4yNTAxIDE0LjY1NDkgMTEuMzIyIDE0LjgzMyAxMS40NjU4IDE0Ljk3NjdDMTEuNjA5NiAxNS4xMjA1IDExLjc4NzggMTUuMTkyNCAxMi4wMDA0IDE1LjE5MjRaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMi43MjUgMjFhLjk3My45NzMgMCAwIDEtLjg1LS41IDEuMDk4IDEuMDk4IDAgMCAxLS4xMzgtLjQ4OC44OTguODk4IDAgMCAxIC4xMzgtLjUxMmw5LjI1LTE2YS45OC45OCAwIDAgMSAuMzg3LS4zNzVDMTEuNjcxIDMuMDQyIDExLjgzMyAzIDEyIDNjLjE2NiAwIC4zMjkuMDQyLjQ4Ny4xMjVhLjk4My45ODMgMCAwIDEgLjM4OC4zNzVsOS4yNSAxNmMuMS4xNjcuMTQ2LjMzNy4xMzcuNTEyYTEuMDk4IDEuMDk4IDAgMCAxLS4xMzcuNDg4Ljk3My45NzMgMCAwIDEtLjg1LjVIMi43MjVaTTEyIDE4Yy4yODMgMCAuNTItLjA5Ni43MTItLjI4OEEuOTY4Ljk2OCAwIDAgMCAxMyAxN2EuOTY4Ljk2OCAwIDAgMC0uMjg4LS43MTJBLjk2OC45NjggMCAwIDAgMTIgMTZhLjk2OC45NjggMCAwIDAtLjcxMy4yODhBLjk2OC45NjggMCAwIDAgMTEgMTdjMCAuMjgzLjA5Ni41Mi4yODcuNzEyLjE5Mi4xOTIuNDMuMjg4LjcxMy4yODhabTAtM2EuOTcuOTcgMCAwIDAgLjcxMi0uMjg3QS45NjguOTY4IDAgMCAwIDEzIDE0di0zYS45NjguOTY4IDAgMCAwLS4yODgtLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiAxMGEuOTY4Ljk2OCAwIDAgMC0uNzEzLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMSAxMXYzYzAgLjI4My4wOTYuNTIuMjg3LjcxMy4xOTIuMTkxLjQzLjI4Ny43MTMuMjg3WlwiLz5cbiAgPC9nPlxuPC9zdmc+IixudWxsLCJpbXBvcnQgJDdWNEpaJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDdWNEpaJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDdWNEpaJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDdWNEpaJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogTGFiZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGI3M2E2YzY2ODVlNzIxODQkdmFyJE5BTUUgPSAnTGFiZWwnO1xuY29uc3QgJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgPSAvKiNfX1BVUkVfXyovICQ3VjRKWiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ3VjRKWiRjcmVhdGVFbGVtZW50KCQ3VjRKWiRQcmltaXRpdmUubGFiZWwsICQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uTW91c2VEb3duOiAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX3Byb3BzJG9uTW91c2VEb3duO1xuICAgICAgICAgICAgKF9wcm9wcyRvbk1vdXNlRG93biA9IHByb3BzLm9uTW91c2VEb3duKSA9PT0gbnVsbCB8fCBfcHJvcHMkb25Nb3VzZURvd24gPT09IHZvaWQgMCB8fCBfcHJvcHMkb25Nb3VzZURvd24uY2FsbChwcm9wcywgZXZlbnQpOyAvLyBwcmV2ZW50IHRleHQgc2VsZWN0aW9uIHdoZW4gZG91YmxlIGNsaWNraW5nIGxhYmVsXG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgZXZlbnQuZGV0YWlsID4gMSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1LCB7XG4gICAgZGlzcGxheU5hbWU6ICRiNzNhNmM2Njg1ZTcyMTg0JHZhciROQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNTtcblxuXG5cblxuZXhwb3J0IHskYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSBhcyBMYWJlbCwgJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGswM3dJJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGswM3dJJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGswM3dJJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkazAzd0kkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FID0gJ1Byb2dyZXNzJztcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWCA9IDEwMDtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0LCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZl0gPSAkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkUHJvZ3Jlc3NQcm92aWRlciwgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dF0gPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiID0gLyojX19QVVJFX18qLyAkazAzd0kkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQcm9ncmVzczogX19zY29wZVByb2dyZXNzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG1heDogbWF4UHJvcCAsIGdldFZhbHVlTGFiZWw6IGdldFZhbHVlTGFiZWwgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwgLCAuLi5wcm9ncmVzc1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihtYXhQcm9wKSA/IG1heFByb3AgOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVg7XG4gICAgY29uc3QgdmFsdWUgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlUHJvcCwgbWF4KSA/IHZhbHVlUHJvcCA6IG51bGw7XG4gICAgY29uc3QgdmFsdWVMYWJlbCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyBnZXRWYWx1ZUxhYmVsKHZhbHVlLCBtYXgpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUHJvZ3Jlc3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgbWF4OiBtYXhcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogbWF4LFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXZhbHVldGV4dFwiOiB2YWx1ZUxhYmVsLFxuICAgICAgICByb2xlOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSh2YWx1ZSwgbWF4KSxcbiAgICAgICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLW1heFwiOiBtYXhcbiAgICB9LCBwcm9ncmVzc1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FXG59KTtcbiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLnByb3BUeXBlcyA9IHtcbiAgICBtYXggKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyhwcm9wVmFsdWUpO1xuICAgICAgICBpZiAocHJvcFZhbHVlICYmICEkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wVmFsdWUpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3Ioc3RyVmFsLCBjb21wb25lbnROYW1lKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgdmFsdWUgKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyh2YWx1ZVByb3ApO1xuICAgICAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wcy5tYXgpID8gcHJvcHMubWF4IDogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYO1xuICAgICAgICBpZiAodmFsdWVQcm9wICE9IG51bGwgJiYgISQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWVQcm9wLCBtYXgpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvcihzdHJWYWwsIGNvbXBvbmVudE5hbWUpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdQcm9ncmVzc0luZGljYXRvcic7XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCA9IC8qI19fUFVSRV9fKi8gJGswM3dJJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9jb250ZXh0JHZhbHVlO1xuICAgIGNvbnN0IHsgX19zY29wZVByb2dyZXNzOiBfX3Njb3BlUHJvZ3Jlc3MgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciR1c2VQcm9ncmVzc0NvbnRleHQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlUHJvZ3Jlc3MpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUoY29udGV4dC52YWx1ZSwgY29udGV4dC5tYXgpLFxuICAgICAgICBcImRhdGEtdmFsdWVcIjogKF9jb250ZXh0JHZhbHVlID0gY29udGV4dC52YWx1ZSkgIT09IG51bGwgJiYgX2NvbnRleHQkdmFsdWUgIT09IHZvaWQgMCA/IF9jb250ZXh0JHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtbWF4XCI6IGNvbnRleHQubWF4XG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBmdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWUsIG1heCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKHZhbHVlIC8gbWF4ICogMTAwKX0lYDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlKHZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRNYXhOdW1iZXIobWF4KSB7XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcihtYXgpICYmICFpc05hTihtYXgpICYmIG1heCA+IDA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlLCBtYXgpIHtcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICByZXR1cm4gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpICYmIHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSAwO1xufSAvLyBTcGxpdCB0aGlzIG91dCBmb3IgY2xlYXJlciByZWFkYWJpbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgbWF4XFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBPbmx5IG51bWJlcnMgZ3JlYXRlciB0aGFuIDAgYXJlIHZhbGlkIG1heCB2YWx1ZXMuIERlZmF1bHRpbmcgdG8gXFxgJHskNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVh9XFxgLmA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZFZhbHVlRXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgdmFsdWVcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIFRoZSBcXGB2YWx1ZVxcYCBwcm9wIG11c3QgYmU6XG4gIC0gYSBwb3NpdGl2ZSBudW1iZXJcbiAgLSBsZXNzIHRoYW4gdGhlIHZhbHVlIHBhc3NlZCB0byBcXGBtYXhcXGAgKG9yICR7JDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYfSBpZiBubyBcXGBtYXhcXGAgcHJvcCBpcyBzZXQpXG4gIC0gXFxgbnVsbFxcYCBpZiB0aGUgcHJvZ3Jlc3MgaXMgaW5kZXRlcm1pbmF0ZS5cblxuRGVmYXVsdGluZyB0byBcXGBudWxsXFxgLmA7XG59XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgPSAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZDtcblxuXG5cblxuZXhwb3J0IHskNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZiBhcyBjcmVhdGVQcm9ncmVzc1Njb3BlLCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYjI1YTMwNGVjN2Q3NDZiYiBhcyBQcm9ncmVzcywgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JDJiNzc2ZjdlN2VlNjBkYmQgYXMgUHJvZ3Jlc3NJbmRpY2F0b3IsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIGFzIEluZGljYXRvcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQgYXMgJDRrNEQwJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJDRrNEQwJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAkNGs0RDAkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDRrNEQwJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNGs0RDAkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ0azREMCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZURpYWxvZ1Njb3BlIGFzICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSwgUm9vdCBhcyAkNGs0RDAkUm9vdCwgVHJpZ2dlciBhcyAkNGs0RDAkVHJpZ2dlciwgUG9ydGFsIGFzICQ0azREMCRQb3J0YWwsIE92ZXJsYXkgYXMgJDRrNEQwJE92ZXJsYXksIFdhcm5pbmdQcm92aWRlciBhcyAkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCBDb250ZW50IGFzICQ0azREMCRDb250ZW50LCBUaXRsZSBhcyAkNGs0RDAkVGl0bGUsIERlc2NyaXB0aW9uIGFzICQ0azREMCREZXNjcmlwdGlvbiwgQ2xvc2UgYXMgJDRrNEQwJENsb3NlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpYWxvZ1wiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkNGs0RDAkU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRST09UX05BTUUgPSAnQWxlcnREaWFsb2cnO1xuY29uc3QgWyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViXSA9ICQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGUoJDkwNWY0YWU5MThhYWIxYWEkdmFyJFJPT1RfTkFNRSwgW1xuICAgICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZVxuXSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUgPSAkNGs0RDAkY3JlYXRlRGlhbG9nU2NvcGUoKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hbGVydERpYWxvZ1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRSb290LCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBhbGVydERpYWxvZ1Byb3BzLCB7XG4gICAgICAgIG1vZGFsOiB0cnVlXG4gICAgfSkpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUk9PVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVFJJR0dFUl9OQU1FID0gJ0FsZXJ0RGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYiA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkVHJpZ2dlciwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ1BvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUE9SVEFMX05BTUUgPSAnQWxlcnREaWFsb2dQb3J0YWwnO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnBvcnRhbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRQb3J0YWwsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIHBvcnRhbFByb3BzKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ092ZXJsYXlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJE9WRVJMQVlfTkFNRSA9ICdBbGVydERpYWxvZ092ZXJsYXknO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJE92ZXJsYXksICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRPVkVSTEFZX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUgPSAnQWxlcnREaWFsb2dDb250ZW50JztcbmNvbnN0IFskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIsICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VBbGVydERpYWxvZ0NvbnRlbnRDb250ZXh0XSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNGs0RDAkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGVudFJlZik7XG4gICAgY29uc3QgY2FuY2VsUmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCB7XG4gICAgICAgIGNvbnRlbnROYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FLFxuICAgICAgICB0aXRsZU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FLFxuICAgICAgICBkb2NzU2x1ZzogXCJhbGVydC1kaWFsb2dcIlxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlQWxlcnREaWFsb2csXG4gICAgICAgIGNhbmNlbFJlZjogY2FuY2VsUmVmXG4gICAgfSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ29udGVudCwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJhbGVydGRpYWxvZ1wiXG4gICAgfSwgZGlhbG9nU2NvcGUsIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25PcGVuQXV0b0ZvY3VzOiAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uT3BlbkF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jYW5jZWxSZWYkY3VycmVudDtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAoX2NhbmNlbFJlZiRjdXJyZW50ID0gY2FuY2VsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYW5jZWxSZWYkY3VycmVudCA9PT0gdm9pZCAwIHx8IF9jYW5jZWxSZWYkY3VycmVudC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsXG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCBmYWxzZSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRSA9ICdBbGVydERpYWxvZ1RpdGxlJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi50aXRsZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRUaXRsZSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dEZXNjcmlwdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRSA9ICdBbGVydERpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1ID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4uZGVzY3JpcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkRGVzY3JpcHRpb24sICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0FjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQUNUSU9OX05BTUUgPSAnQWxlcnREaWFsb2dBY3Rpb24nO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hY3Rpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ2xvc2UsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGFjdGlvblByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFDVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nQ2FuY2VsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRSA9ICdBbGVydERpYWxvZ0NhbmNlbCc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmNhbmNlbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNhbmNlbFJlZjogY2FuY2VsUmVmICB9ID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FLCBfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgY29uc3QgcmVmID0gJDRrNEQwJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNhbmNlbFJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJENsb3NlLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBjYW5jZWxQcm9wcywge1xuICAgICAgICByZWY6IHJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciREZXNjcmlwdGlvbldhcm5pbmcgPSAoeyBjb250ZW50UmVmOiBjb250ZW50UmVmICB9KT0+e1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FfVxcYCByZXF1aXJlcyBhIGRlc2NyaXB0aW9uIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbllvdSBjYW4gYWRkIGEgZGVzY3JpcHRpb24gdG8gdGhlIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRX1cXGAgYnkgcGFzc2luZyBhIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJERFU0NSSVBUSU9OX05BTUV9XFxgIGNvbXBvbmVudCBhcyBhIGNoaWxkLCB3aGljaCBhbHNvIGJlbmVmaXRzIHNpZ2h0ZWQgdXNlcnMgYnkgYWRkaW5nIHZpc2libGUgY29udGV4dCB0byB0aGUgZGlhbG9nLlxuXG5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB5b3VyIG93biBjb21wb25lbnQgYXMgYSBkZXNjcmlwdGlvbiBieSBhc3NpZ25pbmcgaXQgYW4gXFxgaWRcXGAgYW5kIHBhc3NpbmcgdGhlIHNhbWUgdmFsdWUgdG8gdGhlIFxcYGFyaWEtZGVzY3JpYmVkYnlcXGAgcHJvcCBpbiBcXGAkeyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUV9XFxgLiBJZiB0aGUgZGVzY3JpcHRpb24gaXMgY29uZnVzaW5nIG9yIGR1cGxpY2F0aXZlIGZvciBzaWdodGVkIHVzZXJzLCB5b3UgY2FuIHVzZSB0aGUgXFxgQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblxcYCBwcmltaXRpdmUgYXMgYSB3cmFwcGVyIGFyb3VuZCB5b3VyIGRlc2NyaXB0aW9uIGNvbXBvbmVudC5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL3JhZGl4LXVpLmNvbS9wcmltaXRpdmVzL2RvY3MvY29tcG9uZW50cy9hbGVydC1kaWFsb2dgO1xuICAgICQ0azREMCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9jb250ZW50UmVmJGN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKF9jb250ZW50UmVmJGN1cnJlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZW50UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50UmVmJGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykpO1xuICAgICAgICBpZiAoIWhhc0Rlc2NyaXB0aW9uKSBjb25zb2xlLndhcm4oTUVTU0FHRSk7XG4gICAgfSwgW1xuICAgICAgICBNRVNTQUdFLFxuICAgICAgICBjb250ZW50UmVmXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGI7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NjtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQ7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiNDU0ZjgxOGM1OGVlODVkO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjcgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMDtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTU7XG5cblxuXG5cbmV4cG9ydCB7JDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWIgYXMgY3JlYXRlQWxlcnREaWFsb2dTY29wZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGRlNDY2ZGQ4MzE3YjBiNzUgYXMgQWxlcnREaWFsb2csICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2ZWRkN2E2MjNlZjBmNDBiIGFzIEFsZXJ0RGlhbG9nVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgYXMgQWxlcnREaWFsb2dQb3J0YWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IGFzIEFsZXJ0RGlhbG9nT3ZlcmxheSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQgYXMgQWxlcnREaWFsb2dDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCBhcyBBbGVydERpYWxvZ0FjdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDJmNjdhOTIzNTcxYWFlYTAgYXMgQWxlcnREaWFsb2dDYW5jZWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgYXMgQWxlcnREaWFsb2dUaXRsZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUgYXMgQWxlcnREaWFsb2dEZXNjcmlwdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSBhcyBBY3Rpb24sICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IGFzIENhbmNlbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgYXMgVGl0bGUsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIGFzIERlc2NyaXB0aW9ufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOlsiX19hc3NpZ24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0IiwicyIsImkiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwidGhpcyIsIl9fcmVzdCIsImUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5uZXIiLCJ0b1N0cmluZyIsImluY2x1ZGVzIiwia2V5Iiwiam9pbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0Iiwid2luZG93IiwiQnV0dG9uIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwiX2EiLCJyZWYiLCJfYyIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiX2QiLCJzaXplIiwiX2UiLCJ2YXJpYW50IiwiX2YiLCJ0eXBlIiwiX2ciLCJwcmVmaXgiLCJfaCIsInN1ZmZpeCIsIl9qIiwiY2xhc3NOYW1lIiwiX2siLCJmdWxsV2lkdGgiLCJwcm9wcyIsInN0eWxlcyIsImJ1dHRvbiIsIl9iIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwiYmluZCIsInRhcmdldCIsInNvdXJjZSIsIiRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIiwib3JpZ2luYWxFdmVudEhhbmRsZXIiLCJvdXJFdmVudEhhbmRsZXIiLCJjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQiLCJldmVudCIsImRlZmF1bHRQcmV2ZW50ZWQiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiIsInJlZnMiLCJub2RlIiwiZm9yRWFjaCIsInZhbHVlIiwiY3VycmVudCIsIiQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkYzdiMmNiZTM1NTJhMGQwNSIsIiQzdnFtciR1c2VDYWxsYmFjayIsInVzZUNhbGxiYWNrIiwiJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSIsInNjb3BlTmFtZSIsImNyZWF0ZUNvbnRleHRTY29wZURlcHMiLCJkZWZhdWx0Q29udGV4dHMiLCJjcmVhdGVTY29wZSIsInNjb3BlQ29udGV4dHMiLCJtYXAiLCJkZWZhdWx0Q29udGV4dCIsIiQzYmtBSyRjcmVhdGVDb250ZXh0Iiwic2NvcGUiLCJjb250ZXh0cyIsIiQzYmtBSyR1c2VNZW1vIiwidXNlTWVtbyIsInJvb3RDb21wb25lbnROYW1lIiwiQmFzZUNvbnRleHQiLCJpbmRleCIsIlByb3ZpZGVyIiwiY29udGV4dCIsIkNvbnRleHQiLCJ2YWx1ZXMiLCIkM2JrQUskY3JlYXRlRWxlbWVudCIsImRpc3BsYXlOYW1lIiwiY29uc3VtZXJOYW1lIiwiJDNia0FLJHVzZUNvbnRleHQiLCJ1bmRlZmluZWQiLCJFcnJvciIsIiRjNTEyYzI3YWIwMmVmODk1JHZhciRjb21wb3NlQ29udGV4dFNjb3BlcyIsInNjb3BlcyIsImJhc2VTY29wZSIsImNyZWF0ZVNjb3BlMSIsInNjb3BlSG9va3MiLCJ1c2VTY29wZSIsIm92ZXJyaWRlU2NvcGVzIiwibmV4dFNjb3BlczEiLCJyZWR1Y2UiLCJuZXh0U2NvcGVzIiwiJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMiLCJCb29sZWFuIiwiZ2xvYmFsVGhpcyIsImRvY3VtZW50IiwiJGR4bHdIJHVzZUxheW91dEVmZmVjdCIsIiQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkIiwiJDJBT0R4JHJlYWN0IiwiJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50IiwiJDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzciLCJkZXRlcm1pbmlzdGljSWQiLCJpZCIsInNldElkIiwidXNlU3RhdGUiLCIkMkFPRHgkdXNlTGF5b3V0RWZmZWN0IiwicmVhY3RJZCIsIlN0cmluZyIsIiRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIiwiY2FsbGJhY2siLCJjYWxsYmFja1JlZiIsIiRsd2lXaiR1c2VSZWYiLCIkbHdpV2okdXNlRWZmZWN0IiwiJGx3aVdqJHVzZU1lbW8iLCJhcmdzIiwiX2NhbGxiYWNrUmVmJGN1cnJlbnQiLCIkNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzIiwicHJvcCIsImRlZmF1bHRQcm9wIiwib25DaGFuZ2UiLCJ1bmNvbnRyb2xsZWRQcm9wIiwic2V0VW5jb250cm9sbGVkUHJvcCIsInVuY29udHJvbGxlZFN0YXRlIiwiJGJuUHc5JHVzZVN0YXRlIiwicHJldlZhbHVlUmVmIiwiJGJuUHc5JHVzZVJlZiIsImhhbmRsZUNoYW5nZSIsIiRiblB3OSR1c2VDYWxsYmFja1JlZiIsIiRiblB3OSR1c2VFZmZlY3QiLCIkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZTEiLCIkYm5QdzkkdXNlQ2FsbGJhY2siLCJuZXh0VmFsdWUiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCIsIiQ5SXJqWCRmb3J3YXJkUmVmIiwiZm9yd2FyZGVkUmVmIiwic2xvdFByb3BzIiwiY2hpbGRyZW5BcnJheSIsIiQ5SXJqWCRDaGlsZHJlbiIsInRvQXJyYXkiLCJzbG90dGFibGUiLCJmaW5kIiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlIiwibmV3RWxlbWVudCIsIm5ld0NoaWxkcmVuIiwiY2hpbGQiLCJDaGlsZHJlbiIsImNvdW50Iiwib25seSIsIiQ5SXJqWCRpc1ZhbGlkRWxlbWVudCIsIiQ5SXJqWCRjcmVhdGVFbGVtZW50IiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSIsIiQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ5SXJqWCRjbG9uZUVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsIiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzIiwiJDlJcmpYJGNvbXBvc2VSZWZzIiwiJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDUiLCIkOUlyalgkRnJhZ21lbnQiLCJjaGlsZFByb3BzIiwib3ZlcnJpZGVQcm9wcyIsInByb3BOYW1lIiwic2xvdFByb3BWYWx1ZSIsImNoaWxkUHJvcFZhbHVlIiwidGVzdCIsImZpbHRlciIsIiQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQyNTBmZmE2M2NkYzBkMDM0IiwicHJpbWl0aXZlIiwiTm9kZSIsIiQ0cTVGcSRmb3J3YXJkUmVmIiwiYXNDaGlsZCIsInByaW1pdGl2ZVByb3BzIiwiQ29tcCIsIiQ0cTVGcSRTbG90IiwiJDRxNUZxJHVzZUVmZmVjdCIsIlN5bWJvbCIsImZvciIsIiQ0cTVGcSRjcmVhdGVFbGVtZW50IiwiJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJEZPQ1VTX09VVFNJREUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCIsIiRrcXdwSCRjcmVhdGVDb250ZXh0IiwibGF5ZXJzIiwiU2V0IiwibGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJicmFuY2hlcyIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQxNzdmYjYyZmYzZWMxZjIyIiwiJGtxd3BIJGZvcndhcmRSZWYiLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzIiwib25Fc2NhcGVLZXlEb3duIiwib25Qb2ludGVyRG93bk91dHNpZGUiLCJvbkZvY3VzT3V0c2lkZSIsIm9uSW50ZXJhY3RPdXRzaWRlIiwib25EaXNtaXNzIiwibGF5ZXJQcm9wcyIsIiRrcXdwSCR1c2VDb250ZXh0Iiwibm9kZTEiLCJzZXROb2RlIiwiJGtxd3BIJHVzZVN0YXRlIiwib3duZXJEb2N1bWVudCIsImZvcmNlIiwiY29tcG9zZWRSZWZzIiwiJGtxd3BIJHVzZUNvbXBvc2VkUmVmcyIsImZyb20iLCJoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsInNsaWNlIiwiaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRJbmRleCIsImlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsImlzUG9pbnRlckV2ZW50c0VuYWJsZWQiLCJwb2ludGVyRG93bk91dHNpZGUiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCIka3F3cEgkdXNlQ2FsbGJhY2tSZWYiLCJpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYiLCIka3F3cEgkdXNlUmVmIiwiaGFuZGxlQ2xpY2tSZWYiLCIka3F3cEgkdXNlRWZmZWN0IiwiaGFuZGxlUG9pbnRlckRvd24iLCJldmVudERldGFpbCIsIm9yaWdpbmFsRXZlbnQiLCJoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50IiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkaXNjcmV0ZSIsInBvaW50ZXJUeXBlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwidGltZXJJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvblBvaW50ZXJEb3duQ2FwdHVyZSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUiLCJpc1BvaW50ZXJEb3duT25CcmFuY2giLCJzb21lIiwiYnJhbmNoIiwiY29udGFpbnMiLCJmb2N1c091dHNpZGUiLCJoYW5kbGVGb2N1c091dHNpZGUiLCJpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmIiwiaGFuZGxlRm9jdXMiLCJvbkZvY3VzQ2FwdHVyZSIsIm9uQmx1ckNhcHR1cmUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlIiwib25Fc2NhcGVLZXlEb3duUHJvcCIsIiRoUFNRNSR1c2VDYWxsYmFja1JlZiIsIiRoUFNRNSR1c2VFZmZlY3QiLCJoYW5kbGVLZXlEb3duIiwiJGtxd3BIJHVzZUVzY2FwZUtleWRvd24iLCJwcmV2ZW50RGVmYXVsdCIsImJvZHkiLCJzdHlsZSIsInBvaW50ZXJFdmVudHMiLCJhZGQiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUiLCJkZWxldGUiLCJoYW5kbGVVcGRhdGUiLCIka3F3cEgkY3JlYXRlRWxlbWVudCIsIiRrcXdwSCRQcmltaXRpdmUiLCJkaXYiLCIka3F3cEgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJDdXN0b21FdmVudCIsImRpc3BhdGNoRXZlbnQiLCJuYW1lIiwiaGFuZGxlciIsImRldGFpbCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiJDRxNUZxJGZsdXNoU3luYyIsImZsdXNoU3luYyIsIiRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMiLCIkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiIsIiQ0NVFIdiRmb3J3YXJkUmVmIiwibG9vcCIsInRyYXBwZWQiLCJvbk1vdW50QXV0b0ZvY3VzIiwib25Nb3VudEF1dG9Gb2N1c1Byb3AiLCJvblVubW91bnRBdXRvRm9jdXMiLCJvblVubW91bnRBdXRvRm9jdXNQcm9wIiwic2NvcGVQcm9wcyIsImNvbnRhaW5lcjEiLCJzZXRDb250YWluZXIiLCIkNDVRSHYkdXNlU3RhdGUiLCIkNDVRSHYkdXNlQ2FsbGJhY2tSZWYiLCJsYXN0Rm9jdXNlZEVsZW1lbnRSZWYiLCIkNDVRSHYkdXNlUmVmIiwiJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyIsImZvY3VzU2NvcGUiLCJwYXVzZWQiLCJwYXVzZSIsInJlc3VtZSIsIiQ0NVFIdiR1c2VFZmZlY3QiLCJoYW5kbGVGb2N1c0luIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzIiwic2VsZWN0IiwiaGFuZGxlRm9jdXNPdXQiLCJyZWxhdGVkVGFyZ2V0IiwiaGFuZGxlTXV0YXRpb25zIiwibXV0YXRpb25zIiwiZm9jdXNlZEVsZW1lbnQiLCJhY3RpdmVFbGVtZW50IiwibXV0YXRpb24iLCJyZW1vdmVkTm9kZXMiLCJtdXRhdGlvbk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiZGlzY29ubmVjdCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrIiwicHJldmlvdXNseUZvY3VzZWRFbGVtZW50IiwibW91bnRFdmVudCIsImNhbmRpZGF0ZXMiLCJjYW5kaWRhdGUiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdCIsIml0ZW1zIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlQ2FuZGlkYXRlcyIsIml0ZW0iLCJ0YWdOYW1lIiwidW5tb3VudEV2ZW50IiwicmVtb3ZlIiwiJDQ1UUh2JHVzZUNhbGxiYWNrIiwiaXNUYWJLZXkiLCJhbHRLZXkiLCJjdHJsS2V5IiwibWV0YUtleSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJmaXJzdCIsImxhc3QiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUiLCJyZXZlcnNlIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMiLCJzaGlmdEtleSIsIiQ0NVFIdiRjcmVhdGVFbGVtZW50IiwiJDQ1UUh2JFByaW1pdGl2ZSIsIiQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsInRhYkluZGV4Iiwib25LZXlEb3duIiwibm9kZXMiLCJ3YWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsImFjY2VwdE5vZGUiLCJpc0hpZGRlbklucHV0IiwiaGlkZGVuIiwiRklMVEVSX1NLSVAiLCJGSUxURVJfQUNDRVBUIiwibmV4dE5vZGUiLCJjdXJyZW50Tm9kZSIsImVsZW1lbnRzIiwiZWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbiIsInVwVG8iLCJnZXRDb21wdXRlZFN0eWxlIiwidmlzaWJpbGl0eSIsImRpc3BsYXkiLCJwYXJlbnRFbGVtZW50IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwiSFRNTElucHV0RWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc1NlbGVjdGFibGVJbnB1dCIsInN0YWNrIiwiYWN0aXZlRm9jdXNTY29wZSIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZSIsInVuc2hpZnQiLCJfc3RhY2skIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2siLCJhcnJheSIsInVwZGF0ZWRBcnJheSIsInNwbGljZSIsIiRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIiwiJDdTWGwyJGZvcndhcmRSZWYiLCJfZ2xvYmFsVGhpcyRkb2N1bWVudCIsInBvcnRhbFByb3BzIiwiJDdTWGwyJHJlYWN0ZG9tIiwiY3JlYXRlUG9ydGFsIiwiJDdTWGwyJGNyZWF0ZUVsZW1lbnQiLCIkN1NYbDIkUHJpbWl0aXZlIiwiJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIiLCJwcmVzZW50IiwicHJlc2VuY2UiLCIkaXFxM3IkdXNlU3RhdGUiLCJzdHlsZXNSZWYiLCIkaXFxM3IkdXNlUmVmIiwicHJldlByZXNlbnRSZWYiLCJwcmV2QW5pbWF0aW9uTmFtZVJlZiIsImluaXRpYWxTdGF0ZSIsInN0YXRlIiwic2VuZCIsIm1hY2hpbmUiLCIkaXFxM3IkdXNlUmVkdWNlciIsInVzZVJlZHVjZXIiLCJuZXh0U3RhdGUiLCIkZmU5NjNiMzU1MzQ3Y2M2OCRleHBvcnQkM2U2NTQzZGUxNGY4NjE0ZiIsIm1vdW50ZWQiLCJVTk1PVU5UIiwiQU5JTUFUSU9OX09VVCIsInVubW91bnRTdXNwZW5kZWQiLCJNT1VOVCIsIkFOSU1BVElPTl9FTkQiLCJ1bm1vdW50ZWQiLCIkaXFxM3IkdXNlRWZmZWN0IiwiY3VycmVudEFuaW1hdGlvbk5hbWUiLCIkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZSIsIiRpcXEzciR1c2VMYXlvdXRFZmZlY3QiLCJ3YXNQcmVzZW50IiwicHJldkFuaW1hdGlvbk5hbWUiLCJoYW5kbGVBbmltYXRpb25FbmQiLCJpc0N1cnJlbnRBbmltYXRpb24iLCJhbmltYXRpb25OYW1lIiwiJGlxcTNyJGZsdXNoU3luYyIsImhhbmRsZUFuaW1hdGlvblN0YXJ0IiwiaXNQcmVzZW50IiwiJGlxcTNyJHVzZUNhbGxiYWNrIiwiJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJHVzZVByZXNlbmNlIiwiJGlxcTNyJENoaWxkcmVuIiwiJGlxcTNyJHVzZUNvbXBvc2VkUmVmcyIsIiRpcXEzciRjbG9uZUVsZW1lbnQiLCIkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQiLCIkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YyIsIiQxd0VyeiR1c2VFZmZlY3QiLCJfZWRnZUd1YXJkcyQiLCJfZWRnZUd1YXJkcyQyIiwiZWRnZUd1YXJkcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbnNlcnRBZGphY2VudEVsZW1lbnQiLCIkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY3JlYXRlRm9jdXNHdWFyZCIsInNldEF0dHJpYnV0ZSIsImNzc1RleHQiLCJ6ZXJvUmlnaHRDbGFzc05hbWUiLCJmdWxsV2lkdGhDbGFzc05hbWUiLCJ1c2VNZXJnZVJlZnMiLCJkZWZhdWx0VmFsdWUiLCJpbml0aWFsVmFsdWUiLCJuZXdWYWx1ZSIsImFzc2lnblJlZiIsImZhY2FkZSIsIkl0b0kiLCJhIiwiU2lkZUNhciIsInNpZGVDYXIiLCJyZXN0IiwiVGFyZ2V0IiwicmVhZCIsImlzU2lkZUNhckV4cG9ydCIsImVmZmVjdENhciIsIm9wdGlvbnMiLCJtZWRpdW0iLCJkZWZhdWx0cyIsIm1pZGRsZXdhcmUiLCJidWZmZXIiLCJhc3NpZ25lZCIsInVzZU1lZGl1bSIsImRhdGEiLCJ4IiwiYXNzaWduU3luY01lZGl1bSIsImNiIiwiY2JzIiwiYXNzaWduTWVkaXVtIiwicGVuZGluZ1F1ZXVlIiwiZXhlY3V0ZVF1ZXVlIiwiY3ljbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJpbm5lckNyZWF0ZU1lZGl1bSIsImFzeW5jIiwic3NyIiwiY3JlYXRlU2lkZWNhck1lZGl1bSIsIm5vdGhpbmciLCJSZW1vdmVTY3JvbGwiLCJwYXJlbnRSZWYiLCJ1c2VSZWYiLCJvblNjcm9sbENhcHR1cmUiLCJvbldoZWVsQ2FwdHVyZSIsIm9uVG91Y2hNb3ZlQ2FwdHVyZSIsImNhbGxiYWNrcyIsInNldENhbGxiYWNrcyIsImZvcndhcmRQcm9wcyIsInJlbW92ZVNjcm9sbEJhciIsImVuYWJsZWQiLCJzaGFyZHMiLCJub0lzb2xhdGlvbiIsImluZXJ0IiwiYWxsb3dQaW5jaFpvb20iLCJhcyIsIkNvbnRhaW5lciIsImNvbnRhaW5lclJlZiIsImNvbnRhaW5lclByb3BzIiwiRnJhZ21lbnQiLCJsb2NrUmVmIiwiZGVmYXVsdFByb3BzIiwiemVyb1JpZ2h0IiwibWFrZVN0eWxlVGFnIiwidGFnIiwibm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsImdldE5vbmNlIiwic3R5bGVzaGVldFNpbmdsZXRvbiIsImNvdW50ZXIiLCJzdHlsZXNoZWV0IiwiY3NzIiwic3R5bGVTaGVldCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpbnNlcnRTdHlsZVRhZyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0eWxlU2luZ2xldG9uIiwic2hlZXQiLCJ1c2VTdHlsZSIsImlzRHluYW1pYyIsInVzZUVmZmVjdCIsImR5bmFtaWMiLCJ6ZXJvR2FwIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiZ2FwIiwicGFyc2UiLCJwYXJzZUludCIsImdldEdhcFdpZHRoIiwiZ2FwTW9kZSIsIm9mZnNldHMiLCJjcyIsImdldE9mZnNldCIsImRvY3VtZW50V2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvd1dpZHRoIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJTdHlsZSIsImdldFN0eWxlcyIsImFsbG93UmVsYXRpdmUiLCJpbXBvcnRhbnQiLCJjb25jYXQiLCJSZW1vdmVTY3JvbGxCYXIiLCJub1JlbGF0aXZlIiwibm9JbXBvcnRhbnQiLCJwYXNzaXZlU3VwcG9ydGVkIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJlcnIiLCJub25QYXNzaXZlIiwicGFzc2l2ZSIsImVsZW1lbnRDYW5CZVNjcm9sbGVkIiwib3ZlcmZsb3ciLCJvdmVyZmxvd1kiLCJvdmVyZmxvd1giLCJhbHdheXNDb250YWluc1Njcm9sbCIsImxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIiwiYXhpcyIsIlNoYWRvd1Jvb3QiLCJob3N0IiwiZWxlbWVudENvdWxkQmVTY3JvbGxlZCIsImdldFNjcm9sbFZhcmlhYmxlcyIsImVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkIiwiZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsV2lkdGgiLCJnZXRIU2Nyb2xsVmFyaWFibGVzIiwiZ2V0VG91Y2hYWSIsImNoYW5nZWRUb3VjaGVzIiwiY2xpZW50WCIsImNsaWVudFkiLCJnZXREZWx0YVhZIiwiZGVsdGFYIiwiZGVsdGFZIiwiZXh0cmFjdFJlZiIsImdlbmVyYXRlU3R5bGUiLCJpZENvdW50ZXIiLCJsb2NrU3RhY2siLCJleHBvcnRlZCIsInNob3VsZFByZXZlbnRRdWV1ZSIsInRvdWNoU3RhcnRSZWYiLCJhY3RpdmVBeGlzIiwibGFzdFByb3BzIiwiY2xhc3NMaXN0IiwiYWxsb3dfMSIsInRvIiwicGFjayIsImFyIiwibCIsIl9fc3ByZWFkQXJyYXkiLCJlbCIsInNob3VsZENhbmNlbEV2ZW50IiwicGFyZW50IiwidG91Y2hlcyIsImN1cnJlbnRBeGlzIiwidG91Y2giLCJ0b3VjaFN0YXJ0IiwibW92ZURpcmVjdGlvbiIsImFicyIsImNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24iLCJjYW5jZWxpbmdBeGlzIiwiZW5kVGFyZ2V0Iiwic291cmNlRGVsdGEiLCJub092ZXJzY3JvbGwiLCJkaXJlY3Rpb25GYWN0b3IiLCJkaXJlY3Rpb24iLCJnZXREaXJlY3Rpb25GYWN0b3IiLCJkZWx0YSIsInRhcmdldEluTG9jayIsInNob3VsZENhbmNlbFNjcm9sbCIsImlzRGVsdGFQb3NpdGl2ZSIsImF2YWlsYWJsZVNjcm9sbCIsImF2YWlsYWJsZVNjcm9sbFRvcCIsInBvc2l0aW9uIiwiZWxlbWVudFNjcm9sbCIsImhhbmRsZVNjcm9sbCIsInNob3VsZFByZXZlbnQiLCJfZXZlbnQiLCJzb3VyY2VFdmVudCIsInkiLCJzaG91bGQiLCJzaGFyZE5vZGVzIiwic2hvdWxkQ2FuY2VsIiwic2Nyb2xsVG91Y2hTdGFydCIsInNjcm9sbFdoZWVsIiwic2Nyb2xsVG91Y2hNb3ZlIiwiaW5zdCIsIlJlYWN0UmVtb3ZlU2Nyb2xsIiwiJDAxYjljJFJlbW92ZVNjcm9sbCIsImNvdW50ZXJNYXAiLCJXZWFrTWFwIiwidW5jb250cm9sbGVkTm9kZXMiLCJtYXJrZXJNYXAiLCJsb2NrQ291bnQiLCJ1bndyYXBIb3N0IiwiYXBwbHlBdHRyaWJ1dGVUb090aGVycyIsIm9yaWdpbmFsVGFyZ2V0IiwibWFya2VyTmFtZSIsImNvbnRyb2xBdHRyaWJ1dGUiLCJ0YXJnZXRzIiwiY29ycmVjdGVkVGFyZ2V0IiwiY29uc29sZSIsImVycm9yIiwiY29ycmVjdFRhcmdldHMiLCJtYXJrZXJDb3VudGVyIiwiaGlkZGVuTm9kZXMiLCJlbGVtZW50c1RvS2VlcCIsImVsZW1lbnRzVG9TdG9wIiwia2VlcCIsImhhcyIsImRlZXAiLCJhdHRyIiwiZ2V0QXR0cmlidXRlIiwiYWxyZWFkeUhpZGRlbiIsImNvdW50ZXJWYWx1ZSIsIm1hcmtlclZhbHVlIiwic2V0IiwiY2xlYXIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJoaWRlT3RoZXJzIiwiYWN0aXZlUGFyZW50Tm9kZSIsImdldERlZmF1bHRQYXJlbnQiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIiwiJDY3VUhtJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dQcm92aWRlciIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHQiLCJmb3JjZU1vdW50IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3IiwiJDY3VUhtJGZvcndhcmRSZWYiLCJwb3J0YWxDb250ZXh0IiwiX19zY29wZURpYWxvZyIsIm92ZXJsYXlQcm9wcyIsIm1vZGFsIiwiJDY3VUhtJGNyZWF0ZUVsZW1lbnQiLCIkNjdVSG0kUHJlc2VuY2UiLCJvcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsIiwiJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDY3VUhtJFJlbW92ZVNjcm9sbCIsIiQ2N1VIbSRTbG90IiwiY29udGVudFJlZiIsIiQ2N1VIbSRQcmltaXRpdmUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YiLCJjb250ZW50UHJvcHMiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCIsIiQ2N1VIbSR1c2VSZWYiLCIkNjdVSG0kdXNlQ29tcG9zZWRSZWZzIiwiJDY3VUhtJHVzZUVmZmVjdCIsImNvbnRlbnQiLCIkNjdVSG0kaGlkZU90aGVycyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50SW1wbCIsInRyYXBGb2N1cyIsIm9uQ2xvc2VBdXRvRm9jdXMiLCIkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY29udGV4dCR0cmlnZ2VyUmVmJGMiLCJ0cmlnZ2VyUmVmIiwiY3RybExlZnRDbGljayIsImhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmIiwiaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmIiwiX3Byb3BzJG9uQ2xvc2VBdXRvRm9jIiwiX2NvbnRleHQkdHJpZ2dlclJlZiRjMiIsIl9wcm9wcyRvbkludGVyYWN0T3V0cyIsIl9jb250ZXh0JHRyaWdnZXJSZWYkYzMiLCJvbk9wZW5BdXRvRm9jdXMiLCIkNjdVSG0kdXNlRm9jdXNHdWFyZHMiLCIkNjdVSG0kRnJhZ21lbnQiLCIkNjdVSG0kRm9jdXNTY29wZSIsIiQ2N1VIbSREaXNtaXNzYWJsZUxheWVyIiwicm9sZSIsImNvbnRlbnRJZCIsImRlc2NyaXB0aW9uSWQiLCJ0aXRsZUlkIiwib25PcGVuQ2hhbmdlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSIsInRpdGxlUHJvcHMiLCJoMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IiwiZGVzY3JpcHRpb25Qcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjIiwiY2xvc2VQcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0IiwiJDY3VUhtJGNyZWF0ZUNvbnRleHQiLCJjb250ZW50TmFtZSIsInRpdGxlTmFtZSIsImRvY3NTbHVnIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJvcGVuUHJvcCIsImRlZmF1bHRPcGVuIiwic2V0T3BlbiIsIiQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ2N1VIbSR1c2VJZCIsIm9uT3BlblRvZ2dsZSIsIiQ2N1VIbSR1c2VDYWxsYmFjayIsInByZXZPcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkNjdVSG0kQ2hpbGRyZW4iLCIkNjdVSG0kUG9ydGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSIsIl9wYXRoIiwiU3ZnQ2xvc2UiLCJ4bWxucyIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsIm1hc2tVbml0cyIsIm1hc2tUeXBlIiwiZCIsIm1hc2siLCIkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiIsIlBST1ZJREVSX05BTUUiLCJjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCIsImNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUiLCJDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIiwidXNlQ29sbGVjdGlvbkNvbnRleHQiLCJjb2xsZWN0aW9uUmVmIiwiaXRlbU1hcCIsIk1hcCIsIkNPTExFQ1RJT05fU0xPVF9OQU1FIiwiSVRFTV9TTE9UX05BTUUiLCJJVEVNX0RBVEFfQVRUUiIsIiQ2dlloVSRyZWFjdCIsIlNsb3QiLCIkNnZZaFUkdXNlQ29tcG9zZWRSZWZzIiwiJDZ2WWhVJFNsb3QiLCJJdGVtU2xvdCIsIml0ZW1EYXRhIiwiY29sbGVjdGlvbk5vZGUiLCJvcmRlcmVkTm9kZXMiLCJzb3J0IiwiYiIsIiRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0IiwiJDdHamNkJGNyZWF0ZUNvbnRleHQiLCIkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyIsImxvY2FsRGlyIiwiZ2xvYmFsRGlyIiwiJDdHamNkJHVzZUNvbnRleHQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24iLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGUiLCIkOThJeWUkY3JlYXRlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQiLCIkOThJeWUkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzgiLCIkOThJeWUkZm9yd2FyZFJlZiIsIiQ5OEl5ZSRjcmVhdGVFbGVtZW50IiwiX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwiLCIkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJvcmllbnRhdGlvbiIsImRpciIsImN1cnJlbnRUYWJTdG9wSWQiLCJjdXJyZW50VGFiU3RvcElkUHJvcCIsImRlZmF1bHRDdXJyZW50VGFiU3RvcElkIiwib25DdXJyZW50VGFiU3RvcElkQ2hhbmdlIiwib25FbnRyeUZvY3VzIiwiZ3JvdXBQcm9wcyIsIiQ5OEl5ZSR1c2VSZWYiLCIkOThJeWUkdXNlQ29tcG9zZWRSZWZzIiwiJDk4SXllJHVzZURpcmVjdGlvbiIsInNldEN1cnJlbnRUYWJTdG9wSWQiLCIkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJpc1RhYmJpbmdCYWNrT3V0Iiwic2V0SXNUYWJiaW5nQmFja091dCIsIiQ5OEl5ZSR1c2VTdGF0ZSIsImhhbmRsZUVudHJ5Rm9jdXMiLCIkOThJeWUkdXNlQ2FsbGJhY2tSZWYiLCJnZXRJdGVtcyIsImlzQ2xpY2tGb2N1c1JlZiIsImZvY3VzYWJsZUl0ZW1zQ291bnQiLCJzZXRGb2N1c2FibGVJdGVtc0NvdW50IiwiJDk4SXllJHVzZUVmZmVjdCIsIm9uSXRlbUZvY3VzIiwiJDk4SXllJHVzZUNhbGxiYWNrIiwidGFiU3RvcElkIiwib25JdGVtU2hpZnRUYWIiLCJvbkZvY3VzYWJsZUl0ZW1BZGQiLCJwcmV2Q291bnQiLCJvbkZvY3VzYWJsZUl0ZW1SZW1vdmUiLCIkOThJeWUkUHJpbWl0aXZlIiwib3V0bGluZSIsIm9uTW91c2VEb3duIiwiJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwib25Gb2N1cyIsImlzS2V5Ym9hcmRGb2N1cyIsImVudHJ5Rm9jdXNFdmVudCIsImZvY3VzYWJsZSIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0IiwiYWN0aXZlIiwib25CbHVyIiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCIsIml0ZW1Qcm9wcyIsImF1dG9JZCIsIiQ5OEl5ZSR1c2VJZCIsImlzQ3VycmVudFRhYlN0b3AiLCJzcGFuIiwiZm9jdXNJbnRlbnQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQiLCJjYW5kaWRhdGVOb2RlcyIsImN1cnJlbnRJbmRleCIsInN0YXJ0SW5kZXgiLCJfIiwiQXJyb3dMZWZ0IiwiQXJyb3dVcCIsIkFycm93UmlnaHQiLCJBcnJvd0Rvd24iLCJQYWdlVXAiLCJIb21lIiwiUGFnZURvd24iLCJFbmQiLCJQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EiLCIkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlIiwiJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQiLCJiYXNlSWQiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZUNvbnRlbnRJZCIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDFJSHprJGZvcndhcmRSZWYiLCJfX3Njb3BlVGFicyIsInZhbHVlUHJvcCIsIm9uVmFsdWVDaGFuZ2UiLCJhY3RpdmF0aW9uTW9kZSIsInRhYnNQcm9wcyIsIiQxSUh6ayR1c2VEaXJlY3Rpb24iLCJzZXRWYWx1ZSIsIiQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQxSUh6ayRjcmVhdGVFbGVtZW50IiwiJDFJSHprJHVzZUlkIiwiJDFJSHprJFByaW1pdGl2ZSIsIiQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IiwibGlzdFByb3BzIiwicm92aW5nRm9jdXNHcm91cFNjb3BlIiwiJDFJSHprJFJvb3QiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsInRyaWdnZXJQcm9wcyIsInRyaWdnZXJJZCIsImlzU2VsZWN0ZWQiLCIkMUlIemskSXRlbSIsIiQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVycyIsImlzQXV0b21hdGljQWN0aXZhdGlvbiIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiIsIiQxSUh6ayR1c2VSZWYiLCIkMUlIemskdXNlRWZmZWN0IiwickFGIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCIkMUlIemskUHJlc2VuY2UiLCJhbmltYXRpb25EdXJhdGlvbiIsIiQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIiwiJDhMdnZLJHVzZVJlZiIsInByZXZpb3VzIiwiJDhMdnZLJHVzZU1lbW8iLCIkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOCIsInNldFNpemUiLCIkOWd5R1IkdXNlU3RhdGUiLCIkOWd5R1IkdXNlTGF5b3V0RWZmZWN0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5IiwiYm9yZGVyU2l6ZUVudHJ5IiwiYm9yZGVyU2l6ZSIsImJveCIsInVub2JzZXJ2ZSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMiLCIkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiIsIiRpclBJbCRmb3J3YXJkUmVmIiwiX19zY29wZVN3aXRjaCIsImNoZWNrZWQiLCJjaGVja2VkUHJvcCIsImRlZmF1bHRDaGVja2VkIiwicmVxdWlyZWQiLCJvbkNoZWNrZWRDaGFuZ2UiLCJzd2l0Y2hQcm9wcyIsInNldEJ1dHRvbiIsIiRpclBJbCR1c2VTdGF0ZSIsIiRpclBJbCR1c2VDb21wb3NlZFJlZnMiLCJoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiIsIiRpclBJbCR1c2VSZWYiLCJpc0Zvcm1Db250cm9sIiwiY2xvc2VzdCIsInNldENoZWNrZWQiLCIkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkaXJQSWwkY3JlYXRlRWxlbWVudCIsIiRpclBJbCRQcmltaXRpdmUiLCIkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUiLCIkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJwcmV2Q2hlY2tlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwic3RvcFByb3BhZ2F0aW9uIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0IiwiY29udHJvbCIsInRyYW5zZm9ybSIsImlucHV0UHJvcHMiLCIkaXJQSWwkdXNlUHJldmlvdXMiLCJjb250cm9sU2l6ZSIsIiRpclBJbCR1c2VTaXplIiwiJGlyUElsJHVzZUVmZmVjdCIsImlucHV0IiwiaW5wdXRQcm90byIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkV2ZW50Iiwib3BhY2l0eSIsIm1hcmdpbiIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIiLCJ0aHVtYlByb3BzIiwiZ2V0QWxpZ25tZW50IiwicGxhY2VtZW50Iiwic3BsaXQiLCJnZXRMZW5ndGhGcm9tQXhpcyIsImdldFNpZGUiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJydGwiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsImNvbW1vblgiLCJjb21tb25ZIiwibWFpbkF4aXMiLCJjb21tb25BbGlnbiIsImlzVmVydGljYWwiLCJjb29yZHMiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nIiwicGFkZGluZyIsImJvdHRvbSIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImRldGVjdE92ZXJmbG93IiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwicGxhdGZvcm0iLCJyZWN0cyIsInN0cmF0ZWd5IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsImdldENsaXBwaW5nUmVjdCIsImlzRWxlbWVudCIsImNvbnRleHRFbGVtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJnZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJtaW4iLCJ3aXRoaW4iLCJtaW4kMSIsIm1heCQxIiwiYXJyb3ciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXREaW1lbnNpb25zIiwiaXNZQXhpcyIsIm1pblByb3AiLCJtYXhQcm9wIiwiY2xpZW50UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImxhcmdlc3RQb3NzaWJsZVBhZGRpbmciLCJtaW5QYWRkaW5nIiwibWF4UGFkZGluZyIsImNlbnRlciIsIm9mZnNldCIsInNob3VsZEFkZE9mZnNldCIsImNlbnRlck9mZnNldCIsInNpZGVzIiwib3Bwb3NpdGVTaWRlTWFwIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJyZXBsYWNlIiwic2lkZSIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwic3RhcnQiLCJlbmQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJfbWlkZGxld2FyZURhdGEkZmxpcCIsIm1pZGRsZXdhcmVEYXRhIiwiaW5pdGlhbFBsYWNlbWVudCIsImNoZWNrTWFpbkF4aXMiLCJjcm9zc0F4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImZhbGxiYWNrUGxhY2VtZW50cyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrU3RyYXRlZ3kiLCJmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwiZmxpcEFsaWdubWVudCIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsImlzQmFzZVBsYWNlbWVudCIsImlzUlRMIiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZFBsYWNlbWVudHMiLCJsaXN0IiwiaXNTdGFydCIsImxyIiwicmwiLCJ0YiIsImJ0IiwiZ2V0U2lkZUxpc3QiLCJnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIm92ZXJmbG93cyIsIm92ZXJmbG93c0RhdGEiLCJtYWluIiwiY3Jvc3MiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldEFsaWdubWVudFNpZGVzIiwiZXZlcnkiLCJfbWlkZGxld2FyZURhdGEkZmxpcDIiLCJfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIiLCJuZXh0SW5kZXgiLCJuZXh0UGxhY2VtZW50IiwicmVzZXQiLCJyZXNldFBsYWNlbWVudCIsIl9vdmVyZmxvd3NEYXRhJG1hcCRzbyIsImFjYyIsImdldFNpZGVPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwiaGlkZSIsInJlZmVyZW5jZUhpZGRlbk9mZnNldHMiLCJyZWZlcmVuY2VIaWRkZW4iLCJlc2NhcGVkT2Zmc2V0cyIsImVzY2FwZWQiLCJkaWZmQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJhbGlnbm1lbnRBeGlzIiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJnZXRDcm9zc0F4aXMiLCJzaGlmdCIsImxpbWl0ZXIiLCJmbiIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwibGltaXRTaGlmdCIsInJhd09mZnNldCIsImNvbXB1dGVkT2Zmc2V0IiwibGVuIiwibGltaXRNaW4iLCJsaW1pdE1heCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZTIiLCJpc09yaWdpblNpZGUiLCJpc1hBeGlzIiwiaGVpZ2h0U2lkZSIsIndpZHRoU2lkZSIsIm92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0Iiwib3ZlcmZsb3dBdmFpbGFibGVXaWR0aCIsIm5vU2hpZnQiLCJhdmFpbGFibGVIZWlnaHQiLCJhdmFpbGFibGVXaWR0aCIsIm1heGltdW1DbGlwcGluZ1dpZHRoIiwibWF4aW11bUNsaXBwaW5nSGVpZ2h0IiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsIm5leHREaW1lbnNpb25zIiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJnZXRDb21wdXRlZFN0eWxlJDEiLCJpc05vZGUiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJpc1RhYmxlRWxlbWVudCIsImlzQ29udGFpbmluZ0Jsb2NrIiwic2FmYXJpIiwiaXNTYWZhcmkiLCJwZXJzcGVjdGl2ZSIsImJhY2tkcm9wRmlsdGVyIiwid2lsbENoYW5nZSIsImNvbnRhaW4iLCJDU1MiLCJzdXBwb3J0cyIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsInJvdW5kIiwiZ2V0Q3NzRGltZW5zaW9ucyIsInBhcnNlRmxvYXQiLCJoYXNPZmZzZXQiLCJzaG91bGRGYWxsYmFjayIsImZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsIkZBTExCQUNLX1NDQUxFIiwiZG9tRWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIk51bWJlciIsImlzRmluaXRlIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsIl93aW4kdmlzdWFsVmlld3BvcnQiLCJfd2luJHZpc3VhbFZpZXdwb3J0MiIsIndpbiIsInZpc3VhbFZpZXdwb3J0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50SUZyYW1lIiwiZnJhbWVFbGVtZW50IiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwiY2xpZW50TGVmdCIsInBhZGRpbmdMZWZ0IiwiY2xpZW50VG9wIiwicGFkZGluZ1RvcCIsImdldE5vZGVTY3JvbGwiLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldFBhcmVudE5vZGUiLCJyZXN1bHQiLCJhc3NpZ25lZFNsb3QiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImh0bWwiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0Vmlld3BvcnRSZWN0Iiwic2Nyb2xsIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsImdldENvbnRhaW5pbmdCbG9jayIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImdldENsaWVudFJlY3RzIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwiYW5pbWF0aW9uRnJhbWUiLCJhbmNlc3RvcnMiLCJpc1Zpc3VhbFZpZXdwb3J0IiwiZnJhbWVJZCIsIm9ic2VydmVyIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9vYnNlcnZlciIsImNvbXB1dGVQb3NpdGlvbiIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbmZpZyIsInZhbGlkTWlkZGxld2FyZSIsImdldEVsZW1lbnRSZWN0cyIsInN0YXRlZnVsUGxhY2VtZW50IiwicmVzZXRDb3VudCIsIm5leHRYIiwibmV4dFkiLCJjb21wdXRlUG9zaXRpb24kMSIsImFycm93JDEiLCJ1c2VMYXlvdXRFZmZlY3QiLCJkZWVwRXF1YWwiLCJrZXlzIiwiJCR0eXBlb2YiLCJnZXREUFIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRCeURQUiIsImRwciIsInVzZUxhdGVzdFJlZiIsIiQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGpibkV4JGZvcndhcmRSZWYiLCJhcnJvd1Byb3BzIiwiJGpibkV4JGNyZWF0ZUVsZW1lbnQiLCIkamJuRXgkUHJpbWl0aXZlIiwic3ZnIiwiJGpibkV4JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJwb2ludHMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyMyIsIiRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQiLCIka1k5M1YkZm9yd2FyZFJlZiIsIl9fc2NvcGVQb3BwZXIiLCJ2aXJ0dWFsUmVmIiwiYW5jaG9yUHJvcHMiLCIka1k5M1YkdXNlUmVmIiwiJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyIsIiRrWTkzViR1c2VFZmZlY3QiLCJvbkFuY2hvckNoYW5nZSIsIiRrWTkzViRjcmVhdGVFbGVtZW50IiwiJGtZOTNWJFByaW1pdGl2ZSIsIiRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyIsIl9hcnJvd1NpemUkd2lkdGgiLCJfYXJyb3dTaXplJGhlaWdodCIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzIiLCJfbWlkZGxld2FyZURhdGEkYXJyb3czIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zMiIsIl9taWRkbGV3YXJlRGF0YSRoaWRlIiwic2lkZU9mZnNldCIsImFsaWduIiwiYWxpZ25PZmZzZXQiLCJhcnJvd1BhZGRpbmciLCJjb2xsaXNpb25Cb3VuZGFyeSIsImNvbGxpc2lvblBhZGRpbmciLCJjb2xsaXNpb25QYWRkaW5nUHJvcCIsInN0aWNreSIsImhpZGVXaGVuRGV0YWNoZWQiLCJhdm9pZENvbGxpc2lvbnMiLCJvblBsYWNlZCIsInNldENvbnRlbnQiLCIka1k5M1YkdXNlU3RhdGUiLCJzZXRBcnJvdyIsImFycm93U2l6ZSIsIiRrWTkzViR1c2VTaXplIiwiYXJyb3dXaWR0aCIsImFycm93SGVpZ2h0IiwiZGVzaXJlZFBsYWNlbWVudCIsImhhc0V4cGxpY2l0Qm91bmRhcmllcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwiLCJmbG9hdGluZ1N0eWxlcyIsImlzUG9zaXRpb25lZCIsImV4dGVybmFsUmVmZXJlbmNlIiwiZXh0ZXJuYWxGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwic2V0RGF0YSIsImxhdGVzdE1pZGRsZXdhcmUiLCJzZXRMYXRlc3RNaWRkbGV3YXJlIiwiX3JlZmVyZW5jZSIsIl9zZXRSZWZlcmVuY2UiLCJfZmxvYXRpbmciLCJfc2V0RmxvYXRpbmciLCJzZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VSZWYiLCJzZXRGbG9hdGluZyIsImZsb2F0aW5nUmVmIiwicmVmZXJlbmNlRWwiLCJmbG9hdGluZ0VsIiwiZGF0YVJlZiIsIndoaWxlRWxlbWVudHNNb3VudGVkUmVmIiwicGxhdGZvcm1SZWYiLCJmdWxsRGF0YSIsImlzTW91bnRlZFJlZiIsIlJlYWN0RE9NIiwiaW5pdGlhbFN0eWxlcyIsIiRrWTkzViR1c2VGbG9hdGluZyIsIiRrWTkzViRhdXRvVXBkYXRlIiwiYW5jaG9yIiwiJGtZOTNWJG9mZnNldCIsIiRrWTkzViRzaGlmdCIsIiRrWTkzViRsaW1pdFNoaWZ0IiwiJGtZOTNWJGZsaXAiLCIka1k5M1Ykc2l6ZSIsImFuY2hvcldpZHRoIiwiYW5jaG9ySGVpZ2h0IiwiY29udGVudFN0eWxlIiwic2V0UHJvcGVydHkiLCIka1k5M1YkYXJyb3ciLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luIiwiJGtZOTNWJGhpZGUiLCJwbGFjZWRTaWRlIiwicGxhY2VkQWxpZ24iLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudCIsImhhbmRsZVBsYWNlZCIsIiRrWTkzViR1c2VDYWxsYmFja1JlZiIsIiRrWTkzViR1c2VMYXlvdXRFZmZlY3QiLCJhcnJvd1giLCJhcnJvd1kiLCJjYW5ub3RDZW50ZXJBcnJvdyIsImNvbnRlbnRaSW5kZXgiLCJzZXRDb250ZW50WkluZGV4IiwiekluZGV4IiwibWluV2lkdGgiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJvbkFycm93Q2hhbmdlIiwic2hvdWxkSGlkZUFycm93IiwiYW5pbWF0aW9uIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREUiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c0IiwiX21pZGRsZXdhcmVEYXRhJGFycm93NSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzYiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c3IiwiX21pZGRsZXdhcmVEYXRhJGFycm93OCIsImlzQXJyb3dIaWRkZW4iLCJub0Fycm93QWxpZ24iLCJhcnJvd1hDZW50ZXIiLCJhcnJvd1lDZW50ZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldEFuY2hvciIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsImNvbnRlbnRDb250ZXh0IiwiYmFzZVNpZGUiLCIka1k5M1YkUm9vdCIsIiRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0IiwiJGtWd253JGZvcndhcmRSZWYiLCIka1Z3bnckY3JlYXRlRWxlbWVudCIsIiRrVndudyRQcmltaXRpdmUiLCIka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJib3JkZXIiLCJjbGlwIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NSIsIiQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4iLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZXh0UHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQiLCIkOHdlcEskZm9yd2FyZFJlZiIsIl9fc2NvcGVUb29sdGlwIiwicHJvdmlkZXJDb250ZXh0IiwicG9wcGVyU2NvcGUiLCIkOHdlcEskdXNlQ29tcG9zZWRSZWZzIiwiJDh3ZXBLJHVzZVJlZiIsIm9uVHJpZ2dlckNoYW5nZSIsImlzUG9pbnRlckRvd25SZWYiLCJoYXNQb2ludGVyTW92ZU9wZW5lZFJlZiIsImhhbmRsZVBvaW50ZXJVcCIsIiQ4d2VwSyR1c2VDYWxsYmFjayIsIiQ4d2VwSyR1c2VFZmZlY3QiLCIkOHdlcEskY3JlYXRlRWxlbWVudCIsIiQ4d2VwSyRBbmNob3IiLCIkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOHdlcEskUHJpbWl0aXZlIiwic3RhdGVBdHRyaWJ1dGUiLCJvblBvaW50ZXJNb3ZlIiwiJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaXNQb2ludGVySW5UcmFuc2l0UmVmIiwib25UcmlnZ2VyRW50ZXIiLCJvblBvaW50ZXJMZWF2ZSIsIm9uVHJpZ2dlckxlYXZlIiwib25Qb2ludGVyRG93biIsIm9uT3BlbiIsIm9uQ2xvc2UiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUE9SVEFMX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUG9ydGFsUHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9ydGFsQ29udGV4dCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZTkwMDNlMmJlMzdlYzA2MCIsIiQ4d2VwSyRQcmVzZW5jZSIsImRpc2FibGVIb3ZlcmFibGVDb250ZW50IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEhvdmVyYWJsZSIsInBvaW50ZXJHcmFjZUFyZWEiLCJzZXRQb2ludGVyR3JhY2VBcmVhIiwiJDh3ZXBLJHVzZVN0YXRlIiwidHJpZ2dlciIsIm9uUG9pbnRlckluVHJhbnNpdENoYW5nZSIsImhhbmRsZVJlbW92ZUdyYWNlQXJlYSIsImhhbmRsZUNyZWF0ZUdyYWNlQXJlYSIsImhvdmVyVGFyZ2V0IiwiZXhpdFBvaW50IiwicGFkZGVkRXhpdFBvaW50cyIsImV4aXRTaWRlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldFBhZGRlZEV4aXRQb2ludHMiLCJwb2ludCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0IiwiZ3JhY2VBcmVhIiwibmV3UG9pbnRzIiwidXBwZXJIdWxsIiwicSIsInIiLCJwb3AiLCJsb3dlckh1bGwiLCJpMSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QiLCJoYW5kbGVUcmlnZ2VyTGVhdmUiLCJoYW5kbGVDb250ZW50TGVhdmUiLCJoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSIsInBvaW50ZXJQb3NpdGlvbiIsImhhc0VudGVyZWRUYXJnZXQiLCJpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhIiwicG9seWdvbiIsImluc2lkZSIsImoiLCJ4aSIsInlpIiwieGoiLCJ5aiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0IiwiaXNJbnNpZGUiLCJhcmlhTGFiZWwiLCJjYXB0dXJlIiwiJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIiLCIkOHdlcEskQ29udGVudCIsIiQ4d2VwSyRTbG90dGFibGUiLCIkOHdlcEskUm9vdDEiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSIsImRlbGF5RHVyYXRpb24iLCJza2lwRGVsYXlEdXJhdGlvbiIsImlzT3BlbkRlbGF5ZWQiLCJzZXRJc09wZW5EZWxheWVkIiwic2tpcERlbGF5VGltZXJSZWYiLCJza2lwRGVsYXlUaW1lciIsImluVHJhbnNpdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wIiwiZGVsYXlEdXJhdGlvblByb3AiLCJzZXRUcmlnZ2VyIiwiJDh3ZXBLJHVzZUlkIiwib3BlblRpbWVyUmVmIiwid2FzT3BlbkRlbGF5ZWRSZWYiLCJvcGVuMSIsIiQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4d2VwSyR1c2VNZW1vIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlRGVsYXllZE9wZW4iLCIkOHdlcEskUm9vdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkOHdlcEskUG9ydGFsIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsIiQ4d2VwSyRBcnJvdyIsIiRhZTY5MzNlNTM1MjQ3ZDNkJGV4cG9ydCQ3ZDE1YjY0Y2Y1YTNhNGM0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RJT05fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiJDAxYjljJGNyZWF0ZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIiwiJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdE5hdGl2ZU9wdGlvbnNQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEiLCIkMDFiOWMkZm9yd2FyZFJlZiIsIl9fc2NvcGVTZWxlY3QiLCJpc0Rpc2FibGVkIiwiJDAxYjljJHVzZUNvbXBvc2VkUmVmcyIsInNlYXJjaFJlZiIsImhhbmRsZVR5cGVhaGVhZFNlYXJjaCIsInJlc2V0VHlwZWFoZWFkIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCIsInNlYXJjaCIsImVuYWJsZWRJdGVtcyIsImN1cnJlbnRJdGVtIiwibmV4dEl0ZW0iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtIiwiJDAxYjljJGNyZWF0ZUVsZW1lbnQiLCIkMDFiOWMkQW5jaG9yIiwiJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDAxYjljJFByaW1pdGl2ZSIsIiQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyIsImhhc1BvaW50ZXJDYXB0dXJlIiwicG9pbnRlcklkIiwicmVsZWFzZVBvaW50ZXJDYXB0dXJlIiwidHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmIiwicGFnZVgiLCJwYWdlWSIsImlzVHlwaW5nQWhlYWQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCIsInBsYWNlaG9sZGVyIiwidmFsdWVQcm9wcyIsIm9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UiLCJoYXNDaGlsZHJlbiIsIm9uVmFsdWVOb2RlQ2hhbmdlIiwiJDAxYjljJHVzZUxheW91dEVmZmVjdCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IiwiaWNvblByb3BzIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkIiwiZnJhZ21lbnQiLCJzZXRGcmFnbWVudCIsIiQwMWI5YyR1c2VTdGF0ZSIsIkRvY3VtZW50RnJhZ21lbnQiLCJmcmFnIiwiJDAxYjljJGNyZWF0ZVBvcnRhbCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0Iiwic2VsZWN0ZWRJdGVtIiwic2V0U2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtVGV4dCIsInNldFNlbGVjdGVkSXRlbVRleHQiLCJzZXRJc1Bvc2l0aW9uZWQiLCJmaXJzdFZhbGlkSXRlbUZvdW5kUmVmIiwiJDAxYjljJHVzZVJlZiIsIiQwMWI5YyR1c2VFZmZlY3QiLCIkMDFiOWMkaGlkZU90aGVycyIsIiQwMWI5YyR1c2VGb2N1c0d1YXJkcyIsImZvY3VzRmlyc3QiLCIkMDFiOWMkdXNlQ2FsbGJhY2siLCJmaXJzdEl0ZW0iLCJyZXN0SXRlbXMiLCJsYXN0SXRlbSIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJmb2N1c1NlbGVjdGVkSXRlbSIsInBvaW50ZXJNb3ZlRGVsdGEiLCJoYW5kbGVQb2ludGVyTW92ZSIsIl90cmlnZ2VyUG9pbnRlckRvd25QbyIsIl90cmlnZ2VyUG9pbnRlckRvd25QbzIiLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8zIiwiX3RyaWdnZXJQb2ludGVyRG93blBvNCIsImNsb3NlIiwiaXRlbVJlZkNhbGxiYWNrIiwiaXNGaXJzdFZhbGlkSXRlbSIsImhhbmRsZUl0ZW1MZWF2ZSIsIml0ZW1UZXh0UmVmQ2FsbGJhY2siLCJTZWxlY3RQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIiwicG9wcGVyQ29udGVudFByb3BzIiwib25WaWV3cG9ydENoYW5nZSIsIm9uSXRlbUxlYXZlIiwiJDAxYjljJFNsb3QiLCIkMDFiOWMkRm9jdXNTY29wZSIsIl9jb250ZXh0JHRyaWdnZXIiLCIkMDFiOWMkRGlzbWlzc2FibGVMYXllciIsIm9uQ29udGV4dE1lbnUiLCJmbGV4RGlyZWN0aW9uIiwiaXNNb2RpZmllcktleSIsImN1cnJlbnRFbGVtZW50IiwicG9wcGVyUHJvcHMiLCJjb250ZW50V3JhcHBlciIsInNldENvbnRlbnRXcmFwcGVyIiwic2hvdWxkRXhwYW5kT25TY3JvbGxSZWYiLCJzaG91bGRSZXBvc2l0aW9uUmVmIiwidmFsdWVOb2RlIiwidHJpZ2dlclJlY3QiLCJjb250ZW50UmVjdCIsInZhbHVlTm9kZVJlY3QiLCJpdGVtVGV4dFJlY3QiLCJpdGVtVGV4dE9mZnNldCIsImxlZnREZWx0YSIsIm1pbkNvbnRlbnRXaWR0aCIsImNvbnRlbnRXaWR0aCIsInJpZ2h0RWRnZSIsImNsYW1wZWRMZWZ0IiwiJDAxYjljJGNsYW1wIiwicmlnaHREZWx0YSIsImxlZnRFZGdlIiwiY2xhbXBlZFJpZ2h0IiwiaW5uZXJIZWlnaHQiLCJpdGVtc0hlaWdodCIsImNvbnRlbnRTdHlsZXMiLCJjb250ZW50Qm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsImNvbnRlbnRQYWRkaW5nVG9wIiwiY29udGVudEJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJmdWxsQ29udGVudEhlaWdodCIsInBhZGRpbmdCb3R0b20iLCJtaW5Db250ZW50SGVpZ2h0Iiwidmlld3BvcnRTdHlsZXMiLCJ2aWV3cG9ydFBhZGRpbmdUb3AiLCJ2aWV3cG9ydFBhZGRpbmdCb3R0b20iLCJ0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlIiwidHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSIsInNlbGVjdGVkSXRlbUhhbGZIZWlnaHQiLCJjb250ZW50VG9wVG9JdGVtTWlkZGxlIiwiaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSIsImlzTGFzdEl0ZW0iLCJ2aWV3cG9ydE9mZnNldEJvdHRvbSIsImlzRmlyc3RJdGVtIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIiLCJvblNjcm9sbEJ1dHRvbkNoYW5nZSIsImJveFNpemluZyIsIiQwMWI5YyRDb250ZW50IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQiLCJ2aWV3cG9ydFByb3BzIiwidmlld3BvcnRDb250ZXh0IiwicHJldlNjcm9sbFRvcFJlZiIsIiQwMWI5YyRGcmFnbWVudCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiZmxleCIsIm9uU2Nyb2xsIiwic2Nyb2xsZWRCeSIsImNzc01pbkhlaWdodCIsImNzc0hlaWdodCIsInByZXZIZWlnaHQiLCJuZXh0SGVpZ2h0IiwiY2xhbXBlZE5leHRIZWlnaHQiLCJoZWlnaHREaWZmIiwianVzdGlmeUNvbnRlbnQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiIsInRleHRWYWx1ZSIsInRleHRWYWx1ZVByb3AiLCJzZXRUZXh0VmFsdWUiLCJpc0ZvY3VzZWQiLCJzZXRJc0ZvY3VzZWQiLCJfY29udGVudENvbnRleHQkaXRlbVIiLCJ0ZXh0SWQiLCIkMDFiOWMkdXNlSWQiLCJoYW5kbGVTZWxlY3QiLCJvbkl0ZW1UZXh0Q2hhbmdlIiwicHJldlRleHRWYWx1ZSIsIl9ub2RlJHRleHRDb250ZW50IiwidGV4dENvbnRlbnQiLCJ0cmltIiwib25Qb2ludGVyVXAiLCJfY29udGVudENvbnRleHQkb25JdGUiLCJfY29udGVudENvbnRleHQkb25JdGUyIiwiX2NvbnRlbnRDb250ZXh0JHNlYXJjIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkiLCJpdGVtVGV4dFByb3BzIiwiaXRlbUNvbnRleHQiLCJuYXRpdmVPcHRpb25zQ29udGV4dCIsIml0ZW1UZXh0Tm9kZSIsInNldEl0ZW1UZXh0Tm9kZSIsIl9jb250ZW50Q29udGV4dCRpdGVtVCIsIm5hdGl2ZU9wdGlvbiIsIiQwMWI5YyR1c2VNZW1vIiwib25OYXRpdmVPcHRpb25BZGQiLCJvbk5hdGl2ZU9wdGlvblJlbW92ZSIsInZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IiwiY2FuU2Nyb2xsVXAxIiwic2V0Q2FuU2Nyb2xsVXAiLCJjYW5TY3JvbGxVcCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsIiwib25BdXRvU2Nyb2xsIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSIsImNhblNjcm9sbERvd24xIiwic2V0Q2FuU2Nyb2xsRG93biIsIm1heFNjcm9sbCIsImNhblNjcm9sbERvd24iLCJjZWlsIiwic2Nyb2xsSW5kaWNhdG9yUHJvcHMiLCJhdXRvU2Nyb2xsVGltZXJSZWYiLCJjbGVhckF1dG9TY3JvbGxUaW1lciIsImNsZWFySW50ZXJ2YWwiLCJfYWN0aXZlSXRlbSRyZWYkY3VycmUiLCJhY3RpdmVJdGVtIiwiZmxleFNocmluayIsInNldEludGVydmFsIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlMyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QiLCJzZWxlY3RQcm9wcyIsInByZXZWYWx1ZSIsIiQwMWI5YyR1c2VQcmV2aW91cyIsInNlbGVjdFByb3RvIiwiSFRNTFNlbGVjdEVsZW1lbnQiLCIkMDFiOWMkVmlzdWFsbHlIaWRkZW4iLCJvblNlYXJjaENoYW5nZSIsImhhbmRsZVNlYXJjaENoYW5nZSIsIiQwMWI5YyR1c2VDYWxsYmFja1JlZiIsInRpbWVyUmVmIiwidXBkYXRlU2VhcmNoIiwibm9ybWFsaXplZFNlYXJjaCIsImNoYXIiLCJjdXJyZW50SXRlbUluZGV4Iiwid3JhcHBlZEl0ZW1zIiwidiIsInN0YXJ0c1dpdGgiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsImF1dG9Db21wbGV0ZSIsInNldFZhbHVlTm9kZSIsInNldFZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJDAxYjljJHVzZURpcmVjdGlvbiIsIiQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIm5hdGl2ZU9wdGlvbnNTZXQiLCJzZXROYXRpdmVPcHRpb25zU2V0IiwibmF0aXZlU2VsZWN0S2V5Iiwib3B0aW9uIiwiJDAxYjljJFJvb3QiLCJwcmV2Iiwib3B0aW9uc1NldCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIiwiU3ZnS2V5Ym9hcmRBcnJvd0Rvd24iLCJTZWxlY3QiLCJpY29uIiwiU2VsZWN0UHJpbWl0aXZlLlJvb3QiLCJTZWxlY3RQcmltaXRpdmUuVHJpZ2dlciIsIlNlbGVjdFByaW1pdGl2ZS5WYWx1ZSIsIlNlbGVjdFByaW1pdGl2ZS5JY29uIiwiQXJyb3dEb3duSWNvbiIsIlNlbGVjdFByaW1pdGl2ZS5Db250ZW50IiwiU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0IiwiU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uIiwiU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24iLCJTZWxlY3RJdGVtIiwiU2VsZWN0UHJpbWl0aXZlLkl0ZW0iLCJTZWxlY3RJdGVtVGV4dCIsIlNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dCIsIiRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDdWNEpaJGZvcndhcmRSZWYiLCIkN1Y0SlokY3JlYXRlRWxlbWVudCIsIiQ3VjRKWiRQcmltaXRpdmUiLCJsYWJlbCIsIiQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIl9wcm9wcyRvbk1vdXNlRG93biIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGNyZWF0ZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQzODhlYjJkOGY2ZDMyNjFmIiwiJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiIiwiJGswM3dJJGZvcndhcmRSZWYiLCJfX3Njb3BlUHJvZ3Jlc3MiLCJnZXRWYWx1ZUxhYmVsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGRlZmF1bHRHZXRWYWx1ZUxhYmVsIiwicHJvZ3Jlc3NQcm9wcyIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRWYWx1ZU51bWJlciIsInZhbHVlTGFiZWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNOdW1iZXIiLCIkazAzd0kkY3JlYXRlRWxlbWVudCIsIiRrMDN3SSRQcmltaXRpdmUiLCIkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSIsInByb3BUeXBlcyIsImNvbXBvbmVudE5hbWUiLCJwcm9wVmFsdWUiLCJzdHJWYWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZE1heEVycm9yIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRWYWx1ZUVycm9yIiwibWF4VmFsdWUiLCJpc05hTiIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAiLCJfY29udGV4dCR2YWx1ZSIsImluZGljYXRvclByb3BzIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViIiwiJDRrNEQwJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IiwiJDRrNEQwJGZvcndhcmRSZWYiLCJfX3Njb3BlQWxlcnREaWFsb2ciLCJkaWFsb2dTY29wZSIsIiQ0azREMCRjcmVhdGVFbGVtZW50IiwiJDRrNEQwJE92ZXJsYXkiLCIkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCIsIiQ0azREMCR1c2VDb21wb3NlZFJlZnMiLCIkNGs0RDAkdXNlUmVmIiwiY2FuY2VsUmVmIiwiJDRrNEQwJFdhcm5pbmdQcm92aWRlciIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FIiwiJDRrNEQwJENvbnRlbnQiLCIkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY2FuY2VsUmVmJGN1cnJlbnQiLCIkNGs0RDAkU2xvdHRhYmxlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyIsIiQ0azREMCRUaXRsZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1IiwiJDRrNEQwJERlc2NyaXB0aW9uIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJhbGVydERpYWxvZ1Byb3BzIiwiJDRrNEQwJFJvb3QiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiQ0azREMCRQb3J0YWwiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGUxOWNkNWY5Mzc2ZjhjZWUiLCJhY3Rpb25Qcm9wcyIsIiQ0azREMCRDbG9zZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IiwiY2FuY2VsUHJvcHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIiwiYWN0aW9uVGV4dCIsIm9uQWN0aW9uQ2xpY2siLCJjYW5jZWxUZXh0Iiwib25DYW5jZWxDbGljayIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJBbGVydERpYWxvZy5Sb290IiwiQWxlcnREaWFsb2cuUG9ydGFsIiwicG9ydGFsIiwiQWxlcnREaWFsb2cuT3ZlcmxheSIsIm92ZXJsYXkiLCJBbGVydERpYWxvZy5Db250ZW50IiwiQ2xvc2VJY29uIiwiQWxlcnREaWFsb2cuVGl0bGUiLCJBbGVydERpYWxvZy5EZXNjcmlwdGlvbiIsImJ1dHRvbnMiLCJBbGVydERpYWxvZy5DYW5jZWwiLCJBbGVydERpYWxvZy5BY3Rpb24iLCJqdXN0aWZ5IiwiYWxpZ25JdGVtcyIsImZvcm1Hcm91cCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsImh0bWxGb3IiLCJSZWR1eExhYmVsLlJvb3QiLCJoaWRlQ2xvc2VCdXR0b24iLCJjb250ZW50Q2xhc3NOYW1lIiwiRGlhbG9nLlJvb3QiLCJEaWFsb2cuUG9ydGFsIiwiRGlhbG9nLk92ZXJsYXkiLCJEaWFsb2cuQ29udGVudCIsIkRpYWxvZy5UaXRsZSIsIkRpYWxvZy5DbG9zZSIsInByb2dyZXNzIiwiUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdCIsIlByb2dyZXNzUHJpbWl0aXZlLkluZGljYXRvciIsIlJhZGl4U3dpdGNoLlJvb3QiLCJSYWRpeFN3aXRjaC5UaHVtYiIsIlRhYnMuVHJpZ2dlciIsIlRhYnMuQ29udGVudCIsIlRhYnMuTGlzdCIsIlRhYnMuUm9vdCIsImlzUG9ydGFsIiwiVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50IiwiVG9vbHRpcFByaW1pdGl2ZS5BcnJvdyIsIlRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXIiLCJUb29sdGlwUHJpbWl0aXZlLlJvb3QiLCJUb29sdGlwUHJpbWl0aXZlLlRyaWdnZXIiLCJUb29sdGlwUHJpbWl0aXZlLlBvcnRhbCJdLCJtYXBwaW5ncyI6ImdWQStCV0EsRUFBVyxXQVFsQixPQVBBQSxFQUFXQyxPQUFPQyxRQUFVLFNBQWtCQyxHQUMxQyxJQUFLLElBQUlDLEVBQUdDLEVBQUksRUFBR0MsRUFBSUMsVUFBVUMsT0FBUUgsRUFBSUMsRUFBR0QsSUFFNUMsSUFBSyxJQUFJSSxLQURUTCxFQUFJRyxVQUFVRixHQUNPSixPQUFPUyxVQUFVQyxlQUFlQyxLQUFLUixFQUFHSyxLQUFJTixFQUFFTSxHQUFLTCxFQUFFSyxJQUU5RSxPQUFPTixDQUNWLEVBQ01ILEVBQVNhLE1BQU1DLEtBQU1QLFVBQ2hDLEVBRU8sU0FBU1EsRUFBT1gsRUFBR1ksR0FDdEIsSUFBSWIsRUFBSSxDQUFBLEVBQ1IsSUFBSyxJQUFJTSxLQUFLTCxFQUFPSCxPQUFPUyxVQUFVQyxlQUFlQyxLQUFLUixFQUFHSyxJQUFNTyxFQUFFQyxRQUFRUixHQUFLLElBQzlFTixFQUFFTSxHQUFLTCxFQUFFSyxJQUNiLEdBQVMsTUFBTEwsR0FBcUQsbUJBQWpDSCxPQUFPaUIsc0JBQ3RCLEtBQUliLEVBQUksRUFBYixJQUFnQkksRUFBSVIsT0FBT2lCLHNCQUFzQmQsR0FBSUMsRUFBSUksRUFBRUQsT0FBUUgsSUFDM0RXLEVBQUVDLFFBQVFSLEVBQUVKLElBQU0sR0FBS0osT0FBT1MsVUFBVVMscUJBQXFCUCxLQUFLUixFQUFHSyxFQUFFSixNQUN2RUYsRUFBRU0sRUFBRUosSUFBTUQsRUFBRUssRUFBRUosSUFGNEIsQ0FJdEQsT0FBT0YsQ0FDWDs7Ozs7TUM3Q0MsV0FHQSxJQUFJaUIsRUFBUyxDQUFFLEVBQUNULGVBR2hCLFNBQVNVLElBR1IsSUFGQSxJQUFJQyxFQUFVLEdBRUxqQixFQUFJLEVBQUdBLEVBQUlFLFVBQVVDLE9BQVFILElBQUssQ0FDMUMsSUFBSWtCLEVBQU1oQixVQUFVRixHQUNwQixHQUFLa0IsRUFBTCxDQUVBLElBQUlDLFNBQWlCRCxFQUVyQixHQUFnQixXQUFaQyxHQUFvQyxXQUFaQSxFQUMzQkYsRUFBUUcsS0FBS0YsUUFDUCxHQUFJRyxNQUFNQyxRQUFRSixJQUN4QixHQUFJQSxFQUFJZixPQUFRLENBQ2YsSUFBSW9CLEVBQVFQLEVBQVdSLE1BQU0sS0FBTVUsR0FDL0JLLEdBQ0hOLEVBQVFHLEtBQUtHLEVBRWQsT0FDSyxHQUFnQixXQUFaSixFQUFzQixDQUNoQyxHQUFJRCxFQUFJTSxXQUFhNUIsT0FBT1MsVUFBVW1CLFdBQWFOLEVBQUlNLFNBQVNBLFdBQVdDLFNBQVMsaUJBQWtCLENBQ3JHUixFQUFRRyxLQUFLRixFQUFJTSxZQUNqQixRQUNBLENBRUQsSUFBSyxJQUFJRSxLQUFPUixFQUNYSCxFQUFPUixLQUFLVyxFQUFLUSxJQUFRUixFQUFJUSxJQUNoQ1QsRUFBUUcsS0FBS00sRUFHZixDQXhCa0IsQ0F5Qm5CLENBRUQsT0FBT1QsRUFBUVUsS0FBSyxJQUNwQixDQUVvQ0MsRUFBT0MsU0FDM0NiLEVBQVdjLFFBQVVkLEVBQ3JCWSxFQUFBQyxRQUFpQmIsR0FPakJlLE9BQU9mLFdBQWFBLENBRXRCLENBcERBLDBYQ2FNZ0IsRUFBU0MsRUFBTUMsWUFDbkIsU0FDRUMsRUFhQUMsU0FaRUMsRUFBZ0JGLEVBQUFHLFNBQWhCQSxPQUFRLElBQUFELEdBQVFBLEVBQ2hCRSxFQUFRSixFQUFBSSxTQUNSQyxFQUFPTCxFQUFBSyxRQUNQQyxFQUFlTixFQUFBTyxLQUFmQSxPQUFJLElBQUFELEVBQUcsU0FBUUEsRUFDZkUsRUFBQVIsRUFBQVMsUUFBQUEsT0FBVSxJQUFBRCxFQUFBLFVBQVNBLEVBQ25CRSxFQUFlVixFQUFBVyxLQUFmQSxPQUFPLElBQUFELEVBQUEsU0FBUUEsRUFDZkUsRUFBV1osRUFBQWEsT0FBWEEsT0FBTSxJQUFBRCxFQUFHLEdBQUVBLEVBQ1hFLEVBQUFkLEVBQUFlLE9BQUFBLE9BQVMsSUFBQUQsRUFBQSxLQUNURSxFQUFBaEIsRUFBQWlCLFVBQUFBLE9BQVksSUFBQUQsRUFBQSxHQUFFQSxFQUNkRSxjQUFBQyxPQUFZLElBQUFELEdBQUtBLEVBQ2RFLEVBQUs3QyxFQUFBeUIsRUFYVixxR0FlQSxPQUNFRiw0QkFDRUcsSUFBS0EsRUFDTFUsS0FBTUEsRUFDTlIsU0FBVUEsRUFDVmMsVUFBV3BDLEVBQVd3QyxFQUFPQyxRQUFNQyxFQUFBLENBQUEsRUFDakNBLEVBQUNOLEdBQVlBLEVBQ2JNLEVBQUNGLEVBQU9kLElBQVFBLEVBQ2hCZ0IsRUFBQ0YsRUFBT1osSUFBV0EsRUFDbkJjLEVBQUNGLEVBQU9GLFdBQVlBLEVBQ3BCSSxJQUNGbEIsUUFBU0EsR0FDTGUsR0FDSFAsR0FBVWYsd0JBQU1tQixVQUFXSSxFQUFPUixRQUFTQSxHQUMzQ1QsRUFDQVcsR0FBVWpCLEVBQUEwQixjQUFBLE9BQUEsQ0FBTVAsVUFBV0ksRUFBT04sUUFBU0EsR0FHbEQsSUN2RGEsU0FBU1UsSUFZdEIsT0FYQUEsRUFBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQzFELElBQUssSUFBSTlELEVBQUksRUFBR0EsRUFBSUUsVUFBVUMsT0FBUUgsSUFBSyxDQUN6QyxJQUFJK0QsRUFBUzdELFVBQVVGLEdBQ3ZCLElBQUssSUFBSTBCLEtBQU9xQyxFQUNWbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUMvQ29DLEVBQU9wQyxHQUFPcUMsRUFBT3JDLEdBRzFCLENBQ0QsT0FBT29DLENBQ1gsRUFDU0YsRUFBU3BELE1BQU1DLEtBQU1QLFVBQzlCLENDYkEsU0FBUzhELEVBQTBDQyxFQUFzQkMsR0FBbUJDLHlCQUEwQkEsR0FBMkIsR0FBVSxJQUN2SixPQUFPLFNBQXFCQyxHQUV4QixHQURBSCxTQUFvRUEsRUFBcUJHLElBQ3hELElBQTdCRCxJQUF1Q0MsRUFBTUMsaUJBQWtCLE9BQU9ILGFBQXlELEVBQVNBLEVBQWdCRSxFQUNwSyxDQUNBLENDUUksU0FBU0UsS0FBNkNDLEdBQ3RELE9BQVFDLEdBQU9ELEVBQUtFLFNBQVNyQyxHQVI3QixTQUFzQ0EsRUFBS3NDLEdBQ3hCLG1CQUFSdEMsRUFBb0JBLEVBQUlzQyxHQUMxQnRDLFVBQW1DQSxFQUFJdUMsUUFBVUQsRUFDOUQsQ0FLdUNFLENBQTZCeEMsRUFBS29DLElBR3pFLENBSUksU0FBU0ssS0FBNkNOLEdBRXRELE9BQU9PLEVBQWtCQyxZQUFDVCxLQUE2Q0MsR0FBT0EsRUFDbEYsQ0NJcUcsU0FBU1MsRUFBeUNDLEVBQVdDLEVBQXlCLElBQ3ZMLElBQUlDLEVBQWtCLEdBbUMyRSxNQUFNQyxFQUFjLEtBQ2pILE1BQU1DLEVBQWdCRixFQUFnQkcsS0FBS0MsR0FDbEJDLEVBQUFBLGNBQXFCRCxLQUU5QyxPQUFPLFNBQWtCRSxHQUNyQixNQUFNQyxHQUFZRCxhQUFxQyxFQUFTQSxFQUFNUixLQUFlSSxFQUNyRixPQUFPTSxFQUFjQyxTQUFDLEtBQUssQ0FDbkIsQ0FBQyxVQUFVWCxLQUFjLElBQ2xCUSxFQUNIUixDQUFDQSxHQUFZUyxNQUd2QixDQUNFRCxFQUNBQyxHQUVoQixDQUFTLEVBR0wsT0FEQU4sRUFBWUgsVUFBWUEsRUFDakIsQ0FuRDBGLFNBQW1EWSxFQUFtQk4sR0FDbkssTUFBTU8sRUFBNEJOLGdCQUFxQkQsR0FDakRRLEVBQVFaLEVBQWdCaEYsT0FLOUIsU0FBUzZGLEVBQVN6QyxHQUNkLE1BQVFrQyxNQUFPQSxFQUFRbEQsU0FBVUEsS0FBYzBELEdBQVkxQyxFQUNyRDJDLEdBQVdULGFBQXFDLEVBQVNBLEVBQU1SLEdBQVdjLEtBQVdELEVBRXJGcEIsRUFBUWlCLEVBQWNDLFNBQUMsSUFBSUssR0FDL0JyRyxPQUFPdUcsT0FBT0YsSUFDaEIsT0FBcUJHLEVBQW9CekMsY0FBQ3VDLEVBQVFGLFNBQVUsQ0FDeER0QixNQUFPQSxHQUNSbkMsRUFDTixDQVNELE9BdEJBNEMsRUFBa0IsSUFDWEEsRUFDSEksR0FtQkpTLEVBQVNLLFlBQWNSLEVBQW9CLFdBQ3BDLENBQ0hHLEVBVEosU0FBb0JNLEVBQWNiLEdBQzlCLE1BQU1TLEdBQVdULGFBQXFDLEVBQVNBLEVBQU1SLEdBQVdjLEtBQVdELEVBQ3JGRyxFQUFVTSxhQUFrQkwsR0FDbEMsR0FBSUQsRUFBUyxPQUFPQSxFQUNwQixRQUF1Qk8sSUFBbkJqQixFQUE4QixPQUFPQSxFQUN6QyxNQUFNLElBQUlrQixNQUFNLEtBQUtILDZCQUF3Q1QsTUFDaEUsRUFNSixFQXdCR2EsRUFBMkN0QixLQUFnQkYsR0FFbkUsQ0FHcUcsU0FBU3dCLEtBQThDQyxHQUN4SixNQUFNQyxFQUFZRCxFQUFPLEdBQ3pCLEdBQXNCLElBQWxCQSxFQUFPeEcsT0FBYyxPQUFPeUcsRUFDaEMsTUFBTUMsRUFBZSxLQUNqQixNQUFNQyxFQUFhSCxFQUFPckIsS0FBS0YsSUFBZSxDQUN0QzJCLFNBQVUzQixJQUNWSCxVQUFXRyxFQUFZSCxjQUcvQixPQUFPLFNBQTJCK0IsR0FDOUIsTUFBTUMsRUFBY0gsRUFBV0ksUUFBTyxDQUFDQyxHQUFjSixTQUFVQSxFQUFXOUIsVUFBV0EsTUFNMUUsSUFDQWtDLEtBSFlKLEVBQVNDLEdBQ0ksVUFBVS9CLFFBSzNDLENBQUUsR0FDTCxPQUFPVSxFQUFjQyxTQUFDLEtBQUssQ0FDbkIsQ0FBQyxVQUFVZ0IsRUFBVTNCLGFBQWNnQyxLQUV6QyxDQUNFQSxHQUVoQixDQUFTLEVBR0wsT0FEQUosRUFBYTVCLFVBQVkyQixFQUFVM0IsVUFDNUI0QixDQUNYLENDaEhJLE1BQU1PLEVBQTRDQyxRQUF1QixPQUFmQyxpQkFBc0MsSUFBZkEsZ0JBQXdCLEVBQVNBLFdBQVdDLFVBQVlDLEVBQUFBLGdCQUF5QixPQ0poS0MsRUFBbUNDLEVBQWEsUUFBUWxHLGFBQWdCLE1BQzlFLEdBQ0EsSUFBSW1HLEVBQThCLEVBQ2xDLFNBQVNDLEVBQTBDQyxHQUMvQyxNQUFPQyxFQUFJQyxHQUFTTCxFQUFhTSxTQUFTUCxLQU8xQyxPQU5BUSxHQUF1QixLQUNkSixHQUFpQkUsR0FBT0csR0FBVUEsUUFBeUNBLEVBQVVDLE9BQU9SLE1BQ2hHLEdBQ0YsQ0FDQ0UsSUFFR0EsSUFBb0JDLEVBQUssU0FBU0EsSUFBTyxHQUNwRCxDQ1hJLFNBQVNNLEVBQTBDQyxHQUNuRCxNQUFNQyxFQUFjQyxTQUFjRixHQUlsQyxPQUhBRyxFQUFBQSxXQUFpQixLQUNiRixFQUFZM0QsUUFBVTBELENBQVEsSUFFM0JJLEVBQWM3QyxTQUFDLElBQUksSUFBSThDLEtBQ3RCLElBQUlDLEVBQ0osT0FBd0QsUUFBaERBLEVBQXVCTCxFQUFZM0QsZUFBOEMsSUFBekJnRSxPQUFrQyxFQUFTQSxFQUFxQnBJLEtBQUsrSCxLQUFnQkksRUFBSyxHQUVoSyxHQUNOLENDWEEsU0FBU0UsR0FBMkNDLEtBQU1BLEVBQU9DLFlBQWFBLEVBQWNDLFNBQVVBLEVBQVcsV0FDN0csTUFBT0MsRUFBa0JDLEdBd0I3QixVQUFzREgsWUFBYUEsRUFBY0MsU0FBVUEsSUFDdkYsTUFBTUcsRUFBb0JDLFdBQWdCTCxJQUNuQ3BFLEdBQVN3RSxFQUNWRSxFQUFlQyxTQUFjM0UsR0FDN0I0RSxFQUFlQyxFQUFzQlIsR0FXM0MsT0FWQVMsRUFBQUEsV0FBaUIsS0FDVEosRUFBYXpFLFVBQVlELElBQ3pCNEUsRUFBYTVFLEdBQ2IwRSxFQUFhekUsUUFBVUQsRUFDMUIsR0FDRixDQUNDQSxFQUNBMEUsRUFDQUUsSUFFR0osQ0FDWCxDQXhDb0RPLENBQTJDLENBQ3ZGWCxZQUFhQSxFQUNiQyxTQUFVQSxJQUVSVyxPQUF3QmxELElBQVRxQyxFQUNmYyxFQUFTRCxFQUFlYixFQUFPRyxFQUMvQk0sRUFBZUMsRUFBc0JSLEdBYTNDLE1BQU8sQ0FDSFksRUFiYUMsZUFBb0JDLElBQ2pDLEdBQUlILEVBQWMsQ0FDZCxNQUNNaEYsRUFBNkIsbUJBQWRtRixFQUROQSxFQUN3Q2hCLEdBQVFnQixFQUMzRG5GLElBQVVtRSxHQUFNUyxFQUFhNUUsRUFDN0MsTUFBZXVFLEVBQW9CWSxFQUFVLEdBQ3RDLENBQ0NILEVBQ0FiLEVBQ0FJLEVBQ0FLLElBTVIsQ0NwQnFHLE1BQU1RLEVBQTBEQyxFQUFBQSxZQUFrQixDQUFDeEcsRUFBT3lHLEtBQzNMLE1BQVF6SCxTQUFVQSxLQUFjMEgsR0FBYzFHLEVBQ3hDMkcsRUFBZ0JDLEVBQUFBLFNBQWdCQyxRQUFRN0gsR0FDeEM4SCxFQUFZSCxFQUFjSSxLQUFLQyxHQUNyQyxHQUFJRixFQUFXLENBRVgsTUFBTUcsRUFBYUgsRUFBVTlHLE1BQU1oQixTQUM3QmtJLEVBQWNQLEVBQWM1RSxLQUFLb0YsR0FDL0JBLElBQVVMLEVBR05GLEVBQWVRLFNBQUNDLE1BQU1KLEdBQWMsRUFBVUwsRUFBZVEsU0FBQ0UsS0FBSyxNQUNsREMsRUFBQUEsZUFBc0JOLEdBQWNBLEVBQVdqSCxNQUFNaEIsU0FBVyxLQUMzRW1JLElBRWxCLE9BQXFCSyxFQUFvQnBILGNBQUNxSCxFQUFpQ0MsRUFBcUMsQ0FBQSxFQUFJaEIsRUFBVyxDQUMzSDdILElBQUs0SCxJQUNTYyxFQUFBQSxlQUFzQk4sR0FBNEJVLEVBQW1CQyxhQUFDWCxPQUFZaEUsRUFBV2lFLEdBQWUsS0FDakksQ0FDRCxPQUFxQk0sRUFBb0JwSCxjQUFDcUgsRUFBaUNDLEVBQXFDLENBQUEsRUFBSWhCLEVBQVcsQ0FDM0g3SCxJQUFLNEgsSUFDTHpILEVBQVMsSUFFakJ1SCxFQUEwQ3pELFlBQWMsT0FHNkMsTUFBTTJFLEVBQWdEakIsRUFBQUEsWUFBa0IsQ0FBQ3hHLEVBQU95RyxLQUNqTCxNQUFRekgsU0FBVUEsS0FBYzBILEdBQWMxRyxFQUM5QyxPQUFrQnVILEVBQXFCTSxlQUFDN0ksR0FBZ0MySSxFQUFBQSxhQUFvQjNJLEVBQVUsSUFDL0Y4SSxFQUFpQ3BCLEVBQVcxSCxFQUFTZ0IsT0FDeERuQixJQUFLNEgsRUFBZXNCLEVBQW1CdEIsRUFBY3pILEVBQVNILEtBQU9HLEVBQVNILE1BRTNFK0gsRUFBZVEsU0FBQ0MsTUFBTXJJLEdBQVksRUFBSTRILEVBQUFBLFNBQWdCVSxLQUFLLE1BQVEsSUFBSSxJQUVsRkcsRUFBZ0MzRSxZQUFjLFlBR3VELE1BQU1rRixFQUE0QyxFQUFHaEosU0FBVUEsS0FDM0l3SSxnQkFBcUJTLEVBQUFBLFNBQWlCLEtBQU1qSixHQUVnQyxTQUFTZ0ksRUFBa0NHLEdBQzVJLE9BQXFCSSxFQUFxQk0sZUFBQ1YsSUFBVUEsRUFBTTVILE9BQVN5SSxDQUN4RSxDQUNBLFNBQVNGLEVBQWlDcEIsRUFBV3dCLEdBRWpELE1BQU1DLEVBQWdCLElBQ2ZELEdBRVAsSUFBSSxNQUFNRSxLQUFZRixFQUFXLENBQzdCLE1BQU1HLEVBQWdCM0IsRUFBVTBCLEdBQzFCRSxFQUFpQkosRUFBV0UsR0FDaEIsV0FBV0csS0FBS0gsR0FHMUJDLEdBQWlCQyxFQUFnQkgsRUFBY0MsR0FBWSxJQUFJakQsS0FDL0RtRCxLQUFrQm5ELEdBQ2xCa0QsS0FBaUJsRCxFQUFLLEVBRWpCa0QsSUFBZUYsRUFBY0MsR0FBWUMsR0FDOUIsVUFBYkQsRUFBc0JELEVBQWNDLEdBQVksSUFDcERDLEtBQ0FDLEdBRWUsY0FBYkYsSUFBMEJELEVBQWNDLEdBQVksQ0FDekRDLEVBQ0FDLEdBQ0ZFLE9BQU8xRSxTQUFTMUYsS0FBSyxLQUMxQixDQUNELE1BQU8sSUFDQXNJLEtBQ0F5QixFQUVYLENDeEVBLE1Bc0IyR00sRUF0QnZFLENBQ2hDLElBQ0EsU0FDQSxNQUNBLE9BQ0EsS0FDQSxLQUNBLE1BQ0EsUUFDQSxRQUNBLEtBQ0EsTUFDQSxLQUNBLElBQ0EsT0FDQSxNQUNBLE1BTStLOUUsUUFBTyxDQUFDK0UsRUFBV3pILEtBQ2xNLE1BQU0wSCxFQUFxQkMsRUFBQUEsWUFBa0IsQ0FBQzVJLEVBQU95RyxLQUNqRCxNQUFRb0MsUUFBU0EsS0FBYUMsR0FBbUI5SSxFQUMzQytJLEVBQU9GLEVBQVVHLEVBQWMvSCxFQUlyQyxPQUhBZ0ksRUFBQUEsV0FBaUIsS0FDYnpLLE9BQU8wSyxPQUFPQyxJQUFJLGNBQWUsQ0FBSSxHQUN0QyxJQUNrQkMsRUFBb0JoSixjQUFDMkksRUFBTU0sRUFBcUMsQ0FBQSxFQUFJUCxFQUFnQixDQUNyR2pLLElBQUs0SCxJQUNOLElBR1AsT0FEQWtDLEVBQUs3RixZQUFjLGFBQWE3QixJQUN6QixJQUNBeUgsRUFDSHpILENBQUNBLEdBQU8wSCxFQUNYLEdBQ0YsQ0FBRSxHQzdCTCxNQUFNVyxFQUF1QywwQkFDdkNDLEVBQTZDLHNDQUM3Q0MsRUFBc0MsZ0NBQzVDLElBQUlDLEVBQ0osTUFBTUMsRUFBOERDLEVBQUFBLGNBQXFCLENBQ3JGQyxPQUFRLElBQUlDLElBQ1pDLHVDQUF3QyxJQUFJRCxJQUM1Q0UsU0FBVSxJQUFJRixNQUVaRyxFQUEwREMsRUFBaUJ0TCxZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsSUFBSXlELEVBQ0osTUFBUUMsNEJBQTZCQSxHQUE4QixFQUFRQyxnQkFBaUJBLEVBQWtCQyxxQkFBc0JBLEVBQXVCQyxlQUFnQkEsRUFBaUJDLGtCQUFtQkEsRUFBb0JDLFVBQVdBLEtBQWVDLEdBQWV6SyxFQUN0UTBDLEVBQVVnSSxhQUFrQmhCLElBQzNCaUIsRUFBT0MsR0FBV0MsRUFBZXBHLFNBQUMsTUFDbkNxRyxFQUE4RyxRQUE3RlosRUFBc0JTLGFBQXFDLEVBQVNBLEVBQU1HLHFCQUFtRCxJQUF4QlosRUFBaUNBLEVBQXFDLE9BQWZuRyxpQkFBc0MsSUFBZkEsZ0JBQXdCLEVBQVNBLFdBQVdDLFdBQzdPK0csR0FBU0YsRUFBZXBHLFNBQUMsQ0FBRSxHQUM5QnVHLEVBQWVDLEVBQXVCeEUsR0FBZXhGLEdBQU8ySixFQUFRM0osS0FFcEUySSxFQUFTOUwsTUFBTW9OLEtBQUt4SSxFQUFRa0gsU0FDM0J1QixHQUFnRCxJQUNoRHpJLEVBQVFvSCx3Q0FDYnNCLE9BQU8sR0FDSEMsRUFBb0R6QixFQUFPdk0sUUFBUThOLEdBQ25FM0ksRUFBUW1JLEVBQVFmLEVBQU92TSxRQUFRc04sSUFBVSxFQUN6Q1csRUFBOEI1SSxFQUFRb0gsdUNBQXVDM0ssS0FBTyxFQUNwRm9NLEVBQXlCL0ksR0FBUzZJLEVBQ2xDRyxFQXFITixTQUFxRG5CLEVBQXNCUyxHQUErQixPQUFmL0csaUJBQXNDLElBQWZBLGdCQUF3QixFQUFTQSxXQUFXQyxXQUM5SixNQUFNeUgsRUFBMkJDLEVBQXNCckIsR0FDakRzQixFQUE4QkMsVUFBYyxHQUM1Q0MsRUFBaUJELEVBQUFBLFFBQWMsU0F5RHJDLE9BeERBRSxFQUFBQSxXQUFpQixLQUNiLE1BQU1DLEVBQXFCbEwsSUFDdkIsR0FBSUEsRUFBTU4sU0FBV29MLEVBQTRCdkssUUFBUyxDQUN0RCxNQUFNNEssRUFBYyxDQUNoQkMsY0FBZXBMLEdBRW5CLFNBQVNxTCxJQUNMQyxFQUFtRDVDLEVBQTRDa0MsRUFBMEJPLEVBQWEsQ0FDbElJLFVBQVUsR0FFakIsQ0FZcUIsVUFBdEJ2TCxFQUFNd0wsYUFDRnZCLEVBQWN3QixvQkFBb0IsUUFBU1QsRUFBZXpLLFNBQzFEeUssRUFBZXpLLFFBQVU4SyxFQUN6QnBCLEVBQWN5QixpQkFBaUIsUUFBU1YsRUFBZXpLLFFBQVMsQ0FDNURvTCxNQUFNLEtBRVBOLEdBQ1YsQ0FDRFAsRUFBNEJ2SyxTQUFVLENBQUssRUFjekNxTCxFQUFVak8sT0FBT2tPLFlBQVcsS0FDOUI1QixFQUFjeUIsaUJBQWlCLGNBQWVSLEVBQWtCLEdBQ2pFLEdBQ0gsTUFBTyxLQUNIdk4sT0FBT21PLGFBQWFGLEdBQ3BCM0IsRUFBY3dCLG9CQUFvQixjQUFlUCxHQUNqRGpCLEVBQWN3QixvQkFBb0IsUUFBU1QsRUFBZXpLLFFBQVEsQ0FDckUsR0FDRixDQUNDMEosRUFDQVcsSUFFRyxDQUVIbUIscUJBQXNCLElBQUlqQixFQUE0QnZLLFNBQVUsRUFFeEUsQ0FyTCtCeUwsRUFBNkNoTSxJQUNwRSxNQUFNTixFQUFTTSxFQUFNTixPQUNmdU0sRUFBd0IsSUFDdkJwSyxFQUFRcUgsVUFDYmdELE1BQU1DLEdBQVNBLEVBQU9DLFNBQVMxTSxLQUU1QmdMLElBQTBCdUIsSUFDL0J6QyxTQUFvRUEsRUFBcUJ4SixHQUN6RjBKLFNBQThEQSxFQUFrQjFKLEdBQzNFQSxFQUFNQyxrQkFBa0IwSixTQUE4Q0EsSUFBVyxHQUN2Rk0sR0FDR29DLEVBOEtOLFNBQStDNUMsRUFBZ0JRLEdBQStCLE9BQWYvRyxpQkFBc0MsSUFBZkEsZ0JBQXdCLEVBQVNBLFdBQVdDLFdBQ2xKLE1BQU1tSixFQUFxQnpCLEVBQXNCcEIsR0FDM0M4QyxFQUE0QnhCLFVBQWMsR0FtQmhELE9BbEJBRSxFQUFBQSxXQUFpQixLQUNiLE1BQU11QixFQUFleE0sSUFDakIsR0FBSUEsRUFBTU4sU0FBVzZNLEVBQTBCaE0sUUFBUyxDQUlwRCtLLEVBQW1EM0MsRUFBcUMyRCxFQUhwRSxDQUNoQmxCLGNBQWVwTCxHQUVzRyxDQUNySHVMLFVBQVUsR0FFakIsR0FHTCxPQURBdEIsRUFBY3lCLGlCQUFpQixVQUFXYyxHQUNuQyxJQUFJdkMsRUFBY3dCLG9CQUFvQixVQUFXZSxFQUN2RCxHQUNGLENBQ0N2QyxFQUNBcUMsSUFFRyxDQUNIRyxlQUFnQixJQUFJRixFQUEwQmhNLFNBQVUsRUFFeERtTSxjQUFlLElBQUlILEVBQTBCaE0sU0FBVSxFQUUvRCxDQXhNeUJvTSxFQUF1QzNNLElBQ3hELE1BQU1OLEVBQVNNLEVBQU1OLE9BQ0csSUFDakJtQyxFQUFRcUgsVUFDYmdELE1BQU1DLEdBQVNBLEVBQU9DLFNBQVMxTSxPQUdqQytKLFNBQXdEQSxFQUFlekosR0FDdkUwSixTQUE4REEsRUFBa0IxSixHQUMzRUEsRUFBTUMsa0JBQWtCMEosU0FBOENBLElBQVcsR0FDdkZNLEdBcURILE9DL0dBLFNBQW1EMkMsRUFBcUIzQyxHQUErQixPQUFmL0csaUJBQXNDLElBQWZBLGdCQUF3QixFQUFTQSxXQUFXQyxXQUMzSixNQUFNb0csRUFBa0JzRCxFQUFzQkQsR0FDOUNFLEVBQUFBLFdBQWlCLEtBQ2IsTUFBTUMsRUFBaUIvTSxJQUNELFdBQWRBLEVBQU0xQyxLQUFrQmlNLEVBQWdCdkosRUFBTSxFQUd0RCxPQURBaUssRUFBY3lCLGlCQUFpQixVQUFXcUIsR0FDbkMsSUFBSTlDLEVBQWN3QixvQkFBb0IsVUFBV3NCLEVBQ3ZELEdBQ0YsQ0FDQ3hELEVBQ0FVLEdBRVIsQ0Q4Q0krQyxFQUF5QmhOLElBQ0UyQixJQUFVRSxFQUFRa0gsT0FBT3pLLEtBQU8sSUFFdkRpTCxTQUEwREEsRUFBZ0J2SixJQUNyRUEsRUFBTUMsa0JBQW9CMEosSUFDM0IzSixFQUFNaU4saUJBQ050RCxLQUNILEdBQ0ZNLEdBQ0hnQixFQUFBQSxXQUFpQixLQUNiLEdBQUtuQixFQVVMLE9BVElSLElBQzRELElBQXhEekgsRUFBUW9ILHVDQUF1QzNLLE9BQy9Dc0ssRUFBa0RxQixFQUFjaUQsS0FBS0MsTUFBTUMsY0FDM0VuRCxFQUFjaUQsS0FBS0MsTUFBTUMsY0FBZ0IsUUFFN0N2TCxFQUFRb0gsdUNBQXVDb0UsSUFBSXZELElBRXZEakksRUFBUWtILE9BQU9zRSxJQUFJdkQsR0FDbkJ3RCxJQUNPLEtBQ0NoRSxHQUF1RixJQUF4RHpILEVBQVFvSCx1Q0FBdUMzSyxPQUFZMkwsRUFBY2lELEtBQUtDLE1BQU1DLGNBQWdCeEUsRUFBK0MsQ0FDekwsR0FDRixDQUNDa0IsRUFDQUcsRUFDQVgsRUFDQXpILElBT0ZvSixFQUFBQSxXQUFpQixJQUNSLEtBQ0VuQixJQUNMakksRUFBUWtILE9BQU93RSxPQUFPekQsR0FDdEJqSSxFQUFRb0gsdUNBQXVDc0UsT0FBT3pELEdBQ3REd0QsSUFBc0MsR0FFM0MsQ0FDQ3hELEVBQ0FqSSxJQUVKb0osRUFBQUEsV0FBaUIsS0FDYixNQUFNdUMsRUFBZSxJQUFJdEQsRUFBTSxJQUcvQixPQURBL0csU0FBU3VJLGlCQUFpQmpELEVBQXNDK0UsR0FDekQsSUFBSXJLLFNBQVNzSSxvQkFBb0JoRCxFQUFzQytFLEVBQzdFLEdBQ0YsSUFDa0JDLEVBQUFBLGNBQXFCQyxFQUFpQkMsSUFBS0MsRUFBcUMsQ0FBQSxFQUFJaEUsRUFBWSxDQUNqSDVMLElBQUttTSxFQUNMZ0QsTUFBTyxDQUNIQyxjQUFlM0MsRUFBOEJDLEVBQXlCLE9BQVMsWUFBU3RJLEtBQ3JGakQsRUFBTWdPLE9BRWJWLGVBQWdCb0IsRUFBNEIxTyxFQUFNc04sZUFBZ0JKLEVBQWFJLGdCQUMvRUMsY0FBZW1CLEVBQTRCMU8sRUFBTXVOLGNBQWVMLEVBQWFLLGVBQzdFWCxxQkFBc0I4QixFQUE0QjFPLEVBQU00TSxxQkFBc0JwQixFQUFtQm9CLHdCQUNsRyxJQWlJUCxTQUFTdUIsSUFDTCxNQUFNdE4sRUFBUSxJQUFJOE4sWUFBWXJGLEdBQzlCdEYsU0FBUzRLLGNBQWMvTixFQUMzQixDQUNBLFNBQVNzTCxFQUFtRDBDLEVBQU1DLEVBQVNDLEdBQVUzQyxTQUFVQSxJQUMzRixNQUFNN0wsRUFBU3dPLEVBQU85QyxjQUFjMUwsT0FDOUJNLEVBQVEsSUFBSThOLFlBQVlFLEVBQU0sQ0FDaENHLFNBQVMsRUFDVEMsWUFBWSxFQUNaRixPQUFRQSxJQUVSRCxHQUFTdk8sRUFBT2dNLGlCQUFpQnNDLEVBQU1DLEVBQVMsQ0FDaER0QyxNQUFNLElBRU5KLEVEekxKLFNBQW1EN0wsRUFBUU0sR0FDdkROLEdBQVEyTyxFQUFnQkMsV0FBQyxJQUFJNU8sRUFBT3FPLGNBQWMvTixJQUUxRCxDQ3NMa0J1TyxDQUFtQzdPLEVBQVFNLEdBQ3BETixFQUFPcU8sY0FBYy9OLEVBQzlCLENFclFBLE1BQU13TyxFQUEyQyw4QkFDM0NDLEVBQTZDLGdDQUM3Q0MsRUFBc0MsQ0FDeENQLFNBQVMsRUFDVEMsWUFBWSxHQUtWTyxFQUEwREMsRUFBaUI5USxZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUWlKLEtBQU1BLEdBQU8sRUFBUUMsUUFBU0EsR0FBVSxFQUFRQyxpQkFBa0JDLEVBQXVCQyxtQkFBb0JDLEtBQTRCQyxHQUFlaFEsR0FDekppUSxFQUFZQyxHQUFnQkMsRUFBZTFMLFNBQUMsTUFDN0NtTCxFQUFtQlEsRUFBc0JQLEdBQ3pDQyxFQUFxQk0sRUFBc0JMLEdBQzNDTSxFQUF3QkMsU0FBYyxNQUN0Q3RGLEVBQWV1RixFQUF1QjlKLEdBQWV4RixHQUFPaVAsRUFBYWpQLEtBRXpFdVAsRUFBYUYsRUFBQUEsT0FBYyxDQUM3QkcsUUFBUSxFQUNSQyxRQUNJeFQsS0FBS3VULFFBQVMsQ0FDakIsRUFDREUsU0FDSXpULEtBQUt1VCxRQUFTLENBQ2pCLElBQ0ZyUCxRQUNId1AsRUFBQUEsV0FBaUIsS0FDYixHQUFJakIsRUFBUyxDQUNULFNBQVNrQixFQUFjaFEsR0FDbkIsR0FBSTJQLEVBQVdDLFNBQVdSLEVBQVksT0FDdEMsTUFBTTFQLEVBQVNNLEVBQU1OLE9BQ2pCMFAsRUFBV2hELFNBQVMxTSxHQUFTOFAsRUFBc0JqUCxRQUFVYixFQUM1RHVRLEVBQTRCVCxFQUFzQmpQLFFBQVMsQ0FDNUQyUCxRQUFRLEdBRWYsQ0FDRCxTQUFTQyxFQUFlblEsR0FDcEIsR0FBSTJQLEVBQVdDLFNBQVdSLEVBQVksT0FDdEMsTUFBTWdCLEVBQWdCcFEsRUFBTW9RLGNBVU4sT0FBbEJBLElBRUNoQixFQUFXaEQsU0FBU2dFLElBQWdCSCxFQUE0QlQsRUFBc0JqUCxRQUFTLENBQ2hHMlAsUUFBUSxJQUVmLENBR0QsU0FBU0csRUFBZ0JDLEdBQ3JCLE1BQU1DLEVBQWlCcE4sU0FBU3FOLGNBQ2hDLElBQUssTUFBTUMsS0FBWUgsRUFDZkcsRUFBU0MsYUFBYTNVLE9BQVMsSUFDekJxVCxTQUFnREEsRUFBV2hELFNBQVNtRSxJQUFrQk4sRUFBNEJiLEdBR25JLENBQ0RqTSxTQUFTdUksaUJBQWlCLFVBQVdzRSxHQUNyQzdNLFNBQVN1SSxpQkFBaUIsV0FBWXlFLEdBQ3RDLE1BQU1RLEVBQW1CLElBQUlDLGlCQUFpQlAsR0FLOUMsT0FKSWpCLEdBQVl1QixFQUFpQkUsUUFBUXpCLEVBQVksQ0FDakQwQixXQUFXLEVBQ1hDLFNBQVMsSUFFTixLQUNINU4sU0FBU3NJLG9CQUFvQixVQUFXdUUsR0FDeEM3TSxTQUFTc0ksb0JBQW9CLFdBQVkwRSxHQUN6Q1EsRUFBaUJLLFlBQVksQ0FFcEMsSUFDRixDQUNDbEMsRUFDQU0sRUFDQU8sRUFBV0MsU0FFZkcsRUFBQUEsV0FBaUIsS0FDYixHQUFJWCxFQUFZLENBQ1o2QixFQUF1QzVELElBQUlzQyxHQUMzQyxNQUFNdUIsRUFBMkIvTixTQUFTcU4sY0FFMUMsSUFENEJwQixFQUFXaEQsU0FBUzhFLEdBQ3RCLENBQ3RCLE1BQU1DLEVBQWEsSUFBSXJELFlBQVlVLEVBQTBDRSxHQUM3RVUsRUFBVzFELGlCQUFpQjhDLEVBQTBDTyxHQUN0RUssRUFBV3JCLGNBQWNvRCxHQUNwQkEsRUFBV2xSLG9CQTJFNUIsU0FBMENtUixHQUFjbEIsT0FBUUEsR0FBUyxHQUFXLElBQ3BGLE1BQU1nQixFQUEyQi9OLFNBQVNxTixjQUMxQyxJQUFLLE1BQU1hLEtBQWFELEVBSXBCLEdBSEFuQixFQUE0Qm9CLEVBQVcsQ0FDbkNuQixPQUFRQSxJQUVSL00sU0FBU3FOLGdCQUFrQlUsRUFBMEIsTUFFakUsQ0FsRm9CSSxFQXFMdUJDLEVBckw0Q0MsRUFBNENwQyxHQXNMeEhtQyxFQUFNNUosUUFBUThKLEdBQXdCLE1BQWpCQSxFQUFLQyxXQXRMNEcsQ0FDekh4QixRQUFRLElBRVIvTSxTQUFTcU4sZ0JBQWtCVSxHQUEwQmpCLEVBQTRCYixHQUU1RixDQUNELE1BQU8sS0FDSEEsRUFBVzNELG9CQUFvQitDLEVBQTBDTyxHQUd6RWxELFlBQVcsS0FDUCxNQUFNOEYsRUFBZSxJQUFJN0QsWUFBWVcsRUFBNENDLEdBQ2pGVSxFQUFXMUQsaUJBQWlCK0MsRUFBNENRLEdBQ3hFRyxFQUFXckIsY0FBYzRELEdBQ3BCQSxFQUFhMVIsa0JBQWtCZ1EsRUFBNEJpQixRQUEyRUEsRUFBMkIvTixTQUFTK0osS0FBTSxDQUNqTGdELFFBQVEsSUFHWmQsRUFBVzNELG9CQUFvQmdELEVBQTRDUSxHQUMzRWdDLEVBQXVDVyxPQUFPakMsRUFBVyxHQUMxRCxFQUFFLENBRVosQ0ErSlQsSUFBMkM0QixDQS9KbEMsR0FDRixDQUNDbkMsRUFDQUwsRUFDQUUsRUFDQVUsSUFFSixNQUFNNUMsRUFBZ0I4RSxlQUFvQjdSLElBQ3RDLElBQUs2TyxJQUFTQyxFQUFTLE9BQ3ZCLEdBQUlhLEVBQVdDLE9BQVEsT0FDdkIsTUFBTWtDLEVBQXlCLFFBQWQ5UixFQUFNMUMsTUFBa0IwQyxFQUFNK1IsU0FBVy9SLEVBQU1nUyxVQUFZaFMsRUFBTWlTLFFBQzVFMUIsRUFBaUJwTixTQUFTcU4sY0FDaEMsR0FBSXNCLEdBQVl2QixFQUFnQixDQUM1QixNQUFNMkIsRUFBWWxTLEVBQU1tUyxlQUNqQkMsRUFBT0MsR0FpRHRCLFNBQWdESCxHQUNoRCxNQUFNZCxFQUFhSSxFQUE0Q1UsR0FDekRFLEVBQVFFLEVBQWtDbEIsRUFBWWMsR0FDdERHLEVBQU9DLEVBQWtDbEIsRUFBV21CLFVBQVdMLEdBQ3JFLE1BQU8sQ0FDSEUsRUFDQUMsRUFFUixDQXpEa0NHLENBQXVDTixHQUMzQkUsR0FBU0MsRUFJbENyUyxFQUFNeVMsVUFBWWxDLElBQW1COEIsRUFLL0JyUyxFQUFNeVMsVUFBWWxDLElBQW1CNkIsSUFDNUNwUyxFQUFNaU4saUJBQ0Y0QixHQUFNb0IsRUFBNEJvQyxFQUFNLENBQ3hDbkMsUUFBUSxNQVBabFEsRUFBTWlOLGlCQUNGNEIsR0FBTW9CLEVBQTRCbUMsRUFBTyxDQUN6Q2xDLFFBQVEsS0FMWkssSUFBbUIyQixHQUFXbFMsRUFBTWlOLGdCQWMvQyxJQUNGLENBQ0M0QixFQUNBQyxFQUNBYSxFQUFXQyxTQUVmLE9BQXFCOEMsZ0JBQXFCQyxFQUFpQmhGLElBQUtpRixFQUFxQyxDQUNqR0MsVUFBVyxHQUNaMUQsRUFBWSxDQUNYblIsSUFBS21NLEVBQ0wySSxVQUFXL0YsSUFDWixJQXVDSCxTQUFTeUUsRUFBNENVLEdBQ3JELE1BQU1hLEVBQVEsR0FDUkMsRUFBUzdQLFNBQVM4UCxpQkFBaUJmLEVBQVdnQixXQUFXQyxhQUFjLENBQ3pFQyxXQUFhaFQsSUFDVCxNQUFNaVQsRUFBaUMsVUFBakJqVCxFQUFLc1IsU0FBcUMsV0FBZHRSLEVBQUsxQixLQUN2RCxPQUFJMEIsRUFBS2xDLFVBQVlrQyxFQUFLa1QsUUFBVUQsRUFBc0JILFdBQVdLLFlBRzlEblQsRUFBS3lTLFVBQVksRUFBSUssV0FBV00sY0FBZ0JOLFdBQVdLLFdBQVcsSUFHckYsS0FBTVAsRUFBT1MsWUFBV1YsRUFBTS9WLEtBQUtnVyxFQUFPVSxhQUUxQyxPQUFPWCxDQUNYLENBSUksU0FBU1QsRUFBa0NxQixFQUFVekIsR0FDckQsSUFBSyxNQUFNMEIsS0FBV0QsRUFFbEIsSUFBS0UsRUFBK0JELEVBQVMsQ0FDekNFLEtBQU01QixJQUNOLE9BQU8wQixDQUVuQixDQUNBLFNBQVNDLEVBQStCelQsR0FBUTBULEtBQU1BLElBQ2xELEdBQTBDLFdBQXRDQyxpQkFBaUIzVCxHQUFNNFQsV0FBeUIsT0FBTyxFQUMzRCxLQUFNNVQsR0FBSyxDQUVQLFFBQWFnQyxJQUFUMFIsR0FBc0IxVCxJQUFTMFQsRUFBTSxPQUFPLEVBQ2hELEdBQXVDLFNBQW5DQyxpQkFBaUIzVCxHQUFNNlQsUUFBb0IsT0FBTyxFQUN0RDdULEVBQU9BLEVBQUs4VCxhQUNmLENBQ0QsT0FBTyxDQUNYLENBSUEsU0FBU2pFLEVBQTRCMkQsR0FBVzFELE9BQVFBLEdBQVMsR0FBVyxJQUV4RSxHQUFJMEQsR0FBV0EsRUFBUU8sTUFBTyxDQUMxQixNQUFNakQsRUFBMkIvTixTQUFTcU4sY0FDMUNvRCxFQUFRTyxNQUFNLENBQ1ZDLGVBQWUsSUFFZlIsSUFBWTFDLEdBVnhCLFNBQWlEMEMsR0FDN0MsT0FBT0EsYUFBbUJTLGtCQUFvQixXQUFZVCxDQUM5RCxDQVFvRFUsQ0FBd0NWLElBQVkxRCxHQUFRMEQsRUFBUTFELFFBQ25ILENBQ0wsQ0FHcUcsTUFBTWUsRUFDM0csV0FDbUUsSUFBSXNELEVBQVEsR0FDM0UsTUFBTyxDQUNIbEgsSUFBS3NDLEdBRUQsTUFBTTZFLEVBQW1CRCxFQUFNLEdBQzNCNUUsSUFBZTZFLElBQWtCQSxTQUE0REEsRUFBaUIzRSxTQUVsSDBFLEVBQVFFLEVBQWtDRixFQUFPNUUsR0FDakQ0RSxFQUFNRyxRQUFRL0UsRUFDakIsRUFDRGlDLE9BQVFqQyxHQUNKLElBQUlnRixFQUNKSixFQUFRRSxFQUFrQ0YsRUFBTzVFLEdBQ3hCLFFBQXhCZ0YsRUFBVUosRUFBTSxVQUE0QixJQUFaSSxHQUFzQkEsRUFBUTdFLFFBQ2xFLEVBRVQsQ0FsQm9KOEUsR0FtQnBKLFNBQVNILEVBQWtDSSxFQUFPcEQsR0FDOUMsTUFBTXFELEVBQWUsSUFDZEQsR0FFRGxULEVBQVFtVCxFQUFhdFksUUFBUWlWLEdBRW5DLE9BRGUsSUFBWDlQLEdBQWNtVCxFQUFhQyxPQUFPcFQsRUFBTyxHQUN0Q21ULENBQ1gsQ0MvUUEsTUFBTUUsRUFBMERDLEVBQWlCblgsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLElBQUlzUCxFQUNKLE1BQVFoRCxVQUFXQSxHQUEyQixPQUFmaFAsaUJBQXNDLElBQWZBLFlBQWtGLFFBQWhEZ1MsRUFBdUJoUyxXQUFXQyxnQkFBK0MsSUFBekIrUixPQUFsRSxFQUE2R0EsRUFBcUJoSSxTQUFVaUksR0FBZ0JoVyxFQUMxTyxPQUFPK1MsRUFBMEJrRCxFQUFnQkMsYUFBMkJDLEVBQW9CL1YsY0FBQ2dXLEVBQWlCNUgsSUFBSzZILEVBQXFDLENBQUUsRUFBRUwsRUFBYSxDQUN6S25YLElBQUs0SCxLQUNKc00sR0FBYSxJQUFJLElDQzFCLE1BQU11RCxFQUE2Q3RXLElBQy9DLE1BQVF1VyxRQUFTQSxFQUFVdlgsU0FBVUEsR0FBY2dCLEVBQzdDd1csRUFhMkYsU0FBMkNELEdBQzVJLE1BQU81TCxFQUFPQyxHQUFXNkwsRUFBZWhTLFdBQ2xDaVMsRUFBWUMsU0FBYyxDQUFBLEdBQzFCQyxFQUFpQkQsU0FBY0osR0FDL0JNLEVBQXVCRixTQUFjLFFBQ3JDRyxFQUFlUCxFQUFVLFVBQVksYUFDcENRLEVBQU9DLEdBN0JsQixTQUFtREYsRUFBY0csR0FDN0QsT0FBT0MsRUFBaUJDLFlBQUMsQ0FBQ0osRUFBT2xXLEtBQzdCLE1BQU11VyxFQUFZSCxFQUFRRixHQUFPbFcsR0FDakMsT0FBT3VXLFFBQTZDQSxFQUFZTCxDQUFLLEdBQ3RFRCxFQUNQLENBd0IwQk8sQ0FBMENQLEVBQWMsQ0FDMUVRLFFBQVMsQ0FDTEMsUUFBUyxZQUNUQyxjQUFlLG9CQUVuQkMsaUJBQWtCLENBQ2RDLE1BQU8sVUFDUEMsY0FBZSxhQUVuQkMsVUFBVyxDQUNQRixNQUFPLGFBc0VmLE9BbkVBRyxFQUFBQSxXQUFpQixLQUNiLE1BQU1DLEVBQXVCQyxFQUF1Q3JCLEVBQVV0VixTQUM5RXlWLEVBQXFCelYsUUFBb0IsWUFBVjJWLEVBQXNCZSxFQUF1QixNQUFNLEdBQ25GLENBQ0NmLElBRUppQixHQUF1QixLQUNuQixNQUFNL1gsRUFBU3lXLEVBQVV0VixRQUNuQjZXLEVBQWFyQixFQUFleFYsUUFFbEMsR0FEMEI2VyxJQUFlMUIsRUFDbEIsQ0FDbkIsTUFBTTJCLEVBQW9CckIsRUFBcUJ6VixRQUN6QzBXLEVBQXVCQyxFQUF1QzlYLEdBQ3BFLEdBQUlzVyxFQUFTUyxFQUFLLGNBQ2IsR0FBNkIsU0FBekJjLEdBQXdHLFVBQXBFN1gsYUFBdUMsRUFBU0EsRUFBTzZVLFNBRXBHa0MsRUFBSyxlQUNBLENBTzhCQSxFQUEzQmlCLEdBRFlDLElBQXNCSixFQUNGLGdCQUMxQixVQUNiLENBQ0RsQixFQUFleFYsUUFBVW1WLENBQzVCLElBQ0YsQ0FDQ0EsRUFDQVMsSUFFSmdCLEdBQXVCLEtBQ25CLEdBQUlyTixFQUFPLENBS1QsTUFBTXdOLEVBQXNCdFgsSUFDdEIsTUFDTXVYLEVBRHVCTCxFQUF1Q3JCLEVBQVV0VixTQUM5QmxELFNBQVMyQyxFQUFNd1gsZUFDM0R4WCxFQUFNTixTQUFXb0ssR0FBU3lOLEdBRzlCRSxhQUFpQixJQUFJdEIsRUFBSyxrQkFDekIsRUFFQ3VCLEVBQXdCMVgsSUFDdEJBLEVBQU1OLFNBQVdvSyxJQUNyQmtNLEVBQXFCelYsUUFBVTJXLEVBQXVDckIsRUFBVXRWLFNBQVEsRUFLNUYsT0FIQXVKLEVBQU00QixpQkFBaUIsaUJBQWtCZ00sR0FDekM1TixFQUFNNEIsaUJBQWlCLGtCQUFtQjRMLEdBQzFDeE4sRUFBTTRCLGlCQUFpQixlQUFnQjRMLEdBQ2hDLEtBQ0h4TixFQUFNMkIsb0JBQW9CLGlCQUFrQmlNLEdBQzVDNU4sRUFBTTJCLG9CQUFvQixrQkFBbUI2TCxHQUM3Q3hOLEVBQU0yQixvQkFBb0IsZUFBZ0I2TCxFQUFtQixDQUVwRSxDQUVEbkIsRUFBSyxnQkFBZ0IsR0FDdEIsQ0FDQ3JNLEVBQ0FxTSxJQUVHLENBQ0h3QixVQUFXLENBQ1AsVUFDQSxvQkFDRnRhLFNBQVM2WSxHQUNYbFksSUFBSzRaLEVBQUFBLGFBQW9CeFgsSUFDakJBLElBQU15VixFQUFVdFYsUUFBVXdULGlCQUFpQjNULElBQy9DMkosRUFBUTNKLEVBQUssR0FDZCxJQUVYLENBN0dxQnlYLENBQWtDbkMsR0FDN0NwUCxFQUE0QixtQkFBYm5JLEVBQTBCQSxFQUFTLENBQ3BEdVgsUUFBU0MsRUFBU2dDLFlBQ2pCRyxFQUFldlIsU0FBQ0UsS0FBS3RJLEdBQ3BCSCxFQUFNK1osRUFBdUJwQyxFQUFTM1gsSUFBS3NJLEVBQU10SSxLQUV2RCxNQUR1QyxtQkFBYkcsR0FDTHdYLEVBQVNnQyxVQUEwQkssRUFBQUEsYUFBb0IxUixFQUFPLENBQy9FdEksSUFBS0EsSUFDSixJQUFJLEVBc0d3RixTQUFTa1osRUFBdUM5WCxHQUNqSixPQUFRQSxhQUF1QyxFQUFTQSxFQUFPb1ksZ0JBQWtCLE1BQ3JGLENBdEdBL0IsRUFBMEN4VCxZQUFjLFdDM0J1QixJQUFJZ1csRUFBOEIsRUFRN0csU0FBU0MsSUFDVEMsRUFBQUEsV0FBaUIsS0FDYixJQUFJQyxFQUFjQyxFQUNsQixNQUFNQyxFQUFhblYsU0FBU29WLGlCQUFpQiw0QkFJN0MsT0FIQXBWLFNBQVMrSixLQUFLc0wsc0JBQXNCLGFBQWlELFFBQWxDSixFQUFlRSxFQUFXLFVBQWlDLElBQWpCRixFQUEwQkEsRUFBZUssTUFDdEl0VixTQUFTK0osS0FBS3NMLHNCQUFzQixZQUFpRCxRQUFuQ0gsRUFBZ0JDLEVBQVcsVUFBa0MsSUFBbEJELEVBQTJCQSxFQUFnQkksTUFDeElSLElBQ08sS0FDaUMsSUFBaENBLEdBQW1DOVUsU0FBU29WLGlCQUFpQiw0QkFBNEJsWSxTQUFTRCxHQUFPQSxFQUFLd1IsV0FFbEhxRyxHQUE2QixDQUNoQyxHQUNGLEdBQ1AsQ0FDQSxTQUFTUSxLQUNMLE1BQU03RSxFQUFVelEsU0FBUzVELGNBQWMsUUFJdkMsT0FIQXFVLEVBQVE4RSxhQUFhLHlCQUEwQixJQUMvQzlFLEVBQVFmLFNBQVcsRUFDbkJlLEVBQVF6RyxNQUFNd0wsUUFBVSxtRUFDakIvRSxDQUNYLENDL0JPLElBQUlnRixHQUFxQiw0QkFDckJDLEdBQXFCLDBCQ2V6QixTQUFTQyxHQUFhM1ksRUFBTTRZLEdBQy9CLE9DRjJCQyxFREVMRCxHQUFnQixLQ0ZHOVUsRURFRyxTQUFVZ1YsR0FBWSxPQUFPOVksRUFBS0UsU0FBUSxTQUFVckMsR0FBTyxPRUpwRyxTQUFtQkEsRUFBS3NDLEdBTzNCLE1BTm1CLG1CQUFSdEMsRUFDUEEsRUFBSXNDLEdBRUN0QyxJQUNMQSxFQUFJdUMsUUFBVUQsR0FFWHRDLENBQ1gsQ0ZKa0hrYixDQUFVbGIsRUFBS2liLEVBQVksR0FBRSxHQ0R2SWpiLEVBQU00RixZQUFTLFdBQWMsTUFBUSxDQUVyQ3RELE1BQU8wWSxFQUVQL1UsU0FBVUEsRUFFVmtWLE9BQVEsQ0FDQTVZLGNBQ0EsT0FBT3ZDLEVBQUlzQyxLQUNkLEVBQ0dDLFlBQVFELEdBQ1IsSUFBSStSLEVBQU9yVSxFQUFJc0MsTUFDWCtSLElBQVMvUixJQUNUdEMsRUFBSXNDLE1BQVFBLEVBQ1p0QyxFQUFJaUcsU0FBUzNELEVBQU8rUixHQUUzQixHQUVKLElBQUUsSUFFSHBPLFNBQVdBLEVBQ1JqRyxFQUFJbWIsT0F0QlIsSUFBd0JILEVBQWMvVSxFQUNyQ2pHLENERVIsQ0dqQkEsU0FBU29iLEdBQUtDLEdBQ1YsT0FBT0EsQ0FDWCxDQ0RBLElBQUlDLEdBQVUsU0FBVXZiLEdBQ3BCLElBQUl3YixFQUFVeGIsRUFBR3diLFFBQVNDLEVBQU9sZCxFQUFPeUIsRUFBSSxDQUFDLFlBQzdDLElBQUt3YixFQUNELE1BQU0sSUFBSWxYLE1BQU0sc0VBRXBCLElBQUlvWCxFQUFTRixFQUFRRyxPQUNyQixJQUFLRCxFQUNELE1BQU0sSUFBSXBYLE1BQU0sNEJBRXBCLE9BQU94RSxFQUFNMEIsY0FBY2thLEVBQVFsZSxFQUFTLENBQUUsRUFBRWllLEdBQ3BELEVBQ0FGLEdBQVFLLGlCQUFrQixFQ1puQixJQUFJQyxHRnVFSixTQUE2QkMsUUFDaEIsSUFBWkEsSUFBc0JBLEVBQVUsQ0FBRSxHQUN0QyxJQUFJQyxFQXRFUixTQUEyQkMsRUFBVUMsUUFDZCxJQUFmQSxJQUF5QkEsRUFBYVosSUFDMUMsSUFBSWEsRUFBUyxHQUNUQyxHQUFXLEVBMERmLE1BekRhLENBQ1RSLEtBQU0sV0FDRixHQUFJUSxFQUNBLE1BQU0sSUFBSTdYLE1BQU0sb0dBRXBCLE9BQUk0WCxFQUFPbGUsT0FDQWtlLEVBQU9BLEVBQU9sZSxPQUFTLEdBRTNCZ2UsQ0FDVixFQUNESSxVQUFXLFNBQVVDLEdBQ2pCLElBQUkzSSxFQUFPdUksRUFBV0ksRUFBTUYsR0FFNUIsT0FEQUQsRUFBT2pkLEtBQUt5VSxHQUNMLFdBQ0h3SSxFQUFTQSxFQUFPdFMsUUFBTyxTQUFVMFMsR0FBSyxPQUFPQSxJQUFNNUksQ0FBSyxHQUN4RSxDQUNTLEVBQ0Q2SSxpQkFBa0IsU0FBVUMsR0FFeEIsSUFEQUwsR0FBVyxFQUNKRCxFQUFPbGUsUUFBUSxDQUNsQixJQUFJeWUsRUFBTVAsRUFDVkEsRUFBUyxHQUNUTyxFQUFJbmEsUUFBUWthLEVBQ2YsQ0FDRE4sRUFBUyxDQUNMamQsS0FBTSxTQUFVcWQsR0FBSyxPQUFPRSxFQUFHRixFQUFLLEVBQ3BDMVMsT0FBUSxXQUFjLE9BQU9zUyxDQUFTLEVBRTdDLEVBQ0RRLGFBQWMsU0FBVUYsR0FDcEJMLEdBQVcsRUFDWCxJQUFJUSxFQUFlLEdBQ25CLEdBQUlULEVBQU9sZSxPQUFRLENBQ2YsSUFBSXllLEVBQU1QLEVBQ1ZBLEVBQVMsR0FDVE8sRUFBSW5hLFFBQVFrYSxHQUNaRyxFQUFlVCxDQUNsQixDQUNELElBQUlVLEVBQWUsV0FDZixJQUFJSCxFQUFNRSxFQUNWQSxFQUFlLEdBQ2ZGLEVBQUluYSxRQUFRa2EsRUFDNUIsRUFDZ0JLLEVBQVEsV0FBYyxPQUFPQyxRQUFRQyxVQUFVQyxLQUFLSixJQUN4REMsSUFDQVgsRUFBUyxDQUNMamQsS0FBTSxTQUFVcWQsR0FDWkssRUFBYTFkLEtBQUtxZCxHQUNsQk8sR0FDSCxFQUNEalQsT0FBUSxTQUFVQSxHQUVkLE9BREErUyxFQUFlQSxFQUFhL1MsT0FBT0EsR0FDNUJzUyxDQUNWLEVBRVIsRUFHVCxDQVFpQmUsQ0FBa0IsTUFFL0IsT0FEQWxCLEVBQU9ELFFBQVV0ZSxFQUFTLENBQUUwZixPQUFPLEVBQU1DLEtBQUssR0FBU3JCLEdBQ2hEQyxDQUNYLENFNUV1QnFCLEdDSW5CQyxHQUFVLFdBRWQsRUFJSUMsR0FBZXhkLEVBQU1DLFlBQVcsU0FBVXFCLEVBQU9tYyxHQUNqRCxJQUFJdGQsRUFBTUgsRUFBTTBkLE9BQU8sTUFDbkJ4ZCxFQUFLRixFQUFNK0YsU0FBUyxDQUNwQjRYLGdCQUFpQkosR0FDakJLLGVBQWdCTCxHQUNoQk0sbUJBQW9CTixLQUNwQk8sRUFBWTVkLEVBQUcsR0FBSTZkLEVBQWU3ZCxFQUFHLEdBQ3JDOGQsRUFBZTFjLEVBQU0wYyxhQUFjMWQsRUFBV2dCLEVBQU1oQixTQUFVYSxFQUFZRyxFQUFNSCxVQUFXOGMsRUFBa0IzYyxFQUFNMmMsZ0JBQWlCQyxFQUFVNWMsRUFBTTRjLFFBQVNDLEVBQVM3YyxFQUFNNmMsT0FBUXpDLEVBQVVwYSxFQUFNb2EsUUFBUzBDLEVBQWM5YyxFQUFNOGMsWUFBYUMsRUFBUS9jLEVBQU0rYyxNQUFPQyxFQUFpQmhkLEVBQU1nZCxlQUFnQjdjLEVBQUtILEVBQU1pZCxHQUFJQyxPQUFtQixJQUFQL2MsRUFBZ0IsTUFBUUEsRUFBSWthLEVBQU9sZCxFQUFPNkMsRUFBTyxDQUFDLGVBQWdCLFdBQVksWUFBYSxrQkFBbUIsVUFBVyxTQUFVLFVBQVcsY0FBZSxRQUFTLGlCQUFrQixPQUM3Zm1hLEVBQVVDLEVBQ1YrQyxFQUFleEQsR0FBYSxDQUFDOWEsRUFBS3NkLElBQ2xDaUIsRUFBaUJoaEIsRUFBU0EsRUFBUyxDQUFFLEVBQUVpZSxHQUFPbUMsR0FDbEQsT0FBUTlkLEVBQU0wQixjQUFjMUIsRUFBTTJlLFNBQVUsS0FDeENULEdBQVlsZSxFQUFNMEIsY0FBYytaLEVBQVMsQ0FBRUMsUUFBU0ssR0FBV2tDLGdCQUFpQkEsRUFBaUJFLE9BQVFBLEVBQVFDLFlBQWFBLEVBQWFDLE1BQU9BLEVBQU9OLGFBQWNBLEVBQWNPLGlCQUFrQkEsRUFBZ0JNLFFBQVN6ZSxJQUNoTzZkLEVBQWdCaGUsRUFBTWtKLGFBQWFsSixFQUFNMEksU0FBU0UsS0FBS3RJLEdBQVc1QyxFQUFTQSxFQUFTLENBQUUsRUFBRWdoQixHQUFpQixDQUFFdmUsSUFBS3NlLEtBQXFCemUsRUFBTTBCLGNBQWM4YyxFQUFXOWdCLEVBQVMsQ0FBQSxFQUFJZ2hCLEVBQWdCLENBQUV2ZCxVQUFXQSxFQUFXaEIsSUFBS3NlLElBQWlCbmUsR0FDdlAsSUFDQWtkLEdBQWFxQixhQUFlLENBQ3hCWCxTQUFTLEVBQ1RELGlCQUFpQixFQUNqQkksT0FBTyxHQUVYYixHQUFhemUsV0FBYSxDQUN0QnNDLFVBQVcyWixHQUNYOEQsVUFBVy9ELElDaENmLFNBQVNnRSxLQUNMLElBQUt6WixTQUNELE9BQU8sS0FDWCxJQUFJMFosRUFBTTFaLFNBQVM1RCxjQUFjLFNBQ2pDc2QsRUFBSW5lLEtBQU8sV0FDWCxJQUFJb2UsRUNGYyxXQUlsQixHQUFpQyxvQkFBdEJDLGtCQUNQLE9BQU9BLGlCQUdmLENETmdCQyxHQUlaLE9BSElGLEdBQ0FELEVBQUluRSxhQUFhLFFBQVNvRSxHQUV2QkQsQ0FDWCxDQWVPLElBQUlJLEdBQXNCLFdBQzdCLElBQUlDLEVBQVUsRUFDVkMsRUFBYSxLQUNqQixNQUFPLENBQ0g5UCxJQUFLLFNBQVVGLEdBbEJ2QixJQUFzQjBQLEVBQUtPLEVBbUJBLEdBQVhGLElBQ0tDLEVBQWFQLFFBcEJQUSxFQXFCa0JqUSxHQXJCdkIwUCxFQXFCV00sR0FuQnJCRSxXQUVKUixFQUFJUSxXQUFXMUUsUUFBVXlFLEVBR3pCUCxFQUFJUyxZQUFZbmEsU0FBU29hLGVBQWVILElBR2hELFNBQXdCUCxJQUNUMVosU0FBU3FhLE1BQVFyYSxTQUFTc2EscUJBQXFCLFFBQVEsSUFDN0RILFlBQVlULEVBQ3JCLENBU29CYSxDQUFlUCxJQUd2QkQsR0FDSCxFQUNEdEwsT0FBUSxjQUNKc0wsR0FDZ0JDLElBQ1pBLEVBQVdRLFlBQWNSLEVBQVdRLFdBQVdDLFlBQVlULEdBQzNEQSxFQUFhLEtBRXBCLEVBRVQsRUV4Q1dVLEdBQWlCLFdBQ3hCLElDSUlDLEVESkFDLEdDSUFELEVBQVFiLEtBQ0wsU0FBVTdkLEVBQVE0ZSxHQUNyQm5nQixFQUFNb2dCLFdBQVUsV0FFWixPQURBSCxFQUFNelEsSUFBSWpPLEdBQ0gsV0FDSDBlLEVBQU1sTSxRQUN0QixDQUNBLEdBQVcsQ0FBQ3hTLEdBQVU0ZSxHQUN0QixHRE5JLE9BTFksU0FBVWpnQixHQUNsQixJQUFJcUIsRUFBU3JCLEVBQUdxQixPQUFROGUsRUFBVW5nQixFQUFHbWdCLFFBRXJDLE9BREFILEVBQVMzZSxFQUFROGUsR0FDVixJQUNmLENBRUEsRUVmV0MsR0FBVSxDQUNqQkMsS0FBTSxFQUNOQyxJQUFLLEVBQ0xDLE1BQU8sRUFDUEMsSUFBSyxHQUVMQyxHQUFRLFNBQVVuRSxHQUFLLE9BQU9vRSxTQUFTcEUsR0FBSyxHQUFJLEtBQU8sR0FRaERxRSxHQUFjLFNBQVVDLEdBRS9CLFFBRGdCLElBQVpBLElBQXNCQSxFQUFVLFVBQ2Qsb0JBQVhoaEIsT0FDUCxPQUFPd2dCLEdBRVgsSUFBSVMsRUFaUSxTQUFVRCxHQUN0QixJQUFJRSxFQUFLbGhCLE9BQU9vVyxpQkFBaUI1USxTQUFTK0osTUFDdENrUixFQUFPUyxFQUFlLFlBQVpGLEVBQXdCLGNBQWdCLGNBQ2xETixFQUFNUSxFQUFlLFlBQVpGLEVBQXdCLGFBQWUsYUFDaERMLEVBQVFPLEVBQWUsWUFBWkYsRUFBd0IsZUFBaUIsZUFDeEQsTUFBTyxDQUFDSCxHQUFNSixHQUFPSSxHQUFNSCxHQUFNRyxHQUFNRixHQUMzQyxDQU1rQlEsQ0FBVUgsR0FDcEJJLEVBQWdCNWIsU0FBUzZiLGdCQUFnQkMsWUFDekNDLEVBQWN2aEIsT0FBT3doQixXQUN6QixNQUFPLENBQ0hmLEtBQU1RLEVBQVEsR0FDZFAsSUFBS08sRUFBUSxHQUNiTixNQUFPTSxFQUFRLEdBQ2ZMLElBQUthLEtBQUtDLElBQUksRUFBR0gsRUFBY0gsRUFBZ0JILEVBQVEsR0FBS0EsRUFBUSxJQUU1RSxFQ3hCSVUsR0FBUXpCLEtBSVIwQixHQUFZLFNBQVV4aEIsRUFBSXloQixFQUFlYixFQUFTYyxHQUNsRCxJQUFJckIsRUFBT3JnQixFQUFHcWdCLEtBQU1DLEVBQU10Z0IsRUFBR3NnQixJQUFLQyxFQUFRdmdCLEVBQUd1Z0IsTUFBT0MsRUFBTXhnQixFQUFHd2dCLElBRTdELFlBRGdCLElBQVpJLElBQXNCQSxFQUFVLFVBQzdCLFFBQVFlLE9iVGdCLDBCYVNjLDRCQUE0QkEsT0FBT0QsRUFBVyx5QkFBeUJDLE9BQU9uQixFQUFLLE9BQU9tQixPQUFPRCxFQUFXLDJDQUEyQ0MsT0FBT0QsRUFBVyw4Q0FBOENDLE9BQU8sQ0FDdlFGLEdBQWlCLHNCQUFzQkUsT0FBT0QsRUFBVyxLQUM3QyxXQUFaZCxHQUNJLHVCQUF1QmUsT0FBT3RCLEVBQU0sMEJBQTBCc0IsT0FBT3JCLEVBQUssNEJBQTRCcUIsT0FBT3BCLEVBQU8sa0VBQWtFb0IsT0FBT25CLEVBQUssT0FBT21CLE9BQU9ELEVBQVcsV0FDbk4sWUFBWmQsR0FBeUIsa0JBQWtCZSxPQUFPbkIsRUFBSyxPQUFPbUIsT0FBT0QsRUFBVyxNQUUvRTlYLE9BQU8xRSxTQUNQMUYsS0FBSyxJQUFLLGtCQUFrQm1pQixPQUFPOUcsR0FBb0IsbUJBQW1COEcsT0FBT25CLEVBQUssT0FBT21CLE9BQU9ELEVBQVcsbUJBQW1CQyxPQUFPN0csR0FBb0IsMEJBQTBCNkcsT0FBT25CLEVBQUssT0FBT21CLE9BQU9ELEVBQVcsbUJBQW1CQyxPQUFPOUcsR0FBb0IsTUFBTThHLE9BQU85RyxHQUFvQixxQkFBcUI4RyxPQUFPRCxFQUFXLG1CQUFtQkMsT0FBTzdHLEdBQW9CLE1BQU02RyxPQUFPN0csR0FBb0IsNEJBQTRCNkcsT0FBT0QsRUFBVyw4QkFBOEJDLE9iWGxkLGlDYVdpZixNQUFNQSxPQUFPbkIsRUFBSyxhQUN2aUIsRUFJV29CLEdBQWtCLFNBQVV4Z0IsR0FDbkMsSUFBSXlnQixFQUFhemdCLEVBQU15Z0IsV0FBWUMsRUFBYzFnQixFQUFNMGdCLFlBQWE5aEIsRUFBS29CLEVBQU13ZixRQUFTQSxPQUFpQixJQUFQNWdCLEVBQWdCLFNBQVdBLEVBTXpId2dCLEVBQU0xZ0IsRUFBTTJELFNBQVEsV0FBYyxPQUFPa2QsR0FBWUMsRUFBUyxHQUFJLENBQUNBLElBQ3ZFLE9BQU85Z0IsRUFBTTBCLGNBQWMrZixHQUFPLENBQUVsZ0IsT0FBUW1nQixHQUFVaEIsR0FBTXFCLEVBQVlqQixFQUFVa0IsRUFBNkIsR0FBZixlQUNwRyxFQ2hDSUMsSUFBbUIsRUFDdkIsR0FBc0Isb0JBQVhuaUIsT0FDUCxJQUNJLElBQUlrYyxHQUFVcmUsT0FBT3VrQixlQUFlLENBQUEsRUFBSSxVQUFXLENBQy9DQyxJQUFLLFdBRUQsT0FEQUYsSUFBbUIsR0FDWixDQUNWLElBR0xuaUIsT0FBTytOLGlCQUFpQixPQUFRbU8sR0FBU0EsSUFFekNsYyxPQUFPOE4sb0JBQW9CLE9BQVFvTyxHQUFTQSxHQUMvQyxDQUNELE1BQU9vRyxHQUNISCxJQUFtQixDQUN0QixDQUVFLElBQUlJLEtBQWFKLElBQW1CLENBQUVLLFNBQVMsR0NkbERDLEdBQXVCLFNBQVVoZ0IsRUFBTWlnQixHQUN2QyxJQUFJamhCLEVBQVN6QixPQUFPb1csaUJBQWlCM1QsR0FDckMsTUFFcUIsV0FBckJoQixFQUFPaWhCLE1BRURqaEIsRUFBT2toQixZQUFjbGhCLEVBQU9taEIsWUFWWCxTQUFVbmdCLEdBRWpDLE1BQXdCLGFBQWpCQSxFQUFLc1IsT0FDaEIsQ0FPb0Q4TyxDQUFxQnBnQixJQUE4QixZQUFyQmhCLEVBQU9paEIsR0FDekYsRUFHV0ksR0FBMEIsU0FBVUMsRUFBTXRnQixHQUNqRCxJQUFJRyxFQUFVSCxFQUNkLEVBQUcsQ0FNQyxHQUowQixvQkFBZnVnQixZQUE4QnBnQixhQUFtQm9nQixhQUN4RHBnQixFQUFVQSxFQUFRcWdCLE1BRUhDLEdBQXVCSCxFQUFNbmdCLEdBQzlCLENBQ2QsSUFBSXhDLEVBQUsraUIsR0FBbUJKLEVBQU1uZ0IsR0FDbEMsR0FEZ0R4QyxFQUFHLEdBQVFBLEVBQUcsR0FFMUQsT0FBTyxDQUVkLENBQ0R3QyxFQUFVQSxFQUFRb2QsVUFDckIsT0FBUXBkLEdBQVdBLElBQVk0QyxTQUFTK0osTUFDekMsT0FBTyxDQUNYLEVBaUJJMlQsR0FBeUIsU0FBVUgsRUFBTXRnQixHQUN6QyxNQUFnQixNQUFUc2dCLEVBckNtQixTQUFVdGdCLEdBQVEsT0FBT2dnQixHQUFxQmhnQixFQUFNLGFBcUN4RDJnQixDQUF3QjNnQixHQXBDcEIsU0FBVUEsR0FBUSxPQUFPZ2dCLEdBQXFCaGdCLEVBQU0sYUFvQ3hCNGdCLENBQXdCNWdCLEVBQ2xGLEVBQ0kwZ0IsR0FBcUIsU0FBVUosRUFBTXRnQixHQUNyQyxNQUFnQixNQUFUc2dCLEVBbEJBLEVBRnlCM2lCLEVBb0JVcUMsR0FuQnZCNmdCLFVBQTBCbGpCLEVBQUdtakIsYUFBNkJuakIsRUFBR29qQixjQU8xRCxTQUFVcGpCLEdBRWhDLE1BQU8sQ0FEVUEsRUFBR3FqQixXQUEwQnJqQixFQUFHc2pCLFlBQTJCdGpCLEVBQUdraEIsWUFNbkYsQ0FLc0RxQyxDQUFvQmxoQixHQXBCaEQsSUFBVXJDLENBcUJwQyxFQy9DV3dqQixHQUFhLFNBQVV2aEIsR0FDOUIsTUFBTyxtQkFBb0JBLEVBQVEsQ0FBQ0EsRUFBTXdoQixlQUFlLEdBQUdDLFFBQVN6aEIsRUFBTXdoQixlQUFlLEdBQUdFLFNBQVcsQ0FBQyxFQUFHLEVBQ2hILEVBQ1dDLEdBQWEsU0FBVTNoQixHQUFTLE1BQU8sQ0FBQ0EsRUFBTTRoQixPQUFRNWhCLEVBQU02aEIsU0FDbkVDLEdBQWEsU0FBVTlqQixHQUN2QixPQUFPQSxHQUFPLFlBQWFBLEVBQU1BLEVBQUl1QyxRQUFVdkMsQ0FDbkQsRUFFSStqQixHQUFnQixTQUFVcmUsR0FBTSxNQUFPLDRCQUE0QmdjLE9BQU9oYyxFQUFJLHFEQUFxRGdjLE9BQU9oYyxFQUFJLDRCQUE2QixFQUMzS3NlLEdBQVksRUFDWkMsR0FBWSxHQ2JoQixJWldzQ0MsR1lYdEM1SSxJWldzQzRJLEdXRy9CLFNBQTZCL2lCLEdBQ2hDLElBQUlnakIsRUFBcUJ0a0IsRUFBTTBkLE9BQU8sSUFDbEM2RyxFQUFnQnZrQixFQUFNMGQsT0FBTyxDQUFDLEVBQUcsSUFDakM4RyxFQUFheGtCLEVBQU0wZCxTQUNuQjdYLEVBQUs3RixFQUFNK0YsU0FBU29lLE1BQWEsR0FDakMxQyxFQUFRemhCLEVBQU0rRixVQUFTLFdBQWMsT0FBT2lhLElBQWlCLElBQUksR0FDakV5RSxFQUFZemtCLEVBQU0wZCxPQUFPcGMsR0FDN0J0QixFQUFNb2dCLFdBQVUsV0FDWnFFLEVBQVUvaEIsUUFBVXBCLENBQzVCLEdBQU8sQ0FBQ0EsSUFDSnRCLEVBQU1vZ0IsV0FBVSxXQUNaLEdBQUk5ZSxFQUFNK2MsTUFBTyxDQUNiL1ksU0FBUytKLEtBQUtxVixVQUFVbFYsSUFBSSx1QkFBdUJxUyxPQUFPaGMsSUFDMUQsSUFBSThlLEVuQ3VMVCxTQUF1QkMsRUFBSXBZLEVBQU1xWSxHQUNwQyxHQUFJQSxHQUE2QixJQUFyQjVtQixVQUFVQyxPQUFjLElBQUssSUFBNEI0bUIsRUFBeEIvbUIsRUFBSSxFQUFHZ25CLEVBQUl2WSxFQUFLdE8sT0FBWUgsRUFBSWduQixFQUFHaG5CLEtBQ3hFK21CLEdBQVEvbUIsS0FBS3lPLElBQ1JzWSxJQUFJQSxFQUFLMWxCLE1BQU1oQixVQUFVc08sTUFBTXBPLEtBQUtrTyxFQUFNLEVBQUd6TyxJQUNsRCttQixFQUFHL21CLEdBQUt5TyxFQUFLek8sSUFHckIsT0FBTzZtQixFQUFHL0MsT0FBT2lELEdBQU0xbEIsTUFBTWhCLFVBQVVzTyxNQUFNcE8sS0FBS2tPLEdBQ3RELENtQy9MMEJ3WSxDQUFjLENBQUMxakIsRUFBTXNkLFFBQVFsYyxVQUFXcEIsRUFBTTZjLFFBQVUsSUFBSTlhLElBQUk0Z0IsS0FBYSxHQUFNbmEsT0FBTzFFLFNBRXhHLE9BREF1ZixFQUFRbmlCLFNBQVEsU0FBVXlpQixHQUFNLE9BQU9BLEVBQUdQLFVBQVVsVixJQUFJLHVCQUF1QnFTLE9BQU9oYyxHQUFPLElBQ3RGLFdBQ0hQLFNBQVMrSixLQUFLcVYsVUFBVTNRLE9BQU8sdUJBQXVCOE4sT0FBT2hjLElBQzdEOGUsRUFBUW5pQixTQUFRLFNBQVV5aUIsR0FBTSxPQUFPQSxFQUFHUCxVQUFVM1EsT0FBTyx1QkFBdUI4TixPQUFPaGMsR0FBTyxHQUNoSCxDQUNTLENBRVQsR0FBTyxDQUFDdkUsRUFBTStjLE1BQU8vYyxFQUFNc2QsUUFBUWxjLFFBQVNwQixFQUFNNmMsU0FDOUMsSUFBSStHLEVBQW9CbGxCLEVBQU04QyxhQUFZLFNBQVVYLEVBQU9nakIsR0FDdkQsR0FBSSxZQUFhaGpCLEdBQWtDLElBQXpCQSxFQUFNaWpCLFFBQVFsbkIsT0FDcEMsT0FBUXVtQixFQUFVL2hCLFFBQVE0YixlQUU5QixJQUlJK0csRUFKQUMsRUFBUTVCLEdBQVd2aEIsR0FDbkJvakIsRUFBYWhCLEVBQWM3aEIsUUFDM0JxaEIsRUFBUyxXQUFZNWhCLEVBQVFBLEVBQU00aEIsT0FBU3dCLEVBQVcsR0FBS0QsRUFBTSxHQUNsRXRCLEVBQVMsV0FBWTdoQixFQUFRQSxFQUFNNmhCLE9BQVN1QixFQUFXLEdBQUtELEVBQU0sR0FFbEV6akIsRUFBU00sRUFBTU4sT0FDZjJqQixFQUFnQmpFLEtBQUtrRSxJQUFJMUIsR0FBVXhDLEtBQUtrRSxJQUFJekIsR0FBVSxJQUFNLElBRWhFLEdBQUksWUFBYTdoQixHQUEyQixNQUFsQnFqQixHQUF5QyxVQUFoQjNqQixFQUFPaEIsS0FDdEQsT0FBTyxFQUVYLElBQUk2a0IsRUFBK0I5QyxHQUF3QjRDLEVBQWUzakIsR0FDMUUsSUFBSzZqQixFQUNELE9BQU8sRUFVWCxHQVJJQSxFQUNBTCxFQUFjRyxHQUdkSCxFQUFnQyxNQUFsQkcsRUFBd0IsSUFBTSxJQUM1Q0UsRUFBK0I5QyxHQUF3QjRDLEVBQWUzakIsS0FHckU2akIsRUFDRCxPQUFPLEVBS1gsSUFIS2xCLEVBQVc5aEIsU0FBVyxtQkFBb0JQLElBQVU0aEIsR0FBVUMsS0FDL0RRLEVBQVc5aEIsUUFBVTJpQixJQUVwQkEsRUFDRCxPQUFPLEVBRVgsSUFBSU0sRUFBZ0JuQixFQUFXOWhCLFNBQVcyaUIsRUFDMUMsT0Rka0IsU0FBVXhDLEVBQU0rQyxFQUFXempCLEVBQU8wakIsRUFBYUMsR0FDckUsSUFBSUMsRUFUaUIsU0FBVWxELEVBQU1tRCxHQU1yQyxNQUFnQixNQUFUbkQsR0FBOEIsUUFBZG1ELEdBQXVCLEVBQUksQ0FDdEQsQ0FFMEJDLENBQW1CcEQsRUFBTS9pQixPQUFPb1csaUJBQWlCMFAsR0FBV0ksV0FDOUVFLEVBQVFILEVBQWtCRixFQUUxQmhrQixFQUFTTSxFQUFNTixPQUNmc2tCLEVBQWVQLEVBQVVyWCxTQUFTMU0sR0FDbEN1a0IsR0FBcUIsRUFDckJDLEVBQWtCSCxFQUFRLEVBQzFCSSxFQUFrQixFQUNsQkMsRUFBcUIsRUFDekIsRUFBRyxDQUNDLElBQUlybUIsRUFBSytpQixHQUFtQkosRUFBTWhoQixHQUFTMmtCLEVBQVd0bUIsRUFBRyxHQUNyRHVtQixFQURvRXZtQixFQUFHLEdBQWVBLEVBQUcsR0FDbkQ2bEIsRUFBa0JTLEdBQ3hEQSxHQUFZQyxJQUNSekQsR0FBdUJILEVBQU1oaEIsS0FDN0J5a0IsR0FBbUJHLEVBQ25CRixHQUFzQkMsR0FHOUIza0IsRUFBU0EsRUFBT2llLFVBQ25CLFFBRUNxRyxHQUFnQnRrQixJQUFXeUQsU0FBUytKLE1BRWpDOFcsSUFBaUJQLEVBQVVyWCxTQUFTMU0sSUFBVytqQixJQUFjL2pCLElBUWxFLE9BUEl3a0IsSUFBcUJQLEdBQW9DLElBQXBCUSxJQUE0QlIsR0FBZ0JJLEVBQVFJLEtBR25GRCxJQUNKUCxHQUF1QyxJQUF2QlMsSUFBK0JULElBQWlCSSxFQUFRSyxNQUgxRUgsR0FBcUIsR0FNbEJBLENBQ1gsQ0NuQmVNLENBQWFmLEVBQWVSLEVBQVFoakIsRUFBeUIsTUFBbEJ3akIsRUFBd0I1QixFQUFTQyxHQUFRLEVBQzlGLEdBQUUsSUFDQzJDLEVBQWdCM21CLEVBQU04QyxhQUFZLFNBQVU4akIsR0FDNUMsSUFBSXprQixFQUFReWtCLEVBQ1osR0FBS3hDLEdBQVVsbUIsUUFBVWttQixHQUFVQSxHQUFVbG1CLE9BQVMsS0FBT3VqQixFQUE3RCxDQUlBLElBQUl5RSxFQUFRLFdBQVkvakIsRUFBUTJoQixHQUFXM2hCLEdBQVN1aEIsR0FBV3ZoQixHQUMzRDBrQixFQUFjdkMsRUFBbUI1aEIsUUFBUW9ILFFBQU8sU0FBVXBMLEdBQUssT0FBT0EsRUFBRXlSLE9BQVNoTyxFQUFNdEIsTUFBUW5DLEVBQUVtRCxTQUFXTSxFQUFNTixTQXhFakcyYSxFQXdFd0g5ZCxFQUFFd25CLE1BeEV2SFksRUF3RThIWixFQXhFbEgxSixFQUFFLEtBQU9zSyxFQUFFLElBQU10SyxFQUFFLEtBQU9zSyxFQUFFLElBQXJELElBQVV0SyxFQUFHc0ssQ0F3RXFJLElBQUksR0FFakssR0FBSUQsR0FBZUEsRUFBWUUsT0FDdkI1a0IsRUFBTW9PLFlBQ05wTyxFQUFNaU4sc0JBS2QsSUFBS3lYLEVBQWEsQ0FDZCxJQUFJRyxHQUFjdkMsRUFBVS9oQixRQUFReWIsUUFBVSxJQUN6QzlhLElBQUk0Z0IsSUFDSm5hLE9BQU8xRSxTQUNQMEUsUUFBTyxTQUFVdkgsR0FBUSxPQUFPQSxFQUFLZ00sU0FBU3BNLEVBQU1OLE9BQVEsS0FDaERtbEIsRUFBVzlvQixPQUFTLEVBQUlnbkIsRUFBa0IvaUIsRUFBTzZrQixFQUFXLEtBQU92QyxFQUFVL2hCLFFBQVEwYixjQUU5RmpjLEVBQU1vTyxZQUNOcE8sRUFBTWlOLGdCQUdqQixDQXRCQSxDQXVCSixHQUFFLElBQ0M2WCxFQUFlam5CLEVBQU04QyxhQUFZLFNBQVVxTixFQUFNK1YsRUFBT3JrQixFQUFRa2xCLEdBQ2hFLElBQUk1a0IsRUFBUSxDQUFFZ08sS0FBTUEsRUFBTStWLE1BQU9BLEVBQU9ya0IsT0FBUUEsRUFBUWtsQixPQUFRQSxHQUNoRXpDLEVBQW1CNWhCLFFBQVF2RCxLQUFLZ0QsR0FDaEM2TCxZQUFXLFdBQ1BzVyxFQUFtQjVoQixRQUFVNGhCLEVBQW1CNWhCLFFBQVFvSCxRQUFPLFNBQVVwTCxHQUFLLE9BQU9BLElBQU15RCxDQUFRLEdBQ3RHLEdBQUUsRUFDTixHQUFFLElBQ0Mra0IsRUFBbUJsbkIsRUFBTThDLGFBQVksU0FBVVgsR0FDL0NvaUIsRUFBYzdoQixRQUFVZ2hCLEdBQVd2aEIsR0FDbkNxaUIsRUFBVzloQixhQUFVNkIsQ0FDeEIsR0FBRSxJQUNDNGlCLEVBQWNubkIsRUFBTThDLGFBQVksU0FBVVgsR0FDMUM4a0IsRUFBYTlrQixFQUFNdEIsS0FBTWlqQixHQUFXM2hCLEdBQVFBLEVBQU1OLE9BQVFxakIsRUFBa0IvaUIsRUFBT2IsRUFBTXNkLFFBQVFsYyxTQUNwRyxHQUFFLElBQ0Mwa0IsRUFBa0JwbkIsRUFBTThDLGFBQVksU0FBVVgsR0FDOUM4a0IsRUFBYTlrQixFQUFNdEIsS0FBTTZpQixHQUFXdmhCLEdBQVFBLEVBQU1OLE9BQVFxakIsRUFBa0IvaUIsRUFBT2IsRUFBTXNkLFFBQVFsYyxTQUNwRyxHQUFFLElBQ0gxQyxFQUFNb2dCLFdBQVUsV0FVWixPQVRBZ0UsR0FBVWpsQixLQUFLc2lCLEdBQ2ZuZ0IsRUFBTXljLGFBQWEsQ0FDZkosZ0JBQWlCd0osRUFDakJ2SixlQUFnQnVKLEVBQ2hCdEosbUJBQW9CdUosSUFFeEI5aEIsU0FBU3VJLGlCQUFpQixRQUFTOFksRUFBZXRFLElBQ2xEL2MsU0FBU3VJLGlCQUFpQixZQUFhOFksRUFBZXRFLElBQ3REL2MsU0FBU3VJLGlCQUFpQixhQUFjcVosRUFBa0I3RSxJQUNuRCxXQUNIK0IsR0FBWUEsR0FBVXRhLFFBQU8sU0FBVXVkLEdBQVEsT0FBT0EsSUFBUzVGLENBQU0sSUFDckVuYyxTQUFTc0ksb0JBQW9CLFFBQVMrWSxFQUFldEUsSUFDckQvYyxTQUFTc0ksb0JBQW9CLFlBQWErWSxFQUFldEUsSUFDekQvYyxTQUFTc0ksb0JBQW9CLGFBQWNzWixFQUFrQjdFLEdBQ3pFLENBQ0ssR0FBRSxJQUNILElBQUlwRSxFQUFrQjNjLEVBQU0yYyxnQkFBaUJJLEVBQVEvYyxFQUFNK2MsTUFDM0QsT0FBUXJlLEVBQU0wQixjQUFjMUIsRUFBTTJlLFNBQVUsS0FDeENOLEVBQVFyZSxFQUFNMEIsY0FBYytmLEVBQU8sQ0FBRWxnQixPQUFRMmlCLEdBQWNyZSxLQUFTLEtBQ3BFb1ksRUFBa0JqZSxFQUFNMEIsY0FBY29nQixHQUFpQixDQUFFaEIsUUFBUyxXQUFjLEtBQ3hGLEVDOUk2Qi9FLEdaWWxCTyxVQUFVK0gsSUFDVjVJLElhWlA2TCxHQUFvQnRuQixFQUFNQyxZQUFXLFNBQVVxQixFQUFPbkIsR0FBTyxPQUFRSCxFQUFNMEIsY0FBYzhiLEdBQWM5ZixFQUFTLEdBQUk0RCxFQUFPLENBQUVuQixJQUFLQSxFQUFLdWIsUUFBU0QsS0FBYSxJQUNqSzZMLEdBQWtCdm9CLFdBQWF5ZSxHQUFhemUsV0FDNUMsSUFBQXdvQixHQUFlRCxHQ0NYRSxHQUFhLElBQUlDLFFBQ2pCQyxHQUFvQixJQUFJRCxRQUN4QkUsR0FBWSxDQUFBLEVBQ1pDLEdBQVksRUFDWkMsR0FBYSxTQUFVdGxCLEdBQ3ZCLE9BQU9BLElBQVNBLEVBQUt3Z0IsTUFBUThFLEdBQVd0bEIsRUFBS3VkLFlBQ2pELEVBd0JJZ0ksR0FBeUIsU0FBVUMsRUFBZ0JqSSxFQUFZa0ksRUFBWUMsR0FDM0UsSUFBSUMsRUF4QmEsU0FBVS9DLEVBQVErQyxHQUNuQyxPQUFPQSxFQUNGN2tCLEtBQUksU0FBVXhCLEdBQ2YsR0FBSXNqQixFQUFPNVcsU0FBUzFNLEdBQ2hCLE9BQU9BLEVBRVgsSUFBSXNtQixFQUFrQk4sR0FBV2htQixHQUNqQyxPQUFJc21CLEdBQW1CaEQsRUFBTzVXLFNBQVM0WixHQUM1QkEsR0FFWEMsUUFBUUMsTUFBTSxjQUFleG1CLEVBQVEsMEJBQTJCc2pCLEVBQVEsbUJBQ2pFLEtBQ2YsSUFDU3JiLFFBQU8sU0FBVTBTLEdBQUssT0FBT3BYLFFBQVFvWCxFQUFHLEdBQ2pELENBVWtCOEwsQ0FBZXhJLEVBQVkxZ0IsTUFBTUMsUUFBUTBvQixHQUFrQkEsRUFBaUIsQ0FBQ0EsSUFDdEZKLEdBQVVLLEtBQ1hMLEdBQVVLLEdBQWMsSUFBSVAsU0FFaEMsSUFBSWMsRUFBZ0JaLEdBQVVLLEdBQzFCUSxFQUFjLEdBQ2RDLEVBQWlCLElBQUl0ZCxJQUNyQnVkLEVBQWlCLElBQUl2ZCxJQUFJK2MsR0FDekJTLEVBQU8sU0FBVTFELEdBQ1pBLElBQU13RCxFQUFlRyxJQUFJM0QsS0FHOUJ3RCxFQUFlalosSUFBSXlWLEdBQ25CMEQsRUFBSzFELEVBQUduRixZQUNoQixFQUNJb0ksRUFBUTFsQixRQUFRbW1CLEdBQ2hCLElBQUlFLEVBQU8sU0FBVTFELEdBQ1pBLElBQVV1RCxFQUFlRSxJQUFJekQsSUFHbEMvbEIsTUFBTWhCLFVBQVVvRSxRQUFRbEUsS0FBSzZtQixFQUFPN2tCLFVBQVUsU0FBVWlDLEdBQ3BELEdBQUlrbUIsRUFBZUcsSUFBSXJtQixHQUNuQnNtQixFQUFLdG1CLE9BRUosQ0FDRCxJQUFJdW1CLEVBQU92bUIsRUFBS3dtQixhQUFhZCxHQUN6QmUsRUFBeUIsT0FBVEYsR0FBMEIsVUFBVEEsRUFDakNHLEdBQWdCekIsR0FBV3JGLElBQUk1ZixJQUFTLEdBQUssRUFDN0MybUIsR0FBZVgsRUFBY3BHLElBQUk1ZixJQUFTLEdBQUssRUFDbkRpbEIsR0FBVzJCLElBQUk1bUIsRUFBTTBtQixHQUNyQlYsRUFBY1ksSUFBSTVtQixFQUFNMm1CLEdBQ3hCVixFQUFZcnBCLEtBQUtvRCxHQUNJLElBQWpCMG1CLEdBQXNCRCxHQUN0QnRCLEdBQWtCeUIsSUFBSTVtQixHQUFNLEdBRVosSUFBaEIybUIsR0FDQTNtQixFQUFLc1ksYUFBYW1OLEVBQVksUUFFN0JnQixHQUNEem1CLEVBQUtzWSxhQUFhb04sRUFBa0IsT0FFM0MsQ0FDYixHQUNBLEVBSUksT0FIQVksRUFBSy9JLEdBQ0wySSxFQUFlVyxRQUNmeEIsS0FDTyxXQUNIWSxFQUFZaG1CLFNBQVEsU0FBVUQsR0FDMUIsSUFBSTBtQixFQUFlekIsR0FBV3JGLElBQUk1ZixHQUFRLEVBQ3RDMm1CLEVBQWNYLEVBQWNwRyxJQUFJNWYsR0FBUSxFQUM1Q2lsQixHQUFXMkIsSUFBSTVtQixFQUFNMG1CLEdBQ3JCVixFQUFjWSxJQUFJNW1CLEVBQU0ybUIsR0FDbkJELElBQ0l2QixHQUFrQmtCLElBQUlybUIsSUFDdkJBLEVBQUs4bUIsZ0JBQWdCcEIsR0FFekJQLEdBQWtCaFksT0FBT25OLElBRXhCMm1CLEdBQ0QzbUIsRUFBSzhtQixnQkFBZ0JyQixFQUVyQyxNQUNRSixLQUdJSixHQUFhLElBQUlDLFFBQ2pCRCxHQUFhLElBQUlDLFFBQ2pCQyxHQUFvQixJQUFJRCxRQUN4QkUsR0FBWSxDQUFBLEVBRXhCLENBQ0EsRUFRVzJCLEdBQWEsU0FBVXZCLEVBQWdCakksRUFBWWtJLFFBQ3ZDLElBQWZBLElBQXlCQSxFQUFhLG9CQUMxQyxJQUFJRSxFQUFVOW9CLE1BQU1vTixLQUFLcE4sTUFBTUMsUUFBUTBvQixHQUFrQkEsRUFBaUIsQ0FBQ0EsSUFDdkV3QixFQUFtQnpKLEdBekhKLFNBQVVpSSxHQUM3QixNQUF3QixvQkFBYnppQixTQUNBLE1BRVFsRyxNQUFNQyxRQUFRMG9CLEdBQWtCQSxFQUFlLEdBQUtBLEdBQ25EM2IsY0FBY2lELElBQ3RDLENBbUh5Q21hLENBQWlCekIsR0FDdEQsT0FBS3dCLEdBSUxyQixFQUFRL29CLEtBQUtaLE1BQU0ycEIsRUFBUzlvQixNQUFNb04sS0FBSytjLEVBQWlCN08saUJBQWlCLGlCQUNsRW9OLEdBQXVCSSxFQUFTcUIsRUFBa0J2QixFQUFZLGdCQUoxRCxXQUFjLE9BQU8sS0FLcEMsRUM3RnFHLE1BQU15QixHQUFvQyxVQUN4SUMsR0FBMkNDLElBQTZDQyxFQUEwQkgsS0FDbEhJLEdBQXNDQyxJQUEwQ0osR0FBMENELElBcUR0Qk0sR0FBb0MsZ0JBQ3hJQyxHQUFzQ0MsSUFBMENQLEdBQTBDSyxHQUFtQyxDQUNoS0csZ0JBQVkzbEIsSUFxQjJGNGxCLEdBQXFDLGdCQUMxSUMsR0FBMERDLEVBQWlCcHFCLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFNdWlCLEVBQWdCTCxHQUF1Q0UsR0FBb0M3b0IsRUFBTWlwQixnQkFDL0ZMLFdBQVlBLEVBQWFJLEVBQWNKLGNBQWdCTSxHQUFpQmxwQixFQUMxRTBDLEVBQVU4bEIsR0FBdUNLLEdBQW9DN29CLEVBQU1pcEIsZUFDakcsT0FBT3ZtQixFQUFReW1CLE1BQXNCQyxFQUFvQmhwQixjQUFDaXBCLEVBQWlCLENBQ3ZFOVMsUUFBU3FTLEdBQWNsbUIsRUFBUTRtQixNQUNsQkYsRUFBb0JocEIsY0FBQ21wQixHQUF5Q0MsRUFBcUMsQ0FBQSxFQUFJTixFQUFjLENBQ2xJcnFCLElBQUs0SCxNQUNGLElBQUksSUFLVDhpQixHQUF3RFIsRUFBaUJwcUIsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3BGLE1BQVF3aUIsY0FBZUEsS0FBbUJDLEdBQWlCbHBCLEVBQ3JEMEMsRUFBVThsQixHQUF1Q0ssR0FBb0NJLEdBQzNGLE9BRUFHLEVBQUFBLGNBQXFCSyxHQUFxQixDQUN0Q3hNLEdBQUl5TSxFQUNKMU0sZ0JBQWdCLEVBQ2hCSCxPQUFRLENBQ0puYSxFQUFRaW5CLGFBRUNQLGdCQUFxQlEsRUFBaUJwYixJQUFLZ2IsRUFBcUMsQ0FDN0YsYUFBY0ssR0FBK0JubkIsRUFBUTRtQixPQUN0REosRUFBYyxDQUNicnFCLElBQUs0SCxFQUVMdUgsTUFBTyxDQUNIQyxjQUFlLFVBQ1ppYixFQUFhbGIsVUFFbEIsSUFJaUc4YixHQUFxQyxnQkFDMUlDLEdBQTBEaEIsRUFBaUJwcUIsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQU11aUIsRUFBZ0JMLEdBQXVDbUIsR0FBb0M5cEIsRUFBTWlwQixnQkFDL0ZMLFdBQVlBLEVBQWFJLEVBQWNKLGNBQWdCb0IsR0FBaUJocUIsRUFDMUUwQyxFQUFVOGxCLEdBQXVDc0IsR0FBb0M5cEIsRUFBTWlwQixlQUNqRyxPQUFxQkcsRUFBQUEsY0FBcUJDLEVBQWlCLENBQ3ZEOVMsUUFBU3FTLEdBQWNsbUIsRUFBUTRtQixNQUNoQzVtQixFQUFReW1CLE1BQXNCQyxFQUFvQmhwQixjQUFDNnBCLEdBQTBDVCxFQUFxQyxDQUFFLEVBQUVRLEVBQWMsQ0FDbkpuckIsSUFBSzRILEtBQ1cyaUIsRUFBQUEsY0FBcUJjLEdBQTZDVixFQUFxQyxDQUFBLEVBQUlRLEVBQWMsQ0FDekluckIsSUFBSzRILEtBQ0wsSUFLbUd3akIsR0FBeURsQixFQUFBQSxZQUFrQixDQUFDL29CLEVBQU95RyxLQUMxTCxNQUFNL0QsRUFBVThsQixHQUF1Q3NCLEdBQW9DOXBCLEVBQU1pcEIsZUFDM0ZVLEVBQWFRLFNBQWMsTUFDM0JuZixFQUFlb2YsRUFBdUIzakIsRUFBYy9ELEVBQVFpbkIsV0FBWUEsR0FLOUUsT0FKQVUsRUFBQUEsV0FBaUIsS0FDYixNQUFNQyxFQUFVWCxFQUFXdm9CLFFBQzNCLEdBQUlrcEIsRUFBUyxPQUFPQyxHQUFrQkQsRUFBUSxHQUMvQyxJQUNrQmxCLEVBQW9CaHBCLGNBQUNvcUIsR0FBeUNoQixFQUFxQyxDQUFBLEVBQUl4cEIsRUFBTyxDQUMvSG5CLElBQUttTSxFQUVMeWYsVUFBVy9uQixFQUFRNG1CLEtBQ25CbmYsNkJBQTZCLEVBQzdCdWdCLGlCQUFrQkMsRUFBNEIzcUIsRUFBTTBxQixrQkFBbUI3cEIsSUFDbkUsSUFBSStwQixFQUNKL3BCLEVBQU1pTixpQkFDbUQsUUFBeEQ4YyxFQUF3QmxvQixFQUFRbW9CLFdBQVd6cEIsZUFBK0MsSUFBMUJ3cEIsR0FBb0NBLEVBQXNCNVYsT0FBTyxJQUV0STNLLHFCQUFzQnNnQixFQUE0QjNxQixFQUFNcUssc0JBQXVCeEosSUFDM0UsTUFBTW9MLEVBQWdCcEwsRUFBTWtPLE9BQU85QyxjQUM3QjZlLEVBQXlDLElBQXpCN2UsRUFBYy9MLFNBQTBDLElBQTFCK0wsRUFBYzRHLFNBQ3BCLElBQXpCNUcsRUFBYy9MLFFBQWdCNHFCLElBRWpDanFCLEVBQU1pTixnQkFBZ0IsSUFHNUN4RCxlQUFnQnFnQixFQUE0QjNxQixFQUFNc0ssZ0JBQWlCekosR0FBUUEsRUFBTWlOLHFCQUVsRixJQUVvR29jLEdBQTREbkIsRUFBQUEsWUFBa0IsQ0FBQy9vQixFQUFPeUcsS0FDN0wsTUFBTS9ELEVBQVU4bEIsR0FBdUNzQixHQUFvQzlwQixFQUFNaXBCLGVBQzNGOEIsRUFBMEJaLFVBQWMsR0FDeENhLEVBQTJCYixVQUFjLEdBQy9DLE9BQXFCZixFQUFvQmhwQixjQUFDb3FCLEdBQXlDaEIsRUFBcUMsQ0FBQSxFQUFJeHBCLEVBQU8sQ0FDL0huQixJQUFLNEgsRUFDTGdrQixXQUFXLEVBQ1h0Z0IsNkJBQTZCLEVBQzdCdWdCLGlCQUFtQjdwQixJQUNmLElBQUlvcUIsRUFHSUMsR0FGNkMsUUFBcERELEVBQXdCanJCLEVBQU0wcUIsd0JBQXdELElBQTFCTyxHQUFvQ0EsRUFBc0JqdUIsS0FBS2dELEVBQU9hLEdBQzlIQSxFQUFNQyxvQkFFRmlxQixFQUF3QjNwQixTQUFtRSxRQUF6RDhwQixFQUF5QnhvQixFQUFRbW9CLFdBQVd6cEIsZUFBZ0QsSUFBM0I4cEIsR0FBcUNBLEVBQXVCbFcsUUFDcEtuVSxFQUFNaU4sa0JBRVZpZCxFQUF3QjNwQixTQUFVLEVBQ2xDNHBCLEVBQXlCNXBCLFNBQVUsQ0FBSyxFQUU1Q21KLGtCQUFvQjFKLElBQ2hCLElBQUlzcUIsRUFBdUJDLEVBQzJCLFFBQXJERCxFQUF3Qm5yQixFQUFNdUsseUJBQXlELElBQTFCNGdCLEdBQW9DQSxFQUFzQm51QixLQUFLZ0QsRUFBT2EsR0FDL0hBLEVBQU1DLG1CQUNQaXFCLEVBQXdCM3BCLFNBQVUsRUFDTSxnQkFBcENQLEVBQU1rTyxPQUFPOUMsY0FBYzFNLE9BQXdCeXJCLEVBQXlCNXBCLFNBQVUsSUFJOUYsTUFBTWIsRUFBU00sRUFBTU4sUUFDNkQsUUFBekQ2cUIsRUFBeUIxb0IsRUFBUW1vQixXQUFXenBCLGVBQWdELElBQTNCZ3FCLE9BQW9DLEVBQVNBLEVBQXVCbmUsU0FBUzFNLEtBQ2xKTSxFQUFNaU4saUJBSWEsWUFBcENqTixFQUFNa08sT0FBTzlDLGNBQWMxTSxNQUFzQnlyQixFQUF5QjVwQixTQUFTUCxFQUFNaU4sZ0JBQWdCLElBRWxILElBRW9HMGMsR0FBd0R6QixFQUFBQSxZQUFrQixDQUFDL29CLEVBQU95RyxLQUN6TCxNQUFRd2lCLGNBQWVBLEVBQWdCd0IsVUFBV0EsRUFBWVksZ0JBQWlCQSxFQUFrQlgsaUJBQWtCQSxLQUFzQlYsR0FBaUJocUIsRUFDcEowQyxFQUFVOGxCLEdBQXVDc0IsR0FBb0NiLEdBRXJGamUsRUFBZW9mLEVBQXVCM2pCLEVBRHpCMGpCLFNBQWMsT0FJakMsT0FEQW1CLElBQ3FCbEMsRUFBb0JocEIsY0FBQ21yQixFQUFlbE8sU0FBRSxLQUFvQitMLEVBQUFBLGNBQXFCb0MsRUFBbUIsQ0FDbkgzaUIsU0FBUyxFQUNUNkcsTUFBTSxFQUNOQyxRQUFTOGEsRUFDVDdhLGlCQUFrQnliLEVBQ2xCdmIsbUJBQW9CNGEsR0FDUHRCLEVBQW9CaHBCLGNBQUNxckIsRUFBeUJqQyxFQUFxQyxDQUNoR2tDLEtBQU0sU0FDTm5uQixHQUFJN0IsRUFBUWlwQixVQUNaLG1CQUFvQmpwQixFQUFRa3BCLGNBQzVCLGtCQUFtQmxwQixFQUFRbXBCLFFBQzNCLGFBQWNoQyxHQUErQm5uQixFQUFRNG1CLE9BQ3REVSxFQUFjLENBQ2JuckIsSUFBS21NLEVBQ0xSLFVBQVcsSUFBSTlILEVBQVFvcEIsY0FBYSxRQUNsQyxFQUFNLElBSTJGQyxHQUFtQyxjQUN4SUMsR0FBMERqRCxFQUFpQnBxQixZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUXdpQixjQUFlQSxLQUFtQmdELEdBQWVqc0IsRUFDbkQwQyxFQUFVOGxCLEdBQXVDdUQsR0FBa0M5QyxHQUN6RixPQUFxQkcsZ0JBQXFCUSxFQUFpQnNDLEdBQUkxQyxFQUFxQyxDQUNoR2psQixHQUFJN0IsRUFBUW1wQixTQUNiSSxFQUFZLENBQ1hwdEIsSUFBSzRILElBQ04sSUFRRDBsQixHQUEwRHBELEVBQWlCcHFCLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFRd2lCLGNBQWVBLEtBQW1CbUQsR0FBcUJwc0IsRUFDekQwQyxFQUFVOGxCLEdBSGdJLG9CQUdqRFMsR0FDL0YsT0FBcUJHLGdCQUFxQlEsRUFBaUIvc0IsRUFBRzJzQixFQUFxQyxDQUMvRmpsQixHQUFJN0IsRUFBUWtwQixlQUNiUSxFQUFrQixDQUNqQnZ0QixJQUFLNEgsSUFDTixJQVFENGxCLEdBQTBEdEQsRUFBaUJwcUIsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVF3aUIsY0FBZUEsS0FBbUJxRCxHQUFldHNCLEVBQ25EMEMsRUFBVThsQixHQUgwSCxjQUdqRFMsR0FDekYsT0FBcUJHLGdCQUFxQlEsRUFBaUIxcEIsT0FBUXNwQixFQUFxQyxDQUNwR2pxQixLQUFNLFVBQ1Arc0IsRUFBWSxDQUNYenRCLElBQUs0SCxFQUNMeEgsUUFBUzByQixFQUE0QjNxQixFQUFNZixTQUFTLElBQUl5RCxFQUFRb3BCLGNBQWEsT0FFOUUsSUFLOEYsU0FBU2pDLEdBQStCUCxHQUN6SSxPQUFPQSxFQUFPLE9BQVMsUUFDM0IsQ0FDQSxNQUNPaUQsR0FBMkNDLElqQ25UbEQsU0FBbURscUIsRUFBbUJOLEdBQ2xFLE1BQU1XLEVBQXdCVixnQkFBcUJELEdBQ25ELFNBQVNTLEVBQVN6QyxHQUNkLE1BQVFoQixTQUFVQSxLQUFjMEQsR0FBWTFDLEVBRXRDbUIsRUFBUWlCLEVBQWNDLFNBQUMsSUFBSUssR0FDL0JyRyxPQUFPdUcsT0FBT0YsSUFDaEIsT0FBcUJHLEVBQW9CekMsY0FBQ3VDLEVBQVFGLFNBQVUsQ0FDeER0QixNQUFPQSxHQUNSbkMsRUFDTixDQVFELE9BREF5RCxFQUFTSyxZQUFjUixFQUFvQixXQUNwQyxDQUNIRyxFQVJKLFNBQW9CTSxHQUNoQixNQUFNTCxFQUFVTSxhQUFrQkwsR0FDbEMsR0FBSUQsRUFBUyxPQUFPQSxFQUNwQixRQUF1Qk8sSUFBbkJqQixFQUE4QixPQUFPQSxFQUN6QyxNQUFNLElBQUlrQixNQUFNLEtBQUtILDZCQUF3Q1QsTUFDaEUsRUFNTCxDaUM2UjZGbXFCLENBRDVDLHFCQUMyRyxDQUN4SkMsWUFBYTVDLEdBQ2I2QyxVQUFXWixHQUNYYSxTQUFVLFdBc0NSQyxHQXpUNkM3c0IsSUFDL0MsTUFBUWlwQixjQUFlQSxFQUFnQmpxQixTQUFVQSxFQUFXc3FCLEtBQU13RCxFQUFXQyxZQUFhQSxFQUFjakIsYUFBY0EsRUFBZTNDLE1BQU9BLEdBQVEsR0FBVW5wQixFQUN4SjZxQixFQUFhVixTQUFjLE1BQzNCUixFQUFhUSxTQUFjLE9BQzFCYixHQUFPLEVBQU8wRCxHQUFXQyxFQUE0QixDQUN4RDNuQixLQUFNd25CLEVBQ052bkIsWUFBYXduQixFQUNidm5CLFNBQVVzbUIsSUFFZCxPQUFxQjFDLEVBQUFBLGNBQXFCYixHQUFzQyxDQUM1RXJtQixNQUFPK21CLEVBQ1A0QixXQUFZQSxFQUNabEIsV0FBWUEsRUFDWmdDLFVBQVd1QixJQUNYckIsUUFBU3FCLElBQ1R0QixjQUFlc0IsSUFDZjVELEtBQU1BLEVBQ053QyxhQUFja0IsRUFDZEcsYUFBY0MsRUFBQUEsYUFBbUIsSUFBSUosR0FBU0ssSUFBWUEsS0FFeEQsQ0FDRUwsSUFFSjdELE1BQU9BLEdBQ1JucUIsRUFBUyxFQW1TVnN1QixHQW5RNkN0dEIsSUFDL0MsTUFBUWlwQixjQUFlQSxFQUFnQkwsV0FBWUEsRUFBYTVwQixTQUFVQSxFQUFXK1QsVUFBV0EsR0FBZS9TLEVBQ3pHMEMsRUFBVThsQixHQUF1Q0MsR0FBbUNRLEdBQzFGLE9BQXFCRyxFQUFBQSxjQUFxQlYsR0FBc0MsQ0FDNUV4bUIsTUFBTyttQixFQUNQTCxXQUFZQSxHQUNiMkUsRUFBQUEsU0FBZ0J4ckIsSUFBSS9DLEdBQVdtSSxHQUFzQmlpQixFQUFvQmhwQixjQUFDaXBCLEVBQWlCLENBQ3RGOVMsUUFBU3FTLEdBQWNsbUIsRUFBUTRtQixNQUNsQkYsRUFBQUEsY0FBcUJvRSxFQUFlLENBQ2pEM2tCLFNBQVMsRUFDVGtLLFVBQVdBLEdBQ1o1TCxNQUNMLEVBd1BBc21CLEdBQTRDM0UsR0FDNUM0RSxHQUE0QzNELEdBQzVDNEQsR0FBNEMzQixHQUM1QzRCLEdBQTRDekIsR0FDNUMwQixHQUE0Q3hCLE9DdFc5Q3lCLEdBQU90dUIsK09BQ1gsU0FBU2EsS0FBaVMsT0FBcFJBLEdBQVdoRSxPQUFPQyxPQUFTRCxPQUFPQyxPQUFPZ0UsT0FBUyxTQUFVQyxHQUFVLElBQUssSUFBSTlELEVBQUksRUFBR0EsRUFBSUUsVUFBVUMsT0FBUUgsSUFBSyxDQUFFLElBQUkrRCxFQUFTN0QsVUFBVUYsR0FBSSxJQUFLLElBQUkwQixLQUFPcUMsRUFBY25FLE9BQU9TLFVBQVVDLGVBQWVDLEtBQUt3RCxFQUFRckMsS0FBUW9DLEVBQU9wQyxHQUFPcUMsRUFBT3JDLElBQVksT0FBT29DLENBQVMsRUFBU0YsR0FBU3BELE1BQU1DLEtBQU1QLFVBQWEsQ0FFblYsSUFBSW94QixHQUFXLFNBQWtCL3RCLEdBQy9CLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQQyxNQUFPLEdBQ1BDLE9BQVEsR0FDUkMsS0FBTSxRQUNMbnVCLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksZUFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSxzQkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRywyZUFFUCxFQ2ZBLFNBQVNFLEdBQTBDM2YsR0FHa0QsTUFBTTRmLEVBQWdCNWYsRUFBTyxzQkFDdkg2ZixFQUF5QkMsR0FBeUJDLEVBQTBCSCxJQUM1RUksRUFBd0JDLEdBQXdCSixFQUF3QkQsRUFBZSxDQUMxRk0sY0FBZSxDQUNYM3RCLFFBQVMsTUFFYjR0QixRQUFTLElBQUlDLE1BaUJzRkMsRUFBdUJyZ0IsRUFBTyxpQkFjOUJzZ0IsRUFBaUJ0Z0IsRUFBTyxxQkFDekh1Z0IsRUFBaUIsNkJBd0N2QixNQUFPLENBQ0gsQ0FDSTNzQixTQXhFb0J6QyxJQUN4QixNQUFRa0MsTUFBT0EsRUFBUWxELFNBQVVBLEdBQWNnQixFQUN6Q25CLEVBQU13d0IsRUFBYWpULE9BQU8sTUFDMUI0UyxFQUFVSyxFQUFhalQsT0FBTyxJQUFJNlMsS0FBTzd0QixRQUMvQyxPQUFxQml1QixFQUFhanZCLGNBQWN5dUIsRUFBd0IsQ0FDcEUzc0IsTUFBT0EsRUFDUDhzQixRQUFTQSxFQUNURCxjQUFlbHdCLEdBQ2hCRyxFQUFTLEVBaUVSc3dCLEtBekQ2QkQsRUFBYTF3QixZQUFXLENBQUNxQixFQUFPeUcsS0FDakUsTUFBUXZFLE1BQU9BLEVBQVFsRCxTQUFVQSxHQUFjZ0IsRUFFekNnTCxFQUFldWtCLEVBQXVCOW9CLEVBRDVCcW9CLEVBQXFCSSxFQUFzQmh0QixHQUNPNnNCLGVBQ2xFLE9BQXFCTSxFQUFhanZCLGNBQWNvdkIsRUFBYSxDQUN6RDN3QixJQUFLbU0sR0FDTmhNLEVBQVMsSUFvRFJ5d0IsU0EzQ2lDSixFQUFhMXdCLFlBQVcsQ0FBQ3FCLEVBQU95RyxLQUNyRSxNQUFRdkUsTUFBT0EsRUFBUWxELFNBQVVBLEtBQWMwd0IsR0FBYTF2QixFQUN0RG5CLEVBQU13d0IsRUFBYWpULE9BQU8sTUFDMUJwUixFQUFldWtCLEVBQXVCOW9CLEVBQWM1SCxHQUNwRDZELEVBQVVvc0IsRUFBcUJLLEVBQWdCanRCLEdBU3JELE9BUkFtdEIsRUFBYXZRLFdBQVUsS0FDbkJwYyxFQUFRc3NCLFFBQVFuSCxJQUFJaHBCLEVBQUssQ0FDckJBLElBQUtBLEtBQ0Y2d0IsSUFFQSxLQUFTaHRCLEVBQVFzc0IsUUFBUTVnQixPQUFPdlAsRUFDdEMsS0FFZ0J3d0IsRUFBYWp2QixjQUFjb3ZCLEVBQWEsQ0FDekRKLENBQUNBLEdBQWlCLEdBQ2xCdndCLElBQUttTSxHQUNOaE0sRUFBUyxLQU9pRixTQUF1QmtELEdBQ3BILE1BQU1RLEVBQVVvc0IsRUFBcUJqZ0IsRUFBTyxxQkFBc0IzTSxHQWFsRSxPQVppQm10QixFQUFhN3RCLGFBQVksS0FDdEMsTUFBTW11QixFQUFpQmp0QixFQUFRcXNCLGNBQWMzdEIsUUFDN0MsSUFBS3V1QixFQUFnQixNQUFPLEdBQzVCLE1BQU1DLEVBQWU5eEIsTUFBTW9OLEtBQUt5a0IsRUFBZXZXLGlCQUFpQixJQUFJZ1csT0FJcEUsT0FIY3R4QixNQUFNb04sS0FBS3hJLEVBQVFzc0IsUUFBUXBzQixVQUNkaXRCLE1BQUssQ0FBQzNWLEVBQUc0VixJQUFJRixFQUFhdnlCLFFBQVE2YyxFQUFFcmIsSUFBSXVDLFNBQVd3dUIsRUFBYXZ5QixRQUFReXlCLEVBQUVqeEIsSUFBSXVDLFVBRXRGLEdBQ3BCLENBQ0NzQixFQUFRcXNCLGNBQ1Jyc0IsRUFBUXNzQixTQUdmLEVBUUdMLEVBRVIsQ0NwR0EsTUFBTW9CLEdBQXVEQyxFQUFBQSxtQkFBcUIvc0IsR0FTbUIsU0FBU2d0QixHQUEwQ0MsR0FDcEosTUFBTUMsRUFBWUMsYUFBa0JMLElBQ3BDLE9BQU9HLEdBQVlDLEdBQWEsS0FDcEMsQ0NRQSxNQUFNRSxHQUFvQyxnQ0FDcENDLEdBQXNDLENBQ3hDdGhCLFNBQVMsRUFDVEMsWUFBWSxHQUkyRnNoQixHQUFtQyxvQkFDdklDLEdBQWtDQyxHQUFxQ0MsSUFBK0NDLEdBQXdCSixLQUM5SUssR0FBcURDLElBQTRDQyxFQUEwQlAsR0FBa0MsQ0FDaEtHLE1BRUdLLEdBQTJDQyxJQUErQ0osR0FBb0RMLElBQy9JVSxHQUEwREMsRUFBaUJ2eUIsWUFBQyxDQUFDcUIsRUFBT3lHLElBQ2pFMHFCLEVBQW9CL3dCLGNBQUNvd0IsR0FBaUMvdEIsU0FBVSxDQUNqRlAsTUFBT2xDLEVBQU1veEIseUJBQ0FELEVBQW9CL3dCLGNBQUNvd0IsR0FBaUNsQixLQUFNLENBQ3pFcHRCLE1BQU9sQyxFQUFNb3hCLHlCQUNBRCxFQUFvQi93QixjQUFDaXhCLEdBQTRDQyxFQUFxQyxDQUFBLEVBQUl0eEIsRUFBTyxDQUM5SG5CLElBQUs0SCxTQU04RjRxQixHQUEyREgsRUFBQUEsWUFBa0IsQ0FBQ2x4QixFQUFPeUcsS0FDNUwsTUFBUTJxQix3QkFBeUJBLEVBQTBCRyxZQUFhQSxFQUFjN2hCLEtBQU1BLEdBQU8sRUFBUThoQixJQUFLQSxFQUFNQyxpQkFBa0JDLEVBQXVCQyx3QkFBeUJBLEVBQTBCQyx5QkFBMEJBLEVBQTJCQyxhQUFjQSxLQUFrQkMsR0FBZTl4QixFQUNoVG5CLEVBQU1rekIsU0FBYyxNQUNwQi9tQixFQUFlZ25CLEVBQXVCdnJCLEVBQWM1SCxHQUNwRDZsQixFQUFZdU4sR0FBb0JULElBQy9CQyxFQUFtQixLQUFNUyxHQUF1QkMsRUFBNEIsQ0FDL0U3c0IsS0FBTW9zQixFQUNObnNCLFlBQWFvc0IsRUFDYm5zQixTQUFVb3NCLEtBRVBRLEVBQWtCQyxHQUF1QkMsRUFBZTd0QixVQUFDLEdBQzFEOHRCLEVBQW1CQyxFQUFzQlgsR0FDekNZLEVBQVdoQyxHQUFvQ1csR0FDL0NzQixFQUFrQlgsVUFBYyxJQUMvQlksRUFBcUJDLEdBQTBCTixFQUFlN3RCLFNBQUMsR0FXdEUsT0FWQW91QixFQUFBQSxXQUFpQixLQUNiLE1BQU01eEIsRUFBT3BDLEVBQUl1QyxRQUNqQixHQUFJSCxFQUVBLE9BREFBLEVBQUtzTCxpQkFBaUI4akIsR0FBbUNrQyxHQUNsRCxJQUFJdHhCLEVBQUtxTCxvQkFBb0IrakIsR0FBbUNrQyxFQUUxRSxHQUNGLENBQ0NBLElBRWlCcEIsRUFBQUEsY0FBcUJKLEdBQTJDLENBQ2pGN3VCLE1BQU9rdkIsRUFDUEcsWUFBYUEsRUFDYkMsSUFBSzlNLEVBQ0xoVixLQUFNQSxFQUNOK2hCLGlCQUFrQkEsRUFDbEJxQixZQUFhQyxFQUFBQSxhQUFvQkMsR0FBWWQsRUFBb0JjLElBQy9ELENBQ0VkLElBRUplLGVBQWdCRixFQUFrQnZ4QixhQUFDLElBQUk2d0IsR0FBb0IsSUFDekQsSUFDRmEsbUJBQW9CSCxFQUFrQnZ4QixhQUFDLElBQUlveEIsR0FBd0JPLEdBQVlBLEVBQVksS0FFekYsSUFDRkMsc0JBQXVCTCxFQUFrQnZ4QixhQUFDLElBQUlveEIsR0FBd0JPLEdBQVlBLEVBQVksS0FFNUYsS0FDV2hDLGdCQUFxQmtDLEVBQWlCN2tCLElBQUs4aUIsRUFBcUMsQ0FDN0Y1ZCxTQUFVMGUsR0FBNEMsSUFBeEJPLEdBQTZCLEVBQUksRUFDL0QsbUJBQW9CcEIsR0FDckJPLEVBQVksQ0FDWGp6QixJQUFLbU0sRUFDTGdELE1BQU8sQ0FDSHNsQixRQUFTLFVBQ050ekIsRUFBTWdPLE9BRWJ1bEIsWUFBYUMsRUFBNEJ4ekIsRUFBTXV6QixhQUFhLEtBQ3hEYixFQUFnQnR4QixTQUFVLENBQUksSUFFbENxeUIsUUFBU0QsRUFBNEJ4ekIsRUFBTXl6QixTQUFVNXlCLElBS2pELE1BQU02eUIsR0FBbUJoQixFQUFnQnR4QixRQUN6QyxHQUFJUCxFQUFNTixTQUFXTSxFQUFNbVMsZUFBaUIwZ0IsSUFBb0J0QixFQUFrQixDQUM5RSxNQUFNdUIsRUFBa0IsSUFBSWhsQixZQUFZMGhCLEdBQW1DQyxJQUUzRSxHQURBenZCLEVBQU1tUyxjQUFjcEUsY0FBYytrQixJQUM3QkEsRUFBZ0I3eUIsaUJBQWtCLENBQ25DLE1BQU1zUixFQUFRcWdCLElBQVdqcUIsUUFBUThKLEdBQU9BLEVBQUtzaEIsWUFhN0NDLEdBUHVCLENBSkp6aEIsRUFBTXJMLE1BQU11TCxHQUFPQSxFQUFLd2hCLFNBRXZCMWhCLEVBQU1yTCxNQUFNdUwsR0FBT0EsRUFBSy9OLEtBQU9rdEIsT0FLNUNyZixHQUNMNUosT0FBTzFFLFNBQzZCL0IsS0FBS3VRLEdBQU9BLEVBQUt6VCxJQUFJdUMsVUFHOUQsQ0FDSixDQUNEc3hCLEVBQWdCdHhCLFNBQVUsQ0FBSyxJQUVuQzJ5QixPQUFRUCxFQUE0Qnh6QixFQUFNK3pCLFFBQVEsSUFBSTFCLEdBQW9CLFFBRTFFLElBS0YyQixHQUF5RDlDLEVBQWlCdnlCLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUNyRixNQUFRMnFCLHdCQUF5QkEsRUFBMEJ3QyxVQUFXQSxHQUFZLEVBQU9FLE9BQVFBLEdBQVMsRUFBUWQsVUFBV0EsS0FBZWlCLEdBQWNqMEIsRUFDcEprMEIsRUFBU0MsSUFDVDV2QixFQUFLeXVCLEdBQWFrQixFQUNsQnh4QixFQUFVc3VCLEdBTHlILHVCQUs1Q0ksR0FDdkZnRCxFQUFtQjF4QixFQUFRK3VCLG1CQUFxQmx0QixFQUNoRGt1QixFQUFXaEMsR0FBb0NXLElBQzdDOEIsbUJBQW9CQSxFQUFxQkUsc0JBQXVCQSxHQUEyQjF3QixFQVluRyxPQVhBbXdCLEVBQUFBLFdBQWlCLEtBQ2IsR0FBSWUsRUFFQSxPQURBVixJQUNPLElBQUlFLEdBRWQsR0FDRixDQUNDUSxFQUNBVixFQUNBRSxJQUVpQmpDLEVBQW9CL3dCLGNBQUNvd0IsR0FBaUNmLFNBQVUsQ0FDakZ2dEIsTUFBT2t2QixFQUNQN3NCLEdBQUlBLEVBQ0pxdkIsVUFBV0EsRUFDWEUsT0FBUUEsR0FDSzNDLGdCQUFxQmtDLEVBQWlCZ0IsS0FBTS9DLEVBQXFDLENBQzlGNWQsU0FBVTBnQixFQUFtQixHQUFLLEVBQ2xDLG1CQUFvQjF4QixFQUFRNnVCLGFBQzdCMEMsRUFBVyxDQUNWcDFCLElBQUs0SCxFQUNMOHNCLFlBQWFDLEVBQTRCeHpCLEVBQU11ekIsYUFBYzF5QixJQUdwRCt5QixFQUNBbHhCLEVBQVFvd0IsWUFBWXZ1QixHQURUMUQsRUFBTWlOLGdCQUNNLElBRWhDMmxCLFFBQVNELEVBQTRCeHpCLEVBQU15ekIsU0FBUyxJQUFJL3dCLEVBQVFvd0IsWUFBWXZ1QixLQUU1RW9QLFVBQVc2ZixFQUE0Qnh6QixFQUFNMlQsV0FBWTlTLElBQ3JELEdBQWtCLFFBQWRBLEVBQU0xQyxLQUFpQjBDLEVBQU15UyxTQUU3QixZQURBNVEsRUFBUXV3QixpQkFHWixHQUFJcHlCLEVBQU1OLFNBQVdNLEVBQU1tUyxjQUFlLE9BQzFDLE1BQU1zaEIsRUF3Q2xCLFNBQThDenpCLEVBQU8wd0IsRUFBYUMsR0FDOUQsTUFBTXJ6QixFQUxWLFNBQW9EQSxFQUFLcXpCLEdBQ3JELE1BQVksUUFBUkEsRUFBc0JyekIsRUFDWCxjQUFSQSxFQUFzQixhQUF1QixlQUFSQSxFQUF1QixZQUFjQSxDQUNyRixDQUVnQm8yQixDQUEyQzF6QixFQUFNMUMsSUFBS3F6QixHQUNsRSxNQUFvQixhQUFoQkQsR0FBOEIsQ0FDOUIsWUFDQSxjQUNGcnpCLFNBQVNDLElBQ1MsZUFBaEJvekIsR0FBZ0MsQ0FDaEMsVUFDQSxhQUNGcnpCLFNBQVNDLFFBSk0sRUFLVnEyQixHQUE4Q3IyQixFQUN6RCxDQW5EZ0NzMkIsQ0FBcUM1ekIsRUFBTzZCLEVBQVE2dUIsWUFBYTd1QixFQUFROHVCLEtBQzdGLFFBQW9CdnVCLElBQWhCcXhCLEVBQTJCLENBQzNCenpCLEVBQU1pTixpQkFHTixJQUFJNG1CLEVBRlVqQyxJQUFXanFCLFFBQVE4SixHQUFPQSxFQUFLc2hCLFlBRWxCN3hCLEtBQUt1USxHQUFPQSxFQUFLelQsSUFBSXVDLFVBRWhELEdBQW9CLFNBQWhCa3pCLEVBQXdCSSxFQUFldGhCLGVBQ3RDLEdBQW9CLFNBQWhCa2hCLEdBQTBDLFNBQWhCQSxFQUF3QixDQUNuQyxTQUFoQkEsR0FBd0JJLEVBQWV0aEIsVUFDM0MsTUFBTXVoQixFQUFlRCxFQUFlcjNCLFFBQVF3RCxFQUFNbVMsZUFDbEQwaEIsRUFBaUJoeUIsRUFBUWdOLE1BcURPa2xCLEVBckRnREQsRUFBZSxHQXFEdEVqZixFQXJEdUNnZixHQXNEbkUzeUIsS0FBSSxDQUFDOHlCLEVBQUdyeUIsSUFBUWtULEdBQU9rZixFQUFhcHlCLEdBQVNrVCxFQUFNOVksV0F0RG9EODNCLEVBQWV0cEIsTUFBTXVwQixFQUFlLEVBQzNJLENBSUxqb0IsWUFBVyxJQUFJbW5CLEdBQWlDYSxJQUUvQyxDQThDVCxJQUF5Q2hmLEVBQU9rZixDQTlDdkMsT0FFTCxJQU1GSixHQUFnRCxDQUNsRE0sVUFBVyxPQUNYQyxRQUFTLE9BQ1RDLFdBQVksT0FDWkMsVUFBVyxPQUNYQyxPQUFRLFFBQ1JDLEtBQU0sUUFDTkMsU0FBVSxPQUNWQyxJQUFLLFFBa0JULFNBQVN4QixHQUFpQzVoQixHQUN0QyxNQUFNcWpCLEVBQTZCdHhCLFNBQVNxTixjQUM1QyxJQUFLLE1BQU1hLEtBQWFELEVBQVcsQ0FFL0IsR0FBSUMsSUFBY29qQixFQUE0QixPQUU5QyxHQURBcGpCLEVBQVU4QyxRQUNOaFIsU0FBU3FOLGdCQUFrQmlrQixFQUE0QixNQUM5RCxDQUNMLENBUUEsTUFBTUMsR0FBNEN0RSxHQUM1Q3VFLEdBQTRDeEIsR0NsT3lEeUIsR0FBa0MsUUFDdElDLEdBQXlDQyxJQUE2Q0MsRUFBMEJILEdBQWlDLENBQ3BKSSxLQUVFQyxHQUFpREQsTUFDaERFLEdBQW9DQyxJQUF3Q04sR0FBd0NELElBMEl0QixTQUFTUSxHQUFvQ0MsRUFBUS8wQixHQUN0SixNQUFPLEdBQUcrMEIsYUFBa0IvMEIsR0FDaEMsQ0FDQSxTQUFTZzFCLEdBQW9DRCxFQUFRLzBCLEdBQ2pELE1BQU8sR0FBRyswQixhQUFrQi8wQixHQUNoQyxDQUNBLE1BQU1pMUIsR0EvSTBEQyxFQUFpQjEzQixZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUTZ2QixZQUFhQSxFQUFjbjFCLE1BQU9vMUIsRUFBWUMsY0FBZUEsRUFBZ0I1YyxhQUFjQSxFQUFlMlgsWUFBYUEsRUFBYyxhQUFlQyxJQUFLQSxFQUFNaUYsZUFBZ0JBLEVBQWlCLGVBQWlCQyxHQUFjMTJCLEVBQ2pPMGtCLEVBQVlpUyxHQUFvQm5GLElBQy9CcndCLEVBQU95MUIsR0FBWUMsRUFBNEIsQ0FDbER2eEIsS0FBTWl4QixFQUNOL3dCLFNBQVVneEIsRUFDVmp4QixZQUFhcVUsSUFFakIsT0FBcUJrZCxFQUFBQSxjQUFxQmYsR0FBb0MsQ0FDMUU3ekIsTUFBT28wQixFQUNQSixPQUFRYSxJQUNSNTFCLE1BQU9BLEVBQ1BxMUIsY0FBZUksRUFDZnJGLFlBQWFBLEVBQ2JDLElBQUs5TSxFQUNMK1IsZUFBZ0JBLEdBQ0hLLGdCQUFxQkUsRUFBaUJ4b0IsSUFBS3lvQixFQUFxQyxDQUM3RnpGLElBQUs5TSxFQUNMLG1CQUFvQjZNLEdBQ3JCbUYsRUFBVyxDQUNWNzNCLElBQUs0SCxLQUNMLElBMkhGeXdCLEdBbkgwRGIsRUFBaUIxM0IsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVE2dkIsWUFBYUEsRUFBYzVtQixLQUFNQSxHQUFPLEtBQVV5bkIsR0FBY24zQixFQUNsRTBDLEVBQVVzekIsR0FINkgsV0FHbkRNLEdBQ3BGYyxFQUF3QnRCLEdBQStDUSxHQUM3RSxPQUFxQlEsRUFBb0IxMkIsY0FBQ2kzQixHQUFhSixFQUFxQyxDQUN4RnB1QixTQUFTLEdBQ1Z1dUIsRUFBdUIsQ0FDdEI3RixZQUFhN3VCLEVBQVE2dUIsWUFDckJDLElBQUs5dUIsRUFBUTh1QixJQUNiOWhCLEtBQU1BLElBQ1FvbkIsRUFBb0IxMkIsY0FBQzQyQixFQUFpQnhvQixJQUFLeW9CLEVBQXFDLENBQzlGdkwsS0FBTSxVQUNOLG1CQUFvQmhwQixFQUFRNnVCLGFBQzdCNEYsRUFBVyxDQUNWdDRCLElBQUs0SCxLQUNMLElBcUdGNndCLEdBN0YwRGpCLEVBQWlCMTNCLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFRNnZCLFlBQWFBLEVBQWNuMUIsTUFBT0EsRUFBUXBDLFNBQVVBLEdBQVcsS0FBV3c0QixHQUFpQnYzQixFQUM3RjBDLEVBQVVzekIsR0FINEgsY0FHbkRNLEdBQ25GYyxFQUF3QnRCLEdBQStDUSxHQUN2RWtCLEVBQVl2QixHQUFvQ3Z6QixFQUFRd3pCLE9BQVEvMEIsR0FDaEV3cUIsRUFBWXdLLEdBQW9DenpCLEVBQVF3ekIsT0FBUS8wQixHQUNoRXMyQixFQUFhdDJCLElBQVV1QixFQUFRdkIsTUFDckMsT0FBcUIyMUIsRUFBb0IxMkIsY0FBQ3MzQixHQUFhVCxFQUFxQyxDQUN4RnB1QixTQUFTLEdBQ1Z1dUIsRUFBdUIsQ0FDdEJ4RCxXQUFZNzBCLEVBQ1orMEIsT0FBUTJELElBQ01YLEVBQW9CMTJCLGNBQUM0MkIsRUFBaUI5MkIsT0FBUSsyQixFQUFxQyxDQUNqRzEzQixLQUFNLFNBQ05tc0IsS0FBTSxNQUNOLGdCQUFpQitMLEVBQ2pCLGdCQUFpQjlMLEVBQ2pCLGFBQWM4TCxFQUFhLFNBQVcsV0FDdEMsZ0JBQWlCMTRCLEVBQVcsUUFBS2tFLEVBQ2pDbEUsU0FBVUEsRUFDVndGLEdBQUlpekIsR0FDTEQsRUFBYyxDQUNiMTRCLElBQUs0SCxFQUNMOHNCLFlBQWFvRSxFQUE0QjMzQixFQUFNdXpCLGFBQWMxeUIsSUFHcEQ5QixHQUE2QixJQUFqQjhCLEVBQU1YLFNBQWtDLElBQWxCVyxFQUFNZ1MsUUFFN0NoUyxFQUFNaU4saUJBRjBEcEwsRUFBUTh6QixjQUFjcjFCLEVBRWhFLElBRTFCd1MsVUFBV2drQixFQUE0QjMzQixFQUFNMlQsV0FBWTlTLElBQ2pELENBQ0EsSUFDQSxTQUNGM0MsU0FBUzJDLEVBQU0xQyxNQUFNdUUsRUFBUTh6QixjQUFjcjFCLEVBQU0sSUFFdkRzeUIsUUFBU2tFLEVBQTRCMzNCLEVBQU15ekIsU0FBUyxLQUdoRCxNQUFNbUUsRUFBbUQsV0FBM0JsMUIsRUFBUSt6QixlQUNqQ2dCLEdBQWUxNEIsSUFBWTY0QixHQUF1QmwxQixFQUFROHpCLGNBQWNyMUIsRUFBTSxPQUV2RixJQW9ERjAyQixHQTVDMER4QixFQUFpQjEzQixZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUTZ2QixZQUFhQSxFQUFjbjFCLE1BQU9BLEVBQVF5bkIsV0FBWUEsRUFBYTVwQixTQUFVQSxLQUFjZ3JCLEdBQWlCaHFCLEVBQzlHMEMsRUFBVXN6QixHQUg0SCxjQUduRE0sR0FDbkZrQixFQUFZdkIsR0FBb0N2ekIsRUFBUXd6QixPQUFRLzBCLEdBQ2hFd3FCLEVBQVl3SyxHQUFvQ3p6QixFQUFRd3pCLE9BQVEvMEIsR0FDaEVzMkIsRUFBYXQyQixJQUFVdUIsRUFBUXZCLE1BQy9CMjJCLEVBQStCQyxTQUFjTixHQU9uRCxPQU5BTyxFQUFBQSxXQUFpQixLQUNiLE1BQU1DLEVBQU1DLHVCQUFzQixJQUFJSixFQUE2QjEyQixTQUFVLElBRTdFLE1BQU8sSUFBSSsyQixxQkFBcUJGLEVBQy9CLEdBQ0YsSUFDa0JuQixFQUFBQSxjQUFxQnNCLEVBQWlCLENBQ3ZEN2hCLFFBQVNxUyxHQUFjNk8sSUFDeEIsRUFBR2xoQixRQUFTQSxLQUEyQnVnQixFQUFBQSxjQUFxQkUsRUFBaUJ4b0IsSUFBS3lvQixFQUFxQyxDQUNsSCxhQUFjUSxFQUFhLFNBQVcsV0FDdEMsbUJBQW9CLzBCLEVBQVE2dUIsWUFDNUI3RixLQUFNLFdBQ04sa0JBQW1COEwsRUFDbkJyakIsUUFBU29DLEVBQ1RoUyxHQUFJb25CLEVBQ0pqWSxTQUFVLEdBQ1hzVyxFQUFjLENBQ2JuckIsSUFBSzRILEVBQ0x1SCxNQUFPLElBQ0FoTyxFQUFNZ08sTUFDVHFxQixrQkFBbUJQLEVBQTZCMTJCLFFBQVUsVUFBTzZCLEtBRXJFc1QsR0FBV3ZYLElBQ2xCLGtJQy9KTCxTQUFTczVCLEdBQTBDbjNCLEdBQy9DLE1BQU10QyxFQUFNMDVCLEVBQUFBLE9BQWMsQ0FDdEJwM0IsTUFBT0EsRUFDUHEzQixTQUFVcjNCLElBSWQsT0FBT3MzQixFQUFjcDJCLFNBQUMsS0FDZHhELEVBQUl1QyxRQUFRRCxRQUFVQSxJQUN0QnRDLEVBQUl1QyxRQUFRbzNCLFNBQVczNUIsRUFBSXVDLFFBQVFELE1BQ25DdEMsRUFBSXVDLFFBQVFELE1BQVFBLEdBRWpCdEMsRUFBSXVDLFFBQVFvM0IsV0FDcEIsQ0FDQ3IzQixHQUVSLENDZEEsU0FBU3UzQixHQUEwQ2prQixHQUMvQyxNQUFPdFYsRUFBTXc1QixHQUFXQyxFQUFlbjBCLGNBQUN4QixHQTJDeEMsT0ExQ0E0MUIsR0FBdUIsS0FDbkIsR0FBSXBrQixFQUFTLENBRVRra0IsRUFBUSxDQUNKMUssTUFBT3haLEVBQVFxa0IsWUFDZjVLLE9BQVF6WixFQUFRc2tCLGVBRXBCLE1BQU1DLEVBQWlCLElBQUlDLGdCQUFnQkMsSUFDdkMsSUFBS3A3QixNQUFNQyxRQUFRbTdCLEdBQVUsT0FHN0IsSUFBS0EsRUFBUXQ4QixPQUFRLE9BQ3JCLE1BQU11OEIsRUFBUUQsRUFBUSxHQUN0QixJQUFJakwsRUFDQUMsRUFDSixHQUFJLGtCQUFtQmlMLEVBQU8sQ0FDMUIsTUFBTUMsRUFBa0JELEVBQXFCLGNBQ3ZDRSxFQUFhdjdCLE1BQU1DLFFBQVFxN0IsR0FBbUJBLEVBQWdCLEdBQUtBLEVBQ3pFbkwsRUFBUW9MLEVBQXVCLFdBQy9CbkwsRUFBU21MLEVBQXNCLFNBQ25ELE1BR29CcEwsRUFBUXhaLEVBQVFxa0IsWUFDaEI1SyxFQUFTelosRUFBUXNrQixhQUVyQkosRUFBUSxDQUNKMUssTUFBT0EsRUFDUEMsT0FBUUEsR0FDVixJQUtOLE9BSEE4SyxFQUFldG5CLFFBQVErQyxFQUFTLENBQzVCNmtCLElBQUssZUFFRixJQUFJTixFQUFlTyxVQUFVOWtCLEVBRXZDLENBRURra0IsT0FBUTExQixFQUFVLEdBQ25CLENBQ0N3UixJQUVHdFYsQ0FDWCxDQzdCcUcsTUFBTXE2QixHQUFvQyxVQUN4SUMsR0FBMkNDLElBQTZDQyxFQUEwQkgsS0FDbEhJLEdBQXNDQyxJQUEwQ0osR0FBMENELElBQzNITSxHQUEwREMsRUFBaUJwN0IsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVF1ekIsY0FBZUEsRUFBZ0JuckIsS0FBTUEsRUFBT29yQixRQUFTQyxFQUFjQyxlQUFnQkEsRUFBaUJDLFNBQVVBLEVBQVdyN0IsU0FBVUEsRUFBV29DLE1BQU9BLEVBQVEsS0FBT2s1QixnQkFBaUJBLEtBQXFCQyxHQUFnQnQ2QixHQUMzTkUsRUFBUXE2QixHQUFhQyxFQUFlLzFCLFNBQUMsTUFDdEN1RyxFQUFleXZCLEVBQXVCaDBCLEdBQWV4RixHQUFPczVCLEVBQVV0NUIsS0FFdEV5NUIsRUFBbUNDLFVBQWMsR0FDakRDLEdBQWdCMTZCLEdBQVM0RCxRQUFRNUQsRUFBTzI2QixRQUFRLFVBQy9DWixHQUFVLEVBQU9hLEdBQWNDLEVBQTRCLENBQzlEejFCLEtBQU00MEIsRUFDTjMwQixZQUFhNDBCLEVBQ2IzMEIsU0FBVTYwQixJQUVkLE9BQXFCVyxFQUFBQSxjQUFxQnBCLEdBQXNDLENBQzVFMTNCLE1BQU84M0IsRUFDUEMsUUFBU0EsRUFDVGw3QixTQUFVQSxHQUNHaThCLGdCQUFxQkMsRUFBaUIvNkIsT0FBUWc3QixFQUFxQyxDQUNoRzM3QixLQUFNLFNBQ05tc0IsS0FBTSxTQUNOLGVBQWdCdU8sRUFDaEIsZ0JBQWlCRyxFQUNqQixhQUFjZSxHQUErQmxCLEdBQzdDLGdCQUFpQmw3QixFQUFXLFFBQUtrRSxFQUNqQ2xFLFNBQVVBLEVBQ1ZvQyxNQUFPQSxHQUNSbTVCLEVBQWEsQ0FDWno3QixJQUFLbU0sRUFDTC9MLFFBQVNtOEIsRUFBNEJwN0IsRUFBTWYsU0FBVTRCLElBQ2pEaTZCLEdBQVlPLElBQWVBLElBRXZCVCxJQUNBRixFQUFpQ3Q1QixRQUFVUCxFQUFNeTZCLHVCQUc1Q1osRUFBaUN0NUIsU0FBU1AsRUFBTTA2QixrQkFDeEQsT0FFSlgsR0FBK0JJLEVBQW9CNTZCLGNBQUNvN0IsR0FBbUMsQ0FDeEZDLFFBQVN2N0IsRUFDVDhPLFNBQVUwckIsRUFBaUN0NUIsUUFDM0N5TixLQUFNQSxFQUNOMU4sTUFBT0EsRUFDUDg0QixRQUFTQSxFQUNURyxTQUFVQSxFQUNWcjdCLFNBQVVBLEVBRVZpUCxNQUFPLENBQ0gwdEIsVUFBVyx1QkFFaEIsSUFxQm9HRixHQUFxQ3g3QixJQUM1SSxNQUFReTdCLFFBQVNBLEVBQVV4QixRQUFTQSxFQUFVanJCLFFBQVNBLEdBQVUsS0FBVTJzQixHQUFlMzdCLEVBQ3BGbkIsRUFBTTg3QixTQUFjLE1BQ3BCVSxFQUFjTyxHQUFtQjNCLEdBQ2pDNEIsRUFBY0MsR0FBZUwsR0FrQm5DLE9BakJBTSxFQUFBQSxXQUFpQixLQUNiLE1BQU1DLEVBQVFuOUIsRUFBSXVDLFFBQ1o2NkIsRUFBYXo5QixPQUFPMFcsaUJBQWlCcFksVUFFckNnK0IsRUFEYXorQixPQUFPNi9CLHlCQUF5QkQsRUFBWSxXQUNqQ3BVLElBQzlCLEdBQUl3VCxJQUFnQnBCLEdBQVdhLEVBQVksQ0FDdkMsTUFBTWo2QixFQUFRLElBQUlzN0IsTUFBTSxRQUFTLENBQzdCbnRCLFFBQVNBLElBRWI4ckIsRUFBVzk5QixLQUFLZy9CLEVBQU8vQixHQUN2QitCLEVBQU1wdEIsY0FBYy9OLEVBQ3ZCLElBQ0YsQ0FDQ3c2QixFQUNBcEIsRUFDQWpyQixJQUVpQmdzQixFQUFvQjU2QixjQUFDLFFBQVM4NkIsRUFBcUMsQ0FDcEYzN0IsS0FBTSxXQUNOLGVBQWUsRUFDZjQ2QixlQUFnQkYsR0FDakIwQixFQUFZLENBQ1hqb0IsVUFBVyxFQUNYN1UsSUFBS0EsRUFDTG1QLE1BQU8sSUFDQWhPLEVBQU1nTyxTQUNONnRCLEVBQ0gzVyxTQUFVLFdBQ1ZqWCxjQUFlLE9BQ2ZtdUIsUUFBUyxFQUNUQyxPQUFRLEtBRWIsRUFFUCxTQUFTbEIsR0FBK0JsQixHQUNwQyxPQUFPQSxFQUFVLFVBQVksV0FDakMsQ0FDQSxNQUFNcUMsR0FBNEN4QyxHQUM1Q3lDLEdBeEQwRHhDLEVBQWlCcDdCLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFRdXpCLGNBQWVBLEtBQW1Cd0MsR0FBZXg4QixFQUNuRDBDLEVBQVVtM0IsR0FIMEgsY0FHakRHLEdBQ3pGLE9BQXFCZ0IsZ0JBQXFCQyxFQUFpQjVHLEtBQU02RyxFQUFxQyxDQUNsRyxhQUFjQyxHQUErQno0QixFQUFRdTNCLFNBQ3JELGdCQUFpQnYzQixFQUFRM0QsU0FBVyxRQUFLa0UsR0FDMUN1NUIsRUFBWSxDQUNYMzlCLElBQUs0SCxJQUNOLHlFQ3pGUCxTQUFTZzJCLEdBQWFDLEdBQ3BCLE9BQU9BLEVBQVVDLE1BQU0sS0FBSyxFQUM5QixDQUVBLFNBQVNDLEdBQWtCcmIsR0FDekIsTUFBZ0IsTUFBVEEsRUFBZSxTQUFXLE9BQ25DLENBRUEsU0FBU3NiLEdBQVFILEdBQ2YsT0FBT0EsRUFBVUMsTUFBTSxLQUFLLEVBQzlCLENBRUEsU0FBU0csR0FBeUJKLEdBQ2hDLE1BQU8sQ0FBQyxNQUFPLFVBQVV4K0IsU0FBUzIrQixHQUFRSCxJQUFjLElBQU0sR0FDaEUsQ0FFQSxTQUFTSyxHQUEyQkMsRUFBTU4sRUFBV08sR0FDbkQsSUFBSUMsVUFDRkEsRUFBU0MsU0FDVEEsR0FDRUgsRUFDSixNQUFNSSxFQUFVRixFQUFVaGlCLEVBQUlnaUIsRUFBVWpQLE1BQVEsRUFBSWtQLEVBQVNsUCxNQUFRLEVBQy9Eb1AsRUFBVUgsRUFBVTFYLEVBQUkwWCxFQUFVaFAsT0FBUyxFQUFJaVAsRUFBU2pQLE9BQVMsRUFDakVvUCxFQUFXUixHQUF5QkosR0FDcEM5L0IsRUFBU2dnQyxHQUFrQlUsR0FDM0JDLEVBQWNMLEVBQVV0Z0MsR0FBVSxFQUFJdWdDLEVBQVN2Z0MsR0FBVSxFQUV6RDRnQyxFQUEwQixNQUFiRixFQUNuQixJQUFJRyxFQUNKLE9BSGFaLEdBQVFILElBSW5CLElBQUssTUFDSGUsRUFBUyxDQUNQdmlCLEVBQUdraUIsRUFDSDVYLEVBQUcwWCxFQUFVMVgsRUFBSTJYLEVBQVNqUCxRQUU1QixNQUNGLElBQUssU0FDSHVQLEVBQVMsQ0FDUHZpQixFQUFHa2lCLEVBQ0g1WCxFQUFHMFgsRUFBVTFYLEVBQUkwWCxFQUFVaFAsUUFFN0IsTUFDRixJQUFLLFFBQ0h1UCxFQUFTLENBQ1B2aUIsRUFBR2dpQixFQUFVaGlCLEVBQUlnaUIsRUFBVWpQLE1BQzNCekksRUFBRzZYLEdBRUwsTUFDRixJQUFLLE9BQ0hJLEVBQVMsQ0FDUHZpQixFQUFHZ2lCLEVBQVVoaUIsRUFBSWlpQixFQUFTbFAsTUFDMUJ6SSxFQUFHNlgsR0FFTCxNQUNGLFFBQ0VJLEVBQVMsQ0FDUHZpQixFQUFHZ2lCLEVBQVVoaUIsRUFDYnNLLEVBQUcwWCxFQUFVMVgsR0FHbkIsT0FBUWlYLEdBQWFDLElBQ25CLElBQUssUUFDSGUsRUFBT0gsSUFBYUMsR0FBZU4sR0FBT08sR0FBYyxFQUFJLEdBQzVELE1BQ0YsSUFBSyxNQUNIQyxFQUFPSCxJQUFhQyxHQUFlTixHQUFPTyxHQUFjLEVBQUksR0FHaEUsT0FBT0MsQ0FDVCxDQThGQSxTQUFTQyxHQUFTdjhCLEVBQU93OEIsR0FDdkIsTUFBd0IsbUJBQVZ4OEIsRUFBdUJBLEVBQU13OEIsR0FBU3g4QixDQUN0RCxDQVlBLFNBQVN5OEIsR0FBeUJDLEdBQ2hDLE1BQTBCLGlCQUFaQSxFQVhoQixTQUE2QkEsR0FDM0IsTUFBTyxDQUNMM2UsSUFBSyxFQUNMQyxNQUFPLEVBQ1AyZSxPQUFRLEVBQ1I3ZSxLQUFNLEtBQ0g0ZSxFQUVQLENBR3VDRSxDQUFvQkYsR0FBVyxDQUNsRTNlLElBQUsyZSxFQUNMMWUsTUFBTzBlLEVBQ1BDLE9BQVFELEVBQ1I1ZSxLQUFNNGUsRUFFVixDQUVBLFNBQVNHLEdBQWlCQyxHQUN4QixNQUFPLElBQ0ZBLEVBQ0gvZSxJQUFLK2UsRUFBS3pZLEVBQ1Z2RyxLQUFNZ2YsRUFBSy9pQixFQUNYaUUsTUFBTzhlLEVBQUsvaUIsRUFBSStpQixFQUFLaFEsTUFDckI2UCxPQUFRRyxFQUFLelksRUFBSXlZLEVBQUsvUCxPQUUxQixDQVVBcFMsZUFBZW9pQixHQUFlbm5CLEVBQU8yRCxHQUNuQyxJQUFJeWpCLE9BQ1ksSUFBWnpqQixJQUNGQSxFQUFVLENBQUEsR0FFWixNQUFNUSxFQUNKQSxFQUFDc0ssRUFDREEsRUFBQzRZLFNBQ0RBLEVBQVFDLE1BQ1JBLEVBQUs3cEIsU0FDTEEsRUFBUThwQixTQUNSQSxHQUNFdm5CLEdBQ0V3bkIsU0FDSkEsRUFBVyxvQkFBbUJDLGFBQzlCQSxFQUFlLFdBQVVDLGVBQ3pCQSxFQUFpQixXQUFVQyxZQUMzQkEsR0FBYyxFQUFLYixRQUNuQkEsRUFBVSxHQUNSSCxHQUFTaGpCLEVBQVMzRCxHQUNoQjRuQixFQUFnQmYsR0FBeUJDLEdBRXpDcHBCLEVBQVVELEVBQVNrcUIsRUFEYSxhQUFuQkQsRUFBZ0MsWUFBYyxXQUNiQSxHQUM5Q0csRUFBcUJaLFNBQXVCSSxFQUFTUyxnQkFBZ0IsQ0FDekVwcUIsUUFBaUgsT0FBdEcwcEIsUUFBcUQsTUFBdEJDLEVBQVNVLGVBQW9CLEVBQVNWLEVBQVNVLFVBQVVycUIsTUFBcUIwcEIsRUFBZ0MxcEIsRUFBVUEsRUFBUXNxQixzQkFBeUQsTUFBL0JYLEVBQVNZLHdCQUE2QixFQUFTWixFQUFTWSxtQkFBbUJ4cUIsRUFBUzJvQixXQUN4Um9CLFdBQ0FDLGVBQ0FGLGNBRUlMLEVBQTBCLGFBQW5CUSxFQUFnQyxJQUN4Q0osRUFBTWxCLFNBQ1RqaUIsSUFDQXNLLEtBQ0U2WSxFQUFNbkIsVUFDSitCLFFBQWtELE1BQTVCYixFQUFTYyxxQkFBMEIsRUFBU2QsRUFBU2MsZ0JBQWdCMXFCLEVBQVMyb0IsV0FDcEdnQyxRQUE0QyxNQUF0QmYsRUFBU1UsZUFBb0IsRUFBU1YsRUFBU1UsVUFBVUcsV0FBK0MsTUFBckJiLEVBQVNnQixjQUFtQixFQUFTaEIsRUFBU2dCLFNBQVNILEtBR2xLLENBQ0YvakIsRUFBRyxFQUNIc0ssRUFBRyxHQUVDNlosRUFBb0JyQixHQUFpQkksRUFBU2tCLDREQUE4RGxCLEVBQVNrQixzREFBc0QsQ0FDL0tyQixPQUNBZ0IsZUFDQVgsYUFDR0wsR0FDTCxNQUFPLENBQ0wvZSxLQUFNMGYsRUFBbUIxZixJQUFNbWdCLEVBQWtCbmdCLElBQU15ZixFQUFjemYsS0FBT2lnQixFQUFZM1osRUFDeEZzWSxRQUFTdUIsRUFBa0J2QixPQUFTYyxFQUFtQmQsT0FBU2EsRUFBY2IsUUFBVXFCLEVBQVkzWixFQUNwR3ZHLE1BQU8yZixFQUFtQjNmLEtBQU9vZ0IsRUFBa0JwZ0IsS0FBTzBmLEVBQWMxZixNQUFRa2dCLEVBQVlqa0IsRUFDNUZpRSxPQUFRa2dCLEVBQWtCbGdCLE1BQVF5ZixFQUFtQnpmLE1BQVF3ZixFQUFjeGYsT0FBU2dnQixFQUFZamtCLEVBRXBHLENBRUEsTUFBTXFrQixHQUFNdGYsS0FBS3NmLElBQ1hyZixHQUFNRCxLQUFLQyxJQUVqQixTQUFTc2YsR0FBT0MsRUFBT3QrQixFQUFPdStCLEdBQzVCLE9BQU94ZixHQUFJdWYsRUFBT0YsR0FBSXArQixFQUFPdStCLEdBQy9CLENBT0EsTUFBTUMsR0FBUWpsQixJQUFZLENBQ3hCN0wsS0FBTSxRQUNONkwsVUFDQW9CLFNBQVMvRSxHQUNQLE1BQU1tRSxFQUNKQSxFQUFDc0ssRUFDREEsRUFBQ2tYLFVBQ0RBLEVBQVMyQixNQUNUQSxFQUFLRCxTQUNMQSxFQUFRNXBCLFNBQ1JBLEdBQ0V1QyxHQUVFdEMsUUFDSkEsRUFBT29wQixRQUNQQSxFQUFVLEdBQ1JILEdBQVNoakIsRUFBUzNELElBQVUsQ0FBQSxFQUNoQyxHQUFlLE1BQVh0QyxFQUNGLE1BQU8sR0FFVCxNQUFNa3FCLEVBQWdCZixHQUF5QkMsR0FDekNKLEVBQVMsQ0FDYnZpQixJQUNBc0ssS0FFSWpFLEVBQU91YixHQUF5QkosR0FDaEM5L0IsRUFBU2dnQyxHQUFrQnJiLEdBQzNCcWUsUUFBd0J4QixFQUFTeUIsY0FBY3ByQixHQUMvQ3FyQixFQUFtQixNQUFUdmUsRUFDVndlLEVBQVVELEVBQVUsTUFBUSxPQUM1QkUsRUFBVUYsRUFBVSxTQUFXLFFBQy9CRyxFQUFhSCxFQUFVLGVBQWlCLGNBQ3hDSSxFQUFVN0IsRUFBTW5CLFVBQVV0Z0MsR0FBVXloQyxFQUFNbkIsVUFBVTNiLEdBQVFrYyxFQUFPbGMsR0FBUThjLEVBQU1sQixTQUFTdmdDLEdBQzFGdWpDLEVBQVkxQyxFQUFPbGMsR0FBUThjLEVBQU1uQixVQUFVM2IsR0FDM0M2ZSxRQUF1RCxNQUE1QmhDLEVBQVNjLHFCQUEwQixFQUFTZCxFQUFTYyxnQkFBZ0J6cUIsSUFDdEcsSUFBSTRyQixFQUFhRCxFQUFvQkEsRUFBa0JILEdBQWMsRUFHaEVJLFNBQTZDLE1BQXRCakMsRUFBU1UsZUFBb0IsRUFBU1YsRUFBU1UsVUFBVXNCLE1BQ25GQyxFQUFhN3JCLEVBQVMyb0IsU0FBUzhDLElBQWU1QixFQUFNbEIsU0FBU3ZnQyxJQUUvRCxNQUFNMGpDLEVBQW9CSixFQUFVLEVBQUlDLEVBQVksRUFJOUNJLEVBQXlCRixFQUFhLEVBQUlULEVBQWdCaGpDLEdBQVUsRUFBSSxFQUN4RTRqQyxFQUFhakIsR0FBSVosRUFBY29CLEdBQVVRLEdBQ3pDRSxFQUFhbEIsR0FBSVosRUFBY3FCLEdBQVVPLEdBSXpDZCxFQUFRZSxFQUNSdGdCLEVBQU1tZ0IsRUFBYVQsRUFBZ0JoakMsR0FBVTZqQyxFQUM3Q0MsRUFBU0wsRUFBYSxFQUFJVCxFQUFnQmhqQyxHQUFVLEVBQUkwakMsRUFDeERLLEVBQVNuQixHQUFPQyxFQUFPaUIsRUFBUXhnQixHQU0vQjBnQixFQUE2QyxNQUEzQm5FLEdBQWFDLElBQXNCZ0UsR0FBVUMsR0FBVXRDLEVBQU1uQixVQUFVdGdDLEdBQVUsR0FBSzhqQyxFQUFTakIsRUFBUWUsRUFBYUMsR0FBY2IsRUFBZ0JoakMsR0FBVSxFQUFJLEVBRXhMLE1BQU8sQ0FDTDJrQixDQUFDQSxHQUFPa2MsRUFBT2xjLElBRk9xZixFQUFrQkYsRUFBU2pCLEVBQVFBLEVBQVFpQixFQUFTeGdCLEVBQU13Z0IsRUFBUyxHQUd6RnpsQixLQUFNLENBQ0pzRyxDQUFDQSxHQUFPb2YsRUFDUkUsYUFBY0gsRUFBU0MsR0FHNUIsSUFHR0csR0FBUSxDQUFDLE1BQU8sUUFBUyxTQUFVLFFBR25DQyxHQUFrQixDQUN0QjloQixLQUFNLFFBQ05FLE1BQU8sT0FDUDJlLE9BQVEsTUFDUjVlLElBQUssVUFFUCxTQUFTOGhCLEdBQXFCdEUsR0FDNUIsT0FBT0EsRUFBVXVFLFFBQVEsMEJBQTBCQyxHQUFRSCxHQUFnQkcsSUFDN0UsQ0FtQkEsTUFBTUMsR0FBdUIsQ0FDM0JDLE1BQU8sTUFDUEMsSUFBSyxTQUVQLFNBQVNDLEdBQThCNUUsR0FDckMsT0FBT0EsRUFBVXVFLFFBQVEsY0FBY00sR0FBYUosR0FBcUJJLElBQzNFLENBb0pBLE1BQU1DLEdBQU8sU0FBVTltQixHQUlyQixZQUhnQixJQUFaQSxJQUNGQSxFQUFVLENBQUEsR0FFTCxDQUNMN0wsS0FBTSxPQUNONkwsVUFDQW9CLFNBQVMvRSxHQUNQLElBQUkwcUIsRUFDSixNQUFNL0UsVUFDSkEsRUFBU2dGLGVBQ1RBLEVBQWNyRCxNQUNkQSxFQUFLc0QsaUJBQ0xBLEVBQWdCdkQsU0FDaEJBLEVBQVE1cEIsU0FDUkEsR0FDRXVDLEdBRUZ1bUIsU0FBVXNFLEdBQWdCLEVBQzFCQyxVQUFXQyxHQUFpQixFQUM1QkMsbUJBQW9CQyxFQUEyQkMsaUJBQy9DQSxFQUFtQixVQUFTQywwQkFDNUJBLEVBQTRCLE9BQU1DLGNBQ2xDQSxHQUFnQixLQUNiQyxHQUNEMUUsR0FBU2hqQixFQUFTM0QsR0FDaEJtcUIsRUFBT3JFLEdBQVFILEdBQ2YyRixFQUFrQnhGLEdBQVE4RSxLQUFzQkEsRUFDaEQxRSxRQUErQixNQUFsQm1CLEVBQVNrRSxXQUFnQixFQUFTbEUsRUFBU2tFLE1BQU05dEIsRUFBUzJvQixXQUN2RTRFLEVBQXFCQyxJQUFnQ0ssSUFBb0JGLEVBQWdCLENBQUNuQixHQUFxQlcsSUFyRTNILFNBQStCakYsR0FDN0IsTUFBTTZGLEVBQW9CdkIsR0FBcUJ0RSxHQUMvQyxNQUFPLENBQUM0RSxHQUE4QjVFLEdBQVk2RixFQUFtQmpCLEdBQThCaUIsR0FDckcsQ0FrRWdKQyxDQUFzQmIsSUFDM0pLLEdBQTZELFNBQTlCRSxHQUNsQ0gsRUFBbUJsa0MsUUFqRDNCLFNBQW1DNitCLEVBQVd5RixFQUFlemQsRUFBV3VZLEdBQ3RFLE1BQU1zRSxFQUFZOUUsR0FBYUMsR0FDL0IsSUFBSStGLEVBbkJOLFNBQXFCdkIsRUFBTXdCLEVBQVN6RixHQUNsQyxNQUFNMEYsRUFBSyxDQUFDLE9BQVEsU0FDZEMsRUFBSyxDQUFDLFFBQVMsUUFDZkMsRUFBSyxDQUFDLE1BQU8sVUFDYkMsRUFBSyxDQUFDLFNBQVUsT0FDdEIsT0FBUTVCLEdBQ04sSUFBSyxNQUNMLElBQUssU0FDSCxPQUFJakUsRUFBWXlGLEVBQVVFLEVBQUtELEVBQ3hCRCxFQUFVQyxFQUFLQyxFQUN4QixJQUFLLE9BQ0wsSUFBSyxRQUNILE9BQU9GLEVBQVVHLEVBQUtDLEVBQ3hCLFFBQ0UsTUFBTyxHQUViLENBR2FDLENBQVlsRyxHQUFRSCxHQUEwQixVQUFkaFksRUFBdUJ1WSxHQU9sRSxPQU5Jc0UsSUFDRmtCLEVBQU9BLEVBQUsxZ0MsS0FBSW0vQixHQUFRQSxFQUFPLElBQU1LLElBQ2pDWSxJQUNGTSxFQUFPQSxFQUFLbGlCLE9BQU9raUIsRUFBSzFnQyxJQUFJdS9CLE9BR3pCbUIsQ0FDVCxDQXVDbUNPLENBQTBCckIsRUFBa0JRLEVBQWVELEVBQTJCakYsSUFFbkgsTUFBTWdHLEVBQWEsQ0FBQ3RCLEtBQXFCSSxHQUNuQzdnQixRQUFpQmdkLEdBQWVubkIsRUFBT3FyQixHQUN2Q2MsRUFBWSxHQUNsQixJQUFJQyxHQUFpRSxPQUEvQzFCLEVBQXVCQyxFQUFlRixXQUFnQixFQUFTQyxFQUFxQnlCLFlBQWMsR0FJeEgsR0FISXRCLEdBQ0ZzQixFQUFVcmxDLEtBQUtxakIsRUFBU2dnQixJQUV0QlksRUFBZ0IsQ0FDbEIsTUFBTXNCLEtBQ0pBLEVBQUlDLE1BQ0pBLEdBdE5WLFNBQTJCM0csRUFBVzJCLEVBQU9wQixRQUMvQixJQUFSQSxJQUNGQSxHQUFNLEdBRVIsTUFBTXNFLEVBQVk5RSxHQUFhQyxHQUN6QlksRUFBV1IsR0FBeUJKLEdBQ3BDOS9CLEVBQVNnZ0MsR0FBa0JVLEdBQ2pDLElBQUlnRyxFQUFpQyxNQUFiaEcsRUFBbUJpRSxLQUFldEUsRUFBTSxNQUFRLFNBQVcsUUFBVSxPQUF1QixVQUFkc0UsRUFBd0IsU0FBVyxNQUl6SSxPQUhJbEQsRUFBTW5CLFVBQVV0Z0MsR0FBVXloQyxFQUFNbEIsU0FBU3ZnQyxLQUMzQzBtQyxFQUFvQnRDLEdBQXFCc0MsSUFFcEMsQ0FDTEYsS0FBTUUsRUFDTkQsTUFBT3JDLEdBQXFCc0MsR0FFaEMsQ0F3TVlDLENBQWtCN0csRUFBVzJCLEVBQU9wQixHQUN4Q2lHLEVBQVVybEMsS0FBS3FqQixFQUFTa2lCLEdBQU9saUIsRUFBU21pQixHQUN6QyxDQU9ELEdBTkFGLEVBQWdCLElBQUlBLEVBQWUsQ0FDakN6RyxZQUNBd0csZUFJR0EsRUFBVU0sT0FBTXRDLEdBQVFBLEdBQVEsSUFBSSxDQUN2QyxJQUFJdUMsRUFBdUJDLEVBQzNCLE1BQU1DLElBQStELE9BQWhERixFQUF3Qi9CLEVBQWVGLFdBQWdCLEVBQVNpQyxFQUFzQmpoQyxRQUFVLEdBQUssRUFDcEhvaEMsRUFBZ0JYLEVBQVdVLEdBQ2pDLEdBQUlDLEVBRUYsTUFBTyxDQUNMM29CLEtBQU0sQ0FDSnpZLE1BQU9taEMsRUFDUFQsVUFBV0MsR0FFYlUsTUFBTyxDQUNMbkgsVUFBV2tILElBT2pCLElBQUlFLEVBQWdKLE9BQTlISixFQUF3QlAsRUFBYzM2QixRQUFPOGxCLEdBQUtBLEVBQUU0VSxVQUFVLElBQU0sSUFBR3JULE1BQUssQ0FBQzNWLEVBQUc0VixJQUFNNVYsRUFBRWdwQixVQUFVLEdBQUtwVCxFQUFFb1QsVUFBVSxLQUFJLFNBQWMsRUFBU1EsRUFBc0JoSCxVQUcxTCxJQUFLb0gsRUFDSCxPQUFRN0IsR0FDTixJQUFLLFVBQ0gsQ0FDRSxJQUFJOEIsRUFDSixNQUFNckgsRUFBeU0sT0FBNUxxSCxFQUF3QlosRUFBY3BoQyxLQUFJdXNCLEdBQUssQ0FBQ0EsRUFBRW9PLFVBQVdwTyxFQUFFNFUsVUFBVTE2QixRQUFPMFksR0FBWUEsRUFBVyxJQUFHdmQsUUFBTyxDQUFDcWdDLEVBQUs5aUIsSUFBYThpQixFQUFNOWlCLEdBQVUsTUFBSzJPLE1BQUssQ0FBQzNWLEVBQUc0VixJQUFNNVYsRUFBRSxHQUFLNFYsRUFBRSxLQUFJLFNBQWMsRUFBU2lVLEVBQXNCLEdBQ2pQckgsSUFDRm9ILEVBQWlCcEgsR0FFbkIsS0FDRCxDQUNILElBQUssbUJBQ0hvSCxFQUFpQm5DLEVBSXZCLEdBQUlqRixJQUFjb0gsRUFDaEIsTUFBTyxDQUNMRCxNQUFPLENBQ0xuSCxVQUFXb0gsR0FJbEIsQ0FDRCxNQUFPLEVBQ1IsRUFFTCxFQUVBLFNBQVNHLEdBQWUvaUIsRUFBVStjLEdBQ2hDLE1BQU8sQ0FDTC9lLElBQUtnQyxFQUFTaEMsSUFBTStlLEVBQUsvUCxPQUN6Qi9PLE1BQU8rQixFQUFTL0IsTUFBUThlLEVBQUtoUSxNQUM3QjZQLE9BQVE1YyxFQUFTNGMsT0FBU0csRUFBSy9QLE9BQy9CalAsS0FBTWlDLEVBQVNqQyxLQUFPZ2YsRUFBS2hRLE1BRS9CLENBQ0EsU0FBU2lXLEdBQXNCaGpCLEdBQzdCLE9BQU80ZixHQUFNL3pCLE1BQUttMEIsR0FBUWhnQixFQUFTZ2dCLElBQVMsR0FDOUMsQ0FNQSxNQUFNaUQsR0FBTyxTQUFVenBCLEdBSXJCLFlBSGdCLElBQVpBLElBQ0ZBLEVBQVUsQ0FBQSxHQUVMLENBQ0w3TCxLQUFNLE9BQ042TCxVQUNBb0IsU0FBUy9FLEdBQ1AsTUFBTXNuQixNQUNKQSxHQUNFdG5CLEdBQ0V1bkIsU0FDSkEsRUFBVyxxQkFDUjhELEdBQ0QxRSxHQUFTaGpCLEVBQVMzRCxHQUN0QixPQUFRdW5CLEdBQ04sSUFBSyxrQkFDSCxDQUNFLE1BSU03ZSxFQUFVd2tCLFNBSk8vRixHQUFlbm5CLEVBQU8sSUFDeENxckIsRUFDSDNELGVBQWdCLGNBRXVCSixFQUFNbkIsV0FDL0MsTUFBTyxDQUNMamlCLEtBQU0sQ0FDSm1wQix1QkFBd0Iza0IsRUFDeEI0a0IsZ0JBQWlCSCxHQUFzQnprQixJQUc1QyxDQUNILElBQUssVUFDSCxDQUNFLE1BSU1BLEVBQVV3a0IsU0FKTy9GLEdBQWVubkIsRUFBTyxJQUN4Q3FyQixFQUNIMUQsYUFBYSxJQUUwQkwsRUFBTWxCLFVBQy9DLE1BQU8sQ0FDTGxpQixLQUFNLENBQ0pxcEIsZUFBZ0I3a0IsRUFDaEI4a0IsUUFBU0wsR0FBc0J6a0IsSUFHcEMsQ0FDSCxRQUVJLE1BQU8sR0FHZCxFQUVMLEVBcUxBLE1BQU1raEIsR0FBUyxTQUFVam1CLEdBSXZCLFlBSGdCLElBQVpBLElBQ0ZBLEVBQVUsR0FFTCxDQUNMN0wsS0FBTSxTQUNONkwsVUFDQW9CLFNBQVMvRSxHQUNQLE1BQU1tRSxFQUNKQSxFQUFDc0ssRUFDREEsR0FDRXpPLEVBQ0V5dEIsUUE1RFoxb0IsZUFBb0MvRSxFQUFPMkQsR0FDekMsTUFBTWdpQixVQUNKQSxFQUFTMEIsU0FDVEEsRUFBUTVwQixTQUNSQSxHQUNFdUMsRUFDRWttQixRQUErQixNQUFsQm1CLEVBQVNrRSxXQUFnQixFQUFTbEUsRUFBU2tFLE1BQU05dEIsRUFBUzJvQixXQUN2RStELEVBQU9yRSxHQUFRSCxHQUNmNkUsRUFBWTlFLEdBQWFDLEdBQ3pCYyxFQUFxRCxNQUF4Q1YsR0FBeUJKLEdBQ3RDK0gsRUFBZ0IsQ0FBQyxPQUFRLE9BQU92bUMsU0FBU2dqQyxJQUFTLEVBQUksRUFDdER3RCxFQUFpQnpILEdBQU9PLEdBQWMsRUFBSSxFQUMxQ21ILEVBQVdqSCxHQUFTaGpCLEVBQVMzRCxHQUduQyxJQUFJdW1CLFNBQ0ZBLEVBQVF1RSxVQUNSQSxFQUFTK0MsY0FDVEEsR0FDc0IsaUJBQWJELEVBQXdCLENBQ2pDckgsU0FBVXFILEVBQ1Y5QyxVQUFXLEVBQ1grQyxjQUFlLE1BQ2IsQ0FDRnRILFNBQVUsRUFDVnVFLFVBQVcsRUFDWCtDLGNBQWUsUUFDWkQsR0FLTCxPQUhJcEQsR0FBc0MsaUJBQWxCcUQsSUFDdEIvQyxFQUEwQixRQUFkTixHQUF1QyxFQUFqQnFELEVBQXFCQSxHQUVsRHBILEVBQWEsQ0FDbEJ0aUIsRUFBRzJtQixFQUFZNkMsRUFDZmxmLEVBQUc4WCxFQUFXbUgsR0FDWixDQUNGdnBCLEVBQUdvaUIsRUFBV21ILEVBQ2RqZixFQUFHcWMsRUFBWTZDLEVBRW5CLENBcUIrQkcsQ0FBcUI5dEIsRUFBTzJELEdBQ3JELE1BQU8sQ0FDTFEsRUFBR0EsRUFBSXNwQixFQUFXdHBCLEVBQ2xCc0ssRUFBR0EsRUFBSWdmLEVBQVdoZixFQUNsQnZLLEtBQU11cEIsRUFFVCxFQUVMLEVBRUEsU0FBU00sR0FBYXZqQixHQUNwQixNQUFnQixNQUFUQSxFQUFlLElBQU0sR0FDOUIsQ0FPQSxNQUFNd2pCLEdBQVEsU0FBVXJxQixHQUl0QixZQUhnQixJQUFaQSxJQUNGQSxFQUFVLENBQUEsR0FFTCxDQUNMN0wsS0FBTSxRQUNONkwsVUFDQW9CLFNBQVMvRSxHQUNQLE1BQU1tRSxFQUNKQSxFQUFDc0ssRUFDREEsRUFBQ2tYLFVBQ0RBLEdBQ0UzbEIsR0FFRnVtQixTQUFVc0UsR0FBZ0IsRUFDMUJDLFVBQVdDLEdBQWlCLEVBQUtrRCxRQUNqQ0EsRUFBVSxDQUNSQyxHQUFJakksSUFDRixJQUFJOWhCLEVBQ0ZBLEVBQUNzSyxFQUNEQSxHQUNFd1gsRUFDSixNQUFPLENBQ0w5aEIsSUFDQXNLLElBQ0QsTUFHRjRjLEdBQ0QxRSxHQUFTaGpCLEVBQVMzRCxHQUNoQjBtQixFQUFTLENBQ2J2aUIsSUFDQXNLLEtBRUl0RSxRQUFpQmdkLEdBQWVubkIsRUFBT3FyQixHQUN2QzlFLEVBQVdSLEdBQXlCRCxHQUFRSCxJQUM1Q21GLEVBQVlpRCxHQUFheEgsR0FDL0IsSUFBSTRILEVBQWdCekgsRUFBT0gsR0FDdkI2SCxFQUFpQjFILEVBQU9vRSxHQUM1QixHQUFJRCxFQUFlLENBQ2pCLE1BQ013RCxFQUF1QixNQUFiOUgsRUFBbUIsU0FBVyxRQUc5QzRILEVBQWdCMUYsR0FGSjBGLEVBQWdCaGtCLEVBRkMsTUFBYm9jLEVBQW1CLE1BQVEsUUFJZjRILEVBRGhCQSxFQUFnQmhrQixFQUFTa2tCLEdBRXRDLENBQ0QsR0FBSXRELEVBQWdCLENBQ2xCLE1BQ01zRCxFQUF3QixNQUFkdkQsRUFBb0IsU0FBVyxRQUcvQ3NELEVBQWlCM0YsR0FGTDJGLEVBQWlCamtCLEVBRkMsTUFBZDJnQixFQUFvQixNQUFRLFFBSWZzRCxFQURqQkEsRUFBaUJqa0IsRUFBU2trQixHQUV2QyxDQUNELE1BQU1DLEVBQWdCTCxFQUFRQyxHQUFHLElBQzVCbHVCLEVBQ0h1bUIsQ0FBQ0EsR0FBVzRILEVBQ1pyRCxDQUFDQSxHQUFZc0QsSUFFZixNQUFPLElBQ0ZFLEVBQ0hwcUIsS0FBTSxDQUNKQyxFQUFHbXFCLEVBQWNucUIsRUFBSUEsRUFDckJzSyxFQUFHNmYsRUFBYzdmLEVBQUlBLEdBRzFCLEVBRUwsRUFJTThmLEdBQWEsU0FBVTVxQixHQUkzQixZQUhnQixJQUFaQSxJQUNGQSxFQUFVLENBQUEsR0FFTCxDQUNMQSxVQUNBdXFCLEdBQUdsdUIsR0FDRCxNQUFNbUUsRUFDSkEsRUFBQ3NLLEVBQ0RBLEVBQUNrWCxVQUNEQSxFQUFTMkIsTUFDVEEsRUFBS3FELGVBQ0xBLEdBQ0UzcUIsR0FDRTRwQixPQUNKQSxFQUFTLEVBQ1RyRCxTQUFVc0UsR0FBZ0IsRUFDMUJDLFVBQVdDLEdBQWlCLEdBQzFCcEUsR0FBU2hqQixFQUFTM0QsR0FDaEIwbUIsRUFBUyxDQUNidmlCLElBQ0FzSyxLQUVJOFgsRUFBV1IsR0FBeUJKLEdBQ3BDbUYsRUFBWWlELEdBQWF4SCxHQUMvQixJQUFJNEgsRUFBZ0J6SCxFQUFPSCxHQUN2QjZILEVBQWlCMUgsRUFBT29FLEdBQzVCLE1BQU0wRCxFQUFZN0gsR0FBU2lELEVBQVE1cEIsR0FDN0J5dUIsRUFBc0MsaUJBQWRELEVBQXlCLENBQ3JEakksU0FBVWlJLEVBQ1YxRCxVQUFXLEdBQ1QsQ0FDRnZFLFNBQVUsRUFDVnVFLFVBQVcsS0FDUjBELEdBRUwsR0FBSTNELEVBQWUsQ0FDakIsTUFBTTZELEVBQW1CLE1BQWJuSSxFQUFtQixTQUFXLFFBQ3BDb0ksRUFBV3JILEVBQU1uQixVQUFVSSxHQUFZZSxFQUFNbEIsU0FBU3NJLEdBQU9ELEVBQWVsSSxTQUM1RXFJLEVBQVd0SCxFQUFNbkIsVUFBVUksR0FBWWUsRUFBTW5CLFVBQVV1SSxHQUFPRCxFQUFlbEksU0FDL0U0SCxFQUFnQlEsRUFDbEJSLEVBQWdCUSxFQUNQUixFQUFnQlMsSUFDekJULEVBQWdCUyxFQUVuQixDQUNELEdBQUk3RCxFQUFnQixDQUNsQixJQUFJOEQsRUFBdUJDLEVBQzNCLE1BQU1KLEVBQW1CLE1BQWJuSSxFQUFtQixRQUFVLFNBQ25Dd0ksRUFBZSxDQUFDLE1BQU8sUUFBUTVuQyxTQUFTMitCLEdBQVFILElBQ2hEZ0osRUFBV3JILEVBQU1uQixVQUFVMkUsR0FBYXhELEVBQU1sQixTQUFTc0ksSUFBUUssSUFBbUUsT0FBbERGLEVBQXdCbEUsRUFBZWYsYUFBa0IsRUFBU2lGLEVBQXNCL0QsS0FBbUIsSUFBTWlFLEVBQWUsRUFBSU4sRUFBZTNELFdBQ25POEQsRUFBV3RILEVBQU1uQixVQUFVMkUsR0FBYXhELEVBQU1uQixVQUFVdUksSUFBUUssRUFBZSxHQUF5RCxPQUFuREQsRUFBeUJuRSxFQUFlZixhQUFrQixFQUFTa0YsRUFBdUJoRSxLQUFlLElBQU1pRSxFQUFlTixFQUFlM0QsVUFBWSxHQUNoUHNELEVBQWlCTyxFQUNuQlAsRUFBaUJPLEVBQ1JQLEVBQWlCUSxJQUMxQlIsRUFBaUJRLEVBRXBCLENBQ0QsTUFBTyxDQUNMckksQ0FBQ0EsR0FBVzRILEVBQ1pyRCxDQUFDQSxHQUFZc0QsRUFFaEIsRUFFTCxFQVFNaG1DLEdBQU8sU0FBVXViLEdBSXJCLFlBSGdCLElBQVpBLElBQ0ZBLEVBQVUsQ0FBQSxHQUVMLENBQ0w3TCxLQUFNLE9BQ042TCxVQUNBb0IsU0FBUy9FLEdBQ1AsTUFBTTJsQixVQUNKQSxFQUFTMkIsTUFDVEEsRUFBS0QsU0FDTEEsRUFBUTVwQixTQUNSQSxHQUNFdUMsR0FDRTlaLE1BQ0pBLEVBQVEsWUFDTG1sQyxHQUNEMUUsR0FBU2hqQixFQUFTM0QsR0FDaEJtSyxRQUFpQmdkLEdBQWVubkIsRUFBT3FyQixHQUN2Q2xCLEVBQU9yRSxHQUFRSCxHQUNmNkUsRUFBWTlFLEdBQWFDLEdBRXpCcUosRUFBbUIsTUFEWmpKLEdBQXlCSixJQUVoQ3pPLE1BQ0pBLEVBQUtDLE9BQ0xBLEdBQ0VtUSxFQUFNbEIsU0FDVixJQUFJNkksRUFDQUMsRUFDUyxRQUFUL0UsR0FBMkIsV0FBVEEsR0FDcEI4RSxFQUFhOUUsRUFDYitFLEVBQVkxRSxXQUF5QyxNQUFsQm5ELEVBQVNrRSxXQUFnQixFQUFTbEUsRUFBU2tFLE1BQU05dEIsRUFBUzJvQixXQUFjLFFBQVUsT0FBUyxPQUFTLFVBRXZJOEksRUFBWS9FLEVBQ1o4RSxFQUEyQixRQUFkekUsRUFBc0IsTUFBUSxVQUU3QyxNQUFNMkUsRUFBMEJoWSxFQUFTaE4sRUFBUzhrQixHQUM1Q0csRUFBeUJsWSxFQUFRL00sRUFBUytrQixHQUMxQ0csR0FBV3J2QixFQUFNMnFCLGVBQWVxRCxNQUN0QyxJQUFJc0IsRUFBa0JILEVBQ2xCSSxFQUFpQkgsRUFDckIsR0FBSUosRUFBUyxDQUNYLE1BQU1RLEVBQXVCdFksRUFBUS9NLEVBQVNqQyxLQUFPaUMsRUFBUy9CLE1BQzlEbW5CLEVBQWlCL0UsR0FBYTZFLEVBQVU3RyxHQUFJNEcsRUFBd0JJLEdBQXdCQSxDQUNwRyxLQUFhLENBQ0wsTUFBTUMsRUFBd0J0WSxFQUFTaE4sRUFBU2hDLElBQU1nQyxFQUFTNGMsT0FDL0R1SSxFQUFrQjlFLEdBQWE2RSxFQUFVN0csR0FBSTJHLEVBQXlCTSxHQUF5QkEsQ0FDaEcsQ0FDRCxHQUFJSixJQUFZN0UsRUFBVyxDQUN6QixNQUFNa0YsRUFBT3ZtQixHQUFJZ0IsRUFBU2pDLEtBQU0sR0FDMUJ5bkIsRUFBT3htQixHQUFJZ0IsRUFBUy9CLE1BQU8sR0FDM0J3bkIsRUFBT3ptQixHQUFJZ0IsRUFBU2hDLElBQUssR0FDekIwbkIsRUFBTzFtQixHQUFJZ0IsRUFBUzRjLE9BQVEsR0FDOUJpSSxFQUNGTyxFQUFpQnJZLEVBQVEsR0FBYyxJQUFUd1ksR0FBdUIsSUFBVEMsRUFBYUQsRUFBT0MsRUFBT3htQixHQUFJZ0IsRUFBU2pDLEtBQU1pQyxFQUFTL0IsUUFFbkdrbkIsRUFBa0JuWSxFQUFTLEdBQWMsSUFBVHlZLEdBQXVCLElBQVRDLEVBQWFELEVBQU9DLEVBQU8xbUIsR0FBSWdCLEVBQVNoQyxJQUFLZ0MsRUFBUzRjLFFBRXZHLE9BQ0s3Z0MsRUFBTSxJQUNQOFosRUFDSHV2QixpQkFDQUQsb0JBRUYsTUFBTVEsUUFBdUJ6SSxFQUFTeUIsY0FBY3JyQixFQUFTMm9CLFVBQzdELE9BQUlsUCxJQUFVNFksRUFBZTVZLE9BQVNDLElBQVcyWSxFQUFlM1ksT0FDdkQsQ0FDTDJWLE1BQU8sQ0FDTHhGLE9BQU8sSUFJTixFQUNSLEVBRUwsRUNybUNBLFNBQVN5SSxHQUFVN2xDLEdBQ2pCLElBQUlpSixFQUNKLE9BQXNELE9BQTdDQSxFQUFzQmpKLEVBQUs2SixvQkFBeUIsRUFBU1osRUFBb0I2OEIsY0FBZ0J2b0MsTUFDNUcsQ0FFQSxTQUFTd29DLEdBQW1CdnlCLEdBQzFCLE9BQU9xeUIsR0FBVXJ5QixHQUFTRyxpQkFBaUJILEVBQzdDLENBRUEsU0FBU3d5QixHQUFPOWxDLEdBQ2QsT0FBT0EsYUFBaUIybEMsR0FBVTNsQyxHQUFPd0gsSUFDM0MsQ0FDQSxTQUFTdStCLEdBQVlqbUMsR0FDbkIsT0FBT2dtQyxHQUFPaG1DLElBQVNBLEVBQUtrbUMsVUFBWSxJQUFJQyxjQUFnQixFQUM5RCxDQUVBLFNBQVNDLEdBQWNsbUMsR0FDckIsT0FBT0EsYUFBaUIybEMsR0FBVTNsQyxHQUFPbW1DLFdBQzNDLENBQ0EsU0FBU3hJLEdBQVUzOUIsR0FDakIsT0FBT0EsYUFBaUIybEMsR0FBVTNsQyxHQUFPb21DLE9BQzNDLENBQ0EsU0FBU0MsR0FBYXZtQyxHQUVwQixHQUEwQixvQkFBZnVnQixXQUNULE9BQU8sRUFHVCxPQUFPdmdCLGFBRFk2bEMsR0FBVTdsQyxHQUFNdWdCLFlBQ0V2Z0IsYUFBZ0J1Z0IsVUFDdkQsQ0FDQSxTQUFTaW1CLEdBQWtCaHpCLEdBQ3pCLE1BQU15TSxTQUNKQSxFQUFRRSxVQUNSQSxFQUFTRCxVQUNUQSxFQUFTck0sUUFDVEEsR0FDRWt5QixHQUFtQnZ5QixHQUN2QixNQUFPLGtDQUFrQ2xNLEtBQUsyWSxFQUFXQyxFQUFZQyxLQUFlLENBQUMsU0FBVSxZQUFZbGpCLFNBQVM0VyxFQUN0SCxDQUNBLFNBQVM0eUIsR0FBZWp6QixHQUN0QixNQUFPLENBQUMsUUFBUyxLQUFNLE1BQU12VyxTQUFTZ3BDLEdBQVl6eUIsR0FDcEQsQ0FDQSxTQUFTa3pCLEdBQWtCbHpCLEdBQ3pCLE1BQU1tekIsRUFBU0MsS0FDVDVwQixFQUFNK29CLEdBQW1CdnlCLEdBRy9CLE1BQXlCLFNBQWxCd0osRUFBSXlkLFdBQTRDLFNBQXBCemQsRUFBSTZwQixjQUEyQkYsS0FBVzNwQixFQUFJOHBCLGdCQUF3QyxTQUF2QjlwQixFQUFJOHBCLGlCQUF1Q0gsS0FBVzNwQixFQUFJelYsUUFBd0IsU0FBZnlWLEVBQUl6VixRQUE4QixDQUFDLFlBQWEsY0FBZSxVQUFVdUUsTUFBSzVMLElBQVU4YyxFQUFJK3BCLFlBQWMsSUFBSTlwQyxTQUFTaUQsTUFBVyxDQUFDLFFBQVMsU0FBVSxTQUFVLFdBQVc0TCxNQUFLNUwsSUFBVThjLEVBQUlncUIsU0FBVyxJQUFJL3BDLFNBQVNpRCxJQUM3WCxDQUNBLFNBQVMwbUMsS0FDUCxRQUFtQixvQkFBUkssTUFBd0JBLElBQUlDLFdBQ2hDRCxJQUFJQyxTQUFTLDBCQUEyQixPQUNqRCxDQUNBLFNBQVNDLEdBQXNCbm5DLEdBQzdCLE1BQU8sQ0FBQyxPQUFRLE9BQVEsYUFBYS9DLFNBQVNncEMsR0FBWWptQyxHQUM1RCxDQUVBLE1BQU1zK0IsR0FBTXRmLEtBQUtzZixJQUNYcmYsR0FBTUQsS0FBS0MsSUFDWG1vQixHQUFRcG9CLEtBQUtvb0IsTUFFbkIsU0FBU0MsR0FBaUI3ekIsR0FDeEIsTUFBTXdKLEVBQU0rb0IsR0FBbUJ2eUIsR0FHL0IsSUFBSXdaLEVBQVFzYSxXQUFXdHFCLEVBQUlnUSxRQUFVLEVBQ2pDQyxFQUFTcWEsV0FBV3RxQixFQUFJaVEsU0FBVyxFQUN2QyxNQUFNc2EsRUFBWW5CLEdBQWM1eUIsR0FDMUJxa0IsRUFBYzBQLEVBQVkvekIsRUFBUXFrQixZQUFjN0ssRUFDaEQ4SyxFQUFleVAsRUFBWS96QixFQUFRc2tCLGFBQWU3SyxFQUNsRHVhLEVBQWlCSixHQUFNcGEsS0FBVzZLLEdBQWV1UCxHQUFNbmEsS0FBWTZLLEVBS3pFLE9BSkkwUCxJQUNGeGEsRUFBUTZLLEVBQ1I1SyxFQUFTNkssR0FFSixDQUNMOUssUUFDQUMsU0FDQXdhLFNBQVVELEVBRWQsQ0FFQSxTQUFTRSxHQUFjbDBCLEdBQ3JCLE9BQVFxcUIsR0FBVXJxQixHQUFvQ0EsRUFBekJBLEVBQVFzcUIsY0FDdkMsQ0FFQSxNQUFNNkosR0FBaUIsQ0FDckIxdEIsRUFBRyxFQUNIc0ssRUFBRyxHQUVMLFNBQVM0WixHQUFTM3FCLEdBQ2hCLE1BQU1vMEIsRUFBYUYsR0FBY2wwQixHQUNqQyxJQUFLNHlCLEdBQWN3QixHQUNqQixPQUFPRCxHQUVULE1BQU0zSyxFQUFPNEssRUFBV0MseUJBQ2xCN2EsTUFDSkEsRUFBS0MsT0FDTEEsRUFBTXdhLFNBQ05BLEdBQ0VKLEdBQWlCTyxHQUNyQixJQUFJM3RCLEdBQUt3dEIsRUFBV0wsR0FBTXBLLEVBQUtoUSxPQUFTZ1EsRUFBS2hRLE9BQVNBLEVBQ2xEekksR0FBS2tqQixFQUFXTCxHQUFNcEssRUFBSy9QLFFBQVUrUCxFQUFLL1AsUUFBVUEsRUFVeEQsT0FOS2hULEdBQU02dEIsT0FBT0MsU0FBUzl0QixLQUN6QkEsRUFBSSxHQUVEc0ssR0FBTXVqQixPQUFPQyxTQUFTeGpCLEtBQ3pCQSxFQUFJLEdBRUMsQ0FDTHRLLElBQ0FzSyxJQUVKLENBRUEsTUFBTXlqQixHQUFZLENBQ2hCL3RCLEVBQUcsRUFDSHNLLEVBQUcsR0FFTCxTQUFTMGpCLEdBQWlCejBCLEVBQVMwMEIsRUFBU0MsR0FDMUMsSUFBSUMsRUFBcUJDLEVBSXpCLFFBSGdCLElBQVpILElBQ0ZBLEdBQVUsSUFFUHRCLEtBQ0gsT0FBT29CLEdBRVQsTUFBTU0sRUFBTTkwQixFQUFVcXlCLEdBQVVyeUIsR0FBV2pXLE9BQzNDLE9BQUs0cUMsR0FBd0JELEdBQVdDLElBQXlCRyxFQUN4RE4sR0FFRixDQUNML3RCLEdBQWtELE9BQTdDbXVCLEVBQXNCRSxFQUFJQyxxQkFBMEIsRUFBU0gsRUFBb0JJLGFBQWUsRUFDckdqa0IsR0FBbUQsT0FBOUM4akIsRUFBdUJDLEVBQUlDLHFCQUEwQixFQUFTRixFQUFxQkksWUFBYyxFQUUxRyxDQUVBLFNBQVNaLEdBQXNCcjBCLEVBQVNrMUIsRUFBY0MsRUFBaUIzSyxRQUNoRCxJQUFqQjBLLElBQ0ZBLEdBQWUsUUFFTyxJQUFwQkMsSUFDRkEsR0FBa0IsR0FFcEIsTUFBTUMsRUFBYXAxQixFQUFRcTBCLHdCQUNyQkQsRUFBYUYsR0FBY2wwQixHQUNqQyxJQUFJcTFCLEVBQVFsQixHQUNSZSxJQUNFMUssRUFDRUgsR0FBVUcsS0FDWjZLLEVBQVExSyxHQUFTSCxJQUduQjZLLEVBQVExSyxHQUFTM3FCLElBR3JCLE1BQU1zMUIsRUFBZ0JiLEdBQWlCTCxFQUFZZSxFQUFpQjNLLEdBQ3BFLElBQUkvakIsR0FBSzJ1QixFQUFXNXFCLEtBQU84cUIsRUFBYzd1QixHQUFLNHVCLEVBQU01dUIsRUFDaERzSyxHQUFLcWtCLEVBQVczcUIsSUFBTTZxQixFQUFjdmtCLEdBQUtza0IsRUFBTXRrQixFQUMvQ3lJLEVBQVE0YixFQUFXNWIsTUFBUTZiLEVBQU01dUIsRUFDakNnVCxFQUFTMmIsRUFBVzNiLE9BQVM0YixFQUFNdGtCLEVBQ3ZDLEdBQUlxakIsRUFBWSxDQUNkLE1BQU1VLEVBQU16QyxHQUFVK0IsR0FDaEJtQixFQUFZL0ssR0FBZ0JILEdBQVVHLEdBQWdCNkgsR0FBVTdILEdBQWdCQSxFQUN0RixJQUFJZ0wsRUFBZ0JWLEVBQUlXLGFBQ3hCLEtBQU9ELEdBQWlCaEwsR0FBZ0IrSyxJQUFjVCxHQUFLLENBQ3pELE1BQU1ZLEVBQWMvSyxHQUFTNkssR0FDdkJHLEVBQWFILEVBQWNuQix3QkFDM0I3cUIsRUFBTXJKLGlCQUFpQnExQixHQUM3QkcsRUFBV2x2QixJQUFNK3VCLEVBQWNJLFdBQWE5QixXQUFXdHFCLEVBQUlxc0IsY0FBZ0JILEVBQVlqdkIsRUFDdkZrdkIsRUFBVzVrQixJQUFNeWtCLEVBQWNNLFVBQVloQyxXQUFXdHFCLEVBQUl1c0IsYUFBZUwsRUFBWTNrQixFQUNyRnRLLEdBQUtpdkIsRUFBWWp2QixFQUNqQnNLLEdBQUsya0IsRUFBWTNrQixFQUNqQnlJLEdBQVNrYyxFQUFZanZCLEVBQ3JCZ1QsR0FBVWljLEVBQVkza0IsRUFDdEJ0SyxHQUFLa3ZCLEVBQVdsdkIsRUFDaEJzSyxHQUFLNGtCLEVBQVc1a0IsRUFDaEJ5a0IsRUFBZ0JuRCxHQUFVbUQsR0FBZUMsWUFDMUMsQ0FDRixDQUNELE9BQU9sTSxHQUFpQixDQUN0Qi9QLFFBQ0FDLFNBQ0FoVCxJQUNBc0ssS0FFSixDQUVBLFNBQVN3WixHQUFtQi85QixHQUMxQixRQUFTZ21DLEdBQU9obUMsR0FBUUEsRUFBSzZKLGNBQWdCN0osRUFBSytDLFdBQWF4RixPQUFPd0YsVUFBVTZiLGVBQ2xGLENBRUEsU0FBUzRxQixHQUFjaDJCLEdBQ3JCLE9BQUlxcUIsR0FBVXJxQixHQUNMLENBQ0x3TixXQUFZeE4sRUFBUXdOLFdBQ3BCSCxVQUFXck4sRUFBUXFOLFdBR2hCLENBQ0xHLFdBQVl4TixFQUFRaTJCLFlBQ3BCNW9CLFVBQVdyTixFQUFRazJCLFlBRXZCLENBNENBLFNBQVNDLEdBQW9CbjJCLEdBRzNCLE9BQU9xMEIsR0FBc0I5SixHQUFtQnZxQixJQUFVd0ssS0FBT3dyQixHQUFjaDJCLEdBQVN3TixVQUMxRixDQXVCQSxTQUFTNG9CLEdBQWM1cEMsR0FDckIsR0FBMEIsU0FBdEJpbUMsR0FBWWptQyxHQUNkLE9BQU9BLEVBRVQsTUFBTTZwQyxFQUVON3BDLEVBQUs4cEMsY0FFTDlwQyxFQUFLdWQsWUFFTGdwQixHQUFhdm1DLElBQVNBLEVBQUt3Z0IsTUFFM0J1ZCxHQUFtQi85QixHQUNuQixPQUFPdW1DLEdBQWFzRCxHQUFVQSxFQUFPcnBCLEtBQU9xcEIsQ0FDOUMsQ0FFQSxTQUFTRSxHQUEyQi9wQyxHQUNsQyxNQUFNdWQsRUFBYXFzQixHQUFjNXBDLEdBQ2pDLE9BQUltbkMsR0FBc0I1cEIsR0FHakJBLEVBQVcxVCxjQUFjaUQsS0FFOUJzNUIsR0FBYzdvQixJQUFlaXBCLEdBQWtCanBCLEdBQzFDQSxFQUVGd3NCLEdBQTJCeHNCLEVBQ3BDLENBRUEsU0FBU3lzQixHQUFxQmhxQyxFQUFNd2hDLEdBQ2xDLElBQUl2NEIsT0FDUyxJQUFUdTRCLElBQ0ZBLEVBQU8sSUFFVCxNQUFNeUksRUFBcUJGLEdBQTJCL3BDLEdBQ2hEa3FDLEVBQVNELEtBQXNFLE9BQTdDaGhDLEVBQXNCakosRUFBSzZKLG9CQUF5QixFQUFTWixFQUFvQjZELE1BQ25IdzdCLEVBQU16QyxHQUFVb0UsR0FDdEIsT0FBSUMsRUFDSzFJLEVBQUtsaUIsT0FBT2dwQixFQUFLQSxFQUFJQyxnQkFBa0IsR0FBSS9CLEdBQWtCeUQsR0FBc0JBLEVBQXFCLElBRTFHekksRUFBS2xpQixPQUFPMnFCLEVBQW9CRCxHQUFxQkMsR0FDOUQsQ0ErQ0EsU0FBU0UsR0FBa0MzMkIsRUFBUzQyQixFQUFrQi9NLEdBQ3BFLElBQUlMLEVBQ0osR0FBeUIsYUFBckJvTixFQUNGcE4sRUFoREosU0FBeUJ4cEIsRUFBUzZwQixHQUNoQyxNQUFNaUwsRUFBTXpDLEdBQVVyeUIsR0FDaEI2MkIsRUFBT3RNLEdBQW1CdnFCLEdBQzFCKzBCLEVBQWlCRCxFQUFJQyxlQUMzQixJQUFJdmIsRUFBUXFkLEVBQUt4ckIsWUFDYm9PLEVBQVNvZCxFQUFLdHBCLGFBQ2Q5RyxFQUFJLEVBQ0pzSyxFQUFJLEVBQ1IsR0FBSWdrQixFQUFnQixDQUNsQnZiLEVBQVF1YixFQUFldmIsTUFDdkJDLEVBQVNzYixFQUFldGIsT0FDeEIsTUFBTXFkLEVBQXNCMUQsT0FDdkIwRCxHQUF1QkEsR0FBb0MsVUFBYmpOLEtBQ2pEcGpCLEVBQUlzdUIsRUFBZUMsV0FDbkJqa0IsRUFBSWdrQixFQUFlRSxVQUV0QixDQUNELE1BQU8sQ0FDTHpiLFFBQ0FDLFNBQ0FoVCxJQUNBc0ssSUFFSixDQXlCV2dtQixDQUFnQi8yQixFQUFTNnBCLFFBQzNCLEdBQXlCLGFBQXJCK00sRUFDVHBOLEVBaEhKLFNBQXlCeHBCLEdBQ3ZCLE1BQU02MkIsRUFBT3RNLEdBQW1CdnFCLEdBQzFCZzNCLEVBQVNoQixHQUFjaDJCLEdBQ3ZCMUcsRUFBTzBHLEVBQVEzSixjQUFjaUQsS0FDN0JrZ0IsRUFBUS9OLEdBQUlvckIsRUFBS3BwQixZQUFhb3BCLEVBQUt4ckIsWUFBYS9SLEVBQUttVSxZQUFhblUsRUFBSytSLGFBQ3ZFb08sRUFBU2hPLEdBQUlvckIsRUFBS3ZwQixhQUFjdXBCLEVBQUt0cEIsYUFBY2pVLEVBQUtnVSxhQUFjaFUsRUFBS2lVLGNBQ2pGLElBQUk5RyxHQUFLdXdCLEVBQU94cEIsV0FBYTJvQixHQUFvQm4yQixHQUNqRCxNQUFNK1EsR0FBS2ltQixFQUFPM3BCLFVBSWxCLE1BSDJDLFFBQXZDa2xCLEdBQW1CajVCLEdBQU0yVyxZQUMzQnhKLEdBQUtnRixHQUFJb3JCLEVBQUt4ckIsWUFBYS9SLEVBQUsrUixhQUFlbU8sR0FFMUMsQ0FDTEEsUUFDQUMsU0FDQWhULElBQ0FzSyxJQUVKLENBK0ZXa21CLENBQWdCMU0sR0FBbUJ2cUIsU0FDckMsR0FBSXFxQixHQUFVdU0sR0FDbkJwTixFQTFCSixTQUFvQ3hwQixFQUFTNnBCLEdBQzNDLE1BQU11TCxFQUFhZixHQUFzQnIwQixHQUFTLEVBQW1CLFVBQWI2cEIsR0FDbERwZixFQUFNMnFCLEVBQVczcUIsSUFBTXpLLEVBQVE4MUIsVUFDL0J0ckIsRUFBTzRxQixFQUFXNXFCLEtBQU94SyxFQUFRNDFCLFdBQ2pDUCxFQUFRekMsR0FBYzV5QixHQUFXMnFCLEdBQVMzcUIsR0FBVyxDQUN6RHlHLEVBQUcsRUFDSHNLLEVBQUcsR0FNTCxNQUFPLENBQ0x5SSxNQUxZeFosRUFBUXFMLFlBQWNncUIsRUFBTTV1QixFQU14Q2dULE9BTGF6WixFQUFRdU4sYUFBZThuQixFQUFNdGtCLEVBTTFDdEssRUFMUStELEVBQU82cUIsRUFBTTV1QixFQU1yQnNLLEVBTFF0RyxFQUFNNHFCLEVBQU10a0IsRUFPeEIsQ0FRV21tQixDQUEyQk4sRUFBa0IvTSxPQUMvQyxDQUNMLE1BQU15TCxFQUFnQmIsR0FBaUJ6MEIsR0FDdkN3cEIsRUFBTyxJQUNGb04sRUFDSG53QixFQUFHbXdCLEVBQWlCbndCLEVBQUk2dUIsRUFBYzd1QixFQUN0Q3NLLEVBQUc2bEIsRUFBaUI3bEIsRUFBSXVrQixFQUFjdmtCLEVBRXpDLENBQ0QsT0FBT3dZLEdBQWlCQyxFQUMxQixDQUNBLFNBQVMyTixHQUF5Qm4zQixFQUFTbzNCLEdBQ3pDLE1BQU1ydEIsRUFBYXFzQixHQUFjcDJCLEdBQ2pDLFFBQUkrSixJQUFlcXRCLElBQWEvTSxHQUFVdGdCLElBQWU0cEIsR0FBc0I1cEIsTUFHNUIsVUFBNUN3b0IsR0FBbUJ4b0IsR0FBWTBHLFVBQXdCMG1CLEdBQXlCcHRCLEVBQVlxdEIsR0FDckcsQ0FvRUEsU0FBU0MsR0FBb0JyM0IsRUFBU3MzQixHQUNwQyxPQUFLMUUsR0FBYzV5QixJQUFxRCxVQUF6Q3V5QixHQUFtQnZ5QixHQUFTeVEsU0FHdkQ2bUIsRUFDS0EsRUFBU3QzQixHQUVYQSxFQUFRd3FCLGFBTE4sSUFNWCxDQWVBLFNBQVNDLEdBQWdCenFCLEVBQVNzM0IsR0FDaEMsTUFBTXZ0QyxFQUFTc29DLEdBQVVyeUIsR0FDekIsSUFBSzR5QixHQUFjNXlCLEdBQ2pCLE9BQU9qVyxFQUVULElBQUl5Z0MsRUFBZTZNLEdBQW9CcjNCLEVBQVNzM0IsR0FDaEQsS0FBTzlNLEdBQWdCeUksR0FBZXpJLElBQStELFdBQTlDK0gsR0FBbUIvSCxHQUFjL1osVUFDdEYrWixFQUFlNk0sR0FBb0I3TSxFQUFjOE0sR0FFbkQsT0FBSTlNLElBQStDLFNBQTlCaUksR0FBWWpJLElBQTBELFNBQTlCaUksR0FBWWpJLElBQTBFLFdBQTlDK0gsR0FBbUIvSCxHQUFjL1osV0FBMEJ5aUIsR0FBa0IxSSxJQUN6S3pnQyxFQUVGeWdDLEdBMUJULFNBQTRCeHFCLEdBQzFCLElBQUlGLEVBQWNzMkIsR0FBY3AyQixHQUNoQyxLQUFPNHlCLEdBQWM5eUIsS0FBaUI2ekIsR0FBc0I3ekIsSUFBYyxDQUN4RSxHQUFJb3pCLEdBQWtCcHpCLEdBQ3BCLE9BQU9BLEVBRVBBLEVBQWNzMkIsR0FBY3QyQixFQUUvQixDQUNELE9BQU8sSUFDVCxDQWdCeUJ5M0IsQ0FBbUJ2M0IsSUFBWWpXLENBQ3hELENBRUEsU0FBU3l0QyxHQUE4QngzQixFQUFTd3FCLEVBQWNYLEdBQzVELE1BQU00TixFQUEwQjdFLEdBQWNwSSxHQUN4Q3BmLEVBQWtCbWYsR0FBbUJDLEdBQ3JDa0ssRUFBdUIsVUFBYjdLLEVBQ1ZMLEVBQU82SyxHQUFzQnIwQixHQUFTLEVBQU0wMEIsRUFBU2xLLEdBQzNELElBQUl3TSxFQUFTLENBQ1h4cEIsV0FBWSxFQUNaSCxVQUFXLEdBRWIsTUFBTXJDLEVBQVUsQ0FDZHZFLEVBQUcsRUFDSHNLLEVBQUcsR0FFTCxHQUFJMG1CLElBQTRCQSxJQUE0Qi9DLEVBSTFELElBSGtDLFNBQTlCakMsR0FBWWpJLElBQTRCd0ksR0FBa0I1bkIsTUFDNUQ0ckIsRUFBU2hCLEdBQWN4TCxJQUVyQm9JLEdBQWNwSSxHQUFlLENBQy9CLE1BQU1rTixFQUFhckQsR0FBc0I3SixHQUFjLEVBQU1rSyxFQUFTbEssR0FDdEV4ZixFQUFRdkUsRUFBSWl4QixFQUFXanhCLEVBQUkrakIsRUFBYW9MLFdBQ3hDNXFCLEVBQVErRixFQUFJMm1CLEVBQVczbUIsRUFBSXlaLEVBQWFzTCxTQUN6QyxNQUFVMXFCLElBQ1RKLEVBQVF2RSxFQUFJMHZCLEdBQW9CL3FCLElBR3BDLE1BQU8sQ0FDTDNFLEVBQUcraUIsRUFBS2hmLEtBQU93c0IsRUFBT3hwQixXQUFheEMsRUFBUXZFLEVBQzNDc0ssRUFBR3lZLEVBQUsvZSxJQUFNdXNCLEVBQU8zcEIsVUFBWXJDLEVBQVErRixFQUN6Q3lJLE1BQU9nUSxFQUFLaFEsTUFDWkMsT0FBUStQLEVBQUsvUCxPQUVqQixDQUVBLE1BQU1rUSxHQUFXLENBQ2ZTLGdCQXRHRixTQUF5QjdCLEdBQ3ZCLElBQUl2b0IsUUFDRkEsRUFBTzhwQixTQUNQQSxFQUFRQyxhQUNSQSxFQUFZRixTQUNaQSxHQUNFdEIsRUFDSixNQUNNb1AsRUFBb0IsSUFEb0Isc0JBQWI3TixFQXhDbkMsU0FBcUM5cEIsRUFBUzQzQixHQUM1QyxNQUFNQyxFQUFlRCxFQUFNeHJCLElBQUlwTSxHQUMvQixHQUFJNjNCLEVBQ0YsT0FBT0EsRUFFVCxJQUFJeEIsRUFBU0csR0FBcUJ4MkIsR0FBU2pNLFFBQU9tYixHQUFNbWIsR0FBVW5iLElBQTJCLFNBQXBCdWpCLEdBQVl2akIsS0FDakY0b0IsRUFBc0MsS0FDMUMsTUFBTUMsRUFBMEQsVUFBekN4RixHQUFtQnZ5QixHQUFTeVEsU0FDbkQsSUFBSTNRLEVBQWNpNEIsRUFBaUIzQixHQUFjcDJCLEdBQVdBLEVBRzVELEtBQU9xcUIsR0FBVXZxQixLQUFpQjZ6QixHQUFzQjd6QixJQUFjLENBQ3BFLE1BQU1rNEIsRUFBZ0J6RixHQUFtQnp5QixHQUNuQ200QixFQUEwQi9FLEdBQWtCcHpCLEdBQzdDbTRCLEdBQXNELFVBQTNCRCxFQUFjdm5CLFdBQzVDcW5CLEVBQXNDLE9BRVZDLEdBQWtCRSxJQUE0QkgsR0FBdUNHLEdBQXNELFdBQTNCRCxFQUFjdm5CLFVBQTJCcW5CLEdBQXVDLENBQUMsV0FBWSxTQUFTcnVDLFNBQVNxdUMsRUFBb0NybkIsV0FBYXVpQixHQUFrQmx6QixLQUFpQm00QixHQUEyQmQsR0FBeUJuM0IsRUFBU0YsSUFHNVl1MkIsRUFBU0EsRUFBT3RpQyxRQUFPbWtDLEdBQVlBLElBQWFwNEIsSUFHaERnNEIsRUFBc0NFLEVBRXhDbDRCLEVBQWNzMkIsR0FBY3QyQixFQUM3QixDQUVELE9BREE4M0IsRUFBTXhrQixJQUFJcFQsRUFBU3EyQixHQUNaQSxDQUNULENBV3NFOEIsQ0FBNEJuNEIsRUFBU3ZYLEtBQUs0QixJQUFNLEdBQUd5aEIsT0FBT2dlLEdBQ3RFQyxHQUNsRHFPLEVBQXdCVCxFQUFrQixHQUMxQ1UsRUFBZVYsRUFBa0J6b0MsUUFBTyxDQUFDb3BDLEVBQVMxQixLQUN0RCxNQUFNcE4sRUFBT21OLEdBQWtDMzJCLEVBQVM0MkIsRUFBa0IvTSxHQUsxRSxPQUpBeU8sRUFBUTd0QixJQUFNZ0IsR0FBSStkLEVBQUsvZSxJQUFLNnRCLEVBQVE3dEIsS0FDcEM2dEIsRUFBUTV0QixNQUFRb2dCLEdBQUl0QixFQUFLOWUsTUFBTzR0QixFQUFRNXRCLE9BQ3hDNHRCLEVBQVFqUCxPQUFTeUIsR0FBSXRCLEVBQUtILE9BQVFpUCxFQUFRalAsUUFDMUNpUCxFQUFROXRCLEtBQU9pQixHQUFJK2QsRUFBS2hmLEtBQU04dEIsRUFBUTl0QixNQUMvQjh0QixDQUFPLEdBQ2IzQixHQUFrQzMyQixFQUFTbzRCLEVBQXVCdk8sSUFDckUsTUFBTyxDQUNMclEsTUFBTzZlLEVBQWEzdEIsTUFBUTJ0QixFQUFhN3RCLEtBQ3pDaVAsT0FBUTRlLEVBQWFoUCxPQUFTZ1AsRUFBYTV0QixJQUMzQ2hFLEVBQUc0eEIsRUFBYTd0QixLQUNoQnVHLEVBQUdzbkIsRUFBYTV0QixJQUVwQixFQStFRW9nQixzREFsVUYsU0FBK0R0QyxHQUM3RCxJQUFJaUIsS0FDRkEsRUFBSWdCLGFBQ0pBLEVBQVlYLFNBQ1pBLEdBQ0V0QixFQUNKLE1BQU1rUCxFQUEwQjdFLEdBQWNwSSxHQUN4Q3BmLEVBQWtCbWYsR0FBbUJDLEdBQzNDLEdBQUlBLElBQWlCcGYsRUFDbkIsT0FBT29lLEVBRVQsSUFBSXdOLEVBQVMsQ0FDWHhwQixXQUFZLEVBQ1pILFVBQVcsR0FFVGdvQixFQUFRLENBQ1Y1dUIsRUFBRyxFQUNIc0ssRUFBRyxHQUVMLE1BQU0vRixFQUFVLENBQ2R2RSxFQUFHLEVBQ0hzSyxFQUFHLEdBRUwsSUFBSTBtQixJQUE0QkEsR0FBd0MsVUFBYjVOLE1BQ3ZCLFNBQTlCNEksR0FBWWpJLElBQTRCd0ksR0FBa0I1bkIsTUFDNUQ0ckIsRUFBU2hCLEdBQWN4TCxJQUVyQm9JLEdBQWNwSSxJQUFlLENBQy9CLE1BQU1rTixFQUFhckQsR0FBc0I3SixHQUN6QzZLLEVBQVExSyxHQUFTSCxHQUNqQnhmLEVBQVF2RSxFQUFJaXhCLEVBQVdqeEIsRUFBSStqQixFQUFhb0wsV0FDeEM1cUIsRUFBUStGLEVBQUkybUIsRUFBVzNtQixFQUFJeVosRUFBYXNMLFNBQ3pDLENBRUgsTUFBTyxDQUNMdGMsTUFBT2dRLEVBQUtoUSxNQUFRNmIsRUFBTTV1QixFQUMxQmdULE9BQVErUCxFQUFLL1AsT0FBUzRiLEVBQU10a0IsRUFDNUJ0SyxFQUFHK2lCLEVBQUsvaUIsRUFBSTR1QixFQUFNNXVCLEVBQUl1d0IsRUFBT3hwQixXQUFhNm5CLEVBQU01dUIsRUFBSXVFLEVBQVF2RSxFQUM1RHNLLEVBQUd5WSxFQUFLelksRUFBSXNrQixFQUFNdGtCLEVBQUlpbUIsRUFBTzNwQixVQUFZZ29CLEVBQU10a0IsRUFBSS9GLEVBQVErRixFQUUvRCxFQTJSRXNaLGFBQ0FlLGNBL0VGLFNBQXVCcHJCLEdBQ3JCLE9BQU82ekIsR0FBaUI3ekIsRUFDMUIsRUE4RUV5cUIsbUJBQ0FGLHNCQUNBSSxZQUNBdGpCLHNCQUFzQmtoQixHQUNwQixJQUFJRSxVQUNGQSxFQUFTQyxTQUNUQSxFQUFRbUIsU0FDUkEsR0FDRXRCLEVBQ0osTUFBTWdRLEVBQW9COXZDLEtBQUtnaUMsaUJBQW1CQSxHQUM1QytOLEVBQWtCL3ZDLEtBQUsyaUMsY0FDN0IsTUFBTyxDQUNMM0MsVUFBVytPLEdBQThCL08sUUFBaUI4UCxFQUFrQjdQLEdBQVdtQixHQUN2Rm5CLFNBQVUsQ0FDUmppQixFQUFHLEVBQ0hzSyxFQUFHLFdBQ095bkIsRUFBZ0I5UCxJQUcvQixFQUNEK1AsZUFBZ0J6NEIsR0FBVzNXLE1BQU1vTixLQUFLdUosRUFBUXk0QixrQkFDOUM1SyxNQUFPN3RCLEdBQXFELFFBQTFDdXlCLEdBQW1CdnlCLEdBQVNpUSxXQVdoRCxTQUFTeW9CLEdBQVdqUSxFQUFXQyxFQUFVaVEsRUFBUTF5QixRQUMvQixJQUFaQSxJQUNGQSxFQUFVLENBQUEsR0FFWixNQUFNMnlCLGVBQ0pBLEdBQWlCLEVBQUlDLGVBQ3JCQSxHQUFpQixFQUFJQyxjQUNyQkEsR0FBZ0IsRUFBSUMsZUFDcEJBLEdBQWlCLEdBQ2Y5eUIsRUFDRSt5QixFQUFZSixHQUFrQkMsRUFBaUIsSUFBS3hPLEdBQVU1QixHQUFhK04sR0FBcUIvTixHQUFhQSxFQUFVNkIsZUFBaUJrTSxHQUFxQi9OLEVBQVU2QixnQkFBa0IsTUFBUWtNLEdBQXFCOU4sSUFBYSxHQUN6T3NRLEVBQVV2c0MsU0FBUXlyQyxJQUVoQixNQUFNZSxHQUFvQjVPLEdBQVU2TixJQUFhQSxFQUFTMXVDLFdBQVdDLFNBQVMsTUFDMUVtdkMsR0FBbUJHLElBQWlCRSxHQUN0Q2YsRUFBU3BnQyxpQkFBaUIsU0FBVTZnQyxFQUFRLENBQzFDcHNCLFNBQVMsSUFHYnNzQixHQUFrQlgsRUFBU3BnQyxpQkFBaUIsU0FBVTZnQyxFQUFPLElBRS9ELElBV0lPLEVBWEFDLEVBQVcsS0FDWEwsSUFDRkssRUFBVyxJQUFJM1UsZ0JBQWUsS0FDNUJtVSxHQUFRLElBRVZ0TyxHQUFVNUIsS0FBZXNRLEdBQWtCSSxFQUFTbDhCLFFBQVF3ckIsR0FDdkQ0QixHQUFVNUIsS0FBY0EsRUFBVTZCLGdCQUFtQnlPLEdBQ3hESSxFQUFTbDhCLFFBQVF3ckIsRUFBVTZCLGdCQUU3QjZPLEVBQVNsOEIsUUFBUXlyQixJQUduQixJQUFJMFEsRUFBY0wsRUFBaUIxRSxHQUFzQjVMLEdBQWEsS0FhdEUsT0FaSXNRLEdBR0osU0FBU00sSUFDUCxNQUFNQyxFQUFjakYsR0FBc0I1TCxJQUN0QzJRLEdBQWdCRSxFQUFZN3lCLElBQU0yeUIsRUFBWTN5QixHQUFLNnlCLEVBQVl2b0IsSUFBTXFvQixFQUFZcm9CLEdBQUt1b0IsRUFBWTlmLFFBQVU0ZixFQUFZNWYsT0FBUzhmLEVBQVk3ZixTQUFXMmYsRUFBWTNmLFFBQ3RLa2YsSUFFRlMsRUFBY0UsRUFDZEosRUFBVXpWLHNCQUFzQjRWLEVBQ2pDLENBVENBLEdBVUZWLElBQ08sS0FDTCxJQUFJWSxFQUNKUCxFQUFVdnNDLFNBQVF5ckMsSUFDaEJVLEdBQWtCVixFQUFTcmdDLG9CQUFvQixTQUFVOGdDLEdBQ3pERSxHQUFrQlgsRUFBU3JnQyxvQkFBb0IsU0FBVThnQyxFQUFPLElBRXhDLE9BQXpCWSxFQUFZSixJQUE2QkksRUFBVW44QixhQUNwRCs3QixFQUFXLEtBQ1BKLEdBQ0ZyVixxQkFBcUJ3VixFQUN0QixDQUVMLENBT0EsTUFBTU0sR0FBa0IsQ0FBQy9RLEVBQVdDLEVBQVV6aUIsS0FJNUMsTUFBTTJ4QixFQUFRLElBQUlwZCxJQUNaaWYsRUFBZ0IsQ0FDcEI5UCxlQUNHMWpCLEdBRUN5ekIsRUFBb0IsSUFDckJELEVBQWM5UCxTQUNqQnQvQixHQUFJdXRDLEdBRU4sTUR4akJzQnZ3QixPQUFPb2hCLEVBQVdDLEVBQVVpUixLQUNsRCxNQUFNMVIsVUFDSkEsRUFBWSxTQUFRNEIsU0FDcEJBLEVBQVcsV0FBVXpqQixXQUNyQkEsRUFBYSxHQUFFdWpCLFNBQ2ZBLEdBQ0VnUSxFQUNFQyxFQUFrQnh6QixFQUFXclMsT0FBTzFFLFNBQ3BDbTVCLFFBQStCLE1BQWxCbUIsRUFBU2tFLFdBQWdCLEVBQVNsRSxFQUFTa0UsTUFBTW5GLElBQ3BFLElBQUlrQixRQUFjRCxFQUFTa1EsZ0JBQWdCLENBQ3pDcFIsWUFDQUMsV0FDQW1CLGNBRUVwakIsRUFDRkEsRUFBQ3NLLEVBQ0RBLEdBQ0V1WCxHQUEyQnNCLEVBQU8zQixFQUFXTyxHQUM3Q3NSLEVBQW9CN1IsRUFDcEJnRixFQUFpQixDQUFBLEVBQ2pCOE0sRUFBYSxFQUNqQixJQUFLLElBQUkveEMsRUFBSSxFQUFHQSxFQUFJNHhDLEVBQWdCenhDLE9BQVFILElBQUssQ0FDL0MsTUFBTW9TLEtBQ0pBLEVBQUlvMkIsR0FDSkEsR0FDRW9KLEVBQWdCNXhDLElBRWxCeWUsRUFBR3V6QixFQUNIanBCLEVBQUdrcEIsRUFBS3p6QixLQUNSQSxFQUFJNG9CLE1BQ0pBLFNBQ1FvQixFQUFHLENBQ1gvcEIsSUFDQXNLLElBQ0FtYyxpQkFBa0JqRixFQUNsQkEsVUFBVzZSLEVBQ1hqUSxXQUNBb0QsaUJBQ0FyRCxRQUNBRCxXQUNBNXBCLFNBQVUsQ0FDUjBvQixZQUNBQyxjQUdKamlCLEVBQWEsTUFBVHV6QixFQUFnQkEsRUFBUXZ6QixFQUM1QnNLLEVBQWEsTUFBVGtwQixFQUFnQkEsRUFBUWxwQixFQUM1QmtjLEVBQWlCLElBQ1pBLEVBQ0g3eUIsQ0FBQ0EsR0FBTyxJQUNINnlCLEVBQWU3eUIsTUFDZm9NLElBR0g0b0IsR0FBUzJLLEdBQWMsS0FDekJBLElBQ3FCLGlCQUFWM0ssSUFDTEEsRUFBTW5ILFlBQ1I2UixFQUFvQjFLLEVBQU1uSCxXQUV4Qm1ILEVBQU14RixRQUNSQSxHQUF3QixJQUFoQndGLEVBQU14RixZQUF1QkQsRUFBU2tRLGdCQUFnQixDQUM1RHBSLFlBQ0FDLFdBQ0FtQixhQUNHdUYsRUFBTXhGLFNBR1huakIsSUFDQXNLLEtBQ0V1WCxHQUEyQnNCLEVBQU9rUSxFQUFtQnRSLEtBRTNEeGdDLEdBQUssRUFHUixDQUNELE1BQU8sQ0FDTHllLElBQ0FzSyxJQUNBa1gsVUFBVzZSLEVBQ1hqUSxXQUNBb0QsaUJBQ0QsRUNzZU1pTixDQUFrQnpSLEVBQVdDLEVBQVUsSUFDekMrUSxFQUNIOVAsU0FBVStQLEdBQ1YsRUM3bkJFeE8sR0FBUWpsQixJQUlMLENBQ0w3TCxLQUFNLFFBQ042TCxVQUNBdXFCLEdBQUdsdUIsR0FDRCxNQUFNdEMsUUFDSkEsRUFBT29wQixRQUNQQSxHQUNxQixtQkFBWm5qQixFQUF5QkEsRUFBUTNELEdBQVMyRCxFQUNyRCxPQUFJakcsSUFYT3RULEVBV1VzVCxFQVZoQixDQUFFLEVBQUMxWCxlQUFlQyxLQUFLbUUsRUFBTyxZQVdWLE1BQW5Cc1QsRUFBUXJULFFBQ0h3dEMsR0FBUSxDQUNibjZCLFFBQVNBLEVBQVFyVCxRQUNqQnk4QixZQUNDb0gsR0FBR2x1QixHQUVELEdBQ0V0QyxFQUNGbTZCLEdBQVEsQ0FDYm42QixVQUNBb3BCLFlBQ0NvSCxHQUFHbHVCLEdBRUQsR0F6QlgsSUFBZTVWLENBMEJaLElBSUwsSUFBSXFCLEdBQTRCLG9CQUFid0IsU0FBMkI2cUMsRUFBQUEsZ0JBQWtCL3ZCLEVBQUFBLFVBSWhFLFNBQVNnd0IsR0FBVTUwQixFQUFHNFYsR0FDcEIsR0FBSTVWLElBQU00VixFQUNSLE9BQU8sRUFFVCxVQUFXNVYsVUFBYTRWLEVBQ3RCLE9BQU8sRUFFVCxHQUFpQixtQkFBTjVWLEdBQW9CQSxFQUFFamMsYUFBZTZ4QixFQUFFN3hCLFdBQ2hELE9BQU8sRUFFVCxJQUFJckIsRUFBUUgsRUFBR3N5QyxFQUNmLEdBQUk3MEIsR0FBSzRWLEdBQWlCLGlCQUFMNVYsRUFBZSxDQUNsQyxHQUFJcGMsTUFBTUMsUUFBUW1jLEdBQUksQ0FFcEIsR0FEQXRkLEVBQVNzZCxFQUFFdGQsT0FDUEEsR0FBVWt6QixFQUFFbHpCLE9BQVEsT0FBTyxFQUMvQixJQUFLSCxFQUFJRyxFQUFnQixHQUFSSCxLQUNmLElBQUtxeUMsR0FBVTUwQixFQUFFemQsR0FBSXF6QixFQUFFcnpCLElBQ3JCLE9BQU8sRUFHWCxPQUFPLENBQ1IsQ0FHRCxHQUZBc3lDLEVBQU8xeUMsT0FBTzB5QyxLQUFLNzBCLEdBQ25CdGQsRUFBU215QyxFQUFLbnlDLE9BQ1ZBLElBQVdQLE9BQU8weUMsS0FBS2pmLEdBQUdsekIsT0FDNUIsT0FBTyxFQUVULElBQUtILEVBQUlHLEVBQWdCLEdBQVJILEtBQ2YsSUFBSyxDQUFFLEVBQUNNLGVBQWVDLEtBQUs4eUIsRUFBR2lmLEVBQUt0eUMsSUFDbEMsT0FBTyxFQUdYLElBQUtBLEVBQUlHLEVBQWdCLEdBQVJILEtBQVksQ0FDM0IsTUFBTTBCLEVBQU00d0MsRUFBS3R5QyxHQUNqQixJQUFZLFdBQVIwQixJQUFvQitiLEVBQUU4MEIsWUFHckJGLEdBQVU1MEIsRUFBRS9iLEdBQU0yeEIsRUFBRTN4QixJQUN2QixPQUFPLENBRVYsQ0FDRCxPQUFPLENBQ1IsQ0FDRCxPQUFPK2IsR0FBTUEsR0FBSzRWLEdBQU1BLENBQzFCLENBRUEsU0FBU21mLEdBQU94NkIsR0FDZCxHQUFzQixvQkFBWGpXLE9BQ1QsT0FBTyxFQUdULE9BRFlpVyxFQUFRM0osY0FBY2k4QixhQUFldm9DLFFBQ3RDMHdDLGtCQUFvQixDQUNqQyxDQUVBLFNBQVNDLEdBQVcxNkIsRUFBU3RULEdBQzNCLE1BQU1pdUMsRUFBTUgsR0FBT3g2QixHQUNuQixPQUFPd0wsS0FBS29vQixNQUFNbG5DLEVBQVFpdUMsR0FBT0EsQ0FDbkMsQ0FFQSxTQUFTQyxHQUFhbHVDLEdBQ3BCLE1BQU10QyxFQUFNSCxFQUFNMGQsT0FBT2piLEdBSXpCLE9BSEFxQixJQUFNLEtBQ0ozRCxFQUFJdUMsUUFBVUQsQ0FBSyxJQUVkdEMsQ0FDVCxDQ3RHQSxNQWUyR3l3QyxHQWYzQ0MsRUFBaUI1d0MsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVF6SCxTQUFVQSxFQUFXaXZCLE1BQU9BLEVBQVEsR0FBS0MsT0FBUUEsRUFBUyxLQUFPc2hCLEdBQWV4dkMsRUFDeEYsT0FBcUJ5dkMsRUFBQUEsY0FBcUJDLEVBQWlCQyxJQUFLQyxFQUFxQyxDQUFBLEVBQUlKLEVBQVksQ0FDakgzd0MsSUFBSzRILEVBQ0x3bkIsTUFBT0EsRUFDUEMsT0FBUUEsRUFDUjJoQixRQUFTLFlBQ1RDLG9CQUFxQixTQUNyQjl2QyxFQUFNNkksUUFBVTdKLEVBQXlCeXdDLEVBQUFBLGNBQXFCLFVBQVcsQ0FDekVNLE9BQVEsbUJBQ1QsSUNjb0dDLEdBQW9DLFVBQ3hJQyxHQUEyQ0MsSUFBMkNDLEVBQTBCSCxLQUNoSEksR0FBc0NDLElBQTBDSixHQUEwQ0QsSUFnQjNITSxHQUF5REMsRUFBaUI1eEMsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3JGLE1BQVErcEMsY0FBZUEsRUFBZ0JDLFdBQVlBLEtBQWdCQyxHQUFnQjF3QyxFQUM3RTBDLEVBQVUydEMsR0FIMkgsZUFHakRHLEdBQ3BGM3hDLEVBQU04eEMsU0FBYyxNQUNwQjNsQyxFQUFlNGxDLEVBQXVCbnFDLEVBQWM1SCxHQU8xRCxPQU5BZ3lDLEVBQUFBLFdBQWlCLEtBSWJudUMsRUFBUW91QyxnQkFBZ0JMLGFBQStDLEVBQVNBLEVBQVdydkMsVUFBWXZDLEVBQUl1QyxRQUFRLElBRWhIcXZDLEVBQWEsS0FBcUJNLGdCQUFxQkMsRUFBaUJ4aUMsSUFBS3lpQyxFQUFxQyxDQUFFLEVBQUVQLEVBQWEsQ0FDdEk3eEMsSUFBS21NLElBQ04sSUFPb0drbUMsR0FBcUMsaUJBQ3pJQyxHQUE2Q0MsSUFBMkNuQixHQUEwQ2lCLElBQ25JRyxHQUF5RGQsRUFBaUI1eEMsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3JGLElBQUk2cUMsRUFBa0JDLEVBQW1CQyxFQUF1QkMsRUFBd0JDLEVBQXdCQyxFQUF1QkMsRUFBd0JDLEVBQy9KLE1BQVFyQixjQUFlQSxFQUFnQnRQLEtBQU1BLEVBQU8sU0FBVzRRLFdBQVlBLEVBQWEsRUFBSUMsTUFBT0EsRUFBUSxTQUFXQyxZQUFhQSxFQUFjLEVBQUlDLGFBQWNBLEVBQWUsRUFBSUMsa0JBQW1CQSxFQUFvQixHQUFLQyxpQkFBa0JDLEVBQXVCLEVBQUlDLE9BQVFBLEVBQVMsVUFBWUMsaUJBQWtCQSxHQUFtQixFQUFRQyxnQkFBaUJBLEdBQWtCLEVBQU9DLFNBQVVBLEtBQWN4b0IsR0FBaUJocUIsRUFDdGEwQyxFQUFVMnRDLEdBQXVDYSxHQUFvQ1YsSUFDcEZsbUIsRUFBU21vQixHQUFjQyxFQUFlanVDLFNBQUMsTUFDeEN1RyxFQUFlNGxDLEVBQXVCbnFDLEdBQWV4RixHQUFPd3hDLEVBQVd4eEMsTUFFdEUwK0IsRUFBT2dULEdBQVlELEVBQWVqdUMsU0FBQyxNQUNwQ211QyxFQUFZQyxHQUFlbFQsR0FDM0JtVCxFQUE0RyxRQUE5RnhCLEVBQW1Cc0IsYUFBNkMsRUFBU0EsRUFBVTNrQixhQUF3QyxJQUFyQnFqQixFQUE4QkEsRUFBbUIsRUFDckt5QixFQUErRyxRQUFoR3hCLEVBQW9CcUIsYUFBNkMsRUFBU0EsRUFBVTFrQixjQUEwQyxJQUF0QnFqQixFQUErQkEsRUFBb0IsRUFDMUt5QixFQUFtQjlSLEdBQWtCLFdBQVY2USxFQUFxQixJQUFNQSxFQUFRLElBQzlESSxFQUFtRCxpQkFBekJDLEVBQW9DQSxFQUF1QixDQUN2Rmx6QixJQUFLLEVBQ0xDLE1BQU8sRUFDUDJlLE9BQVEsRUFDUjdlLEtBQU0sS0FDSG16QixHQUVEN1QsRUFBV3pnQyxNQUFNQyxRQUFRbTBDLEdBQXFCQSxFQUFvQixDQUNwRUEsR0FFRWUsRUFBd0IxVSxFQUFTM2hDLE9BQVMsRUFDMUN3bEMsRUFBd0IsQ0FDMUJ2RSxRQUFTc1UsRUFDVDVULFNBQVVBLEVBQVMvMUIsT0FBTzBxQyxJQUUxQnhVLFlBQWF1VSxJQUVUanlDLEtBQU1BLEVBQU9teUMsZUFBZ0JBLEVBQWlCelcsVUFBV0EsRUFBWTBXLGFBQWNBLEVBQWUxUixlQUFnQkEsR0ZlOUgsU0FBcUJobkIsUUFDSCxJQUFaQSxJQUNGQSxFQUFVLENBQUEsR0FFWixNQUFNZ2lCLFVBQ0pBLEVBQVksU0FBUTRCLFNBQ3BCQSxFQUFXLFdBQVV6akIsV0FDckJBLEVBQWEsR0FBRXVqQixTQUNmQSxFQUNBNXBCLFVBQ0Uwb0IsVUFBV21XLEVBQ1hsVyxTQUFVbVcsR0FDUixDQUFFLEVBQUE1WCxVQUNOQSxHQUFZLEVBQUk2WCxxQkFDaEJBLEVBQW9CanFCLEtBQ3BCQSxHQUNFNU8sR0FDR08sRUFBTXU0QixHQUFXOTBDLEVBQU0rRixTQUFTLENBQ3JDeVcsRUFBRyxFQUNIc0ssRUFBRyxFQUNIOFksV0FDQTVCLFlBQ0FnRixlQUFnQixDQUFFLEVBQ2xCMFIsY0FBYyxLQUVUSyxFQUFrQkMsR0FBdUJoMUMsRUFBTStGLFNBQVNvVyxHQUMxRGkwQixHQUFVMkUsRUFBa0I1NEIsSUFDL0I2NEIsRUFBb0I3NEIsR0FFdEIsTUFBTzg0QixFQUFZQyxHQUFpQmwxQyxFQUFNK0YsU0FBUyxPQUM1Q292QyxFQUFXQyxHQUFnQnAxQyxFQUFNK0YsU0FBUyxNQUMzQ3N2QyxFQUFlcjFDLEVBQU04QyxhQUFZUCxJQUNqQ0EsR0FBUSt5QyxFQUFhNXlDLFVBQ3ZCNHlDLEVBQWE1eUMsUUFBVUgsRUFDdkIyeUMsRUFBYzN5QyxHQUNmLEdBQ0EsQ0FBQzJ5QyxJQUNFSyxFQUFjdjFDLEVBQU04QyxhQUFZUCxJQUNoQ0EsSUFBU2l6QyxFQUFZOXlDLFVBQ3ZCOHlDLEVBQVk5eUMsUUFBVUgsRUFDdEI2eUMsRUFBYTd5QyxHQUNkLEdBQ0EsQ0FBQzZ5QyxJQUNFSyxFQUFjZCxHQUFxQk0sRUFDbkNTLEVBQWFkLEdBQW9CTyxFQUNqQ0csRUFBZXQxQyxFQUFNMGQsT0FBTyxNQUM1QjgzQixFQUFjeDFDLEVBQU0wZCxPQUFPLE1BQzNCaTRCLEVBQVUzMUMsRUFBTTBkLE9BQU9uQixHQUN2QnE1QixFQUEwQmpGLEdBQWFrRSxHQUN2Q2dCLEVBQWNsRixHQUFhalIsR0FDM0JnUCxFQUFTMXVDLEVBQU04QyxhQUFZLEtBQy9CLElBQUt3eUMsRUFBYTV5QyxVQUFZOHlDLEVBQVk5eUMsUUFDeEMsT0FFRixNQUFNZ3RDLEVBQVMsQ0FDYjFSLFlBQ0E0QixXQUNBempCLFdBQVk0NEIsR0FFVmMsRUFBWW56QyxVQUNkZ3RDLEVBQU9oUSxTQUFXbVcsRUFBWW56QyxTQUVoQzZzQyxHQUFnQitGLEVBQWE1eUMsUUFBUzh5QyxFQUFZOXlDLFFBQVNndEMsR0FBUXh5QixNQUFLWCxJQUN0RSxNQUFNdTVCLEVBQVcsSUFDWnY1QixFQUNIbTRCLGNBQWMsR0FFWnFCLEVBQWFyekMsVUFBWTB0QyxHQUFVdUYsRUFBUWp6QyxRQUFTb3pDLEtBQ3RESCxFQUFRanpDLFFBQVVvekMsRUFDbEJFLEVBQVN2bEMsV0FBVSxLQUNqQnFrQyxFQUFRZ0IsRUFBUyxJQUVwQixHQUNELEdBQ0QsQ0FBQ2YsRUFBa0IvVyxFQUFXNEIsRUFBVWlXLElBQzNDL3hDLElBQU0sTUFDUyxJQUFUOG1CLEdBQWtCK3FCLEVBQVFqekMsUUFBUWd5QyxlQUNwQ2lCLEVBQVFqekMsUUFBUWd5QyxjQUFlLEVBQy9CSSxHQUFRdjRCLElBQVMsSUFDWkEsRUFDSG00QixjQUFjLE1BRWpCLEdBQ0EsQ0FBQzlwQixJQUNKLE1BQU1tckIsRUFBZS8xQyxFQUFNMGQsUUFBTyxHQUNsQzVaLElBQU0sS0FDSml5QyxFQUFhcnpDLFNBQVUsRUFDaEIsS0FDTHF6QyxFQUFhcnpDLFNBQVUsQ0FBSyxJQUU3QixJQUNIb0IsSUFBTSxLQUdKLEdBRkkyeEMsSUFBYUgsRUFBYTV5QyxRQUFVK3lDLEdBQ3BDQyxJQUFZRixFQUFZOXlDLFFBQVVnekMsR0FDbENELEdBQWVDLEVBQVksQ0FDN0IsR0FBSUUsRUFBd0JsekMsUUFDMUIsT0FBT2t6QyxFQUF3Qmx6QyxRQUFRK3lDLEVBQWFDLEVBQVloSCxHQUVoRUEsR0FFSCxJQUNBLENBQUMrRyxFQUFhQyxFQUFZaEgsRUFBUWtILElBQ3JDLE1BQU10ekMsRUFBT3RDLEVBQU0yRCxTQUFRLEtBQU8sQ0FDaEM2NkIsVUFBVzhXLEVBQ1g3VyxTQUFVK1csRUFDVkgsZUFDQUUsaUJBQ0UsQ0FBQ0YsRUFBY0UsSUFDYnovQixFQUFXOVYsRUFBTTJELFNBQVEsS0FBTyxDQUNwQzY2QixVQUFXaVgsRUFDWGhYLFNBQVVpWCxLQUNSLENBQUNELEVBQWFDLElBQ1pqQixFQUFpQnowQyxFQUFNMkQsU0FBUSxLQUNuQyxNQUFNc3lDLEVBQWdCLENBQ3BCenZCLFNBQVVvWixFQUNWcmYsS0FBTSxFQUNOQyxJQUFLLEdBRVAsSUFBSzFLLEVBQVMyb0IsU0FDWixPQUFPd1gsRUFFVCxNQUFNejVCLEVBQUlpMEIsR0FBVzM2QixFQUFTMm9CLFNBQVVsaUIsRUFBS0MsR0FDdkNzSyxFQUFJMnBCLEdBQVczNkIsRUFBUzJvQixTQUFVbGlCLEVBQUt1SyxHQUM3QyxPQUFJa1csRUFDSyxJQUNGaVosRUFDSGpaLFVBQVcsYUFBZXhnQixFQUFJLE9BQVNzSyxFQUFJLFNBQ3ZDeXBCLEdBQU96NkIsRUFBUzJvQixXQUFhLEtBQU8sQ0FDdEM2SyxXQUFZLGNBSVgsQ0FDTDlpQixTQUFVb1osRUFDVnJmLEtBQU0vRCxFQUNOZ0UsSUFBS3NHLEVBQ04sR0FDQSxDQUFDOFksRUFBVTVDLEVBQVdsbkIsRUFBUzJvQixTQUFVbGlCLEVBQUtDLEVBQUdELEVBQUt1SyxJQUN6RCxPQUFPOW1CLEVBQU0yRCxTQUFRLEtBQU8sSUFDdkI0WSxFQUNIbXlCLFNBQ0Fwc0MsT0FDQXdULFdBQ0EyK0Isb0JBQ0UsQ0FBQ2w0QixFQUFNbXlCLEVBQVFwc0MsRUFBTXdULEVBQVUyK0IsR0FDckMsQ0VoS2tKeUIsQ0FBbUIsQ0FFN0p0VyxTQUFVLFFBQ1Y1QixVQUFXc1csRUFDWE8scUJBQXNCc0IsR0FDdEJyZ0MsU0FBVSxDQUNOMG9CLFVBQVd4NkIsRUFBUW95QyxRQUV2Qmo2QixXQUFZLENBQ1JrNkIsR0FBYyxDQUNWelgsU0FBVXdVLEVBQWFpQixFQUN2Qm5PLGNBQWVvTixJQUVuQk8sR0FBbUJ5QyxHQUFhLENBQzVCMVgsVUFBVSxFQUNWdUUsV0FBVyxFQUNYbUQsUUFBb0IsWUFBWHFOLEVBQXVCNEMsVUFBc0JoeUMsS0FDbkRtL0IsSUFFUG1RLEdBQW1CMkMsR0FBWSxJQUN4QjlTLElBRVArUyxHQUFZLElBQ0wvUyxFQUNIbmxDLE1BQU8sRUFBR3VYLFNBQVVBLEVBQVc2cEIsTUFBT0EsRUFBUWlJLGVBQWdCQSxFQUFpQkQsZ0JBQWlCQSxNQUM1RixNQUFRcFksTUFBT21uQixFQUFjbG5CLE9BQVFtbkIsR0FBa0JoWCxFQUFNbkIsVUFDdkRvWSxFQUFlOWdDLEVBQVMyb0IsU0FBU252QixNQUN2Q3NuQyxFQUFhQyxZQUFZLGlDQUFrQyxHQUFHalAsT0FDOURnUCxFQUFhQyxZQUFZLGtDQUFtQyxHQUFHbFAsT0FDL0RpUCxFQUFhQyxZQUFZLDhCQUErQixHQUFHSCxPQUMzREUsRUFBYUMsWUFBWSwrQkFBZ0MsR0FBR0YsTUFBaUIsSUFHckYxVixHQUFTNlYsR0FBYSxDQUNsQi9nQyxRQUFTa3JCLEVBQ1Q5QixRQUFTb1UsSUFFYndELEdBQXNDLENBQ2xDM0MsV0FBWUEsRUFDWkMsWUFBYUEsSUFFakJULEdBQW9Cb0QsR0FBWSxDQUM1QnBYLFNBQVUsd0JBSWZxWCxFQUFZQyxHQUFlQyxHQUFtRG5aLEdBQy9Fb1osRUFBZUMsRUFBc0J2RCxHQUMzQ3dELEdBQXVCLEtBQ2Y1QyxJQUFjMEMsU0FBb0RBLElBQWMsR0FDckYsQ0FDQzFDLEVBQ0EwQyxJQUVKLE1BQU1HLEVBQTRELFFBQWxEekUsRUFBd0I5UCxFQUFlL0IsYUFBNkMsSUFBMUI2UixPQUFtQyxFQUFTQSxFQUFzQnQyQixFQUN0SWc3QixHQUE2RCxRQUFuRHpFLEVBQXlCL1AsRUFBZS9CLGFBQThDLElBQTNCOFIsT0FBb0MsRUFBU0EsRUFBdUJqc0IsRUFDekkyd0IsR0FBdUssS0FBOUYsUUFBbkR6RSxFQUF5QmhRLEVBQWUvQixhQUE4QyxJQUEzQitSLE9BQW9DLEVBQVNBLEVBQXVCN1EsZUFDcEp1VixHQUFlQyxJQUFvQjNELEVBQWVqdUMsV0FNekQsT0FMQXV4QyxHQUF1QixLQUNmMXJCLEdBQVMrckIsR0FBaUI3M0MsT0FBT29XLGlCQUFpQjBWLEdBQVNnc0IsT0FBTyxHQUN2RSxDQUNDaHNCLElBRWlCeW1CLEVBQUFBLGNBQXFCLE1BQU8sQ0FDN0NseUMsSUFBS21DLEVBQUtpekMsWUFDVixvQ0FBcUMsR0FDckNqbUMsTUFBTyxJQUNBbWxDLEVBQ0h6WCxVQUFXMFgsRUFBZUQsRUFBZXpYLFVBQVksc0JBRXJENmEsU0FBVSxjQUNWRCxPQUFRRixHQUNSLGtDQUFxQyxDQUM0QixRQUE1RHpFLEVBQXdCalEsRUFBZThVLHVCQUF1RCxJQUExQjdFLE9BQW1DLEVBQVNBLEVBQXNCejJCLEVBQ3pFLFFBQTdEMDJCLEVBQXlCbFEsRUFBZThVLHVCQUF3RCxJQUEzQjVFLE9BQW9DLEVBQVNBLEVBQXVCcHNCLEdBQzVJcG5CLEtBQUssTUFHWG96QixJQUFLeHhCLEVBQU13eEIsS0FDRXVmLEVBQUFBLGNBQXFCSSxHQUE2QyxDQUMvRWp2QyxNQUFPc3VDLEVBQ1BtRixXQUFZQSxFQUNaYyxjQUFlOUQsRUFDZnNELE9BQVFBLEVBQ1JDLE9BQVFBLEdBQ1JRLGdCQUFpQlAsSUFDSnBGLGdCQUFxQkMsRUFBaUJ4aUMsSUFBS3lpQyxFQUFxQyxDQUM3RixZQUFhMEUsRUFDYixhQUFjQyxHQUNmNXJCLEVBQWMsQ0FDYm5yQixJQUFLbU0sRUFDTGdELE1BQU8sSUFDQWdjLEVBQWFoYyxNQUdoQjJvQyxVQUFZdkQsT0FBd0Jud0MsRUFBVCxPQUUzQm01QixRQUEwRCxRQUFoRHlWLEVBQXVCblEsRUFBZXlDLFlBQTJDLElBQXpCME4sR0FBbUNBLEVBQXFCeE4sZ0JBQWtCLE9BQUlwaEMsT0FFbkosSUFRSDJ6QyxHQUFzQyxDQUN4QzEzQixJQUFLLFNBQ0xDLE1BQU8sT0FDUDJlLE9BQVEsTUFDUjdlLEtBQU0sU0EwQzJGLFNBQVNpMEIsR0FBZ0MveEMsR0FDMUksT0FBaUIsT0FBVkEsQ0FDWCxDQUNBLE1BQU1zMEMsR0FBeUMvNkIsSUFBVyxDQUNsRDdMLEtBQU0sa0JBQ042TCxRQUFTQSxFQUNUdXFCLEdBQUlocUIsR0FDQSxJQUFJNDdCLEVBQXdCQyxFQUF3QkMsRUFBd0JDLEVBQXdCQyxFQUNwRyxNQUFRdmEsVUFBV0EsRUFBWTJCLE1BQU9BLEVBQVFxRCxlQUFnQkEsR0FBb0J6bUIsRUFFNUVpOEIsRUFEdUssS0FBOUYsUUFBbkRMLEVBQXlCblYsRUFBZS9CLGFBQThDLElBQTNCa1gsT0FBb0MsRUFBU0EsRUFBdUJoVyxjQUVySmlTLEVBQWFvRSxFQUFnQixFQUFJeDhCLEVBQVFvNEIsV0FDekNDLEVBQWNtRSxFQUFnQixFQUFJeDhCLEVBQVFxNEIsYUFDekM0QyxFQUFZQyxHQUFlQyxHQUFtRG5aLEdBQy9FeWEsRUFBZSxDQUNqQi9WLE1BQU8sS0FDUFYsT0FBUSxNQUNSVyxJQUFLLFFBQ1B1VSxHQUNJd0IsR0FBaUwsUUFBaEtOLEVBQTZFLFFBQW5EQyxFQUF5QnJWLEVBQWUvQixhQUE4QyxJQUEzQm9YLE9BQW9DLEVBQVNBLEVBQXVCNzdCLFNBQTBDLElBQTNCNDdCLEVBQW9DQSxFQUF5QixHQUFLaEUsRUFBYSxFQUN4UXVFLEdBQWlMLFFBQWhLTCxFQUE2RSxRQUFuREMsRUFBeUJ2VixFQUFlL0IsYUFBOEMsSUFBM0JzWCxPQUFvQyxFQUFTQSxFQUF1Qnp4QixTQUEwQyxJQUEzQnd4QixFQUFvQ0EsRUFBeUIsR0FBS2pFLEVBQWMsRUFDL1EsSUFBSTczQixFQUFJLEdBQ0pzSyxFQUFJLEdBY1IsTUFibUIsV0FBZm13QixHQUNBejZCLEVBQUlnOEIsRUFBZ0JDLEVBQWUsR0FBR0MsTUFDdEM1eEIsR0FBUXV0QixFQUFKLE1BQ2tCLFFBQWY0QyxHQUNQejZCLEVBQUlnOEIsRUFBZ0JDLEVBQWUsR0FBR0MsTUFDdEM1eEIsRUFBSSxHQUFHNlksRUFBTWxCLFNBQVNqUCxPQUFTNmtCLE9BQ1QsVUFBZjRDLEdBQ1B6NkIsR0FBUTYzQixFQUFKLEtBQ0p2dEIsRUFBSTB4QixFQUFnQkMsRUFBZSxHQUFHRSxPQUNoQixTQUFmMUIsSUFDUHo2QixFQUFJLEdBQUdtakIsRUFBTWxCLFNBQVNsUCxNQUFROGtCLE1BQzlCdnRCLEVBQUkweEIsRUFBZ0JDLEVBQWUsR0FBR0UsT0FFbkMsQ0FDSHA4QixLQUFNLENBQ0ZDLEVBQUdBLEVBQ0hzSyxFQUFHQSxHQUdkLElBR1QsU0FBU3F3QixHQUFtRG5aLEdBQ3hELE1BQU93RSxFQUFNNlEsRUFBUSxVQUFZclYsRUFBVUMsTUFBTSxLQUNqRCxNQUFPLENBQ0h1RSxFQUNBNlEsRUFFUixDQUNBLE1BQU11RixHQS9RNkN0M0MsSUFDL0MsTUFBUXd3QyxjQUFlQSxFQUFnQnh4QyxTQUFVQSxHQUFjZ0IsR0FDeEQ4MEMsRUFBUXlDLEdBQWE3RSxFQUFlanVDLFNBQUMsTUFDNUMsT0FBcUJzc0MsRUFBQUEsY0FBcUJYLEdBQXNDLENBQzVFbHVDLE1BQU9zdUMsRUFDUHNFLE9BQVFBLEVBQ1JoRSxlQUFnQnlHLEdBQ2pCdjRDLEVBQVMsRUF5UVZ3NEMsR0FBNENsSCxHQUM1Q21ILEdBQTRDcEcsR0FDNUNxRyxHQS9GMERuSCxFQUFBQSxZQUFrQixTQUFtRHZ3QyxFQUFPeUcsR0FDeEksTUFBUStwQyxjQUFlQSxLQUFtQmhCLEdBQWV4dkMsRUFDbkQyM0MsRUFBaUJ2RyxHQVRtSCxjQVN6Q1osR0FDM0ZvSCxFQUFXaEIsR0FBb0NlLEVBQWVoQyxZQUNwRSxPQUdBNUUsRUFBQUEsY0FBcUIsT0FBUSxDQUN6Qmx5QyxJQUFLODRDLEVBQWVsQixjQUNwQnpvQyxNQUFPLENBQ0hrWCxTQUFVLFdBQ1ZqRyxLQUFNMDRCLEVBQWUxQixPQUNyQi8yQixJQUFLeTRCLEVBQWV6QixPQUNwQjBCLENBQUNBLEdBQVcsRUFDWnBCLGdCQUFpQixDQUNidDNCLElBQUssR0FDTEMsTUFBTyxNQUNQMmUsT0FBUSxXQUNSN2UsS0FBTSxVQUNSMDRCLEVBQWVoQyxZQUNqQmphLFVBQVcsQ0FDUHhjLElBQUssbUJBQ0xDLE1BQU8saURBQ1AyZSxPQUFRLGlCQUNSN2UsS0FBTSxrREFDUjA0QixFQUFlaEMsWUFDakI5Z0MsV0FBWThpQyxFQUFlakIsZ0JBQWtCLGNBQVd6ekMsSUFFL0M4dEMsRUFBb0Izd0MsY0FBQ3kzQyxHQUFhNUcsRUFBcUMsQ0FBQSxFQUFJekIsRUFBWSxDQUNwRzN3QyxJQUFLNEgsRUFDTHVILE1BQU8sSUFDQXdoQyxFQUFXeGhDLE1BRWQ4RyxRQUFTLFlBR3JCLElDbFBNZ2pDLEdBQTBEQyxFQUFpQnA1QyxZQUFDLENBQUNxQixFQUFPeUcsSUFDakV1eEMsRUFBQUEsY0FBcUJDLEVBQWlCNWpCLEtBQU02akIsRUFBcUMsQ0FBQSxFQUFJbDRDLEVBQU8sQ0FDN0duQixJQUFLNEgsRUFDTHVILE1BQU8sQ0FFSGtYLFNBQVUsV0FDVml6QixPQUFRLEVBQ1JscUIsTUFBTyxFQUNQQyxPQUFRLEVBQ1IyUCxRQUFTLEVBQ1R4QixRQUFTLEVBQ1RuYixTQUFVLFNBQ1ZrM0IsS0FBTSxtQkFDTkMsV0FBWSxTQUNaQyxTQUFVLFlBQ1B0NEMsRUFBTWdPLFlBT3NGdXFDLEdBQTRDVCxJQ0ZoSlUsR0FBNENDLElBQTZDQyxFQUEwQixVQUFXLENBQ2pJQyxLQUVFQyxHQUF1Q0QsS0FJdkNFLEdBQStDLElBQy9DQyxHQUFxQyxnQkFDcENDLEdBQXNEQyxJQUFtRFIsR0FIaUMsbUJBeUN0Q1MsR0FBcUMsV0FDeklDLEdBQThDQyxJQUEyQ1gsR0FBMkNTLElBd0ZoQ0csR0FBcUMsaUJBQzFJQyxHQUEwREMsRUFBaUIzNkMsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVE4eUMsZUFBZ0JBLEtBQW9CaGlCLEdBQWlCdjNCLEVBQ3ZEMEMsRUFBVXkyQyxHQUF3Q0MsR0FBb0NHLEdBQ3RGQyxFQUFrQlIsR0FBZ0RJLEdBQW9DRyxHQUN0R0UsRUFBY2IsR0FBcUNXLEdBRW5EdnVDLEVBQWUwdUMsRUFBdUJqekMsRUFEaENrekMsU0FBYyxNQUNxQ2ozQyxFQUFRazNDLGlCQUNqRUMsRUFBbUJGLFVBQWMsR0FDakNHLEVBQTBCSCxVQUFjLEdBQ3hDSSxFQUFrQkMsRUFBa0J4NEMsYUFBQyxJQUFJcTRDLEVBQWlCejRDLFNBQVUsR0FDeEUsSUFPRixPQU5BNjRDLEVBQUFBLFdBQWlCLElBQ04sSUFBSWoyQyxTQUFTc0ksb0JBQW9CLFlBQWF5dEMsSUFFdEQsQ0FDQ0EsSUFFaUJHLEVBQW9COTVDLGNBQUMrNUMsR0FBZUMsRUFBcUMsQ0FDMUZ2eEMsU0FBUyxHQUNWNHdDLEdBQTRCUyxFQUFBQSxjQUFxQkcsRUFBaUJuNkMsT0FBUWs2QyxFQUFxQyxDQUc5RyxtQkFBb0IxM0MsRUFBUTRtQixLQUFPNW1CLEVBQVFpcEIsZUFBWTFvQixFQUN2RCxhQUFjUCxFQUFRNDNDLGdCQUN2Qi9pQixFQUFjLENBQ2IxNEIsSUFBS21NLEVBQ0x1dkMsY0FBZUMsRUFBNEJ4NkMsRUFBTXU2QyxlQUFnQjE1QyxJQUNuQyxVQUF0QkEsRUFBTXdMLGNBQ0x5dEMsRUFBd0IxNEMsU0FBWW80QyxFQUFnQmlCLHNCQUFzQnI1QyxVQUMzRXNCLEVBQVFnNEMsaUJBQ1JaLEVBQXdCMTRDLFNBQVUsR0FDckMsSUFFTHU1QyxlQUFnQkgsRUFBNEJ4NkMsRUFBTTI2QyxnQkFBZ0IsS0FDOURqNEMsRUFBUWs0QyxpQkFDUmQsRUFBd0IxNEMsU0FBVSxDQUFLLElBRTNDeTVDLGNBQWVMLEVBQTRCeDZDLEVBQU02NkMsZUFBZSxLQUM1RGhCLEVBQWlCejRDLFNBQVUsRUFDM0I0QyxTQUFTdUksaUJBQWlCLFlBQWF3dEMsRUFBaUIsQ0FDcER2dEMsTUFBTSxHQUNSLElBRU5pbkIsUUFBUyttQixFQUE0Qng2QyxFQUFNeXpCLFNBQVMsS0FDM0NvbUIsRUFBaUJ6NEMsU0FBU3NCLEVBQVFvNEMsUUFBUSxJQUVuRC9tQixPQUFReW1CLEVBQTRCeDZDLEVBQU0rekIsT0FBUXJ4QixFQUFRcTRDLFNBQzFEOTdDLFFBQVN1N0MsRUFBNEJ4NkMsRUFBTWYsUUFBU3lELEVBQVFxNEMsWUFDNUQsSUFPbUdDLEdBQW9DLGlCQUN4SUMsR0FBc0NDLElBQTBDMUMsR0FBMkN3QyxHQUFtQyxDQUNqS3B5QixnQkFBWTNsQixJQW9CMkZrNEMsR0FBcUMsaUJBQzFJQyxHQUEwRDlCLEVBQWlCMzZDLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFNdWlCLEVBQWdCa3lCLEdBQXVDQyxHQUFvQ243QyxFQUFNdTVDLGlCQUMvRjN3QixXQUFZQSxFQUFhSSxFQUFjSixXQUFhc1ksS0FBTUEsRUFBTyxTQUFXbFgsR0FBaUJocUIsRUFDL0YwQyxFQUFVeTJDLEdBQXdDZ0MsR0FBb0NuN0MsRUFBTXU1QyxnQkFDbEcsT0FBcUJXLEVBQUFBLGNBQXFCbUIsRUFBaUIsQ0FDdkQ5a0MsUUFBU3FTLEdBQWNsbUIsRUFBUTRtQixNQUNoQzVtQixFQUFRNDRDLHdCQUF3Q3BCLGdCQUFxQnFCLEdBQTBDbkIsRUFBcUMsQ0FDbkpsWixLQUFNQSxHQUNQbFgsRUFBYyxDQUNibnJCLElBQUs0SCxLQUNXeXpDLEVBQUFBLGNBQXFCc0IsR0FBK0NwQixFQUFxQyxDQUN6SGxaLEtBQU1BLEdBQ1BsWCxFQUFjLENBQ2JuckIsSUFBSzRILEtBQ0wsSUFFRiswQyxHQUE4RGxDLEVBQWlCMzZDLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUMxRixNQUFNL0QsRUFBVXkyQyxHQUF3Q2dDLEdBQW9DbjdDLEVBQU11NUMsZ0JBQzVGQyxFQUFrQlIsR0FBZ0RtQyxHQUFvQ243QyxFQUFNdTVDLGdCQUM1RzE2QyxFQUFNODZDLFNBQWMsTUFDcEIzdUMsRUFBZTB1QyxFQUF1Qmp6QyxFQUFjNUgsSUFDbkQ0OEMsRUFBa0JDLEdBQXVCQyxFQUFlbDNDLFNBQUMsT0FDeERtM0MsUUFBU0EsRUFBVWIsUUFBU0EsR0FBYXI0QyxFQUMzQzRuQixFQUFVenJCLEVBQUl1QyxTQUNaeTZDLHlCQUEwQkEsR0FBOEJyQyxFQUMxRHNDLEVBQXdCOUIsRUFBQUEsYUFBbUIsS0FDN0MwQixFQUFvQixNQUNwQkcsR0FBeUIsRUFBTSxHQUNoQyxDQUNDQSxJQUVFRSxFQUF3Qi9CLEVBQUFBLGFBQW1CLENBQUNuNUMsRUFBT203QyxLQUNyRCxNQUFNaHBDLEVBQWdCblMsRUFBTW1TLGNBQ3RCaXBDLEVBQVksQ0FDZC9nQyxFQUFHcmEsRUFBTXloQixRQUNUa0QsRUFBRzNrQixFQUFNMGhCLFNBR1AyNUIsRUFvS2QsU0FBbURELEVBQVdFLEVBQVV0ZSxFQUFVLEdBQzlFLE1BQU1xZSxFQUFtQixHQUN6QixPQUFPQyxHQUNILElBQUssTUFDREQsRUFBaUJyK0MsS0FBSyxDQUNsQnFkLEVBQUcrZ0MsRUFBVS9nQyxFQUFJMmlCLEVBQ2pCclksRUFBR3kyQixFQUFVejJCLEVBQUlxWSxHQUNsQixDQUNDM2lCLEVBQUcrZ0MsRUFBVS9nQyxFQUFJMmlCLEVBQ2pCclksRUFBR3kyQixFQUFVejJCLEVBQUlxWSxJQUVyQixNQUNKLElBQUssU0FDRHFlLEVBQWlCcitDLEtBQUssQ0FDbEJxZCxFQUFHK2dDLEVBQVUvZ0MsRUFBSTJpQixFQUNqQnJZLEVBQUd5MkIsRUFBVXoyQixFQUFJcVksR0FDbEIsQ0FDQzNpQixFQUFHK2dDLEVBQVUvZ0MsRUFBSTJpQixFQUNqQnJZLEVBQUd5MkIsRUFBVXoyQixFQUFJcVksSUFFckIsTUFDSixJQUFLLE9BQ0RxZSxFQUFpQnIrQyxLQUFLLENBQ2xCcWQsRUFBRytnQyxFQUFVL2dDLEVBQUkyaUIsRUFDakJyWSxFQUFHeTJCLEVBQVV6MkIsRUFBSXFZLEdBQ2xCLENBQ0MzaUIsRUFBRytnQyxFQUFVL2dDLEVBQUkyaUIsRUFDakJyWSxFQUFHeTJCLEVBQVV6MkIsRUFBSXFZLElBRXJCLE1BQ0osSUFBSyxRQUNEcWUsRUFBaUJyK0MsS0FBSyxDQUNsQnFkLEVBQUcrZ0MsRUFBVS9nQyxFQUFJMmlCLEVBQ2pCclksRUFBR3kyQixFQUFVejJCLEVBQUlxWSxHQUNsQixDQUNDM2lCLEVBQUcrZ0MsRUFBVS9nQyxFQUFJMmlCLEVBQ2pCclksRUFBR3kyQixFQUFVejJCLEVBQUlxWSxJQUk3QixPQUFPcWUsQ0FDWCxDQTdNaUNFLENBQTBDSCxFQWtKMEIsU0FBbURJLEVBQU9wZSxHQUMzSixNQUFNL2UsRUFBTWUsS0FBS2tFLElBQUk4WixFQUFLL2UsSUFBTW05QixFQUFNNzJCLEdBQ2hDc1ksRUFBUzdkLEtBQUtrRSxJQUFJOFosRUFBS0gsT0FBU3VlLEVBQU03MkIsR0FDdENyRyxFQUFRYyxLQUFLa0UsSUFBSThaLEVBQUs5ZSxNQUFRazlCLEVBQU1uaEMsR0FDcEMrRCxFQUFPZ0IsS0FBS2tFLElBQUk4WixFQUFLaGYsS0FBT285QixFQUFNbmhDLEdBQ3hDLE9BQU8rRSxLQUFLc2YsSUFBSXJnQixFQUFLNGUsRUFBUTNlLEVBQU9GLElBQ2hDLEtBQUtBLEVBQ0QsTUFBTyxPQUNYLEtBQUtFLEVBQ0QsTUFBTyxRQUNYLEtBQUtELEVBQ0QsTUFBTyxNQUNYLEtBQUs0ZSxFQUNELE1BQU8sU0FDWCxRQUNJLE1BQU0sSUFBSTU2QixNQUFNLGVBRTVCLENBcEt5Qm81QyxDQUEwQ0wsRUFBV2pwQyxFQUFjODFCLDBCQUc5RXlULEVBZ1BkLFNBQXVDeE0sR0FDbkMsTUFBTXlNLEVBQVl6TSxFQUFPM2tDLFFBUXpCLE9BUEFveEMsRUFBVTNzQixNQUFLLENBQUMzVixFQUFHNFYsSUFDWDVWLEVBQUVnQixFQUFJNFUsRUFBRTVVLEdBQVcsRUFDZGhCLEVBQUVnQixFQUFJNFUsRUFBRTVVLEVBQVUsRUFDbEJoQixFQUFFc0wsRUFBSXNLLEVBQUV0SyxHQUFXLEVBQ25CdEwsRUFBRXNMLEVBQUlzSyxFQUFFdEssRUFBVSxFQUNmLElBSXBCLFNBQWdEdXFCLEdBQzVDLEdBQUlBLEVBQU9uekMsUUFBVSxFQUFHLE9BQU9tekMsRUFBTzNrQyxRQUN0QyxNQUFNcXhDLEVBQVksR0FDbEIsSUFBSSxJQUFJaGdELEVBQUksRUFBR0EsRUFBSXN6QyxFQUFPbnpDLE9BQVFILElBQUksQ0FDbEMsTUFBTUksRUFBSWt6QyxFQUFPdHpDLEdBQ2pCLEtBQU1nZ0QsRUFBVTcvQyxRQUFVLEdBQUUsQ0FDeEIsTUFBTTgvQyxFQUFJRCxFQUFVQSxFQUFVNy9DLE9BQVMsR0FDakMrL0MsRUFBSUYsRUFBVUEsRUFBVTcvQyxPQUFTLEdBQ3ZDLE1BQUs4L0MsRUFBRXhoQyxFQUFJeWhDLEVBQUV6aEMsSUFBTXJlLEVBQUUyb0IsRUFBSW0zQixFQUFFbjNCLEtBQU9rM0IsRUFBRWwzQixFQUFJbTNCLEVBQUVuM0IsSUFBTTNvQixFQUFFcWUsRUFBSXloQyxFQUFFemhDLElBQ25ELE1BRHVEdWhDLEVBQVVHLEtBRXpFLENBQ0RILEVBQVU1K0MsS0FBS2hCLEVBQ2xCLENBQ0Q0L0MsRUFBVUcsTUFDVixNQUFNQyxFQUFZLEdBQ2xCLElBQUksSUFBSUMsRUFBSy9NLEVBQU9uekMsT0FBUyxFQUFHa2dELEdBQU0sRUFBR0EsSUFBSyxDQUMxQyxNQUFNamdELEVBQUlrekMsRUFBTytNLEdBQ2pCLEtBQU1ELEVBQVVqZ0QsUUFBVSxHQUFFLENBQ3hCLE1BQU04L0MsRUFBSUcsRUFBVUEsRUFBVWpnRCxPQUFTLEdBQ2pDKy9DLEVBQUlFLEVBQVVBLEVBQVVqZ0QsT0FBUyxHQUN2QyxNQUFLOC9DLEVBQUV4aEMsRUFBSXloQyxFQUFFemhDLElBQU1yZSxFQUFFMm9CLEVBQUltM0IsRUFBRW4zQixLQUFPazNCLEVBQUVsM0IsRUFBSW0zQixFQUFFbjNCLElBQU0zb0IsRUFBRXFlLEVBQUl5aEMsRUFBRXpoQyxJQUNuRCxNQUR1RDJoQyxFQUFVRCxLQUV6RSxDQUNEQyxFQUFVaC9DLEtBQUtoQixFQUNsQixDQUVELE9BREFnZ0QsRUFBVUQsTUFDZSxJQUFyQkgsRUFBVTcvQyxRQUFxQyxJQUFyQmlnRCxFQUFVamdELFFBQWdCNi9DLEVBQVUsR0FBR3ZoQyxJQUFNMmhDLEVBQVUsR0FBRzNoQyxHQUFLdWhDLEVBQVUsR0FBR2ozQixJQUFNcTNCLEVBQVUsR0FBR3IzQixFQUFVaTNCLEVBQzNIQSxFQUFVbDhCLE9BQU9zOEIsRUFDakMsQ0E5QldFLENBQXVDUCxFQUNsRCxDQTFQMEJRLENBQThCLElBQ3pDZCxLQTJNZixTQUFpRGplLEdBQzdDLE1BQVEvZSxJQUFLQSxFQUFNQyxNQUFPQSxFQUFRMmUsT0FBUUEsRUFBUzdlLEtBQU1BLEdBQVVnZixFQUNuRSxNQUFPLENBQ0gsQ0FDSS9pQixFQUFHK0QsRUFDSHVHLEVBQUd0RyxHQUVQLENBQ0loRSxFQUFHaUUsRUFDSHFHLEVBQUd0RyxHQUVQLENBQ0loRSxFQUFHaUUsRUFDSHFHLEVBQUdzWSxHQUVQLENBQ0k1aUIsRUFBRytELEVBQ0h1RyxFQUFHc1ksR0FHZixDQWpPa0NtZixDQUF3Q2pCLEVBQVlsVCwyQkFLOUU0UyxFQUFvQmEsR0FDcEJWLEdBQXlCLEVBQUssR0FDL0IsQ0FDQ0EsSUFzREosT0FwREE1QixFQUFBQSxXQUFpQixJQUNOLElBQUk2QixLQUVaLENBQ0NBLElBRUo3QixFQUFBQSxXQUFpQixLQUNiLEdBQUkyQixHQUFXdHhCLEVBQVMsQ0FDcEIsTUFBTTR5QixFQUFzQnI4QyxHQUFRazdDLEVBQXNCbDdDLEVBQU95cEIsR0FFM0Q2eUIsRUFBc0J0OEMsR0FBUWs3QyxFQUFzQmw3QyxFQUFPKzZDLEdBSWpFLE9BRkFBLEVBQVFydkMsaUJBQWlCLGVBQWdCMndDLEdBQ3pDNXlCLEVBQVEvZCxpQkFBaUIsZUFBZ0I0d0MsR0FDbEMsS0FDSHZCLEVBQVF0dkMsb0JBQW9CLGVBQWdCNHdDLEdBQzVDNXlCLEVBQVFoZSxvQkFBb0IsZUFBZ0I2d0MsRUFBbUIsQ0FFdEUsSUFDRixDQUNDdkIsRUFDQXR4QixFQUNBeXhCLEVBQ0FELElBRUo3QixFQUFBQSxXQUFpQixLQUNiLEdBQUl3QixFQUFrQixDQUNsQixNQUFNMkIsRUFBMkJ2OEMsSUFDN0IsTUFBTU4sRUFBU00sRUFBTU4sT0FDZjg4QyxFQUFrQixDQUNwQm5pQyxFQUFHcmEsRUFBTXloQixRQUNUa0QsRUFBRzNrQixFQUFNMGhCLFNBRVArNkIsR0FBb0IxQixhQUF5QyxFQUFTQSxFQUFRM3VDLFNBQVMxTSxNQUFhK3BCLGFBQXlDLEVBQVNBLEVBQVFyZCxTQUFTMU0sSUFDdktnOUMsR0F1THRCLFNBQWdEbEIsRUFBT21CLEdBQ25ELE1BQVF0aUMsRUFBR0EsRUFBSXNLLEVBQUdBLEdBQU82MkIsRUFDekIsSUFBSW9CLEdBQVMsRUFDYixJQUFJLElBQUloaEQsRUFBSSxFQUFHaWhELEVBQUlGLEVBQVE1Z0QsT0FBUyxFQUFHSCxFQUFJK2dELEVBQVE1Z0QsT0FBUThnRCxFQUFJamhELElBQUksQ0FDL0QsTUFBTWtoRCxFQUFLSCxFQUFRL2dELEdBQUd5ZSxFQUNoQjBpQyxFQUFLSixFQUFRL2dELEdBQUcrb0IsRUFDaEJxNEIsRUFBS0wsRUFBUUUsR0FBR3hpQyxFQUNoQjRpQyxFQUFLTixFQUFRRSxHQUFHbDRCLEVBQ0pvNEIsRUFBS3A0QixHQUFNczRCLEVBQUt0NEIsR0FBS3RLLEdBQUsyaUMsRUFBS0YsSUFBT240QixFQUFJbzRCLElBQU9FLEVBQUtGLEdBQU1ELElBQy9ERixHQUFVQSxFQUM1QixDQUNELE9BQU9BLENBQ1gsQ0FuTW1ETSxDQUF1Q1YsRUFBaUI1QixHQUN2RjZCLEVBQWtCeEIsSUFDYnlCLElBQ0x6QixJQUNBZixJQUNILEVBR0wsT0FEQS8yQyxTQUFTdUksaUJBQWlCLGNBQWU2d0MsR0FDbEMsSUFBSXA1QyxTQUFTc0ksb0JBQW9CLGNBQWU4d0MsRUFFMUQsSUFDRixDQUNDeEIsRUFDQXR4QixFQUNBbXhCLEVBQ0FWLEVBQ0FlLElBRWlCNUIsRUFBb0I5NUMsY0FBQ203QyxHQUEwQ25CLEVBQXFDLENBQUEsRUFBSXA2QyxFQUFPLENBQ2hJbkIsSUFBS21NLElBQ04sS0FFQWd6QyxHQUE0REMsSUFBeUR6RixHQUEyQ1MsR0FBb0MsQ0FDdk1pRixVQUFVLElBRVIzQyxHQUF5RGpDLEVBQWlCMzZDLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUNyRixNQUFROHlDLGVBQWdCQSxFQUFpQnY2QyxTQUFVQSxFQUFXLGFBQWNtL0MsRUFBWS96QyxnQkFBaUJBLEVBQWtCQyxxQkFBc0JBLEtBQTBCMmYsR0FBaUJocUIsRUFDdEwwQyxFQUFVeTJDLEdBQXdDZ0MsR0FBb0M1QixHQUN0RkUsRUFBY2IsR0FBcUNXLElBQ2pEd0IsUUFBU0EsR0FBYXI0QyxFQTBCOUIsT0F6QkF1M0MsRUFBQUEsV0FBaUIsS0FDYmoyQyxTQUFTdUksaUJBQWlCdXNDLEdBQW9DaUMsR0FDdkQsSUFBSS8yQyxTQUFTc0ksb0JBQW9Cd3NDLEdBQW9DaUMsS0FFN0UsQ0FDQ0EsSUFFSmQsRUFBQUEsV0FBaUIsS0FDYixHQUFJdjNDLEVBQVFrNUMsUUFBUyxDQUNqQixNQUFNeDJCLEVBQWdCdmtCLElBQ2xCLE1BQU1OLEVBQVNNLEVBQU1OLE9BQ2pCQSxTQUF3Q0EsRUFBTzBNLFNBQVN2SyxFQUFRazVDLFVBQVViLEdBQVMsRUFLM0YsT0FIQXY4QyxPQUFPK04saUJBQWlCLFNBQVU2WSxFQUFjLENBQzVDZzVCLFNBQVMsSUFFTixJQUFJNS9DLE9BQU84TixvQkFBb0IsU0FBVThZLEVBQWMsQ0FDdERnNUIsU0FBUyxHQUdwQixJQUNGLENBQ0MxN0MsRUFBUWs1QyxRQUNSYixJQUVpQmIsRUFBQUEsY0FBcUJtRSxFQUF5QixDQUMvRHgxQyxTQUFTLEVBQ1RzQiw2QkFBNkIsRUFDN0JDLGdCQUFpQkEsRUFDakJDLHFCQUFzQkEsRUFDdEJDLGVBQWlCekosR0FBUUEsRUFBTWlOLGlCQUUvQnRELFVBQVd1d0MsR0FDRWIsRUFBb0I5NUMsY0FBQ2srQyxHQUFnQmxFLEVBQXFDLENBQ3ZGLGFBQWMxM0MsRUFBUTQzQyxnQkFDdkJiLEVBQWF6dkIsRUFBYyxDQUMxQm5yQixJQUFLNEgsRUFDTHVILE1BQU8sSUFDQWdjLEVBQWFoYyxNQUNoQiwyQ0FBNEMsdUNBQzVDLDBDQUEyQyxzQ0FDM0MsMkNBQTRDLHVDQUM1QyxnQ0FBaUMsbUNBQ2pDLGlDQUFrQyx1Q0FFeEJrc0MsRUFBb0I5NUMsY0FBQ20rQyxFQUFrQixLQUFNdi9DLEdBQXlCazdDLEVBQW9COTVDLGNBQUM0OUMsR0FBNEQsQ0FDcks5N0MsTUFBT3EzQyxFQUNQMkUsVUFBVSxHQUNHaEUsRUFBQUEsY0FBcUJzRSxHQUFjLENBQ2hEajZDLEdBQUk3QixFQUFRaXBCLFVBQ1pELEtBQU0sV0FDUHl5QixHQUFhbi9DLEtBQVksSUE0SmhDLE1BQU15L0MsR0E3Z0I2Q3orQyxJQUMvQyxNQUFRdTVDLGVBQWdCQSxFQUFpQm1GLGNBQWVBLEVBQWdCN0YsR0FBK0M4RixrQkFBbUJBLEVBQW9CLElBQU1yRCx3QkFBeUJBLEdBQTBCLEVBQVF0OEMsU0FBVUEsR0FBY2dCLEdBQ2hQNCtDLEVBQWVDLEdBQW9CbEQsRUFBZWwzQyxVQUFDLEdBQ3BEZzJDLEVBQXdCZCxVQUFjLEdBQ3RDbUYsRUFBb0JuRixTQUFjLEdBTXhDLE9BTEFNLEVBQUFBLFdBQWlCLEtBQ2IsTUFBTThFLEVBQWlCRCxFQUFrQjE5QyxRQUN6QyxNQUFPLElBQUk1QyxPQUFPbU8sYUFBYW95QyxFQUM5QixHQUNGLElBQ2tCN0UsRUFBQUEsY0FBcUJuQixHQUFzRCxDQUM1RjcyQyxNQUFPcTNDLEVBQ1BxRixjQUFlQSxFQUNmRixjQUFlQSxFQUNmNUQsT0FBUWQsRUFBa0J4NEMsYUFBQyxLQUN2QmhELE9BQU9tTyxhQUFhbXlDLEVBQWtCMTlDLFNBQ3RDeTlDLEdBQWlCLEVBQU0sR0FDeEIsSUFDSDlELFFBQVNmLEVBQWtCeDRDLGFBQUMsS0FDeEJoRCxPQUFPbU8sYUFBYW15QyxFQUFrQjE5QyxTQUN0QzA5QyxFQUFrQjE5QyxRQUFVNUMsT0FBT2tPLFlBQVcsSUFBSW15QyxHQUFpQixJQUNqRUYsRUFBa0IsR0FDckIsQ0FDQ0EsSUFFSmxFLHNCQUF1QkEsRUFDdkJvQix5QkFBMEI3QixFQUFBQSxhQUFvQmdGLElBQzFDdkUsRUFBc0JyNUMsUUFBVTQ5QyxDQUFTLEdBQzFDLElBQ0gxRCx3QkFBeUJBLEdBQzFCdDhDLEVBQVMsRUFnZlZpZ0QsR0F2ZTZDai9DLElBQy9DLE1BQVF1NUMsZUFBZ0JBLEVBQWlCdjZDLFNBQVVBLEVBQVdzcUIsS0FBTXdELEVBQVdDLFlBQWFBLEdBQWMsRUFBUWpCLGFBQWNBLEVBQWV3dkIsd0JBQXlCNEQsRUFBOEJSLGNBQWVTLEdBQXVCbi9DLEVBQ3RPdzVDLEVBQWtCUixHQUFnREMsR0FBb0NqNUMsRUFBTXU1QyxnQkFDNUdFLEVBQWNiLEdBQXFDVyxJQUNsRHFDLEVBQVN3RCxHQUFjekQsRUFBZWwzQyxTQUFDLE1BQ3hDa25CLEVBQVkwekIsSUFDWkMsRUFBZTNGLFNBQWMsR0FDN0IyQixFQUEwQjRELFFBQWlGQSxFQUE4QjFGLEVBQWdCOEIsd0JBQ3pKb0QsRUFBZ0JTLFFBQTZEQSxFQUFvQjNGLEVBQWdCa0YsY0FDakhhLEVBQW9CNUYsVUFBYyxJQUNqQzZGLEdBQVEsRUFBT3h5QixHQUFXeXlCLEVBQTRCLENBQ3pEbjZDLEtBQU13bkIsRUFDTnZuQixZQUFhd25CLEVBQ2J2bkIsU0FBVzhqQixJQUNIQSxHQUNBa3dCLEVBQWdCc0IsU0FFaEI5MkMsU0FBUzRLLGNBQWMsSUFBSUQsWUFBWW1xQyxNQUNwQ1UsRUFBZ0J1QixVQUN2Qmp2QixTQUFvREEsRUFBYXhDLEVBQUssSUFHeEVneEIsRUFBaUJvRixFQUFBQSxTQUFlLElBQzNCRixFQUFRRCxFQUFrQm4rQyxRQUFVLGVBQWlCLGVBQWlCLFVBQzlFLENBQ0NvK0MsSUFFRUcsRUFBYTNGLEVBQUFBLGFBQW1CLEtBQ2xDeDdDLE9BQU9tTyxhQUFhMnlDLEVBQWFsK0MsU0FDakNtK0MsRUFBa0JuK0MsU0FBVSxFQUM1QjRyQixHQUFRLEVBQUssR0FDZCxDQUNDQSxJQUVFNHlCLEVBQWM1RixFQUFBQSxhQUFtQixLQUNuQ3g3QyxPQUFPbU8sYUFBYTJ5QyxFQUFhbCtDLFNBQ2pDNHJCLEdBQVEsRUFBTSxHQUNmLENBQ0NBLElBRUU2eUIsRUFBb0I3RixFQUFBQSxhQUFtQixLQUN6Q3g3QyxPQUFPbU8sYUFBYTJ5QyxFQUFhbCtDLFNBQ2pDaytDLEVBQWFsK0MsUUFBVTVDLE9BQU9rTyxZQUFXLEtBQ3JDNnlDLEVBQWtCbitDLFNBQVUsRUFDNUI0ckIsR0FBUSxFQUFLLEdBQ2QweEIsRUFBYyxHQUNsQixDQUNDQSxFQUNBMXhCLElBTUosT0FKQWl0QixFQUFBQSxXQUFpQixJQUNOLElBQUl6N0MsT0FBT21PLGFBQWEyeUMsRUFBYWwrQyxVQUU3QyxJQUNrQjg0QyxFQUFvQjk1QyxjQUFDMC9DLEdBQWFyRyxFQUEyQlMsRUFBQUEsY0FBcUJoQixHQUE4QyxDQUNqSmgzQyxNQUFPcTNDLEVBQ1A1dEIsVUFBV0EsRUFDWHJDLEtBQU1rMkIsRUFDTmxGLGVBQWdCQSxFQUNoQnNCLFFBQVNBLEVBQ1RoQyxnQkFBaUJ3RixFQUNqQjFFLGVBQWdCVixFQUFrQng0QyxhQUFDLEtBQzNCZzRDLEVBQWdCb0YsY0FBZWlCLElBQzlCRixHQUFZLEdBQ2xCLENBQ0NuRyxFQUFnQm9GLGNBQ2hCaUIsRUFDQUYsSUFFSi9FLGVBQWdCWixFQUFrQng0QyxhQUFDLEtBQzNCODVDLEVBQXlCc0UsSUFFN0JwaEQsT0FBT21PLGFBQWEyeUMsRUFBYWwrQyxRQUFRLEdBQzFDLENBQ0N3K0MsRUFDQXRFLElBRUpSLE9BQVE2RSxFQUNSNUUsUUFBUzZFLEVBQ1R0RSx3QkFBeUJBLEdBQzFCdDhDLEdBQVUsRUF3WlgrZ0QsR0FBNEMxRyxHQUM1QzJHLEdBdFY2Q2hnRCxJQUMvQyxNQUFRdTVDLGVBQWdCQSxFQUFpQjN3QixXQUFZQSxFQUFhNXBCLFNBQVVBLEVBQVcrVCxVQUFXQSxHQUFlL1MsRUFDM0cwQyxFQUFVeTJDLEdBQXdDNkIsR0FBbUN6QixHQUMzRixPQUFxQlcsRUFBQUEsY0FBcUJlLEdBQXNDLENBQzVFLzRDLE1BQU9xM0MsRUFDUDN3QixXQUFZQSxHQUNDc3hCLEVBQUFBLGNBQXFCbUIsRUFBaUIsQ0FDbkQ5a0MsUUFBU3FTLEdBQWNsbUIsRUFBUTRtQixNQUNsQjR3QixFQUFBQSxjQUFxQitGLEVBQWUsQ0FDakRwM0MsU0FBUyxFQUNUa0ssVUFBV0EsR0FDWi9ULElBQVcsRUE0VVpraEQsR0FBNEM5RSxHQUM1QytFLEdBekowRDdHLEVBQWlCMzZDLFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFROHlDLGVBQWdCQSxLQUFvQi9KLEdBQWV4dkMsRUFDckR5NUMsRUFBY2IsR0FBcUNXLEdBR3pELE9BRnFDMEUsR0FKcUcsZUFJYjFFLEdBRXpGMkUsU0FBVyxLQUFxQmhFLEVBQW9COTVDLGNBQUNnZ0QsR0FBY2hHLEVBQXFDLENBQUEsRUFBSVgsRUFBYWpLLEVBQVksQ0FDckszd0MsSUFBSzRILElBQ04sOEVDeGFQLFNBQVM0NUMsR0FBMENsL0MsR0FBUW8rQixFQUFLcmYsSUFDNUQsT0FBT0QsS0FBS3NmLElBQUlyZixFQUFLRCxLQUFLQyxJQUFJcWYsRUFBS3ArQixHQUN2QyxDQ2dEQSxNQUFNbS9DLEdBQWtDLENBQ3BDLElBQ0EsUUFDQSxVQUNBLGFBRUVDLEdBQXVDLENBQ3pDLElBQ0EsU0FJdUdDLEdBQW9DLFVBQ3hJQyxHQUFrQ0MsR0FBcUNDLElBQStDQyxHQUF3QkosS0FDOUlLLEdBQTJDQyxJQUE2Q0MsRUFBMEJQLEdBQW1DLENBQ3hKRyxHQUNBSyxLQUVFQyxHQUF1Q0QsTUFDdENFLEdBQXNDQyxJQUEwQ04sR0FBMENMLEtBQzFIWSxHQUFtREMsSUFBdURSLEdBQTBDTCxJQWlGckpjLEdBQXlEQyxFQUFpQjVpRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDckYsTUFBUSs2QyxjQUFlQSxFQUFnQnppRCxTQUFVQSxHQUFXLEtBQVd3NEIsR0FBaUJ2M0IsRUFDbEZ5NUMsRUFBY3dILEdBQXFDTyxHQUNuRDkrQyxFQUFVeStDLEdBSjRILGdCQUlqREssR0FDckZDLEVBQWEvK0MsRUFBUTNELFVBQVlBLEVBQ2pDaU0sRUFBZTAyQyxFQUF1Qmo3QyxFQUFjL0QsRUFBUWszQyxpQkFDNURubkIsRUFBV2l1QixHQUFvQ2MsSUFDOUNHLEVBQVdDLEVBQXVCQyxHQUFrQkMsSUFBMENDLElBQ2pHLE1BQU1DLEVBQWV2dkIsSUFBV2pxQixRQUFROEosSUFBUUEsRUFBS3ZULFdBRS9Da2pELEVBQWNELEVBQWFqN0MsTUFBTXVMLEdBQU9BLEVBQUtuUixRQUFVdUIsRUFBUXZCLFFBRS9EK2dELEVBQVdDLEdBQW1DSCxFQUFjRCxFQUFRRSxRQUN6RGgvQyxJQUFiaS9DLEdBQXdCeC9DLEVBQVE4ekIsY0FBYzByQixFQUFTL2dELE1BQU0sSUFFL0R3K0MsRUFBYSxLQUNWOEIsSUFDRC8rQyxFQUFRb3BCLGNBQWEsR0FDckIrMUIsSUFDSCxFQUVMLE9BQXFCTyxFQUFvQmhpRCxjQUFDaWlELEdBQWVDLEVBQXFDLENBQzFGejVDLFNBQVMsR0FDVjR3QyxHQUE0QjJJLEVBQUFBLGNBQXFCRyxFQUFpQnJpRCxPQUFRb2lELEVBQXFDLENBQzlHL2lELEtBQU0sU0FDTm1zQixLQUFNLFdBQ04sZ0JBQWlCaHBCLEVBQVFpcEIsVUFDekIsZ0JBQWlCanBCLEVBQVE0bUIsS0FDekIsZ0JBQWlCNW1CLEVBQVEwM0IsU0FDekIsb0JBQXFCLE9BQ3JCNUksSUFBSzl1QixFQUFROHVCLElBQ2IsYUFBYzl1QixFQUFRNG1CLEtBQU8sT0FBUyxTQUN0Q3ZxQixTQUFVMGlELEVBQ1YsZ0JBQWlCQSxFQUFhLFFBQUt4K0MsRUFDbkMsd0JBQXNDQSxJQUFsQlAsRUFBUXZCLE1BQXNCLFFBQUs4QixHQUN4RHMwQixFQUFjLENBQ2IxNEIsSUFBS21NLEVBRUwvTCxRQUFTdWpELEVBQTRCanJCLEVBQWF0NEIsU0FBVTRCLElBTXhEQSxFQUFNbVMsY0FBY2dDLE9BQU8sSUFFL0I2bEMsY0FBZTJILEVBQTRCanJCLEVBQWFzakIsZUFBZ0JoNkMsSUFHcEUsTUFBTU4sRUFBU00sRUFBTU4sT0FDakJBLEVBQU9raUQsa0JBQWtCNWhELEVBQU02aEQsWUFBWW5pRCxFQUFPb2lELHNCQUFzQjloRCxFQUFNNmhELFdBRzdELElBQWpCN2hELEVBQU1YLFNBQWtDLElBQWxCVyxFQUFNZ1MsVUFDNUI4c0MsSUFDQWo5QyxFQUFRa2dELHlCQUF5QnhoRCxRQUFVLENBQ3ZDOFosRUFBRytFLEtBQUtvb0IsTUFBTXhuQyxFQUFNZ2lELE9BQ3BCcjlCLEVBQUd2RixLQUFLb29CLE1BQU14bkMsRUFBTWlpRCxRQUV4QmppRCxFQUFNaU4saUJBQ1QsSUFFTDZGLFVBQVc2dUMsRUFBNEJqckIsRUFBYTVqQixXQUFZOVMsSUFDNUQsTUFBTWtpRCxFQUFzQyxLQUF0QnBCLEVBQVV2Z0QsUUFDVlAsRUFBTWdTLFNBQVdoUyxFQUFNK1IsUUFBVS9SLEVBQU1pUyxTQUNsQixJQUFyQmpTLEVBQU0xQyxJQUFJdkIsUUFBY2dsRCxFQUFzQi9nRCxFQUFNMUMsS0FDdEU0a0QsR0FBK0IsTUFBZGxpRCxFQUFNMUMsS0FDdkJtaUQsR0FBZ0NwaUQsU0FBUzJDLEVBQU0xQyxPQUMvQ3doRCxJQUNBOStDLEVBQU1pTixpQkFDVCxPQUVMLElBUUZrMUMsR0FBMER6QixFQUFpQjVpRCxZQUFDLENBQUNxQixFQUFPeUcsS0FFdEYsTUFBUSs2QyxjQUFlQSxFQUFnQjNoRCxVQUFXQSxFQUFZbU8sTUFBT0EsRUFBUWhQLFNBQVVBLEVBQVdpa0QsWUFBYUEsS0FBaUJDLEdBQWVsakQsRUFDekkwQyxFQUFVeStDLEdBSjBILGNBSWpESyxJQUNqRjJCLDZCQUE4QkEsR0FBa0N6Z0QsRUFDbEUwZ0QsT0FBMkJuZ0QsSUFBYmpFLEVBQ2RnTSxFQUFlMDJDLEVBQXVCajdDLEVBQWMvRCxFQUFRMmdELG1CQU9sRSxPQU5BQyxHQUF1QixLQUNuQkgsRUFBNkJDLEVBQVksR0FDMUMsQ0FDQ0QsRUFDQUMsSUFFaUJoQixFQUFBQSxjQUFxQkcsRUFBaUJsdUIsS0FBTWl1QixFQUFxQyxDQUFBLEVBQUlZLEVBQVksQ0FDbEhya0QsSUFBS21NLEVBRUxnRCxNQUFPLENBQ0hDLGNBQWUsZUFFRGhMLElBQWxCUCxFQUFRdkIsWUFBdUM4QixJQUFoQmdnRCxFQUE0QkEsRUFBY2prRCxFQUFTLElBUXBGdWtELEdBQTBEaEMsRUFBaUI1aUQsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVErNkMsY0FBZUEsRUFBZ0J4aUQsU0FBVUEsS0FBY3drRCxHQUFjeGpELEVBQzdFLE9BQXFCb2lELGdCQUFxQkcsRUFBaUJsdUIsS0FBTWl1QixFQUFxQyxDQUNsRyxlQUFlLEdBQ2hCa0IsRUFBVyxDQUNWM2tELElBQUs0SCxJQUNMekgsR0FBWSxJQUFJLElBa0JtRnlrRCxHQUFxQyxnQkFDMUlDLEdBQTBEbkMsRUFBaUI1aUQsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQU0vRCxFQUFVeStDLEdBQXVDc0MsR0FBb0N6akQsRUFBTXdoRCxnQkFDMUZtQyxFQUFVQyxHQUFlQyxFQUFlcC9DLFdBSS9DLEdBSEE2K0MsR0FBdUIsS0FDbkJNLEVBQVksSUFBSUUsaUJBQW1CLEdBQ3BDLEtBQ0VwaEQsRUFBUTRtQixLQUFNLENBQ2YsTUFBTXk2QixFQUFPSixFQUNiLE9BQU9JLEVBQXFCQyxFQUFBQSxhQUFrQzVCLEVBQW9CaGlELGNBQUM2akQsR0FBNkMsQ0FDNUgvaEQsTUFBT2xDLEVBQU13aEQsZUFDQVksRUFBb0JoaUQsY0FBQ3FnRCxHQUFpQ254QixLQUFNLENBQ3pFcHRCLE1BQU9sQyxFQUFNd2hELGVBQ0FZLEVBQW9CaGlELGNBQUMsTUFBTyxLQUFNSixFQUFNaEIsWUFBYStrRCxHQUFRLElBQ2pGLENBQ0QsT0FBcUIzQixFQUFvQmhpRCxjQUFDOGpELEdBQXlDNUIsRUFBcUMsQ0FBQSxFQUFJdGlELEVBQU8sQ0FDL0huQixJQUFLNEgsSUFDTixJQU9vRzA5QyxHQUF1QyxJQUMzSUYsR0FBNkNHLElBQWlEdkQsR0FBMEM0QyxJQUV6SVMsR0FBd0QzQyxFQUFpQjVpRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDcEYsTUFBUSs2QyxjQUFlQSxFQUFnQnQ4QixTQUFVQSxFQUFXLGVBQWlCd0YsaUJBQWtCQSxFQUFtQnRnQixnQkFBaUJBLEVBQWtCQyxxQkFBc0JBLEVBQXVCNjJCLEtBRWxNQSxFQUFPNFEsV0FBWUEsRUFBYUMsTUFBT0EsRUFBUUMsWUFBYUEsRUFBY0MsYUFBY0EsRUFBZUMsa0JBQW1CQSxFQUFvQkMsaUJBQWtCQSxFQUFtQkUsT0FBUUEsRUFBU0MsaUJBQWtCQSxFQUFtQkMsZ0JBQWlCQSxLQUN2UHZvQixHQUFpQmhxQixFQUNkMEMsRUFBVXkrQyxHQUF1Q3NDLEdBQW9DakMsSUFDcEZsM0IsRUFBU21vQixHQUFjb1IsRUFBZXAvQyxTQUFDLE9BQ3ZDNC9DLEVBQVVDLEdBQWVULEVBQWVwL0MsU0FBQyxNQUMxQ3VHLEVBQWUwMkMsRUFBdUJqN0MsR0FBZXhGLEdBQU93eEMsRUFBV3h4QyxNQUV0RXNqRCxFQUFjQyxHQUFtQlgsRUFBZXAvQyxTQUFDLE9BQ2pEZ2dELEVBQWtCQyxHQUF1QmIsRUFBZXAvQyxTQUFDLE1BQzFEZ3VCLEVBQVdpdUIsR0FBb0NjLElBQzlDcE8sRUFBY3VSLEdBQW1CZCxFQUFlcC9DLFVBQUMsR0FDbERtZ0QsRUFBeUJDLFVBQWMsR0FDN0NDLEVBQUFBLFdBQWlCLEtBQ2IsR0FBSXg2QixFQUFTLE9BQU95NkIsR0FBa0J6NkIsRUFBUSxHQUMvQyxDQUNDQSxJQUdKMDZCLElBQ0EsTUFBTUMsRUFBYUMsZUFBb0JqekMsSUFDbkMsTUFBT2t6QyxLQUFjQyxHQUFhM3lCLElBQVcxd0IsS0FBS3VRLEdBQU9BLEVBQUt6VCxJQUFJdUMsV0FFM0Rpa0QsR0FBWUQsRUFBVWg2QyxPQUFPLEdBQzlCa3FCLEVBQTZCdHhCLFNBQVNxTixjQUM1QyxJQUFLLE1BQU1hLEtBQWFELEVBQVcsQ0FFL0IsR0FBSUMsSUFBY29qQixFQUE0QixPQU85QyxHQU5BcGpCLFNBQThDQSxFQUFVb3pDLGVBQWUsQ0FDbkVDLE1BQU8sWUFFUHJ6QyxJQUFjaXpDLEdBQWFkLElBQVVBLEVBQVN2aUMsVUFBWSxHQUMxRDVQLElBQWNtekMsR0FBWWhCLElBQVVBLEVBQVN2aUMsVUFBWXVpQyxFQUFTdGlDLGNBQ3RFN1AsU0FBOENBLEVBQVU4QyxRQUNwRGhSLFNBQVNxTixnQkFBa0Jpa0IsRUFBNEIsTUFDOUQsSUFDRixDQUNDN0MsRUFDQTR4QixJQUVFbUIsRUFBb0JOLGVBQW1CLElBQUlELEVBQVcsQ0FDcERWLEVBQ0FqNkIsS0FFTixDQUNFMjZCLEVBQ0FWLEVBQ0FqNkIsSUFHSnc2QixFQUFBQSxXQUFpQixLQUNUMVIsR0FBY29TLEdBQW1CLEdBQ3RDLENBQ0NwUyxFQUNBb1MsSUFHSixNQUFRMTVCLGFBQWNBLEVBQWU4MkIseUJBQTBCQSxHQUE4QmxnRCxFQUM3Rm9pRCxFQUFBQSxXQUFpQixLQUNiLEdBQUl4NkIsRUFBUyxDQUNULElBQUltN0IsRUFBbUIsQ0FDbkJ2cUMsRUFBRyxFQUNIc0ssRUFBRyxHQUVQLE1BQU1rZ0MsRUFBcUI3a0QsSUFDdkIsSUFBSThrRCxFQUF1QkMsRUFBd0JDLEVBQXdCQyxFQUMzRUwsRUFBbUIsQ0FDZnZxQyxFQUFHK0UsS0FBS2tFLElBQUlsRSxLQUFLb29CLE1BQU14bkMsRUFBTWdpRCxRQUFzTCxRQUEzSzhDLEVBQXdGLFFBQS9EQyxFQUF5QmhELEVBQXlCeGhELGVBQWdELElBQTNCd2tELE9BQW9DLEVBQVNBLEVBQXVCMXFDLFNBQXlDLElBQTFCeXFDLEVBQW1DQSxFQUF3QixJQUN0Um5nQyxFQUFHdkYsS0FBS2tFLElBQUlsRSxLQUFLb29CLE1BQU14bkMsRUFBTWlpRCxRQUF1TCxRQUE1SytDLEVBQXlGLFFBQS9EQyxFQUF5QmxELEVBQXlCeGhELGVBQWdELElBQTNCMGtELE9BQW9DLEVBQVNBLEVBQXVCdGdDLFNBQTBDLElBQTNCcWdDLEVBQW9DQSxFQUF5QixJQUM1UixFQUVDOUwsRUFBbUJsNUMsSUFFakI0a0QsRUFBaUJ2cUMsR0FBSyxJQUFNdXFDLEVBQWlCamdDLEdBQUssR0FBSTNrQixFQUFNaU4saUJBRTNEd2MsRUFBUXJkLFNBQVNwTSxFQUFNTixTQUFTdXJCLEdBQWEsR0FDbEQ5bkIsU0FBU3NJLG9CQUFvQixjQUFlbzVDLEdBQzVDOUMsRUFBeUJ4aEQsUUFBVSxJQUFJLEVBUzNDLE9BUHlDLE9BQXJDd2hELEVBQXlCeGhELFVBQ3pCNEMsU0FBU3VJLGlCQUFpQixjQUFlbTVDLEdBQ3pDMWhELFNBQVN1SSxpQkFBaUIsWUFBYXd0QyxFQUFpQixDQUNwRHFFLFNBQVMsRUFDVDV4QyxNQUFNLEtBR1AsS0FDSHhJLFNBQVNzSSxvQkFBb0IsY0FBZW81QyxHQUM1QzFoRCxTQUFTc0ksb0JBQW9CLFlBQWF5dEMsRUFBaUIsQ0FDdkRxRSxTQUFTLEdBQ1gsQ0FFVCxJQUNGLENBQ0M5ekIsRUFDQXdCLEVBQ0E4MkIsSUFFSmtDLEVBQUFBLFdBQWlCLEtBQ2IsTUFBTWlCLEVBQVEsSUFBSWo2QixHQUFhLEdBSS9CLE9BRkF0dEIsT0FBTytOLGlCQUFpQixPQUFRdzVDLEdBQ2hDdm5ELE9BQU8rTixpQkFBaUIsU0FBVXc1QyxHQUMzQixLQUNIdm5ELE9BQU84TixvQkFBb0IsT0FBUXk1QyxHQUNuQ3ZuRCxPQUFPOE4sb0JBQW9CLFNBQVV5NUMsRUFBTSxDQUM5QyxHQUNGLENBQ0NqNkIsSUFFSixNQUFPNjFCLEVBQVdDLEdBQXlCRSxJQUEwQ0MsSUFDakYsTUFBTUMsRUFBZXZ2QixJQUFXanFCLFFBQVE4SixJQUFRQSxFQUFLdlQsV0FFL0NrakQsRUFBY0QsRUFBYWo3QyxNQUFNdUwsR0FBT0EsRUFBS3pULElBQUl1QyxVQUFZNEMsU0FBU3FOLGdCQUV0RTZ3QyxFQUFXQyxHQUFtQ0gsRUFBY0QsRUFBUUUsR0FDdEVDLEdBR0Z4MUMsWUFBVyxJQUFJdzFDLEVBQVNyakQsSUFBSXVDLFFBQVE0VCxTQUNyQyxJQUVDZ3hDLEVBQWtCZCxFQUFrQjFqRCxhQUFDLENBQUNQLEVBQU1FLEVBQU9wQyxLQUNyRCxNQUFNa25ELEdBQW9CckIsRUFBdUJ4akQsVUFBWXJDLFFBQ3BCa0UsSUFBbEJQLEVBQVF2QixPQUF1QnVCLEVBQVF2QixRQUFVQSxHQUNsRDhrRCxLQUNsQnpCLEVBQWdCdmpELEdBQ1pnbEQsSUFBa0JyQixFQUF1QnhqRCxTQUFVLEdBQzFELEdBQ0YsQ0FDQ3NCLEVBQVF2QixRQUVOK2tELEVBQWtCaEIsRUFBQUEsYUFBbUIsSUFBSTU2QixhQUF5QyxFQUFTQSxFQUFRdFYsU0FDdkcsQ0FDRXNWLElBRUU2N0IsRUFBc0JqQixFQUFrQjFqRCxhQUFDLENBQUNQLEVBQU1FLEVBQU9wQyxLQUN6RCxNQUFNa25ELEdBQW9CckIsRUFBdUJ4akQsVUFBWXJDLFFBQ3BCa0UsSUFBbEJQLEVBQVF2QixPQUF1QnVCLEVBQVF2QixRQUFVQSxHQUNsRDhrRCxJQUFrQnZCLEVBQW9CempELEVBQUssR0FDbEUsQ0FDQ3lCLEVBQVF2QixRQUVOaWxELEVBQThCLFdBQWJsaEMsRUFBd0JtaEMsR0FBNkNDLEdBQ3RGQyxFQUFxQkgsSUFBbUJDLEdBQTZDLENBQ3ZGbmxCLEtBQU1BLEVBQ040USxXQUFZQSxFQUNaQyxNQUFPQSxFQUNQQyxZQUFhQSxFQUNiQyxhQUFjQSxFQUNkQyxrQkFBbUJBLEVBQ25CQyxpQkFBa0JBLEVBQ2xCRSxPQUFRQSxFQUNSQyxpQkFBa0JBLEVBQ2xCQyxnQkFBaUJBLEdBQ2pCLEdBQ0osT0FBcUI2UCxFQUFBQSxjQUFxQjZCLEdBQTZDLENBQ25GL2hELE1BQU9zL0MsRUFDUGwzQixRQUFTQSxFQUNUKzVCLFNBQVVBLEVBQ1ZtQyxpQkFBa0JsQyxFQUNsQjBCLGdCQUFpQkEsRUFDakJ6QixhQUFjQSxFQUNka0MsWUFBYVAsRUFDYkMsb0JBQXFCQSxFQUNyQlgsa0JBQW1CQSxFQUNuQmYsaUJBQWtCQSxFQUNsQnYvQixTQUFVQSxFQUNWa3VCLGFBQWNBLEVBQ2R1TyxVQUFXQSxHQUNFUyxFQUFBQSxjQUFxQm44QixHQUFxQixDQUN2RGhKLEdBQUl5cEMsRUFDSjFwQyxnQkFBZ0IsR0FDSG9sQyxFQUFBQSxjQUFxQnVFLEVBQW1CLENBQ3JEOTlDLFNBQVMsRUFFVDhHLFFBQVNqTixFQUFRNG1CLEtBQ2pCMVosaUJBQW1CL08sSUFFZkEsRUFBTWlOLGdCQUFnQixFQUUxQmdDLG1CQUFvQjB5QyxFQUE0QjkzQixHQUFtQjdwQixJQUMvRCxJQUFJK2xELEVBQ3FDLFFBQXhDQSxFQUFtQmxrRCxFQUFRazVDLGVBQTBDLElBQXJCZ0wsR0FBK0JBLEVBQWlCNXhDLE1BQU0sQ0FDbkdDLGVBQWUsSUFFbkJwVSxFQUFNaU4sZ0JBQWdCLEtBRWJzMEMsRUFBQUEsY0FBcUJ5RSxFQUF5QixDQUMzRGgrQyxTQUFTLEVBQ1RzQiw2QkFBNkIsRUFDN0JDLGdCQUFpQkEsRUFDakJDLHFCQUFzQkEsRUFFdEJDLGVBQWlCekosR0FBUUEsRUFBTWlOLGlCQUUvQnRELFVBQVcsSUFBSTlILEVBQVFvcEIsY0FBYSxJQUN2QnMyQixFQUFvQmhpRCxjQUFDZ21ELEVBQWdCOUQsRUFBcUMsQ0FDdkY1MkIsS0FBTSxVQUNObm5CLEdBQUk3QixFQUFRaXBCLFVBQ1osYUFBY2pwQixFQUFRNG1CLEtBQU8sT0FBUyxTQUN0Q2tJLElBQUs5dUIsRUFBUTh1QixJQUNiczFCLGNBQWdCam1ELEdBQVFBLEVBQU1pTixrQkFDL0JrYyxFQUFjdThCLEVBQW9CLENBQ2pDL1QsU0FBVSxJQUFJbVMsR0FBZ0IsR0FFOUI5bEQsSUFBS21NLEVBQ0xnRCxNQUFPLENBRUg4RyxRQUFTLE9BQ1RpeUMsY0FBZSxTQUVmenpCLFFBQVMsVUFDTnRKLEVBQWFoYyxPQUVwQjJGLFVBQVc2dUMsRUFBNEJ4NEIsRUFBYXJXLFdBQVk5UyxJQUM1RCxNQUFNbW1ELEVBQWdCbm1ELEVBQU1nUyxTQUFXaFMsRUFBTStSLFFBQVUvUixFQUFNaVMsUUFHN0QsR0FGa0IsUUFBZGpTLEVBQU0xQyxLQUFlMEMsRUFBTWlOLGlCQUMxQms1QyxHQUFzQyxJQUFyQm5tRCxFQUFNMUMsSUFBSXZCLFFBQWNnbEQsRUFBc0IvZ0QsRUFBTTFDLEtBQ3RFLENBQ0EsVUFDQSxZQUNBLE9BQ0EsT0FDRkQsU0FBUzJDLEVBQU0xQyxLQUFNLENBR25CLElBQUl1MkIsRUFGVWpDLElBQVdqcUIsUUFBUThKLElBQVFBLEVBQUt2VCxXQUVuQmdELEtBQUt1USxHQUFPQSxFQUFLelQsSUFBSXVDLFVBTWhELEdBSkksQ0FDQSxVQUNBLE9BQ0ZsRCxTQUFTMkMsRUFBTTFDLE9BQU11MkIsRUFBaUJBLEVBQWV0cEIsUUFBUWdJLFdBQzNELENBQ0EsVUFDQSxhQUNGbFYsU0FBUzJDLEVBQU0xQyxLQUFNLENBQ25CLE1BQU04b0QsRUFBaUJwbUQsRUFBTU4sT0FDdkJvMEIsRUFBZUQsRUFBZXIzQixRQUFRNHBELEdBQzVDdnlCLEVBQWlCQSxFQUFldHBCLE1BQU11cEIsRUFBZSxFQUN4RCxDQUlMam9CLFlBQVcsSUFBSXU0QyxFQUFXdndCLEtBRXRCN3pCLEVBQU1pTixnQkFDVCxXQUVGLElBUUx3NEMsR0FBZ0UvRSxFQUFpQjVpRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDNUYsTUFBUSs2QyxjQUFlQSxFQUFnQmhQLFNBQVVBLEtBQWMwVSxHQUFnQmxuRCxFQUN6RTBDLEVBQVV5K0MsR0FBdUNzQyxHQUFvQ2pDLEdBQ3JGN0osRUFBaUJ5TSxHQUE4Q1gsR0FBb0NqQyxJQUNsRzJGLEVBQWdCQyxHQUFxQnZELEVBQWVwL0MsU0FBQyxPQUNyRDZsQixFQUFTbW9CLEdBQWNvUixFQUFlcC9DLFNBQUMsTUFDeEN1RyxFQUFlMDJDLEVBQXVCajdDLEdBQWV4RixHQUFPd3hDLEVBQVd4eEMsS0FFdkV3eEIsRUFBV2l1QixHQUFvQ2MsR0FDL0M2RixFQUEwQnhDLFVBQWMsR0FDeEN5QyxFQUFzQnpDLFVBQWMsSUFDbENSLFNBQVVBLEVBQVdFLGFBQWNBLEVBQWVFLGlCQUFrQkEsRUFBbUJlLGtCQUFtQkEsR0FBdUI3TixFQUNuSXp5QixFQUFXZ2dDLEVBQUFBLGFBQW1CLEtBQ2hDLEdBQUl4aUQsRUFBUWs1QyxTQUFXbDVDLEVBQVE2a0QsV0FBYUosR0FBa0I3OEIsR0FBVys1QixHQUFZRSxHQUFnQkUsRUFBa0IsQ0FDbkgsTUFBTStDLEVBQWM5a0QsRUFBUWs1QyxRQUFROVMsd0JBRzlCMmUsRUFBY245QixFQUFRd2Usd0JBQ3RCNGUsRUFBZ0JobEQsRUFBUTZrRCxVQUFVemUsd0JBQ2xDNmUsRUFBZWxELEVBQWlCM2Isd0JBQ3RDLEdBQW9CLFFBQWhCcG1DLEVBQVE4dUIsSUFBZSxDQUN2QixNQUFNbzJCLEVBQWlCRCxFQUFhMW9DLEtBQU93b0MsRUFBWXhvQyxLQUNqREEsRUFBT3lvQyxFQUFjem9DLEtBQU8yb0MsRUFDNUJDLEVBQVlMLEVBQVl2b0MsS0FBT0EsRUFDL0I2b0MsRUFBa0JOLEVBQVl2NUIsTUFBUTQ1QixFQUN0Q0UsRUFBZTluQyxLQUFLQyxJQUFJNG5DLEVBQWlCTCxFQUFZeDVCLE9BQ3JEKzVCLEVBQVl4cEQsT0FBT3doQixXQUFhbWtDLEdBQ2hDOEQsRUFBY0MsR0FBYWpwQyxFQUFNLENBQ25Da2xDLEdBQ0E2RCxFQUFZRCxJQUVoQlosRUFBZW41QyxNQUFNdW9DLFNBQVd1UixFQUFrQixLQUNsRFgsRUFBZW41QyxNQUFNaVIsS0FBT2dwQyxFQUFjLElBQzFELEtBQW1CLENBQ0gsTUFBTUwsRUFBaUJILEVBQVl0b0MsTUFBUXdvQyxFQUFheG9DLE1BQ2xEQSxFQUFRM2dCLE9BQU93aEIsV0FBYTBuQyxFQUFjdm9DLE1BQVF5b0MsRUFDbERPLEVBQWEzcEQsT0FBT3doQixXQUFhd25DLEVBQVlyb0MsTUFBUUEsRUFDckQyb0MsRUFBa0JOLEVBQVl2NUIsTUFBUWs2QixFQUN0Q0osRUFBZTluQyxLQUFLQyxJQUFJNG5DLEVBQWlCTCxFQUFZeDVCLE9BQ3JEbTZCLEVBQVc1cEQsT0FBT3doQixXQUFhbWtDLEdBQy9Ca0UsRUFBZUgsR0FBYS9vQyxFQUFPLENBQ3JDZ2xDLEdBQ0FpRSxFQUFXTCxJQUVmWixFQUFlbjVDLE1BQU11b0MsU0FBV3VSLEVBQWtCLEtBQ2xEWCxFQUFlbjVDLE1BQU1tUixNQUFRa3BDLEVBQWUsSUFDL0MsQ0FHRCxNQUFNajJDLEVBQVFxZ0IsSUFDUjRULEVBQWtCN25DLE9BQU84cEQsWUFBcUQsRUFBdkNuRSxHQUN2Q29FLEVBQWNsRSxFQUFTdGlDLGFBQ3ZCeW1DLEVBQWdCaHFELE9BQU9vVyxpQkFBaUIwVixHQUN4Q20rQixFQUF3Qm5wQyxTQUFTa3BDLEVBQWNFLGVBQWdCLElBQy9EQyxFQUFvQnJwQyxTQUFTa3BDLEVBQWNoZSxXQUFZLElBQ3ZEb2UsRUFBMkJ0cEMsU0FBU2twQyxFQUFjSyxrQkFBbUIsSUFFckVDLEVBQW9CTCxFQUF3QkUsRUFBb0JKLEVBRHpDanBDLFNBQVNrcEMsRUFBY08sY0FBZSxJQUN3Q0gsRUFDckdJLEVBQW1CL29DLEtBQUtzZixJQUFnQyxFQUE1QmdsQixFQUFheHJCLGFBQWtCK3ZCLEdBQzNERyxFQUFpQnpxRCxPQUFPb1csaUJBQWlCeXZDLEdBQ3pDNkUsRUFBcUI1cEMsU0FBUzJwQyxFQUFlemUsV0FBWSxJQUN6RDJlLEVBQXdCN3BDLFNBQVMycEMsRUFBZUYsY0FBZSxJQUMvREssRUFBeUI1QixFQUFZdG9DLElBQU1zb0MsRUFBWXQ1QixPQUFTLEVBQUlpMkIsR0FDcEVrRixFQUE0QmhqQixFQUFrQitpQixFQUM5Q0UsRUFBeUIvRSxFQUFheHJCLGFBQWUsRUFFckR3d0IsRUFBeUJkLEVBQXdCRSxHQUQ5QnBFLEVBQWE3YSxVQUFZNGYsR0FFNUNFLEVBQTRCVixFQUFvQlMsRUFFdEQsR0FEb0NBLEdBQTBCSCxFQUM3QixDQUM3QixNQUFNSyxFQUFhbEYsSUFBaUJueUMsRUFBTUEsRUFBTXhWLE9BQVMsR0FBR2lDLElBQUl1QyxRQUNoRStsRCxFQUFlbjVDLE1BQU04dkIsT0FBUyxNQUM5QixNQUFNNHJCLEVBQXVCcC9CLEVBQVF0SSxhQUFlcWlDLEVBQVMzYSxVQUFZMmEsRUFBU3RyQixhQUU1RTdLLEVBQVNxN0IsRUFEMEJ0cEMsS0FBS0MsSUFBSW1wQyxFQUEyQkMsR0FBMEJHLEVBQWFOLEVBQXdCLEdBQUtPLEVBQXVCZCxHQUV4S3pCLEVBQWVuNUMsTUFBTWtnQixPQUFTQSxFQUFTLElBQ3ZELEtBQW1CLENBQ0gsTUFBTXk3QixFQUFjcEYsSUFBaUJueUMsRUFBTSxHQUFHdlQsSUFBSXVDLFFBQ2xEK2xELEVBQWVuNUMsTUFBTWtSLElBQU0sTUFDM0IsTUFDTWdQLEVBRGdDak8sS0FBS0MsSUFBSWtwQyxFQUF3QlgsRUFBd0JwRSxFQUFTM2EsV0FBYWlnQixFQUFjVCxFQUFxQixHQUFLSSxHQUM5R0UsRUFDL0NyQyxFQUFlbjVDLE1BQU1rZ0IsT0FBU0EsRUFBUyxLQUN2Q20yQixFQUFTdmlDLFVBQVl5bkMsRUFBeUJILEVBQXlCL0UsRUFBUzNhLFNBQ25GLENBQ0R5ZCxFQUFlbjVDLE1BQU1xdUIsT0FBUyxHQUFHOG5CLFNBQ2pDZ0QsRUFBZW41QyxNQUFNNDdDLFVBQVlaLEVBQW1CLEtBQ3BEN0IsRUFBZW41QyxNQUFNNjdDLFVBQVl4akIsRUFBa0IsS0FDbkRtTSxTQUE0Q0EsSUFFNUN0YSx1QkFBc0IsSUFBSW12QixFQUF3QmptRCxTQUFVLEdBRS9ELElBQ0YsQ0FDQ3F4QixFQUNBL3ZCLEVBQVFrNUMsUUFDUmw1QyxFQUFRNmtELFVBQ1JKLEVBQ0E3OEIsRUFDQSs1QixFQUNBRSxFQUNBRSxFQUNBL2hELEVBQVE4dUIsSUFDUmdoQixJQUVKOFEsR0FBdUIsSUFBSXArQixLQUN6QixDQUNFQSxJQUVKLE1BQU9reEIsRUFBZUMsR0FBb0J3TixFQUFlcC9DLFdBQ3pENitDLEdBQXVCLEtBQ2ZoNUIsR0FBUytyQixFQUFpQjczQyxPQUFPb1csaUJBQWlCMFYsR0FBU2dzQixPQUFPLEdBQ3ZFLENBQ0Noc0IsSUFLSixNQUFNdy9CLEVBQTJCNUUsZUFBb0Jqa0QsSUFDN0NBLElBQXdDLElBQWhDcW1ELEVBQW9CbG1ELFVBQzVCOGpCLElBQ0FzZ0MsU0FBOERBLElBQzlEOEIsRUFBb0JsbUQsU0FBVSxFQUNqQyxHQUNGLENBQ0M4akIsRUFDQXNnQyxJQUVKLE9BQXFCcEQsRUFBQUEsY0FBcUIySCxHQUE4QyxDQUNwRjduRCxNQUFPcy9DLEVBQ1AyRixlQUFnQkEsRUFDaEJFLHdCQUF5QkEsRUFDekIyQyxxQkFBc0JGLEdBQ1QxSCxFQUFBQSxjQUFxQixNQUFPLENBQ3pDdmpELElBQUt1b0QsRUFDTHA1QyxNQUFPLENBQ0g4RyxRQUFTLE9BQ1RpeUMsY0FBZSxTQUNmN2hDLFNBQVUsUUFDVm94QixPQUFRRixJQUVDZ00sRUFBQUEsY0FBcUJHLEVBQWlCL3pDLElBQUs4ekMsRUFBcUMsQ0FBQSxFQUFJNEUsRUFBYSxDQUM5R3JvRCxJQUFLbU0sRUFDTGdELE1BQU8sQ0FHSGk4QyxVQUFXLGFBRVhKLFVBQVcsVUFDUjNDLEVBQVlsNUMsV0FFbEIsSUFRSHE0QyxHQUEyRDlFLEVBQWlCNWlELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN2RixNQUFRKzZDLGNBQWVBLEVBQWdCelAsTUFBT0EsRUFBUSxRQUFVSSxpQkFBa0JBLEVBQW1CZ1MsTUFBMEMrQyxHQUFnQmxuRCxFQUN6Snk1QyxFQUFjd0gsR0FBcUNPLEdBQ3pELE9BQXFCWSxFQUFBQSxjQUFxQjhILEdBQWdCNUgsRUFBcUMsQ0FBQSxFQUFJN0ksRUFBYXlOLEVBQWEsQ0FDekhyb0QsSUFBSzRILEVBQ0xzckMsTUFBT0EsRUFDUEksaUJBQWtCQSxFQUNsQm5rQyxNQUFPLENBRUhpOEMsVUFBVyxnQkFDUi9DLEVBQVlsNUMsTUFDZiwwQ0FBMkMsdUNBQzNDLHlDQUEwQyxzQ0FDMUMsMENBQTJDLHVDQUMzQywrQkFBZ0MsbUNBQ2hDLGdDQUFpQyx1Q0FFdEMsS0FPcUcrN0MsR0FBOENJLElBQWtEdEosR0FBMEM0QyxHQUFvQyxDQUFBLEdBQ3BSMkcsR0FBc0MsaUJBQ3RDQyxHQUEwRDlJLEVBQWlCNWlELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFRKzZDLGNBQWVBLEtBQW1COEksR0FBa0J0cUQsRUFDdEQyM0MsRUFBaUJ5TSxHQUE4Q2dHLEdBQXFDNUksR0FDcEcrSSxFQUFrQkosR0FBK0NDLEdBQXFDNUksR0FDdEd4MkMsRUFBZTAyQyxFQUF1Qmo3QyxFQUFja3hDLEVBQWU2TyxrQkFDbkVnRSxFQUFtQjNGLFNBQWMsR0FDdkMsT0FBcUJ6QyxFQUFvQmhpRCxjQUFDcXFELEVBQWVwdEMsU0FBRSxLQUFvQitrQyxFQUFBQSxjQUFxQixRQUFTLENBQ3pHc0ksd0JBQXlCLENBQ3JCQyxPQUFRLCtLQUVFdkksRUFBQUEsY0FBcUIzQixHQUFpQ254QixLQUFNLENBQzFFcHRCLE1BQU9zL0MsR0FDTVksZ0JBQXFCRyxFQUFpQi96QyxJQUFLOHpDLEVBQXFDLENBQzdGLDZCQUE4QixHQUM5QjUyQixLQUFNLGdCQUNQNCtCLEVBQWUsQ0FDZHpyRCxJQUFLbU0sRUFDTGdELE1BQU8sQ0FJSGtYLFNBQVUsV0FDVjBsQyxLQUFNLEVBQ04xcEMsU0FBVSxVQUNQb3BDLEVBQWN0OEMsT0FFckI2OEMsU0FBVXJJLEVBQTRCOEgsRUFBY08sVUFBV2hxRCxJQUMzRCxNQUFNd2pELEVBQVd4akQsRUFBTW1TLGVBQ2ZtMEMsZUFBZ0JBLEVBQWlCRSx3QkFBeUJBLEdBQTZCa0QsRUFDL0YsR0FBSWxELFNBQTBFQSxFQUF3QmptRCxTQUFXK2xELEVBQWdCLENBQzdILE1BQU0yRCxFQUFhN3FDLEtBQUtrRSxJQUFJcW1DLEVBQWlCcHBELFFBQVVpakQsRUFBU3ZpQyxXQUNoRSxHQUFJZ3BDLEVBQWEsRUFBRyxDQUNoQixNQUFNemtCLEVBQWtCN25DLE9BQU84cEQsWUFBcUQsRUFBdkNuRSxHQUN2QzRHLEVBQWV4aUIsV0FBVzRlLEVBQWVuNUMsTUFBTTQ3QyxXQUMvQ29CLEVBQVl6aUIsV0FBVzRlLEVBQWVuNUMsTUFBTWtnQixRQUM1Qys4QixFQUFhaHJDLEtBQUtDLElBQUk2cUMsRUFBY0MsR0FDMUMsR0FBSUMsRUFBYTVrQixFQUFpQixDQUM5QixNQUFNNmtCLEVBQWFELEVBQWFILEVBQzFCSyxFQUFvQmxyQyxLQUFLc2YsSUFBSThHLEVBQWlCNmtCLEdBQzlDRSxFQUFhRixFQUFhQyxFQUNoQ2hFLEVBQWVuNUMsTUFBTWtnQixPQUFTaTlCLEVBQW9CLEtBQ2QsUUFBaENoRSxFQUFlbjVDLE1BQU04dkIsU0FDckJ1bUIsRUFBU3ZpQyxVQUFZc3BDLEVBQWEsRUFBSUEsRUFBYSxFQUNuRGpFLEVBQWVuNUMsTUFBTXE5QyxlQUFpQixXQUU3QyxDQUNKLENBQ0osQ0FDRGIsRUFBaUJwcEQsUUFBVWlqRCxFQUFTdmlDLFNBQVMsUUFFaEQsSUFRK0YrK0IsR0FEc0MsZUFtQ3pDLE1BQU15SyxHQUFrQyxjQUN0SUMsR0FBaURDLElBQThDM0ssR0FBMEN5SyxJQUMxSUcsR0FBMERsSyxFQUFpQjVpRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUSs2QyxjQUFlQSxFQUFnQnJnRCxNQUFPQSxFQUFRcEMsU0FBVUEsR0FBVyxFQUFRMnNELFVBQVdDLEtBQW1CMTNCLEdBQWNqMEIsRUFDekgwQyxFQUFVeStDLEdBQXVDbUssR0FBaUM5SixHQUNsRjdKLEVBQWlCeU0sR0FBOENrSCxHQUFpQzlKLEdBQ2hHL3BCLEVBQWEvMEIsRUFBUXZCLFFBQVVBLEdBQzlCdXFELEVBQVdFLEdBQWdCL0gsRUFBZXAvQyxTQUFDa25ELFFBQXFEQSxFQUFnQixLQUNoSEUsRUFBV0MsR0FBZ0JqSSxFQUFlcC9DLFVBQUMsR0FDNUN1RyxFQUFlMDJDLEVBQXVCajdDLEdBQWV4RixJQUN2RCxJQUFJOHFELEVBQ0osT0FBb0UsUUFBNURBLEVBQXdCcFUsRUFBZXFPLHVCQUF1RCxJQUExQitGLE9BQW1DLEVBQVNBLEVBQXNCL3VELEtBQUsyNkMsRUFBZ0IxMkMsRUFBTUUsRUFBT3BDLEVBQVMsSUFFdkxpdEQsRUFBU0MsSUFDVEMsRUFBZSxLQUNabnRELElBQ0QyRCxFQUFROHpCLGNBQWNyMUIsR0FDdEJ1QixFQUFRb3BCLGNBQWEsR0FDeEIsRUFFTCxPQUFxQnMyQixFQUFBQSxjQUFxQm1KLEdBQWlELENBQ3ZGcnBELE1BQU9zL0MsRUFDUHJnRCxNQUFPQSxFQUNQcEMsU0FBVUEsRUFDVml0RCxPQUFRQSxFQUNSdjBCLFdBQVlBLEVBQ1owMEIsaUJBQWtCakgsRUFBQUEsYUFBb0Jqa0QsSUFDbEMycUQsR0FBY1EsSUFDVixJQUFJQyxFQUNKLE9BQU9ELElBQXlHLFFBQXRGQyxFQUFvQnByRCxhQUFtQyxFQUFTQSxFQUFLcXJELG1CQUErQyxJQUF0QkQsRUFBK0JBLEVBQW9CLElBQUlFLE1BQU0sR0FDdkwsR0FDSCxLQUNVbkssRUFBb0JoaUQsY0FBQ3FnRCxHQUFpQ2h4QixTQUFVLENBQzdFdnRCLE1BQU9zL0MsRUFDUHJnRCxNQUFPQSxFQUNQcEMsU0FBVUEsRUFDVjJzRCxVQUFXQSxHQUNFdEosZ0JBQXFCRyxFQUFpQi96QyxJQUFLOHpDLEVBQXFDLENBQzdGNTJCLEtBQU0sU0FDTixrQkFBbUJzZ0MsRUFDbkIsbUJBQW9CSCxFQUFZLFFBQUs1b0QsRUFFckMsZ0JBQWlCdzBCLEdBQWNvMEIsRUFDL0IsYUFBY3AwQixFQUFhLFVBQVksWUFDdkMsZ0JBQWlCMTRCLFFBQVlrRSxFQUM3QixnQkFBaUJsRSxFQUFXLFFBQUtrRSxFQUNqQ3lRLFNBQVUzVSxPQUFXa0UsR0FBYSxHQUNuQ2d4QixFQUFXLENBQ1ZwMUIsSUFBS21NLEVBQ0x5b0IsUUFBUyt1QixFQUE0QnZ1QixFQUFVUixTQUFTLElBQUlxNEIsR0FBYSxLQUV6RS8zQixPQUFReXVCLEVBQTRCdnVCLEVBQVVGLFFBQVEsSUFBSSszQixHQUFhLEtBRXZFVSxZQUFhaEssRUFBNEJ2dUIsRUFBVXU0QixZQUFhTixHQUNoRTNSLGNBQWVpSSxFQUE0QnZ1QixFQUFVc21CLGVBQWdCMTVDLElBRTdELElBQUk0ckQsRUFESjF0RCxFQUV5RCxRQUF4RDB0RCxFQUF3QjlVLEVBQWU4TyxtQkFBbUQsSUFBMUJnRyxHQUFvQ0EsRUFBc0J6dkQsS0FBSzI2QyxHQUdwSTkyQyxFQUFNbVMsY0FBY2dDLE1BQU0sQ0FDdEJDLGVBQWUsR0FDakIsSUFFTjBsQyxlQUFnQjZILEVBQTRCdnVCLEVBQVUwbUIsZ0JBQWlCOTVDLElBRS9ELElBQUk2ckQsRUFESjdyRCxFQUFNbVMsZ0JBQWtCaFAsU0FBU3FOLGdCQUV5QixRQUF6RHE3QyxFQUF5Qi9VLEVBQWU4TyxtQkFBb0QsSUFBM0JpRyxHQUFxQ0EsRUFBdUIxdkQsS0FBSzI2QyxHQUN0SSxJQUVMaGtDLFVBQVc2dUMsRUFBNEJ2dUIsRUFBVXRnQixXQUFZOVMsSUFDekQsSUFBSThyRCxFQUNpSyxNQUF2RixRQUF0REEsRUFBd0JoVixFQUFlZ0ssaUJBQWlELElBQTFCZ0wsT0FBbUMsRUFBU0EsRUFBc0J2ckQsVUFDckgsTUFBZFAsRUFBTTFDLE1BQ3ZCb2lELEdBQXFDcmlELFNBQVMyQyxFQUFNMUMsTUFBTSt0RCxJQUM1QyxNQUFkcnJELEVBQU0xQyxLQUFhMEMsRUFBTWlOLGlCQUFnQixRQUVoRCxJQU9rRzgrQyxHQUF1QyxpQkFDNUlDLEdBQTBEdEwsRUFBaUI1aUQsWUFBQyxDQUFDcUIsRUFBT3lHLEtBRXRGLE1BQVErNkMsY0FBZUEsRUFBZ0IzaEQsVUFBV0EsRUFBWW1PLE1BQU9BLEtBQVc4K0MsR0FBa0I5c0QsRUFDNUYwQyxFQUFVeStDLEdBQXVDeUwsR0FBc0NwTCxHQUN2RjdKLEVBQWlCeU0sR0FBOEN3SSxHQUFzQ3BMLEdBQ3JHdUwsRUFBY3ZCLEdBQTJDb0IsR0FBc0NwTCxHQUMvRndMLEVBQXVCM0wsR0FBb0R1TCxHQUFzQ3BMLElBQ2hIeUwsRUFBY0MsR0FBbUJySixFQUFlcC9DLFNBQUMsTUFDbER1RyxFQUFlMDJDLEVBQXVCajdDLEdBQWV4RixHQUFPaXNELEVBQWdCanNELElBQ2hGOHJELEVBQVlaLGtCQUFtQmxyRCxJQUM3QixJQUFJa3NELEVBQ0osT0FBd0UsUUFBaEVBLEVBQXdCeFYsRUFBZXdPLDJCQUEyRCxJQUExQmdILE9BQW1DLEVBQVNBLEVBQXNCbndELEtBQUsyNkMsRUFBZ0IxMkMsRUFBTThyRCxFQUFZNXJELE1BQU80ckQsRUFBWWh1RCxTQUFTLElBRW5OdXRELEVBQWNXLGFBQW1ELEVBQVNBLEVBQWFYLFlBQ3ZGYyxFQUFlQyxFQUFBQSxTQUFlLElBQWtCakwsRUFBQUEsY0FBcUIsU0FBVSxDQUM3RWprRCxJQUFLNHVELEVBQVk1ckQsTUFDakJBLE1BQU80ckQsRUFBWTVyRCxNQUNuQnBDLFNBQVVndUQsRUFBWWh1RCxVQUN2QnV0RCxJQUNMLENBQ0VTLEVBQVlodUQsU0FDWmd1RCxFQUFZNXJELE1BQ1ptckQsS0FFSWdCLGtCQUFtQkEsRUFBb0JDLHFCQUFzQkEsR0FBMEJQLEVBVS9GLE9BVEExSixHQUF1QixLQUNuQmdLLEVBQWtCRixHQUNYLElBQUlHLEVBQXFCSCxLQUVqQyxDQUNDRSxFQUNBQyxFQUNBSCxJQUVpQmhMLEVBQUFBLGNBQXFCcUksRUFBQUEsU0FBaUIsS0FBb0JySSxFQUFvQmhpRCxjQUFDbWlELEVBQWlCbHVCLEtBQU1pdUIsRUFBcUMsQ0FDNUovOUMsR0FBSXdvRCxFQUFZZixRQUNqQmMsRUFBZSxDQUNkanVELElBQUttTSxLQUNKK2hELEVBQVl0MUIsWUFBYy8wQixFQUFRNmtELFlBQWM3a0QsRUFBUThxRCxxQkFBcUN4SixFQUFtQjl0QyxhQUFDNDJDLEVBQWM5dEQsU0FBVTBELEVBQVE2a0QsV0FBYSxLQUFLLElBc0JqRWtHLEdBQThDLHVCQUNuSkMsR0FBMERuTSxFQUFpQjVpRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBTWt4QyxFQUFpQnlNLEdBQThDcUosR0FBNkN6dEQsRUFBTXdoRCxlQUNsSCtJLEVBQWtCSixHQUErQ3NELEdBQTZDenRELEVBQU13aEQsZ0JBQ25IbU0sRUFBY0MsR0FBa0IvSixFQUFlcC9DLFVBQUMsR0FDakR1RyxFQUFlMDJDLEVBQXVCajdDLEVBQWM4akQsRUFBZ0JQLHNCQWlCMUUsT0FoQkExRyxHQUF1QixLQUNuQixHQUFJM0wsRUFBZTBNLFVBQVkxTSxFQUFldkUsYUFBYyxDQUN4RCxNQUFNaVIsRUFBVzFNLEVBQWUwTSxTQUNoQyxTQUFTai9CLElBQ0wsTUFBTXlvQyxFQUFjeEosRUFBU3ZpQyxVQUFZLEVBQ3pDOHJDLEVBQWVDLEVBQ2xCLENBR0QsT0FGQXpvQyxJQUNBaS9CLEVBQVM5M0MsaUJBQWlCLFNBQVU2WSxHQUM3QixJQUFJaS9CLEVBQVMvM0Msb0JBQW9CLFNBQVU4WSxFQUVyRCxJQUNGLENBQ0N1eUIsRUFBZTBNLFNBQ2YxTSxFQUFldkUsZUFFWnVhLEVBQTZCdkwsRUFBQUEsY0FBcUIwTCxHQUE4Q3hMLEVBQXFDLENBQUEsRUFBSXRpRCxFQUFPLENBQ25KbkIsSUFBS21NLEVBQ0wraUQsYUFBYyxLQUNWLE1BQVExSixTQUFVQSxFQUFXRSxhQUFjQSxHQUFrQjVNLEVBQ3pEME0sR0FBWUUsSUFBY0YsRUFBU3ZpQyxVQUFZdWlDLEVBQVN2aUMsVUFBWXlpQyxFQUFheHJCLGFBQVksS0FFbkcsSUFBSSxJQU82RmkxQixHQUFnRCx5QkFDckpDLEdBQXlEMU0sRUFBaUI1aUQsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3JGLE1BQU1reEMsRUFBaUJ5TSxHQUE4QzRKLEdBQStDaHVELEVBQU13aEQsZUFDcEgrSSxFQUFrQkosR0FBK0M2RCxHQUErQ2h1RCxFQUFNd2hELGdCQUNySDBNLEVBQWdCQyxHQUFvQnRLLEVBQWVwL0MsVUFBQyxHQUNyRHVHLEVBQWUwMkMsRUFBdUJqN0MsRUFBYzhqRCxFQUFnQlAsc0JBbUIxRSxPQWxCQTFHLEdBQXVCLEtBQ25CLEdBQUkzTCxFQUFlME0sVUFBWTFNLEVBQWV2RSxhQUFjLENBQ3hELE1BQU1pUixFQUFXMU0sRUFBZTBNLFNBQ2hDLFNBQVNqL0IsSUFDTCxNQUFNZ3BDLEVBQVkvSixFQUFTdGlDLGFBQWVzaUMsRUFBU3JpQyxhQUU3Q3FzQyxFQUFnQnB1QyxLQUFLcXVDLEtBQUtqSyxFQUFTdmlDLFdBQWFzc0MsRUFDdERELEVBQWlCRSxFQUNwQixDQUdELE9BRkFqcEMsSUFDQWkvQixFQUFTOTNDLGlCQUFpQixTQUFVNlksR0FDN0IsSUFBSWkvQixFQUFTLzNDLG9CQUFvQixTQUFVOFksRUFFckQsSUFDRixDQUNDdXlCLEVBQWUwTSxTQUNmMU0sRUFBZXZFLGVBRVo4YSxFQUErQjlMLEVBQUFBLGNBQXFCMEwsR0FBOEN4TCxFQUFxQyxDQUFBLEVBQUl0aUQsRUFBTyxDQUNySm5CLElBQUttTSxFQUNMK2lELGFBQWMsS0FDVixNQUFRMUosU0FBVUEsRUFBV0UsYUFBY0EsR0FBa0I1TSxFQUN6RDBNLEdBQVlFLElBQWNGLEVBQVN2aUMsVUFBWXVpQyxFQUFTdmlDLFVBQVl5aUMsRUFBYXhyQixhQUFZLEtBRW5HLElBQUksSUFLUiswQixHQUE2RHZNLEVBQWlCNWlELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN6RixNQUFRKzZDLGNBQWVBLEVBQWdCdU0sYUFBY0EsS0FBa0JRLEdBQXlCdnVELEVBQzFGMjNDLEVBQWlCeU0sR0FBOEMscUJBQXNCNUMsR0FDckZnTixFQUFxQjNKLFNBQWMsTUFDbkNweUIsRUFBV2l1QixHQUFvQ2MsR0FDL0NpTixFQUF1QnZKLEVBQUFBLGFBQW1CLEtBQ1QsT0FBL0JzSixFQUFtQnB0RCxVQUNuQjVDLE9BQU9rd0QsY0FBY0YsRUFBbUJwdEQsU0FDeENvdEQsRUFBbUJwdEQsUUFBVSxLQUNoQyxHQUNGLElBb0JILE9BbkJBMGpELEVBQUFBLFdBQWlCLElBQ04sSUFBSTJKLEtBRVosQ0FDQ0EsSUFLSm5MLEdBQXVCLEtBQ25CLElBQUlxTCxFQUNKLE1BQU1DLEVBQWFuOEIsSUFBVzFyQixNQUFNdUwsR0FBT0EsRUFBS3pULElBQUl1QyxVQUFZNEMsU0FBU3FOLGdCQUV6RXU5QyxTQUFxRyxRQUFwREQsRUFBd0JDLEVBQVcvdkQsSUFBSXVDLGVBQStDLElBQTFCdXRELEdBQW9DQSxFQUFzQnJKLGVBQWUsQ0FDbExDLE1BQU8sV0FDVCxHQUNILENBQ0M5eUIsSUFFaUIydkIsZ0JBQXFCRyxFQUFpQi96QyxJQUFLOHpDLEVBQXFDLENBQ2pHLGVBQWUsR0FDaEJpTSxFQUFzQixDQUNyQjF2RCxJQUFLNEgsRUFDTHVILE1BQU8sQ0FDSDZnRCxXQUFZLEtBQ1ROLEVBQXFCdmdELE9BRTVCNnNDLGNBQWUySCxFQUE0QitMLEVBQXFCMVQsZUFBZSxLQUN4QyxPQUEvQjJULEVBQW1CcHRELFVBQWtCb3RELEVBQW1CcHRELFFBQVU1QyxPQUFPc3dELFlBQVlmLEVBQWMsSUFBRyxJQUU5R3hULGNBQWVpSSxFQUE0QitMLEVBQXFCaFUsZUFBZSxLQUMzRSxJQUFJd1UsRUFDc0QsUUFBekRBLEVBQXlCcFgsRUFBZThPLG1CQUFvRCxJQUEzQnNJLEdBQXFDQSxFQUF1Qi94RCxLQUFLMjZDLEdBQ2hHLE9BQS9CNlcsRUFBbUJwdEQsVUFBa0JvdEQsRUFBbUJwdEQsUUFBVTVDLE9BQU9zd0QsWUFBWWYsRUFBYyxJQUFHLElBRTlHcFQsZUFBZ0I2SCxFQUE0QitMLEVBQXFCNVQsZ0JBQWdCLEtBQzdFOFQsR0FBc0IsTUFFM0IsSUErQm9HTyxHQUFtRHpOLEVBQUFBLFlBQWtCLENBQUN2aEQsRUFBT3lHLEtBQ3BMLE1BQVF0RixNQUFPQSxLQUFXOHRELEdBQWdCanZELEVBQ3BDbkIsRUFBTWdtRCxTQUFjLE1BQ3BCNzVDLEVBQWUwMkMsRUFBdUJqN0MsRUFBYzVILEdBQ3BEcXdELEVBQVlDLEdBQW1CaHVELEdBNEJuQyxPQTNCRjJqRCxFQUFBQSxXQUFpQixLQUNiLE1BQU0vekMsRUFBU2xTLEVBQUl1QyxRQUNiZ3VELEVBQWM1d0QsT0FBTzZ3RCxrQkFBa0J2eUQsVUFFdkM4NUIsRUFEYXY2QixPQUFPNi9CLHlCQUF5Qmt6QixFQUFhLFNBQ3BDdm5DLElBQzVCLEdBQUlxbkMsSUFBYy90RCxHQUFTeTFCLEVBQVUsQ0FDakMsTUFBTS8xQixFQUFRLElBQUlzN0IsTUFBTSxTQUFVLENBQzlCbnRCLFNBQVMsSUFFYjRuQixFQUFTNTVCLEtBQUsrVCxFQUFRNVAsR0FDdEI0UCxFQUFPbkMsY0FBYy9OLEVBQ3hCLElBQ0YsQ0FDQ3F1RCxFQUNBL3RELElBYW1CaWhELEVBQUFBLGNBQXFCa04sR0FBdUIsQ0FDL0R6bUQsU0FBUyxHQUNJdTVDLEVBQW9CaGlELGNBQUMsU0FBVWtpRCxFQUFxQyxDQUFBLEVBQUkyTSxFQUFhLENBQ2xHcHdELElBQUttTSxFQUNMNE8sYUFBY3pZLEtBQ2QsSUFHUixTQUFTMmdELEdBQXlDeU4sR0FDOUMsTUFBTUMsRUFBcUJDLEVBQXNCRixHQUMzQzVOLEVBQVlrRCxTQUFjLElBQzFCNkssRUFBVzdLLFNBQWMsR0FDekJqRCxFQUF3QnNELGVBQW9CL21ELElBQzlDLE1BQU00akQsRUFBU0osRUFBVXZnRCxRQUFVakQsRUFDbkNxeEQsRUFBbUJ6TixHQUNuQixTQUFVNE4sRUFBYXh1RCxHQUNuQndnRCxFQUFVdmdELFFBQVVELEVBQ3BCM0MsT0FBT21PLGFBQWEraUQsRUFBU3R1RCxTQUNmLEtBQVZELElBQWN1dUQsRUFBU3R1RCxRQUFVNUMsT0FBT2tPLFlBQVcsSUFBSWlqRCxFQUFhLEtBQ3RFLEtBQ0wsQ0FMRCxDQUtHNU4sRUFBTyxHQUNYLENBQ0N5TixJQUVFM04sRUFBaUJxRCxFQUFBQSxhQUFtQixLQUN0Q3ZELEVBQVV2Z0QsUUFBVSxHQUNwQjVDLE9BQU9tTyxhQUFhK2lELEVBQVN0dUQsUUFBUSxHQUN0QyxJQUtILE9BSkEwakQsRUFBQUEsV0FBaUIsSUFDTixJQUFJdG1ELE9BQU9tTyxhQUFhK2lELEVBQVN0dUQsVUFFekMsSUFDSSxDQUNIdWdELEVBQ0FDLEVBQ0FDLEVBRVIsQ0FpQkksU0FBU00sR0FBbUMvdkMsRUFBTzJ2QyxFQUFRRSxHQUMzRCxNQUVNMk4sRUFGYTdOLEVBQU9ubEQsT0FBUyxHQUFLa0IsTUFBTW9OLEtBQUs2MkMsR0FBUXZlLE9BQU9xc0IsR0FBT0EsSUFBUzlOLEVBQU8sS0FFbkRBLEVBQU8sR0FBS0EsRUFDNUMrTixFQUFtQjdOLEVBQWM3dkMsRUFBTS9VLFFBQVE0a0QsSUFBZ0IsRUFDckUsSUFBSThOLEdBV3FDcjZDLEVBWFV0RCxFQVdId2lCLEVBWFUzVSxLQUFLQyxJQUFJNHZDLEVBQWtCLEdBWTlFcDZDLEVBQU0zVCxLQUFJLENBQUM4eUIsRUFBR3J5QixJQUFRa1QsR0FBT2tmLEVBQWFweUIsR0FBU2tULEVBQU05WSxXQURoRSxJQUF5QzhZLEVBQU9rZixFQVZPLElBQTVCZzdCLEVBQWlCaHpELFNBQ3BCbXpELEVBQWVBLEVBQWF2bkQsUUFBUXduRCxHQUFJQSxJQUFNL04sS0FFdEUsTUFBTUMsRUFBVzZOLEVBQWFocEQsTUFBTXVMLEdBQU9BLEVBQUtvNUMsVUFBVXRrQixjQUFjNm9CLFdBQVdMLEVBQWlCeG9CLGlCQUVwRyxPQUFPOGEsSUFBYUQsRUFBY0MsT0FBV2ovQyxDQUNqRCxDQTNEQStyRCxHQUFtQ2xzRCxZQUFjLGVBbUVqRCxNQUFNb3RELEdBdHBDNkNsd0QsSUFDL0MsTUFBUXdoRCxjQUFlQSxFQUFnQnhpRCxTQUFVQSxFQUFXc3FCLEtBQU13RCxFQUFXQyxZQUFhQSxFQUFjakIsYUFBY0EsRUFBZTNxQixNQUFPbzFCLEVBQVkzYyxhQUFjQSxFQUFlNGMsY0FBZUEsRUFBZ0JoRixJQUFLQSxFQUFNM2lCLEtBQU1BLEVBQU9zaEQsYUFBY0EsRUFBZXB4RCxTQUFVQSxFQUFXcTdCLFNBQVVBLEdBQWNwNkIsRUFDaFR5NUMsRUFBY3dILEdBQXFDTyxJQUNsRDVGLEVBQVN3RCxHQUFjeUUsRUFBZXAvQyxTQUFDLE9BQ3ZDOGlELEVBQVc2SSxHQUFnQnZNLEVBQWVwL0MsU0FBQyxPQUMzQytvRCxFQUFzQjZDLEdBQTJCeE0sRUFBZXAvQyxVQUFDLEdBQ2xFaWdCLEVBQVk0ckMsR0FBb0I5K0IsSUFDL0JsSSxHQUFPLEVBQU8wRCxHQUFXdWpDLEVBQTRCLENBQ3hEanJELEtBQU13bkIsRUFDTnZuQixZQUFhd25CLEVBQ2J2bkIsU0FBVXNtQixLQUVQM3FCLEVBQU95MUIsR0FBWTI1QixFQUE0QixDQUNsRGpyRCxLQUFNaXhCLEVBQ05oeEIsWUFBYXFVLEVBQ2JwVSxTQUFVZ3hCLElBRVJvc0IsRUFBMkJpQyxTQUFjLE1BQ3pDanFCLEdBQWdCZ2hCLEdBQVU5M0MsUUFBUTgzQyxFQUFRL2dCLFFBQVEsVUFDakQyMUIsRUFBa0JDLEdBQXVCNU0sRUFBQUEsU0FBZ0IsSUFBSWg2QyxLQUs5RDZtRCxFQUFrQjV5RCxNQUFNb04sS0FBS3NsRCxHQUFrQnp1RCxLQUFLNHVELEdBQVNBLEVBQU8zd0QsTUFBTW1CLFFBQzlFL0MsS0FBSyxLQUNQLE9BQXFCZ2tELEVBQW9CaGlELGNBQUN3d0QsR0FBYW5YLEVBQTJCMkksRUFBQUEsY0FBcUJsQixHQUFzQyxDQUN6STltQixTQUFVQSxFQUNWbDRCLE1BQU9zL0MsRUFDUDVGLFFBQVNBLEVBQ1RoQyxnQkFBaUJ3RixFQUNqQm1JLFVBQVdBLEVBQ1hsRSxrQkFBbUIrTSxFQUNuQjVDLHFCQUFzQkEsRUFDdEJySyw2QkFBOEJrTixFQUM5QjFrQyxVQUFXc2dDLElBQ1g5cUQsTUFBT0EsRUFDUHExQixjQUFlSSxFQUNmdE4sS0FBTUEsRUFDTndDLGFBQWNrQixFQUNkd0UsSUFBSzlNLEVBQ0xrK0IseUJBQTBCQSxFQUMxQjdqRCxTQUFVQSxHQUNHcWpELEVBQW9CaGlELGNBQUNxZ0QsR0FBaUNoK0MsU0FBVSxDQUM3RVAsTUFBT3MvQyxHQUNNWSxFQUFBQSxjQUFxQmhCLEdBQW1ELENBQ3JGbC9DLE1BQU9sQyxFQUFNd2hELGNBQ2I4TCxrQkFBbUJwSSxFQUFBQSxhQUFvQnlMLElBQ25DRixHQUFxQkksR0FBTyxJQUFJaG5ELElBQUlnbkQsR0FBTTNpRCxJQUFJeWlELElBQzdDLEdBQ0YsSUFDSHBELHFCQUFzQnJJLEVBQUFBLGFBQW9CeUwsSUFDdENGLEdBQXFCSSxJQUNqQixNQUFNQyxFQUFhLElBQUlqbkQsSUFBSWduRCxHQUUzQixPQURBQyxFQUFXMWlELE9BQU91aUQsR0FDWEcsQ0FBVSxHQUNuQixHQUNILEtBQ0o5eEQsSUFBWTQ3QixFQUE4QnduQixFQUFBQSxjQUFxQjRNLEdBQW9DLENBQ2xHN3dELElBQUt1eUQsRUFDTCxlQUFlLEVBQ2Z0MkIsU0FBVUEsRUFDVjFtQixVQUFXLEVBQ1g3RSxLQUFNQSxFQUNOc2hELGFBQWNBLEVBQ2RodkQsTUFBT0EsRUFFUHFFLFNBQVczRSxHQUFRKzFCLEVBQVMvMUIsRUFBTU4sT0FBT1ksT0FFekNwQyxTQUFVQSxRQUNEa0UsSUFBVjlCLEVBQW9DaWhELEVBQW9CaGlELGNBQUMsU0FBVSxDQUNsRWUsTUFBTyxLQUNOLEtBQU1yRCxNQUFNb04sS0FBS3NsRCxJQUFxQixNQUFNLEVBK2tDL0NPLEdBQTRDelAsR0FDNUMwUCxHQUE0Q2hPLEdBQzVDaU8sR0FBNEMxTixHQUU1QzJOLEdBQTRDeE4sR0FDNUN5TixHQUEyQzlHLEdBRzNDK0csR0FBNEMzRixHQUM1QzRGLEdBQTRDeEUsR0FFNUN5RSxHQUE0QzVELEdBQzVDNkQsR0FBNEN0RCxHQzF1Q2xELElBQUluZ0MsR0FBT3R1QixHQUNYLFNBQVNhLEtBQWlTLE9BQXBSQSxHQUFXaEUsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT2dFLE9BQVMsU0FBVUMsR0FBVSxJQUFLLElBQUk5RCxFQUFJLEVBQUdBLEVBQUlFLFVBQVVDLE9BQVFILElBQUssQ0FBRSxJQUFJK0QsRUFBUzdELFVBQVVGLEdBQUksSUFBSyxJQUFJMEIsS0FBT3FDLEVBQWNuRSxPQUFPUyxVQUFVQyxlQUFlQyxLQUFLd0QsRUFBUXJDLEtBQVFvQyxFQUFPcEMsR0FBT3FDLEVBQU9yQyxJQUFZLE9BQU9vQyxDQUFTLEVBQVNGLEdBQVNwRCxNQUFNQyxLQUFNUCxVQUFhLENBRW5WLElDSElteEIsR0FBT3R1QixHQUNYLFNBQVNhLEtBQWlTLE9BQXBSQSxHQUFXaEUsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT2dFLE9BQVMsU0FBVUMsR0FBVSxJQUFLLElBQUk5RCxFQUFJLEVBQUdBLEVBQUlFLFVBQVVDLE9BQVFILElBQUssQ0FBRSxJQUFJK0QsRUFBUzdELFVBQVVGLEdBQUksSUFBSyxJQUFJMEIsS0FBT3FDLEVBQWNuRSxPQUFPUyxVQUFVQyxlQUFlQyxLQUFLd0QsRUFBUXJDLEtBQVFvQyxFQUFPcEMsR0FBT3FDLEVBQU9yQyxJQUFZLE9BQU9vQyxDQUFTLEVBQVNGLEdBQVNwRCxNQUFNQyxLQUFNUCxVQUFhLENBRW5WLElDSElteEIsR0FBT3R1QixHREdQZ3lELEdBQXVCLFNBQThCeHhELEdBQ3ZELE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQRyxLQUFNLE9BQ04waEIsUUFBUyxhQUNSN3ZDLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksNkJBQ0owcEIsTUFBTyxHQUNQQyxPQUFRLEdBQ1JoVCxFQUFHLEVBQ0hzSyxFQUFHLEVBQ0g0SSxVQUFXLGlCQUNYcGdCLE1BQU8sQ0FDTHFnQixTQUFVLFVBRVhQLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDNUQrdEIsS0FBTSxVQUNORyxFQUFHLG9CQUNDOXVCLEtBQU9BLEdBQWtCZCxFQUFNMEIsY0FBYyxJQUFLLENBQ3REbXVCLEtBQU0sb0NBQ1E3dkIsRUFBTTBCLGNBQWMsT0FBUSxDQUMxQyt0QixLQUFNLFVBQ05HLEVBQUcscVVBRVAsRUMxQkEsU0FBU2p1QixLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQ0osU0FBU3p0QixLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuVixJQ0hJbXhCLEdBQU90dUIsR0FDWCxTQUFTYSxLQUFpUyxPQUFwUkEsR0FBV2hFLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9nRSxPQUFTLFNBQVVDLEdBQVUsSUFBSyxJQUFJOUQsRUFBSSxFQUFHQSxFQUFJRSxVQUFVQyxPQUFRSCxJQUFLLENBQUUsSUFBSStELEVBQVM3RCxVQUFVRixHQUFJLElBQUssSUFBSTBCLEtBQU9xQyxFQUFjbkUsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS3dELEVBQVFyQyxLQUFRb0MsRUFBT3BDLEdBQU9xQyxFQUFPckMsSUFBWSxPQUFPb0MsQ0FBUyxFQUFTRixHQUFTcEQsTUFBTUMsS0FBTVAsVUFBYSxDQUVuViw2Q3ZCQWEsU0FBZ0JxRCxHQUMzQixPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEMsTUFBTyxHQUNQQyxPQUFRLEdBQ1JDLEtBQU0sUUFDTG51QixHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLGFBQ0owcEIsTUFBTyxHQUNQQyxPQUFRLEdBQ1JoVCxFQUFHLEVBQ0hzSyxFQUFHLEVBQ0g0SSxVQUFXLGlCQUNYcGdCLE1BQU8sQ0FDTHFnQixTQUFVLFVBRVhQLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDNUQrdEIsS0FBTSxVQUNORyxFQUFHLG9CQUNDOXVCLEtBQU9BLEdBQWtCZCxFQUFNMEIsY0FBYyxJQUFLLENBQ3REbXVCLEtBQU0sb0JBQ1E3dkIsRUFBTTBCLGNBQWMsT0FBUSxDQUMxQyt0QixLQUFNLFVBQ05HLEVBQUcsZ2JBRVAsNkJFekJlLFNBQWtCdHVCLEdBQy9CLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQQyxNQUFPLEdBQ1BDLE9BQVEsR0FDUkMsS0FBTSxRQUNMbnVCLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksZUFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSxzQkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyxxMUJBRVAsYUN6QmdCLFNBQW1CdHVCLEdBQ2pDLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQQyxNQUFPLEdBQ1BDLE9BQVEsR0FDUkMsS0FBTSxRQUNMbnVCLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksaUJBQ0owcEIsTUFBTyxHQUNQQyxPQUFRLEdBQ1JoVCxFQUFHLEVBQ0hzSyxFQUFHLEVBQ0g0SSxVQUFXLGlCQUNYcGdCLE1BQU8sQ0FDTHFnQixTQUFVLFVBRVhQLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDNUQrdEIsS0FBTSxVQUNORyxFQUFHLG9CQUNDOXVCLEtBQU9BLEdBQWtCZCxFQUFNMEIsY0FBYyxJQUFLLENBQ3REbXVCLEtBQU0sd0JBQ1E3dkIsRUFBTTBCLGNBQWMsT0FBUSxDQUMxQyt0QixLQUFNLFVBQ05HLEVBQUcsazhIQUVQLGFDekJnQixTQUFtQnR1QixHQUNqQyxPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEMsTUFBTyxHQUNQQyxPQUFRLEdBQ1JDLEtBQU0sUUFDTG51QixHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLGdCQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLHVCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLDB2Q0FFUCxrQkN6QnFCLFNBQXdCdHVCLEdBQzNDLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQRyxLQUFNLE9BQ04waEIsUUFBUyxhQUNSN3ZDLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksc0JBQ0owcEIsTUFBTyxHQUNQQyxPQUFRLEdBQ1JoVCxFQUFHLEVBQ0hzSyxFQUFHLEVBQ0g0SSxVQUFXLGlCQUNYcGdCLE1BQU8sQ0FDTHFnQixTQUFVLFVBRVhQLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDNUQrdEIsS0FBTSxVQUNORyxFQUFHLG9CQUNDOXVCLEtBQU9BLEdBQWtCZCxFQUFNMEIsY0FBYyxJQUFLLENBQ3REbXVCLEtBQU0sNkJBQ1E3dkIsRUFBTTBCLGNBQWMsT0FBUSxDQUMxQyt0QixLQUFNLFVBQ05HLEVBQUcsc3dCQUVQLDBCQ3hCZ0IsU0FBbUJ0dUIsR0FDakMsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BHLEtBQU0sT0FDTjBoQixRQUFTLGFBQ1I3dkMsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxnQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSx1QkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyxzL0JBRVAsV0N4QmMsU0FBaUJ0dUIsR0FDN0IsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BHLEtBQU0sT0FDTjBoQixRQUFTLGFBQ1I3dkMsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxjQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLHFCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLCtsQ0FFUCxnQkN4QmUsU0FBa0J0dUIsR0FDL0IsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BHLEtBQU0sT0FDTjBoQixRQUFTLGFBQ1I3dkMsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxnQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSx1QkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyxrMEJBRVAsYUN4QmlCLFNBQW9CdHVCLEdBQ25DLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQQyxNQUFPLEdBQ1BDLE9BQVEsR0FDUkMsS0FBTSxRQUNMbnVCLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksbUJBQ0owcEIsTUFBTyxHQUNQQyxPQUFRLEdBQ1JoVCxFQUFHLEVBQ0hzSyxFQUFHLEVBQ0g0SSxVQUFXLGlCQUNYcGdCLE1BQU8sQ0FDTHFnQixTQUFVLFVBRVhQLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDNUQrdEIsS0FBTSxVQUNORyxFQUFHLG9CQUNDOXVCLEtBQU9BLEdBQWtCZCxFQUFNMEIsY0FBYyxJQUFLLENBQ3REbXVCLEtBQU0sMEJBQ1E3dkIsRUFBTTBCLGNBQWMsT0FBUSxDQUMxQyt0QixLQUFNLFVBQ05HLEVBQUcsaXNDQUVQLGtCQ3pCZ0IsU0FBbUJ0dUIsR0FDakMsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BDLE1BQU8sR0FDUEMsT0FBUSxHQUNSQyxLQUFNLFFBQ0xudUIsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxpQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSx3QkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyw0a0NBRVAsaUJFekJjLFNBQWlCdHVCLEdBQzdCLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQQyxNQUFPLEdBQ1BDLE9BQVEsR0FDUkMsS0FBTSxRQUNMbnVCLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksZUFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSxzQkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyxzd0JBRVAsYUR6QmEsU0FBZ0J0dUIsR0FDM0IsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BDLE1BQU8sR0FDUEMsT0FBUSxHQUNSQyxLQUFNLFFBQ0xudUIsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxhQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLG9CQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLG84QkFFUCxXRXpCYyxTQUFpQnR1QixHQUM3QixPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEcsS0FBTSxPQUNOMGhCLFFBQVMsYUFDUjd2QyxHQUFROHRCLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDcEUrdEIsS0FBTSxVQUNORyxFQUFHLDBIQUVQLGtCQ1RxQixTQUF3QnR1QixHQUMzQyxPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEMsTUFBTyxHQUNQQyxPQUFRLEdBQ1JDLEtBQU0sUUFDTG51QixHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLHNCQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLDZCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLDgxQkFFUCx1QkN6QnNCLFNBQXlCdHVCLEdBQzdDLE9BQW9CdEIsRUFBTTBCLGNBQWMsTUFBT0MsR0FBUyxDQUN0RDJ0QixNQUFPLDZCQUNQQyxNQUFPLEdBQ1BDLE9BQVEsR0FDUkMsS0FBTSxRQUNMbnVCLEdBQXFCdEIsRUFBTTBCLGNBQWMsT0FBUSxDQUNsRG1FLEdBQUksd0JBQ0owcEIsTUFBTyxHQUNQQyxPQUFRLEdBQ1JoVCxFQUFHLEVBQ0hzSyxFQUFHLEVBQ0g0SSxVQUFXLGlCQUNYcGdCLE1BQU8sQ0FDTHFnQixTQUFVLFVBRVhQLEtBQVVBLEdBQXFCcHZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDNUQrdEIsS0FBTSxVQUNORyxFQUFHLG9CQUNDOXVCLEtBQU9BLEdBQWtCZCxFQUFNMEIsY0FBYyxJQUFLLENBQ3REbXVCLEtBQU0sK0JBQ1E3dkIsRUFBTTBCLGNBQWMsT0FBUSxDQUMxQyt0QixLQUFNLFVBQ05HLEVBQUcscXBCQUVQLGlCQ3pCa0IsU0FBcUJ0dUIsR0FDckMsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BDLE1BQU8sR0FDUEMsT0FBUSxHQUNSQyxLQUFNLFFBQ0xudUIsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxrQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSx5QkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyxra0JBRVAsc0JDekJtQixTQUFzQnR1QixHQUN2QyxPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEMsTUFBTyxHQUNQQyxPQUFRLEdBQ1JDLEtBQU0sUUFDTG51QixHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLG9CQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLDJCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLG9ZQUVQLGdCQ3pCb0IsU0FBdUJ0dUIsR0FDekMsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BDLE1BQU8sR0FDUEMsT0FBUSxHQUNSQyxLQUFNLFFBQ0xudUIsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxzQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSw2QkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyxvcENBRVAscUJDekJtQixTQUFzQnR1QixHQUN2QyxPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEMsTUFBTyxHQUNQQyxPQUFRLEdBQ1JDLEtBQU0sUUFDTG51QixHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLG9CQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLDJCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLGltQ0FFUCxlQ3pCbUIsU0FBc0J0dUIsR0FDdkMsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BDLE1BQU8sR0FDUEMsT0FBUSxHQUNSQyxLQUFNLFFBQ0xudUIsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxxQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSw0QkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRywwMUJBRVAsb0JDekJrQixTQUFxQnR1QixHQUNyQyxPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEMsTUFBTyxHQUNQQyxPQUFRLEdBQ1JDLEtBQU0sUUFDTG51QixHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLG1CQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLDBCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLG8xQkFFUCxjQ3pCa0IsU0FBcUJ0dUIsR0FDckMsT0FBb0J0QixFQUFNMEIsY0FBYyxNQUFPQyxHQUFTLENBQ3REMnRCLE1BQU8sNkJBQ1BDLE1BQU8sR0FDUEMsT0FBUSxHQUNSQyxLQUFNLFFBQ0xudUIsR0FBcUJ0QixFQUFNMEIsY0FBYyxPQUFRLENBQ2xEbUUsR0FBSSxtQkFDSjBwQixNQUFPLEdBQ1BDLE9BQVEsR0FDUmhULEVBQUcsRUFDSHNLLEVBQUcsRUFDSDRJLFVBQVcsaUJBQ1hwZ0IsTUFBTyxDQUNMcWdCLFNBQVUsVUFFWFAsS0FBVUEsR0FBcUJwdkIsRUFBTTBCLGNBQWMsT0FBUSxDQUM1RCt0QixLQUFNLFVBQ05HLEVBQUcsb0JBQ0M5dUIsS0FBT0EsR0FBa0JkLEVBQU0wQixjQUFjLElBQUssQ0FDdERtdUIsS0FBTSwwQkFDUTd2QixFQUFNMEIsY0FBYyxPQUFRLENBQzFDK3RCLEtBQU0sVUFDTkcsRUFBRyx5cUJBRVAsbUJDekJpQixTQUFvQnR1QixHQUNuQyxPQUFvQnRCLEVBQU0wQixjQUFjLE1BQU9DLEdBQVMsQ0FDdEQydEIsTUFBTyw2QkFDUEcsS0FBTSxPQUNOMGhCLFFBQVMsYUFDUjd2QyxHQUFxQnRCLEVBQU0wQixjQUFjLE9BQVEsQ0FDbERtRSxHQUFJLGlCQUNKMHBCLE1BQU8sR0FDUEMsT0FBUSxHQUNSaFQsRUFBRyxFQUNIc0ssRUFBRyxFQUNINEksVUFBVyxpQkFDWHBnQixNQUFPLENBQ0xxZ0IsU0FBVSxVQUVYUCxLQUFVQSxHQUFxQnB2QixFQUFNMEIsY0FBYyxPQUFRLENBQzVEK3RCLEtBQU0sVUFDTkcsRUFBRyxvQkFDQzl1QixLQUFPQSxHQUFrQmQsRUFBTTBCLGNBQWMsSUFBSyxDQUN0RG11QixLQUFNLHdCQUNRN3ZCLEVBQU0wQixjQUFjLE9BQVEsQ0FDMUMrdEIsS0FBTSxVQUNORyxFQUFHLG9wQkFFUCxnTkNSYW1qQyxHQUFTL3lELEVBQU1DLFlBQzFCLFNBQ0VDLEVBV0E2SCxHQVZFLElBQUF6SCxhQUNBbUIsRUFBQXZCLEVBQUFrekMsV0FBQUEsT0FBVSxJQUFBM3hDLEVBQUcsRUFBQ0EsRUFDZHJCLEVBQUFGLEVBQUFzbUIsU0FBQUEsT0FBUSxJQUFBcG1CLEVBQUcsU0FBUUEsRUFDbkJJLEVBQUFOLEVBQUFHLFNBQUFBLE9BQVEsSUFBQUcsR0FBUUEsRUFDaEJFLEVBQUFSLEVBQUF1QyxNQUFBQSxPQUFLLElBQUEvQixFQUFHLEdBQUVBLEVBQ1ZtRixPQUNBakYsRUFBQVYsRUFBQTh5RCxLQUFBQSxPQUFPLElBQUFweUQsRUFBQSxPQUNQRSxFQUFBWixFQUFBcWtELFlBQUFBLE9BQWMsSUFBQXpqRCxFQUFBLEtBQ1hRLEVBVEw3QyxFQUFBeUIsRUFBQSxDQUFBLFdBQUEsYUFBQSxXQUFBLFdBQUEsUUFBQSxLQUFBLE9BQUEsZ0JBYUEsT0FFRUYsRUFBQTBCLGNBQUN1eEQsR0FBb0J2MUQsRUFBQSxDQUFDK0UsTUFBT0EsUUFBUzhCLEVBQVdsRSxTQUFVQSxHQUFjaUIsR0FDdkV0QixFQUFBMEIsY0FBQ3d4RCxHQUF3QixDQUFBcnRELEdBQUlBLEVBQUkxRixJQUFLNEgsRUFBYzVHLFVBQVdJLElBQzVEeXhELEdBQVFoekQsd0JBQU1tQixVQUFXSSxJQUFtQnl4RCxHQUM3Q2h6RCxFQUFBMEIsY0FBQSxPQUFBLENBQU1QLFVBQVdJLElBQ2Z2QixFQUFDMEIsY0FBQXl4RCxHQUFxQixDQUFDNU8sWUFBYUEsS0FFdEN2a0QsRUFBQzBCLGNBQUEweEQsR0FBb0IsQ0FBQ2p5RCxVQUFXSSxJQUMvQnZCLEVBQUMwQixjQUFBMnhELEdBQWdCLFFBR3JCcnpELEVBQUEwQixjQUFDNHhELEdBQ0MsQ0FBQTlzQyxTQUFVQSxFQUNWcmxCLFVBQVdJLEdBQ1g2eEMsV0FBWUEsR0FDWnB6QyxFQUFDMEIsY0FBQTZ4RCxHQUF3QixLQUN2QnZ6RCxFQUFDMEIsY0FBQTh4RCxHQUE2RSxLQUFBLGlCQUM5RXh6RCxFQUFBMEIsY0FBQzZ4RCxHQUF3QixLQUFFanpELEdBQzNCTixFQUFDMEIsY0FBQSt4RCxHQUFnQyxLQUFBLHFCQUszQyxJQVNXQyxHQUFhMXpELEVBQU1DLFlBQzlCLFNBQ0VDLEVBQ0E2SCxHQURFLElBQUF6SCxFQUFRSixFQUFBSSxTQUFFbUIsRUFBQXZCLEVBQUFHLFNBQUFBLE9BQVcsSUFBQW9CLEdBQUtBLEVBQUtILEVBQUs3QyxFQUFBeUIsRUFBdEMseUJBR0EsT0FDRUYsRUFBQzBCLGNBQUFpeUQsUUFDS3J5RCxFQUFLLENBQ1RuQixJQUFLNEgsRUFDTDVHLFVBQVdJLEdBQ1hsQixTQUFVQSxJQUNUQyxFQUdQLElBR1dzekQsR0FBaUJDLEdDMUU5QixNQWEyR0MsR0FiM0NDLEVBQWlCOXpELFlBQUMsQ0FBQ3FCLEVBQU95RyxJQUNqRWlzRCxFQUFBQSxjQUFxQkMsRUFBaUJDLE1BQU9DLEVBQXFDLENBQUEsRUFBSTd5RCxFQUFPLENBQzlHbkIsSUFBSzRILEVBQ0w4c0IsWUFBYzF5QixJQUNWLElBQUlpeUQsRUFDeUMsUUFBNUNBLEVBQXFCOXlELEVBQU11ekIsbUJBQWdELElBQXZCdS9CLEdBQWlDQSxFQUFtQjkxRCxLQUFLZ0QsRUFBT2EsSUFDaEhBLEVBQU1DLGtCQUFvQkQsRUFBTWtPLE9BQVMsR0FBR2xPLEVBQU1pTixnQkFBZ0IsNllDTGtCLE1BQU1pbEQsR0FBc0MsV0FDM0lDLEdBQW9DLEtBQ25DQyxHQUE2Q0MsSUFBNkNDLEVBQTBCSixLQUNwSEssR0FBd0NDLElBQTRDSixHQUE0Q0YsSUFDaklPLEdBQTBEQyxFQUFpQjUwRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUStzRCxnQkFBaUJBLEVBQWtCcnlELE1BQU9vMUIsRUFBWXJXLElBQUs4ZixFQUFVeXpCLGNBQWVBLEVBQWdCQyxNQUFnREMsR0FBa0IzekQsRUFDeEtrZ0IsRUFBTTB6QyxHQUF1QzV6QixHQUFXQSxFQUFVZ3pCLEdBQ2xFN3hELEVBQVEweUQsR0FBeUN0OUIsRUFBV3JXLEdBQU9xVyxFQUFZLEtBQy9FdTlCLEVBQWFDLEdBQStCNXlELEdBQVNzeUQsRUFBY3R5RCxFQUFPK2UsUUFBT2pkLEVBQ3ZGLE9BQXFCK3dELEVBQUFBLGNBQXFCWixHQUF3QyxDQUM5RWx4RCxNQUFPc3hELEVBQ1ByeUQsTUFBT0EsRUFDUCtlLElBQUtBLEdBQ1E4ekMsZ0JBQXFCQyxFQUFpQnpsRCxJQUFLMGxELEVBQXFDLENBQzdGLGdCQUFpQmgwQyxFQUNqQixnQkFBaUIsRUFDakIsZ0JBQWlCNnpDLEdBQStCNXlELEdBQVNBLE9BQVE4QixFQUNqRSxpQkFBa0I2d0QsRUFDbEJwb0MsS0FBTSxjQUNOLGFBQWN5b0MsR0FBdUNoekQsRUFBTytlLEdBQzVELGFBQWMvZSxRQUFxQ0EsT0FBUThCLEVBQzNELFdBQVlpZCxHQUNieXpDLEVBQWUsQ0FDZDkwRCxJQUFLNEgsS0FDTCxJQUtSNnNELEdBQTBDYyxVQUFZLENBQ2xEbDBDLElBQUtsZ0IsRUFBT29JLEVBQVVpc0QsR0FDbEIsTUFBTUMsRUFBWXQwRCxFQUFNb0ksR0FDbEJtc0QsRUFBUzN2RCxPQUFPMHZELEdBQ3RCLE9BQUlBLElBQWNWLEdBQXVDVSxHQUFtQixJQUFJcHhELE1BOEN4RixTQUFrRG94RCxFQUFXRCxHQUN6RCxNQUFPLG1DQUFtQ0MscUJBQTZCRCwrRUFDM0UsQ0FoRDhGRyxDQUF5Q0QsRUFBUUYsSUFDaEksSUFDVixFQUNEbHpELE1BQU9uQixFQUFPb0ksRUFBVWlzRCxHQUNwQixNQUFNOTlCLEVBQVl2MkIsRUFBTW9JLEdBQ2xCbXNELEVBQVMzdkQsT0FBTzJ4QixHQUNoQnJXLEVBQU0wekMsR0FBdUM1ekQsRUFBTWtnQixLQUFPbGdCLEVBQU1rZ0IsSUFBTTh5QyxHQUM1RSxPQUFpQixNQUFiejhCLEdBQXNCczlCLEdBQXlDdDlCLEVBQVdyVyxHQUN2RSxLQURvRixJQUFJaGQsTUEwQ3ZHLFNBQW9Eb3hELEVBQVdELEdBQzNELE1BQU8scUNBQXFDQyxxQkFBNkJELGtOQU03RSxDQWpENkdJLENBQTJDRixFQUFRRixHQUUzSixHQW9CZ0csU0FBU1gsR0FBMkN2eUQsRUFBTytlLEdBQzVKLE1BQU8sR0FBR0QsS0FBS29vQixNQUFNbG5DLEVBQVErZSxFQUFNLE9BQ3ZDLENBQ0EsU0FBU2kwQyxHQUF1Q2h6RCxFQUFPdXpELEdBQ25ELE9BQWdCLE1BQVR2ekQsRUFBZ0IsZ0JBQWtCQSxJQUFVdXpELEVBQVcsV0FBYSxTQUMvRSxDQUNBLFNBQVNYLEdBQStCNXlELEdBQ3BDLE1BQXdCLGlCQUFWQSxDQUNsQixDQUNBLFNBQVN5eUQsR0FBdUMxekMsR0FFNUMsT0FBTzZ6QyxHQUErQjd6QyxLQUFTeTBDLE1BQU16MEMsSUFBUUEsRUFBTSxDQUN2RSxDQUNBLFNBQVMyekMsR0FBeUMxeUQsRUFBTytlLEdBRXJELE9BQU82ekMsR0FBK0I1eUQsS0FBV3d6RCxNQUFNeHpELElBQVVBLEdBQVMrZSxHQUFPL2UsR0FBUyxDQUM5RixDQVlBLE1BQU15ekQsR0FBNEN0QixHQUM1Q3VCLEdBNUMwRHRCLEVBQWlCNTBELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixJQUFJcXVELEVBQ0osTUFBUXRCLGdCQUFpQkEsS0FBcUJ1QixHQUFtQi8wRCxFQUMzRDBDLEVBQVUyd0QsR0FKOEgsb0JBSS9DRyxHQUMvRixPQUFxQlEsZ0JBQXFCQyxFQUFpQnpsRCxJQUFLMGxELEVBQXFDLENBQ2pHLGFBQWNDLEdBQXVDenhELEVBQVF2QixNQUFPdUIsRUFBUXdkLEtBQzVFLGFBQW1ELFFBQXBDNDBDLEVBQWlCcHlELEVBQVF2QixhQUFzQyxJQUFuQjJ6RCxFQUE0QkEsT0FBaUI3eEQsRUFDeEcsV0FBWVAsRUFBUXdkLEtBQ3JCNjBDLEVBQWdCLENBQ2ZsMkQsSUFBSzRILElBQ04saUZDbEQ4RixNQUM5RnV1RCxHQUFnREMsSUFBNkNDLEVBRHlDLGNBQ2tCLENBQzNKQyxLQUVFQyxHQUF1Q0QsS0FzQ3ZDRSxHQUEwREMsRUFBaUIzMkQsWUFBQyxDQUFDcUIsRUFBT3lHLEtBQ3RGLE1BQVE4dUQsbUJBQW9CQSxLQUF3QnJzQyxHQUFpQmxwQixFQUMvRHcxRCxFQUFjSixHQUFxQ0csR0FDekQsT0FBcUJFLEVBQUFBLGNBQXFCQyxHQUFnQkMsRUFBcUMsQ0FBQSxFQUFJSCxFQUFhdHNDLEVBQWMsQ0FDMUhycUIsSUFBSzRILElBQ04sSUFPb0dtdkQsR0FBcUMsc0JBQ3pJQyxHQUFrREMsSUFBc0RkLEdBQStDWSxJQUN4SkcsR0FBMERULEVBQWlCMzJELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFROHVELG1CQUFvQkEsRUFBcUJ2MkQsU0FBVUEsS0FBY2dyQixHQUFpQmhxQixFQUNwRncxRCxFQUFjSixHQUFxQ0csR0FFbkR2cUQsRUFBZWdyRCxFQUF1QnZ2RCxFQUR6Qnd2RCxTQUFjLE9BRTNCQyxFQUFZRCxTQUFjLE1BQ2hDLE9BQXFCUixFQUFBQSxjQUFxQlUsR0FBd0IsQ0FDOUR6cEMsWUFBYWtwQyxHQUNianBDLFVBQVd5cEMsR0FDWHhwQyxTQUFVLGdCQUNHNm9DLEVBQUFBLGNBQXFCSSxHQUFrRCxDQUNwRjN6RCxNQUFPcXpELEVBQ1BXLFVBQVdBLEdBQ0VULEVBQW9CcjFELGNBQUNpMkQsR0FBZ0JWLEVBQXFDLENBQ3ZGanFDLEtBQU0sZUFDUDhwQyxFQUFheHJDLEVBQWMsQ0FDMUJuckIsSUFBS21NLEVBQ0xxZ0IsZ0JBQWlCaXJDLEVBQTRCdHNDLEVBQWFxQixpQkFBa0J4cUIsSUFDeEUsSUFBSTAxRCxFQUNKMTFELEVBQU1pTixpQkFDdUMsUUFBNUN5b0QsRUFBcUJMLEVBQVU5MEQsZUFBNEMsSUFBdkJtMUQsR0FBaUNBLEVBQW1CdmhELE1BQU0sQ0FDM0dDLGVBQWUsR0FDakIsSUFFTjVLLHFCQUF1QnhKLEdBQVFBLEVBQU1pTixpQkFFckN2RCxrQkFBb0IxSixHQUFRQSxFQUFNaU4sbUJBQ3BCMm5ELEVBQW9CcjFELGNBQUNvMkQsRUFBa0IsS0FBTXgzRCxJQUFXLElBQVEsSUFPcUJvM0QsR0FBbUMsbUJBQ3hJSyxHQUF5RG5CLEVBQWlCMzJELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUNyRixNQUFROHVELG1CQUFvQkEsS0FBd0J0cEMsR0FBZWpzQixFQUM3RHcxRCxFQUFjSixHQUFxQ0csR0FDekQsT0FBcUJFLEVBQUFBLGNBQXFCaUIsR0FBY2YsRUFBcUMsQ0FBQSxFQUFJSCxFQUFhdnBDLEVBQVksQ0FDdEhwdEIsSUFBSzRILElBQ04sSUFRRGt3RCxHQUEwRHJCLEVBQWlCMzJELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFROHVELG1CQUFvQkEsS0FBd0JucEMsR0FBcUJwc0IsRUFDbkV3MUQsRUFBY0osR0FBcUNHLEdBQ3pELE9BQXFCRSxFQUFBQSxjQUFxQm1CLEdBQW9CakIsRUFBcUMsQ0FBQSxFQUFJSCxFQUFhcHBDLEVBQWtCLENBQ2xJdnRCLElBQUs0SCxJQUNOLElBbUREb3dELEdBM0o2QzcyRCxJQUMvQyxNQUFRdTFELG1CQUFvQkEsS0FBd0J1QixHQUFxQjkyRCxFQUNuRXcxRCxFQUFjSixHQUFxQ0csR0FDekQsT0FBcUJFLEVBQUFBLGNBQXFCc0IsR0FBYXBCLEVBQXFDLENBQUEsRUFBSUgsRUFBYXNCLEVBQWtCLENBQzNIM3RDLE9BQU8sSUFDUixFQXdKRDZ0QyxHQW5JNkNoM0QsSUFDL0MsTUFBUXUxRCxtQkFBb0JBLEtBQXdCdi9DLEdBQWdCaFcsRUFDOUR3MUQsRUFBY0osR0FBcUNHLEdBQ3pELE9BQXFCRSxFQUFBQSxjQUFxQndCLEdBQWV0QixFQUFxQyxDQUFFLEVBQUVILEVBQWF4L0MsR0FBYSxFQWlJMUhraEQsR0FBNEM3QixHQUM1QzhCLEdBQTRDcEIsR0FDNUNxQixHQWhEMEQ5QixFQUFpQjMyRCxZQUFDLENBQUNxQixFQUFPeUcsS0FDdEYsTUFBUTh1RCxtQkFBb0JBLEtBQXdCOEIsR0FBZ0JyM0QsRUFDOUR3MUQsRUFBY0osR0FBcUNHLEdBQ3pELE9BQXFCRSxFQUFBQSxjQUFxQjZCLEdBQWMzQixFQUFxQyxDQUFBLEVBQUlILEVBQWE2QixFQUFhLENBQ3ZIeDRELElBQUs0SCxJQUNOLElBNENEOHdELEdBcEMwRGpDLEVBQWlCMzJELFlBQUMsQ0FBQ3FCLEVBQU95RyxLQUN0RixNQUFROHVELG1CQUFvQkEsS0FBd0JpQyxHQUFnQngzRCxHQUM1RGsyRCxVQUFXQSxHQUFlSixHQUh5RyxvQkFHbkJQLEdBQ2xIQyxFQUFjSixHQUFxQ0csR0FDbkQxMkQsRUFBTW0zRCxFQUF1QnZ2RCxFQUFjeXZELEdBQ2pELE9BQXFCVCxFQUFBQSxjQUFxQjZCLEdBQWMzQixFQUFxQyxDQUFBLEVBQUlILEVBQWFnQyxFQUFhLENBQ3ZIMzRELElBQUtBLElBQ04sSUE4QkQ0NEQsR0FBNENoQixHQUM1Q2lCLEdBQTRDZiwwV0N6S2xELFNBQWUvM0QsR0FDYixJQUFBa3RCLEVBQVlsdEIsRUFBQWt0QixhQUNaeEMsRUFBSTFxQixFQUFBMHFCLEtBQ0pucEIsRUFBaUJ2QixFQUFBKzRELFdBQWpCQSxPQUFVLElBQUF4M0QsRUFBRyxLQUFJQSxFQUNqQnkzRCxrQkFDQTk0RCxFQUFBRixFQUFBaTVELFdBQUFBLE9BQWEsSUFBQS80RCxFQUFBLFNBQVFBLEVBQ3JCZzVELEVBQWFsNUQsRUFBQWs1RCxjQUNiQyxFQUFLbjVELEVBQUFtNUQsTUFDTDc0RCxFQUFnQk4sRUFBQW81RCxZQUFoQkEsT0FBVyxJQUFBOTRELEVBQUcsR0FBRUEsRUFFaEIsT0FDRVIsRUFBQTBCLGNBQUM2M0QsR0FBZ0IsQ0FBQzN1QyxLQUFNQSxFQUFNd0MsYUFBY0EsR0FDMUNwdEIsRUFBQzBCLGNBQUE4M0QsR0FBa0IsQ0FBQ3I0RCxVQUFXSSxHQUFPazRELFFBQ3BDejVELEVBQUMwQixjQUFBZzRELEdBQW1CLENBQUN2NEQsVUFBV0ksR0FBT280RCxVQUN2QzM1RCxFQUFDMEIsY0FBQWs0RCxHQUFtQixDQUFDejRELFVBQVdJLEdBQU9xcUIsU0FDckM1ckIsRUFBQTBCLGNBQUEsU0FBQSxDQUNFUCxVQUFXSSxHQUFPOGxELE1BQ2xCOW1ELFFBQVMsV0FBTSxPQUFBNnNCLEdBQWEsRUFBYixnQkFDSCxnQkFDWnB0QixFQUFDMEIsY0FBQW00RCxVQUVINzVELEVBQUMwQixjQUFBbzRELEdBQWtCLENBQUEzNEQsVUFBV0ksR0FBTzgzRCxPQUFRQSxHQUM1Q0MsR0FDQ3Q1RCxFQUFDMEIsY0FBQXE0RCxHQUF1QixDQUFDNTRELFVBQVdJLEdBQU8rM0QsYUFDeENBLEdBR0x0NUQsRUFBQTBCLGNBQUEsTUFBQSxDQUFLUCxVQUFXSSxHQUFPeTRELFNBQ3JCaDZELEVBQUEwQixjQUFDdTRELEdBQWtCLENBQUM5dkQsU0FBTyxHQUN6Qm5LLEVBQUEwQixjQUFDM0IsRUFBTSxDQUFDUSxRQUFTNjRELEVBQWV6NEQsUUFBUSxXQUNyQ3c0RCxJQUdMbjVELEVBQUEwQixjQUFDdzRELEdBQWtCLENBQUMvdkQsU0FBTyxHQUN6Qm5LLEVBQUEwQixjQUFDM0IsRUFBTyxDQUFBUSxRQUFTMjRELEVBQWV2NEQsUUFBUSxVQUNyQ3M0RCxPQVFqQixxQ0NqREEsU0FBbUIvNEQsU0FDakJJLEVBQVFKLEVBQUFJLFNBQ1JGLEVBQXFCRixFQUFBc21CLFNBQXJCQSxPQUFXLElBQUFwbUIsRUFBQSxhQUNYSSxFQUFBTixFQUFBaTZELFFBQUFBLE9BQU8sSUFBQTM1RCxFQUFHLFFBQU9BLEVBQ2pCRSxlQUFBMDVELE9BQWEsSUFBQTE1RCxFQUFBLFFBQU9BLEVBRXBCLE9BQ0VWLHVCQUNFbUIsVUFBV3BDLEVBQVd3QyxHQUFPODRELFdBQVM1NEQsRUFBQSxDQUFBLEVBQ3BDQSxFQUFDRixHQUFPKzRELFlBQTBCLGVBQWI5ekMsRUFDckIva0IsRUFBQ0YsR0FBT2c1RCxVQUF3QixhQUFiL3pDLEVBQ25CL2tCLEVBQUNGLEdBQU80NEQsTUFBYUEsRUFDckIxNEQsRUFBQ0YsR0FBTyxHQUFHc2dCLE9BQUF1NEMsb0JBQTRCQSxPQUV4Qzk1RCxFQUdQLGdCQ25CQSxTQUFlSixPQUFFczZELEVBQU90NkQsRUFBQXM2RCxRQUFFbDZELEVBQVFKLEVBQUFJLFNBQ2hDLE9BQ0VOLEVBQUMwQixjQUFBKzRELEdBQWUsQ0FBQ0QsUUFBU0EsRUFBU3I1RCxVQUFXSSxJQUMzQ2pCLEVBR1AsZ0JDUUEsU0FBZUosV0FDYkksYUFDQXNxQixFQUFJMXFCLEVBQUEwcUIsS0FDSndDLEVBQVlsdEIsRUFBQWt0QixhQUNaaXNDLEVBQUtuNUQsRUFBQW01RCxNQUNMNzRELEVBQXVCTixFQUFBdzZELGdCQUF2QkEsT0FBZSxJQUFBbDZELEdBQVFBLEVBQ3ZCRSxFQUFxQlIsRUFBQXk2RCxpQkFBckJBLE9BQW1CLElBQUFqNkQsRUFBQSxHQUFFQSxFQUNyQkUsY0FBQXVxRCxPQUFZLElBQUF2cUQsRUFBQSxTQUNaRSxFQUFBWixFQUFBcXZCLE1BQUFBLE9BQUssSUFBQXp1QixFQUFHLFFBQU9BLEVBRWYsT0FDRWQsRUFBQTBCLGNBQUNrNUQsR0FBVyxDQUFDaHdDLEtBQU1BLEVBQU13QyxhQUFjQSxHQUNyQ3B0QixFQUFDMEIsY0FBQW01RCxHQUFhLEtBQ1o3NkQsRUFBQzBCLGNBQUFvNUQsR0FBYyxDQUFDMzVELFVBQVdJLElBQ3pCdkIsRUFBQTBCLGNBQUNxNUQsR0FBYyxDQUNiNTVELFVBQVdwQyxFQUFXd0MsSUFBY0UsRUFBQSxDQUFBLEVBQUlBLEVBQUNrNUQsS0FBcUJBLEVBQW1CbDVELElBQ2pGNk4sTUFBTyxDQUFFNjdDLFVBQVNBLEVBQUU1N0IsTUFBS0EsSUFDekJ2dkIsRUFBQTBCLGNBQUEsTUFBQSxDQUFLUCxVQUFXSSxJQUNiODNELEdBQ0NyNUQsRUFBQzBCLGNBQUFzNUQsR0FDQyxDQUFBNzVELFVBQVdwQyxFQUFXd0MsSUFBWW5CLEVBQUEsQ0FBQSxFQUNoQ0EsRUFBQ21CLE1BQXlCbTVELE9BRTNCckIsSUFHSHFCLEdBQ0ExNkQsRUFBQTBCLGNBQUN1NUQsR0FBWSxDQUFDOTVELFVBQVdJLElBQ3ZCdkIsRUFBQTBCLGNBQUNtNEQsR0FBUyxRQUtoQjc1RCxFQUFBMEIsY0FBQSxNQUFBLENBQUtQLFVBQVdJLElBQWNqQixNQU0xQyxtQkNqREEsU0FBa0JKLEdBQUUsSUFBQXVCLFFBQUErZixPQUFNLElBQUEvZixFQUFBLE1BQUtyQixFQUFBRixFQUFBZzdELFNBQUFBLGFBQVcsRUFBQzk2RCxFQUFLa0IsRUFBSzdDLEVBQUF5QixFQUFuQyxvQkFDVnF2QixFQUFRMnJDLEVBQVcxNUMsRUFBTSxPQUFTLEdBQUFLLE9BQUlxNUMsRUFBVzE1QyxFQUFPLElBQUcsS0FFakUsT0FDRXhoQixFQUFBMEIsY0FBQ3k1RCxHQUFzQno5RCxFQUFBLENBQ3JCeUQsVUFBV0ksR0FDWGtCLE1BQU95NEQsRUFBVzE1QyxFQUFNQSxFQUFNMDVDLEVBQzlCMTVDLElBQUtBLEdBQ0RsZ0IsR0FDSnRCLEVBQUEwQixjQUFDMDVELElBQTRCajZELFVBQVdJLEdBQWtCK04sTUFBTyxDQUFFaWdCLE1BQUtBLEtBRzlFLG1GQ0xBLFNBQWdCcnZCLFNBQ2RFLEVBQWNGLEVBQUFpQixVQUFkQSxPQUFTLElBQUFmLEVBQUcsR0FBRUEsRUFDZEksRUFBT04sRUFBQTJGLEdBQVBBLE9BQUssSUFBQXJGLEVBQUEsR0FBRUEsRUFDUEUsYUFBQUwsT0FBVyxJQUFBSyxHQUFLQSxFQUNoQkUsRUFBZ0JWLEVBQUF3N0IsU0FBaEJBLE9BQVcsSUFBQTk2QixHQUFLQSxFQUNoQnVQLEVBQUlqUSxFQUFBaVEsS0FDRDdPLEVBQUs3QyxFQUFBeUIsRUFOTSxpREFRZCxPQUNFRixFQUFBMEIsY0FBQzI1RCxHQUFnQjM5RCxFQUFBLENBQ2Z5RCxVQUFXcEMsRUFBV3dDLElBQVdFLEVBQUEsQ0FBQSxFQUMvQkEsRUFBQ04sR0FBWUEsRUFDYk0sSUFDRnBCLFNBQVVBLEVBQ1ZxN0IsU0FBVUEsRUFDVnZyQixLQUFNQSxFQUNOdEssR0FBSUEsR0FBTXNLLEdBQ043TyxHQUNKdEIsRUFBQTBCLGNBQUM0NUQsR0FBaUIsQ0FBQ242RCxVQUFXSSxLQUdwQyxjQ1VNLFNBQWNyQixTQUFFSSxFQUFRSixFQUFBSSxTQUFFRixFQUFBRixFQUFBaUIsVUFBQUEsT0FBWSxJQUFBZixFQUFBLEdBQUVBLEVBQUtrQixFQUFLN0MsRUFBQXlCLEVBQXBDLDBCQUNsQixPQUNFRixFQUFBMEIsY0FBQzY1RCxHQUNLNzlELEVBQUEsQ0FBQSxFQUFBNEQsRUFDSixDQUFBSCxVQUFXcEMsRUFBV3dDLElBQVVFLEVBQUEsQ0FBQSxFQUM5QkEsRUFBQ04sR0FBWUEsUUFFZGIsRUFHUCxzQkFRTSxTQUFzQkosU0FBRUksRUFBUUosRUFBQUksU0FBRW1DLEVBQUt2QyxFQUFBdUMsTUFBRXJDLGNBQUFlLE9BQVksSUFBQWYsRUFBQSxHQUFFQSxFQUMzRCxPQUNFSixFQUFDMEIsY0FBQTg1RCxJQUNDLzRELE1BQU9BLEVBQ1B0QixVQUFXcEMsRUFBV3dDLElBQWNFLEVBQUEsQ0FBQSxFQUNsQ0EsRUFBQ04sR0FBWUEsT0FFZGIsRUFHUCxtQkE5Q00sU0FBbUJKLFNBQUVJLGFBQVVGLEVBQUFGLEVBQUFpQixVQUFBQSxPQUFTLElBQUFmLEVBQUcsR0FBRUEsRUFDakQsT0FDRUosRUFBQTBCLGNBQUMrNUQsR0FBUyxDQUNSdDZELFVBQVdwQyxFQUFXd0MsSUFBV0UsRUFBQSxDQUFBLEVBQy9CQSxFQUFDTixHQUFZQSxPQUVkYixFQUdQLG1CQTFCTSxTQUFtQkosU0FBRUksRUFBUUosRUFBQUksU0FBRUYsRUFBQUYsRUFBQWlCLFVBQUFBLE9BQVksSUFBQWYsRUFBQSxHQUFFQSxFQUFLa0IsRUFBSzdDLEVBQUF5QixFQUFwQywwQkFDdkIsT0FDRUYsRUFBQTBCLGNBQUNnNkQsR0FDS2grRCxFQUFBLENBQUEsRUFBQTRELEVBQ0osQ0FBQUgsVUFBV3BDLEVBQVd3QyxJQUFXRSxFQUFBLENBQUEsRUFDL0JBLEVBQUNOLEdBQVlBLFFBRWRiLEVBR1Asa0JDRk0sU0FBa0JKLFNBQ3RCSSxFQUFRSixFQUFBSSxTQUNSc3JCLEVBQU8xckIsRUFBQTByQixRQUNQaEIsRUFBSTFxQixFQUFBMHFCLEtBQ0p5RCxFQUFXbnVCLEVBQUFtdUIsWUFDWGpCLEVBQVlsdEIsRUFBQWt0QixhQUNaaHRCLEVBQUFGLEVBQUFzaUMsS0FBQUEsT0FBTyxJQUFBcGlDLEVBQUEsTUFBS0EsRUFDWkksRUFBZ0JOLEVBQUFtekMsTUFBaEJBLE9BQUssSUFBQTd5QyxFQUFHLFNBQVFBLEVBQ2hCRSxFQUFBUixFQUFBaUIsVUFBQUEsT0FBWSxJQUFBVCxFQUFBLEdBQUVBLEVBQ2RFLEVBQW1CVixFQUFBOC9DLGNBQW5CQSxPQUFhLElBQUFwL0MsRUFBRyxJQUFHQSxFQUNuQkUsRUFBQVosRUFBQWt6QyxXQUFBQSxPQUFhLElBQUF0eUMsRUFBQSxFQUFDQSxFQUNkRSxFQUFnQmQsRUFBQXk3RCxTQUFoQkEsT0FBUSxJQUFBMzZELEdBQVFBLEVBQ2JNLEVBWm1CN0MsRUFBQXlCLEVBQUEsQ0FBQSxXQUFBLFVBQUEsT0FBQSxjQUFBLGVBQUEsT0FBQSxRQUFBLFlBQUEsZ0JBQUEsYUFBQSxhQWNoQm1QLEVBQ0pyUCxFQUFBMEIsY0FBQ2s2RCxHQUF3QmwrRCxFQUFBLENBQ3ZCMDFDLFdBQVlBLEVBQ1o1USxLQUFNQSxFQUNONlEsTUFBT0EsR0FDSC94QyxFQUFLLENBQ1RILFVBQVdwQyxFQUFXd0MsSUFBY0UsRUFBQSxDQUFBLEVBQ2xDQSxFQUFDTixHQUFZQSxFQUNiTSxNQUNEbXFCLEVBQ0Q1ckIsRUFBQzBCLGNBQUFtNkQsR0FBc0IsQ0FBQzE2RCxVQUFXSSxHQUFjZ3VCLE1BQU8sR0FBSUMsT0FBUSxLQUd4RSxPQUFPNUQsRUFDTDVyQixFQUFDMEIsY0FBQW82RCxHQUF5QixLQUN4Qjk3RCxFQUFBMEIsY0FBQ3E2RCxJQUNDL2IsY0FBZUEsRUFDZnAxQixLQUFNQSxFQUNOeUQsWUFBYUEsRUFDYmpCLGFBQWNBLEdBQ2RwdEIsRUFBQTBCLGNBQUNzNkQsSUFBeUI3eEQsU0FBTyxHQUFFN0osR0FDbENxN0QsRUFBVzM3RCxFQUFBMEIsY0FBQ3U2RCxHQUF5QixLQUFBNXNELEdBQWtDQSxJQUk1RSxDQUVKIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzAsMSwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDgyLDgzLDg0XX0=
|