UNPKG

413 kBJavaScriptView Raw
1module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=78)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("material-ui")},function(e,t){e.exports=require("we-edit")},function(e,t){e.exports=require("recompose")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("@babel/runtime/helpers/createClass")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/helpers/getPrototypeOf")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("@babel/runtime/helpers/extends")},function(e,t){e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},function(e,t){e.exports=require("prop-types")},function(e,t){e.exports=require("@babel/runtime/helpers/assertThisInitialized")},function(e,t){e.exports=require("material-ui/MenuItem")},function(e,t){e.exports=require("react-redux")},function(e,t){e.exports=require("memoize-one")},function(e,t){e.exports=require("material-ui/svg-icons/action/picture-in-picture")},function(e,t){e.exports=require("@babel/runtime/helpers/objectDestructuringEmpty")},function(e,t){e.exports=require("material-ui/styles/colors")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/arrow-drop-down")},function(e,t){e.exports=require("material-ui/svg-icons/image/color-lens")},function(e,t){e.exports=require("material-ui/svg-icons/image/rotate-90-degrees-ccw")},function(e,t){e.exports=require("material-ui/styles/getMuiTheme")},function(e,t){e.exports=require("./representation-pagination")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("material-ui/styles/MuiThemeProvider")},function(e,t){e.exports=require("@babel/runtime/helpers/typeof")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-justify")},function(e,t){e.exports=require("material-ui/Popover")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-list-numbered")},function(e,t){e.exports=require("material-ui/svg-icons/toggle/check-box-outline-blank")},function(e,t){e.exports=require("material-ui/svg-icons/toggle/check-box")},function(e,t){e.exports=require("material-ui/RaisedButton")},function(e,t){e.exports=require("material-ui/Subheader")},function(e,t){e.exports=require("./representation-plain")},function(e,t){e.exports=require("react-dom")},function(e,t){e.exports=require("minimatch")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/close")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/menu")},function(e,t){e.exports=require("material-ui/Divider")},function(e,t){e.exports=require("material-ui/svg-icons/editor/border-color")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/arrow-back")},function(e,t){e.exports=require("material-ui/svg-icons/content/save")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/refresh")},function(e,t){e.exports=require("@babel/runtime/helpers/slicedToArray")},function(e,t){e.exports=require("material-ui/svg-icons/action/view-module")},function(e,t){e.exports=require("material-ui/svg-icons/content/text-format")},function(e,t){e.exports=require("material-ui/Menu")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-bold")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-italic")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-underlined")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-clear")},function(e,t){e.exports=require("material-ui/svg-icons/editor/strikethrough-s")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-color-fill")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-color-text")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-center")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-left")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-align-right")},function(e,t){e.exports=require("material-ui/svg-icons/editor/format-list-bulleted")},function(e,t){e.exports=require("material-ui/svg-icons/content/redo")},function(e,t){e.exports=require("material-ui/svg-icons/content/undo")},function(e,t){e.exports=require("material-ui/svg-icons/content/content-copy")},function(e,t){e.exports=require("material-ui/svg-icons/content/content-paste")},function(e,t){e.exports=require("material-ui/svg-icons/content/content-cut")},function(e,t){e.exports=require("material-ui/svg-icons/editor/border-all")},function(e,t){e.exports=require("material-ui/svg-icons/action/open-with")},function(e,t){e.exports=require("material-ui/svg-icons/editor/vertical-align-top")},function(e,t){e.exports=require("material-ui/svg-icons/editor/vertical-align-bottom")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/first-page")},function(e,t){e.exports=require("material-ui/svg-icons/navigation/last-page")},function(e,t){e.exports=require("material-ui/svg-icons/editor/insert-photo")},function(e,t){e.exports=require("material-ui/svg-icons/action/done")},function(e,t){e.exports=require("material-ui/svg-icons/editor/wrap-text")},function(e,t,n){var r=n(75);"string"==typeof r&&(r=[[e.i,r,""]]);var a={insert:"head",singleton:!1};n(77)(r,a);r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(76)(!1)).push([e.i,'.ruler.vertical{position:relative}.ruler.vertical .margin{width:20px;background-color:#000;opacity:.4}.ruler.vertical .margin .mover{position:relative;height:4px;width:100%;cursor:ns-resize}.ruler.vertical .margin.top{display:flex;flex-flow:wrap-reverse}.ruler.vertical .margin.top .mover{bottom:-2px}.ruler.horizontal{margin:0 auto}.ruler.horizontal .margin{height:20px;background-color:#000;opacity:.4}.ruler.horizontal .margin .mover{position:relative;width:4px;height:100%;cursor:ew-resize}.ruler.horizontal .margin.right .mover{right:2px}.ruler.horizontal .margin.left .mover{float:right;right:-2px}.ruler.horizontal .marker{height:8px;width:8px}.ruler.horizontal .marker svg{width:100%!important;height:100%!important;display:block!important;position:relative;top:12px}.ruler.horizontal .indent{height:8px;width:8px}.ruler.horizontal .indent svg{width:100%!important;height:100%!important;display:block!important;position:relative;top:12px}.ruler.horizontal .indent.left svg{left:-4px}.ruler.horizontal .indent.right svg{right:-4px}.ruler.horizontal .first-line{height:8px;width:8px}.ruler.horizontal .first-line svg{width:100%!important;height:100%!important;display:block!important;position:relative;top:12px}.ruler.horizontal .first-line.left svg{top:0;left:-4px}.ruler>svg text{font-size:10px}@font-face{font-family:my arial;src:local("arial"),url("/fonts/Arial")}',""])},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var a=(l=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(l))))+" */"),o=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(o).concat([a]).join("\n")}var l;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},a=0;a<this.length;a++){var o=this[a][0];"number"==typeof o&&(r[o]=!0)}for(a=0;a<e.length;a++){var l=e[a];"number"==typeof l[0]&&r[l[0]]||(n&&!l[2]?l[2]=n:n&&(l[2]="("+l[2]+") and ("+n+")"),t.push(l))}},t}},function(e,t,n){"use strict";var r,a={},o=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},l=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}();function i(e,t){for(var n=[],r={},a=0;a<e.length;a++){var o=e[a],l=t.base?o[0]+t.base:o[0],i={css:o[1],media:o[2],sourceMap:o[3]};r[l]?r[l].parts.push(i):n.push(r[l]={id:l,parts:[i]})}return n}function c(e,t){for(var n=0;n<e.length;n++){var r=e[n],o=a[r.id],l=0;if(o){for(o.refs++;l<o.parts.length;l++)o.parts[l](r.parts[l]);for(;l<r.parts.length;l++)o.parts.push(y(r.parts[l],t))}else{for(var i=[];l<r.parts.length;l++)i.push(y(r.parts[l],t));a[r.id]={id:r.id,refs:1,parts:i}}}}function u(e){var t=document.createElement("style");if(void 0===e.attributes.nonce){var r=n.nc;r&&(e.attributes.nonce=r)}if(Object.keys(e.attributes).forEach((function(n){t.setAttribute(n,e.attributes[n])})),"function"==typeof e.insert)e.insert(t);else{var a=l(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var s,m=(s=[],function(e,t){return s[e]=t,s.filter(Boolean).join("\n")});function p(e,t,n,r){var a=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=m(t,a);else{var o=document.createTextNode(a),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(o,l[t]):e.appendChild(o)}}function f(e,t,n){var r=n.css,a=n.media,o=n.sourceMap;if(a&&e.setAttribute("media",a),o&&btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var h=null,d=0;function y(e,t){var n,r,a;if(t.singleton){var o=d++;n=h||(h=u(t)),r=p.bind(null,n,o,!1),a=p.bind(null,n,o,!0)}else n=u(t),r=f.bind(null,n,t),a=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else a()}}e.exports=function(e,t){(t=t||{}).attributes="object"==typeof t.attributes?t.attributes:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o());var n=i(e,t);return c(n,t),function(e){for(var r=[],o=0;o<n.length;o++){var l=n[o],u=a[l.id];u&&(u.refs--,r.push(u))}e&&c(i(e,t),t);for(var s=0;s<r.length;s++){var m=r[s];if(0===m.refs){for(var p=0;p<m.parts.length;p++)m.parts[p]();delete a[m.id]}}}}},function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"Ribbon",(function(){return Xn})),n.d(r,"Create",(function(){return Jn}));var a={};n.r(a),n.d(a,"Ribbon",(function(){return mr})),n.d(a,"Tools",(function(){return pr}));var o={};n.r(o),n.d(o,"Tools",(function(){return Or}));var l={};n.r(l),n.d(l,"default",(function(){return qr})),n.d(l,"Ribbon",(function(){return Rr})),n.d(l,"Text",(function(){return Gt})),n.d(l,"Paragraph",(function(){return mn})),n.d(l,"File",(function(){return Be})),n.d(l,"History",(function(){return yn})),n.d(l,"Table",(function(){return r})),n.d(l,"Picture",(function(){return a})),n.d(l,"Layout",(function(){return o})),n.d(l,"Toolbar",(function(){return zr})),n.d(l,"ToolbarSeparator",(function(){return Nr})),n.d(l,"Tabs",(function(){return B.Tabs})),n.d(l,"Tab",(function(){return B.Tab})),n.d(l,"CheckIconButton",(function(){return je})),n.d(l,"DropDownButton",(function(){return bt}));var i=n(0),c=n.n(i),u=n(36),s=n.n(u),m=n(13),p=n.n(m),f=n(4),h=n.n(f),d=n(6),y=n.n(d),g=n(5),v=n.n(g),E=n(7),b=n.n(E),O=n(8),x=n.n(O),w=n(9),k=n.n(w),S=n(12),C=n.n(S),j=n(2),T=n(16),I=n.n(T),P=n(25),M=n.n(P),A=n(11),D=n.n(A),z=n(15),N=n(3),R=n(37),q=n.n(R),B=n(1),L=n(26),F=n.n(L),U=n(23),W=n.n(U),H=n(38),V=n.n(H),G=n(20),_=n.n(G),Y=n(39),K=n.n(Y),X=n(40),J=n.n(X),Z=n(19),$=n(41),Q=n.n($),ee=n(42),te=n.n(ee),ne=n(43),re=n.n(ne),ae=n(44),oe=n.n(ae),le=n(10),ie=n.n(le),ce=n(33),ue=n.n(ce),se=n(27),me=n.n(se),pe=n(45),fe=n.n(pe);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function de(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ye=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{searchText:n.getText(n.props)}),n}return k()(t,e),v()(t,[{key:"isObjectData",value:function(e){var t=e||this.props,n=fe()(t.dataSource,1)[0];return"object"==me()(n)}},{key:"getText",value:function(e){var t=e||this.props,n=t.dataSource,r=t.value,a=t.dataSourceConfig||{text:"text",value:"value"},o=a.text,l=a.value;if(this.isObjectData(e)){var i=n.find((function(e){return e[l]==r}));return i?i[o]+"":""}return r+""}},{key:"getIndex",value:function(e){var t=this.props,n=t.dataSource,r=t.dataSourceConfig||{text:"text",value:"value"},a=r.text;r.value;return this.isObjectData()?n.findIndex((function(t){return t[a]==e})):n.indexOf(e)}},{key:"getValue",value:function(e){var t=this.props,n=t.dataSource,r=t.dataSourceConfig||{text:"text",value:"value"},a=(r.text,r.value);return this.isObjectData()?n[e][a]:n[e]}},{key:"render",value:function(){var e=this,t=this.context.muiTheme.comboBox,n=this.props,r=n.name,a=void 0===r?"_".concat(Date.now()):r,o=(n.value,n.onChange),l=n.onException,i=n.style,u=n.menuProps,s=void 0===u?{}:u,m=n.textFieldStyle,p=n.inputStyle,f=n.children,h=n.icon,d=void 0===h?f:h,y=n.label,g=n.hint,v=void 0===g?y:g,E=D()(n,["name","value","onChange","onException","style","menuProps","textFieldStyle","inputStyle","children","icon","label","hint"]),b=this.getText(),O=this.state.searchText;return t&&t.height&&(i?i.height||(i.height=t.height):i={height:t.height}),t&&t.textFieldStyle&&(m=de({},t.textFieldStyle,{},m)),t&&t.menu&&(s=de({},t.menu,{},s)),i&&(m||(m={}),i.width&&!m.width&&(m.width=i.width),i.height&&!m.height&&(m.height=i.height),s.style&&!s.style.width&&i.width&&(s.style=de({},s.style,{width:i.width}))),p&&p.border&&(p.paddingRight=6),!d&&m&&m.height&&(d=c.a.createElement(_.a,{style:{height:m.height-4,width:6},viewBox:"6 -20 18 28"})),c.a.createElement("span",{style:{whiteSpace:"nowrap"}},c.a.createElement(B.AutoComplete,ie()({name:a,searchText:O,menuProps:s,onNewRequest:function(t,n){-1==n&&t&&(n=e.getIndex(t)),-1!=n?o&&o(e.getValue(n)):t&&l&&l(t)},onUpdateInput:function(t,n){e.setState({searchText:t})},onClose:function(){return e.setState({searchText:b})},filter:function(e,t){return e==b||-1!=t.indexOf(e)},openOnFocus:!0,style:i,inputStyle:p,textFieldStyle:m,hintText:v},E)),d)}},{key:"componentWillReceiveProps",value:function(e){this.props.value!=e.value&&this.setState({searchText:this.getText(e)})}}]),t}(i.PureComponent);h()(ye,"contextTypes",{muiTheme:C.a.object});var ge=ye,ve={loader:function(e){return{type:"".concat(j.DOMAIN,"/office/LOADER"),payload:e}},stream:function(e){return{type:"".concat(j.DOMAIN,"/office/STREAM"),payload:e}},format:function(e){return{type:"".concat(j.DOMAIN,"/office/FORMAT"),payload:e}},channel:function(e){return{type:"".concat(j.DOMAIN,"/office/channel"),payload:e}},scale:function(e){return{type:"".concat(j.DOMAIN,"/office/scale"),payload:e}}},Ee=function(e){return e.get("office")};function be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?be(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):be(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var xe=function(e){function t(){var e;y()(this,t);var n=(e=b()(this,x()(t).apply(this,arguments))).context.store,r=Object(j.getActive)(n.getState()),a=r.doc,o=r.state;return e.doc=a,e.state=t.getEmitterStream(o,a),e}return k()(t,e),v()(t,null,[{key:"getEmitterStream",value:function(e,t){var n=e.get("office"),r=n.format,a=void 0===r?{type:t.type}:r,o=n.stream,l=void 0===o?{type:"browser",name:t.name}:o,i=n.loader;return a.type!=t.type&&(l=i&&j.Emitter.supports.has(i.type)?Oe({},i):{type:"browser",name:t.name},a={type:t.type}),l.type||(l={type:"browser",name:t.name}),{format:a,stream:l}}}]),v()(t,[{key:"getSupportedFormats",value:function(){var e=j.Emitter.supports,t=Array.from(e.keys()).filter((function(e){return!!e})).map((function(t){var n=e.get(t).defaultProps,r=n.ext,a=n.name;return{text:"".concat(a," (*.").concat(r,")"),value:t}}));return e.has(this.doc.type)||t.unshift({text:"".concat(this.doc.typeName," (*.").concat(this.doc.typeExt,")"),value:this.doc.type}),t}},{key:"getSupportedStreams",value:function(){return Array.from(j.Stream.supports.keys()).filter((function(e){return!!e}))}},{key:"fixName",value:function(e,t){if(!t)return t;var n=j.Emitter.get(e),r=n?n.defaultProps.ext:this.doc.typeExt;return-1==t.indexOf(".")?t+"."+r:t.replace(/\.\w+$/g,"."+r)}},{key:"render",value:function(){var e,t,n,r,a=this,o=this.props,l=o.onCancel,i=(o.onSave,this.state),u=i.format,s=i.stream,m=this.getSupportedStreams(),p=this.getSupportedFormats(),f=!1,h=(t=(e=s).type,n=D()(e,["type"]),(r=j.Stream.get(t))?c.a.createElement(r,ie()({ref:"stream"},n,{format:u.type,fixName:function(e){return a.fixName(u.type,e)}})):(f=!0,c.a.createElement("center",{style:{color:"red"}},"no stream[type=",t,"] implemenation"))),d=function(e){var t=e.type,n=D()(e,["type"]),r=j.Emitter.get(t);return r?c.a.createElement(r.Setting,ie()({ref:"format"},n)):null}(u);return c.a.createElement("div",{style:{display:"flex",flexDirection:"column"}},c.a.createElement("div",null,m.length>1&&c.a.createElement("center",{style:{height:100,lineHeight:"100px"}},c.a.createElement("span",null,"Save to:"),c.a.createElement(ge,{value:s.type,dataSource:m,onChange:function(e){return a.setState({stream:Oe({},s,{type:e})})}}))),c.a.createElement("div",null,h),c.a.createElement("div",{style:{flex:"1 100%"}},p.length>0&&c.a.createElement("center",null,c.a.createElement("span",null,"Save as type:"),c.a.createElement(ge,{value:u.type,dataSource:p,onChange:function(e){a.setState({format:Oe({},u,{type:e})})}}))),c.a.createElement("div",null,d),c.a.createElement("center",null,c.a.createElement(ue.a,{label:"Cancel",style:{marginRight:5},onClick:l}),c.a.createElement(ue.a,{label:"Save",disabled:f,primary:!0,onClick:this.save.bind(this)})))}},{key:"save",value:function(){var e=this.context.store,n=this.props.onSave,r=this.state,a=r.format,o=r.stream;o=Oe({},o,{},this.refs.stream&&this.refs.stream.state||{}),a=Oe({},a,{},this.refs.format&&this.refs.format.state||{}),t.save(e)({format:a,stream:o}).then((function(){e.dispatch(ve.stream(o)),e.dispatch(ve.format(a))})).catch((function(t){return e.dispatch(j.ACTION.MESSAGE({type:"error",message:t.message}))})).then(n)}}]),t}(i.PureComponent);function we(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ke(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?we(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):we(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}h()(xe,"contextTypes",{store:C.a.object}),h()(xe,"save",(function(e){return function(t){var n=t.format,r=t.stream,a=Object(j.getActive)(e.getState()),o=a.state,l=a.doc;r||(r=xe.getEmitterStream(o,l).stream),n||(n={type:l.type});var i=l.type==n.type?j.Emitter.Format.OutputInput:j.Emitter.get(n.type);return Object(j.render)(c.a.createElement(z.Provider,{store:e},c.a.createElement(l.Store,{readonly:!0,release:!1},c.a.createElement(j.Emitter,null,c.a.createElement(j.Stream,r,c.a.createElement(i,n))))))}}));var Se=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"getStyle",I()((function(e,t,r,a,o){var l=n.context.muiTheme.sizeIconButton;return e=e||{},a=a||{},l&&(!t&&l.size&&(t=l.size),!r&&l.padding&&(r=l.padding)),r||(r=2),t&&(e.width=e.height=t,a.width=a.height=t-2*r,e.padding=r),{style:ke({},e,{},Ce[o]),iconStyle:a}}))),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.status,n=e.disabled,r=void 0===n?"disabled"==t:n,a=e.size,o=e.padding,l=e.style,i=e.iconStyle,u=e.label,s=e.hint,m=void 0===s?u:s,p=D()(e,["status","disabled","size","padding","style","iconStyle","label","hint"]);return c.a.createElement(B.IconButton,ie()({},p,this.getStyle(l,a,o,i,t),{disabled:r,tooltip:m}))}}]),t}(i.PureComponent);h()(Se,"contextTypes",{muiTheme:C.a.object});var Ce={checked:{background:"lightblue"},unchecked:{},disabled:{}},je=function(e){return c.a.createElement(Se,e)};function Te(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Te(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Te(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Pe=function(e,t){return e.set("office",function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{loader:{},stream:{}},t=arguments.length>1?arguments[1]:void 0,n=t.type,r=t.payload;switch(n){case"".concat(j.DOMAIN,"/office/LOADER"):return Ie({},e,{loader:r});case"".concat(j.DOMAIN,"/office/STREAM"):return Ie({},e,{stream:r});case"".concat(j.DOMAIN,"/office/FORMAT"):return Ie({},e,{format:r});case"".concat(j.DOMAIN,"/office/channel"):return Ie({},e,{channel:r});case"".concat(j.DOMAIN,"/office/scale"):return Ie({},e,{scale:r});default:return e}}(e.get("office"),t))},Me=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{}),n}return k()(t,e),v()(t,[{key:"getSupportedLoaders",value:function(){return Array.from(j.Loader.supports.keys())}},{key:"render",value:function(){var e=this,t=this.getSupportedLoaders(),n=this.state.type,r=this.props.onLoad;return n||1!=t.length||(n=t[0]),c.a.createElement(i.Fragment,null,t.length>1&&c.a.createElement("div",{style:{textAlign:"center"}},c.a.createElement(ge,{hintText:"select a loader...",dataSource:t,onChange:function(t){return e.setState({type:t})},value:n||""})),n&&c.a.createElement(j.Loader,ie()({type:n},this.props,{onLoad:function(t){r(),t&&e.context.store.dispatch(ve.loader(t))},reducer:Pe})))}}]),t}(i.PureComponent);function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}h()(Me,"contextTypes",{store:C.a.object});var ze=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"getSupportedFormats",value:function(){return Array.from(j.Input.supports.values()).filter((function(e){return e.prototype.onChange&&e.defaultProps.template})).map((function(e){var t=e.defaultProps,n=t.template,r=t.type;return c.a.isValidElement(n)?c.a.cloneElement(n,{key:r}):"string"==typeof n?c.a.createElement(Ne,ie()({key:r},t,{url:n,template:void 0})):void 0}))}},{key:"render",value:function(){var e=this.getSupportedFormats();return 0==e.length&&(e=c.a.createElement("center",{style:{color:"red"}},"no templates")),c.a.createElement("div",null,e)}},{key:"create",value:function(e){var t=this,n=e.url,r=D()(e,["url"]);fetch(n).then((function(e){return e.blob()})).then((function(e){return De({data:e},r,{name:"Document".concat(Object(j.getAll)(t.context.store.getState()).length+1,".").concat(r.ext)})})).then((function(e){return j.Input.parse(e)})).then((function(e){var n=t.props.onCreate;t.context.store.dispatch(j.ACTION.ADD(e,Pe)),n()}))}},{key:"getChildContext",value:function(){return{create:this.create.bind(this)}}}]),t}(i.PureComponent);h()(ze,"contextTypes",{store:C.a.object}),h()(ze,"childContextTypes",{create:C.a.func});var Ne=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.type,n=D()(e,["type"]),r=this.context.create;return c.a.createElement("div",{style:{display:"inline-block"}},c.a.createElement("svg",{onClick:function(){return r(De({},n,{type:t}))},style:{width:50,height:75,background:"white"}}),c.a.createElement("center",{style:{fontSize:"smaller"}},t))}}]),t}(i.PureComponent);h()(Ne,"contextTypes",{create:C.a.func});var Re=j.Emitter.Format,qe=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props.doc;return c.a.createElement(e.Store,{readonly:!0,release:!1},c.a.createElement(j.Emitter,null,c.a.createElement(j.Stream,{type:"browser",target:"_blank"},c.a.createElement(Re,{type:"pdf"}))))}},{key:"componentDidMount",value:function(){this.props.onPrint()}}]),t}(i.PureComponent),Be=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){var e=this,t=this.props.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{status:"unchecked",hint:"refresh",onClick:function(t){e.context.store.dispatch(j.ACTION.Refresh())}},c.a.createElement(oe.a,null)),c.a.createElement(je,{status:"unchecked",hint:"save",onClick:function(t){xe.save(e.context.store)({})}},c.a.createElement(re.a,null)),t)}}]),t}(i.Component);h()(Be,"contextTypes",{store:C.a.object});var Le=n(24),Fe=Object(z.connect)()(function(e){function t(){var e;return y()(this,t),(e=b()(this,x()(t).apply(this,arguments))).state={},e}return k()(t,e),v()(t,[{key:"render",value:function(){var e,t=this,n=Le.FontManager.names;return c.a.createElement(i.Fragment,null,n.length>0&&c.a.createElement("div",null,"Already Loaded ",n.length," Fonts"),c.a.createElement("span",null,"you can "),c.a.createElement("button",{onClick:function(t){return e.click()}},"load more local fonts"),c.a.createElement("input",{type:"file",ref:function(t){return e=t},multiple:!0,style:{display:"none"},onChange:function(e){return t.load(e.target)}}))}},{key:"load",value:function(e){var t=this;Le.FontManager.fromBrowser(e).then((function(e){return t.setState({loaded:Date.now()})}))}}]),t}(i.PureComponent)),Ue=function(e){return c.a.createElement("div",{style:{width:300}},c.a.createElement(Fe,null))},We=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{action:null,display:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.display,r=t.action,a=function(){return e.setState({display:!1,action:null})},o=this.props,l=o.active,i=o.zIndex,u=o.width,s=void 0===u?256:u,m=o.children,p=o.avatar;o.commands;return c.a.createElement("div",{style:{zIndex:i,position:"fixed",left:0,top:0,width:"100%",height:"100%",display:n?"flex":"none",flexDirection:"row"}},c.a.createElement(B.Paper,{zDepth:2,style:{width:s,height:"100%",backgroundColor:"white"}},c.a.createElement("center",{style:{zoom:2,marginTop:5}},c.a.createElement(B.Avatar,{onClick:a,size:12,style:{position:"absolute",left:10,top:10}},c.a.createElement(te.a,null)),p&&c.a.cloneElement(p,{onClick:a})||c.a.createElement(B.Avatar,{backgroundColor:Z.gray100},c.a.createElement(Q.a,{color:Z.yellow500}))),c.a.createElement(B.Menu,{width:s,autoWidth:!s,value:r,selectedMenuItemStyle:{background:"lightgray",color:"red"},onChange:function(t,n){e.setState({action:n})}},c.a.createElement(B.MenuItem,{primaryText:"New",value:c.a.createElement(ze,{onCancel:a,onCreate:a})}),c.a.createElement(B.MenuItem,{primaryText:"Open",value:c.a.createElement(Me,{onCancel:a,onLoad:a})}),c.a.createElement(B.MenuItem,{disabled:!l,primaryText:"Save",value:c.a.createElement(xe,{onCancel:a,onSave:a})}),c.a.createElement(B.MenuItem,{disabled:!l,primaryText:"SaveAs",value:c.a.createElement(xe,{onCancel:a,onSave:a})}),c.a.createElement(J.a,null),c.a.createElement(B.MenuItem,{disabled:!l,primaryText:"Print",value:c.a.createElement(qe,{doc:l,onCanncel:a,onPrint:a})}),c.a.createElement(B.MenuItem,{primaryText:"Options",value:c.a.createElement(Ue,null)}),c.a.Children.map(m,(function(e){return e.props.value?e:c.a.cloneElement(e,{onClick:a})})))),c.a.createElement("div",{style:{flex:"1 100%",backgroundColor:"lightgray",display:"flex",flexDirection:"column",padding:10}},r&&c.a.cloneElement(r,{done:a})||c.a.createElement("div",{onClick:a,flex:"1 100%",style:{height:"100%"}})))}}]),t}(i.PureComponent);function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ve(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ge,_e,Ye=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{showDrawer:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.title,n=e.children,r=e.active,a=e.docs,o=e.setActive,l=e.close,i=e.height,u=void 0===i?20:i,s=e.style,m=void 0===s?{}:s,p=e.onMenu,f=null;return a.length>0&&(f=c.a.createElement(Se,{size:u,padding:u/4,onClick:l},c.a.createElement(V.a,null))),c.a.createElement("div",{style:Ve({position:"relative",background:"transparent",height:u,whiteSpace:"nowrap",display:"flex",flexDirection:"row"},m)},c.a.createElement("div",null,c.a.createElement(Se,{size:u,onClick:p},c.a.createElement(K.a,null))),c.a.createElement("div",{style:{lineHeight:"".concat(u,"px"),fontSize:u/2}},t||"we-edit"),c.a.createElement("div",{style:{flex:"1 100%",paddingLeft:20}},c.a.createElement(ge,{disabled:null==r,value:r?r.id:"",dataSource:a.map((function(e){var t=e.doc,n=t.id;return{text:t.name,value:n}})),onChange:o,underlineShow:!1,style:{width:100,height:u},textFieldStyle:{height:u,lineHeight:"".concat(u,"px"),fontSize:u/2},icon:c.a.createElement("span",null)})),c.a.createElement("div",{style:{lineHeight:"".concat(u,"px"),fontSize:u/2}},n),c.a.createElement("div",{style:{width:50}},f))}}]),t}(i.PureComponent),Ke=Object(N.compose)(Object(N.setDisplayName)("TitleBar"),Object(N.getContext)({store:C.a.object,muiTheme:C.a.object}),Object(N.mapProps)((function(e){var t=e.store.dispatch,n=e.muiTheme.titleBar;return Ve({},D()(e,["store","muiTheme"]),{setActive:function(e){t(j.ACTION.ACTIVE(e))},close:function(){t(j.ACTION.CLOSE())},height:n?n.height:void 0})})),Object(z.connect)((function(e){return{docs:Object(j.getAll)(e)}})))(Ye);n(74);function Xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xe(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xe(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ze={root:{position:"absolute",width:"100%",height:"100%",display:"flex",flexDirection:"column",background:Z.grey50,overflow:"hidden"},theme:{tabs:{backgroundColor:"transparent",textColor:"black",selectedTextColor:"red"},toolbar:{backgroundColor:"transparent"}}},$e=Object(N.compose)(Object(N.setDisplayName)("We-Edit-UI"),Object(z.connect)((function(e){return{active:(Object(j.getActive)(e)||{}).doc}})))((_e=Ge=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{}),h()(p()(n),"theme",I()((function(e){var t=W()(Ze.theme,n.props.theme);return e&&e.props.theme?W()(t,e.props.theme):t}))),h()(p()(n),"getActiveWorkspace",I()((function(e,t){return i.Children.toArray(e).find((function(e){var n=e.props.accept;if("string"==typeof n){var r=n;n=function(e){return q()(e.name||"",r)}}else if(n&&n.prototype&&n.prototype instanceof j.Input.Viewable){var a=n;n=function(e){return e.isTypeOf(a)}}return"function"==typeof n?n(t):!!n}))}))),h()(p()(n),"getNonWorkspaces",I()((function(e){var t=i.Children.toArray(e).filter((function(e){return!e.props.accept}));return t.length?t:null}))),n}return k()(t,e),v()(t,[{key:"componentDidCatch",value:function(e,t){this.setState({error:e.message})}},{key:"rejectContextMenu",value:function(e){}},{key:"render",value:function(){var e=this,t=this.props,n=t.children,r=t.active,a=t.titleBar,o=t.dashboard,l=t.style,i=t.dispatch,u=t.titleBarProps,s=D()(t,["children","active","titleBar","dashboard","style","dispatch","titleBarProps"]),m=null,p=this.getNonWorkspaces(n);r&&((m=this.getActiveWorkspace(n,r))?m=c.a.cloneElement(m,Je({doc:r},s,{},m.props)):p||(m=c.a.createElement("div",null,"no editor for this document")));var f=this.state.error,h=this.theme(m);return c.a.createElement(F.a,{muiTheme:h},c.a.createElement("div",{style:Je({},Ze.root,{},l),onContextMenu:this.rejectContextMenu},a&&c.a.cloneElement(a,Je({},u,{active:r,onMenu:function(t){return e.refs.dashboard.setState({display:!0})}})),o&&c.a.cloneElement(o,{ref:"dashboard",active:r,dispatch:i,zIndex:h.zIndex.popover}),m,p&&p.map((function(e){return c.a.cloneElement(e,{hasActiveWorkspace:!!m})})),c.a.createElement(B.Snackbar,{open:!!f,message:f||"",autoHideDuration:4e3,onRequestClose:function(){return e.setState({error:void 0})}})))}}]),t}(i.PureComponent),h()(Ge,"propTypes",{titleBar:C.a.node,dashboard:C.a.node}),h()(Ge,"defaultProps",{titleBar:c.a.createElement(Ke,null),dashboard:c.a.createElement(We,null)}),_e)),Qe=n(46),et=n.n(Qe),tt=n(28),nt=n.n(tt),rt=n(47),at=n.n(rt);function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ot(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ot(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var it={background:"transparent",color:"white",fontSize:8},ct={backgroundColor:Z.blue800,color:"white",width:"100%",display:"flex",flexDirection:"row"},ut=lt({},it,{minWidth:"auto"}),st=Object(N.compose)(Object(N.setDisplayName)("StatusBar"),Object(N.getContext)({muiTheme:C.a.object}),Object(N.mapProps)((function(e){var t=e.muiTheme,n=e.channel,r=e.scale;e.setScale;return{channel:n,scale:r,style:e.style,height:t.button.height}})),Object(N.onlyUpdateForKeys)(["height","channel"]))((function(e){var t=e.height,n=e.channel,r=e.style;return c.a.createElement("div",{style:lt({},ct,{height:t},r)},c.a.createElement(mt,null),c.a.createElement(pt,null),c.a.createElement("div",{style:{flex:"1 100%"}}),n.items.length<2?null:c.a.createElement(ht,ie()({height:t},n)),c.a.createElement(ft,null))})),mt=Object(N.compose)(Object(j.whenSelectionChange)((function(e,t){var n=e.selection,r=Object(j.getStatistics)(t),a=r.pages,o={total:void 0===a?0:a,allComposed:r.allComposed};if(n){var l=n.props("page",!1);l&&(o.current=l.page)}return o})))((function(e){var t=e.current,n=void 0===t?0:t,r=e.total,a=void 0===r?0:r,o=e.allComposed;return c.a.createElement(B.FlatButton,{style:it},"PAGE ",n+1," OF ",a,o?"":"..")})),pt=Object(j.connect)((function(e){return Object(j.getStatistics)(e)}))((function(e){var t=e.words,n=void 0===t?0:t,r=e.allComposed;return c.a.createElement(B.FlatButton,{style:it},"".concat(n).concat(r?"":"..")," WORDS")})),ft=Object(j.connect)((function(e){return{current:Ee(e).scale}}))((function(e){var t=e.current,n=void 0===t?100:t,r=e.max,a=void 0===r?200:r,o=e.min,l=void 0===o?10:o,i=e.step,u=void 0===i?10:i,s=e.dispatch,m=e.onChange,p=void 0===m?function(e){return s(ve.scale(e))}:m;return c.a.createElement("div",{style:{display:"flex"}},c.a.createElement(B.FlatButton,{label:"-",onClick:function(){return p(Math.max(n-u,l))},style:lt({},ut),labelStyle:{fontSize:20,fontWeight:700,paddingRight:4,paddingLeft:4}}),c.a.createElement(B.Slider,{style:{width:100,display:"inline-block"},sliderStyle:{top:-13},step:u,onChange:function(e,t){return p(t)},value:n,min:l,max:a}),c.a.createElement(B.FlatButton,{label:"+",onClick:function(){return p(Math.min(n+u,a))},style:lt({},ut),labelStyle:{fontSize:18,fontWeight:700,paddingRight:4,paddingLeft:4}}),c.a.createElement(B.FlatButton,{label:"".concat(n,"%"),style:lt({},ut),labelStyle:{fontSize:it.fontSize}}))})),ht=function(e){var t=e.items,n=e.current,r=e.onChange,a=e.height;return c.a.createElement("div",{style:{display:"flex",opacity:.4}},t.map((function(e){var t=e.channel,o=e.icon,l=e.style,i=void 0===l?{}:l;return t==n&&(i.background=Z.blue900),c.a.createElement(Se,{key:t,size:a,padding:a/4,style:i,tooltip:"".concat(t," mode"),tooltipPosition:"top-center",onClick:function(){return r(t)}},o)})))},dt=st,yt=n(48),gt=n.n(yt),vt=n(29),Et=n.n(vt),bt=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{open:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.open,r=t.anchor,a=this.toggle.bind(this),o=this.props,l=o.icon,i=o.children,u=(o.labelStyle,o.status),s=o.onClick,m=void 0===s?a:s,p=D()(o,["icon","children","labelStyle","status","onClick"]),f=null;return n&&(f=c.a.createElement(Et.a,{open:!0,anchorEl:r,onRequestClose:function(t){return e.setState({open:!1})}},c.a.createElement(gt.a,{onItemTouchTap:function(t){return e.setState({open:!1})}},i))),c.a.createElement("span",{style:{whiteSpace:"nowrap"}},c.a.createElement(Se,ie()({onClick:m},p,{status:u}),l),!1,c.a.createElement(_.a,{style:{height:24,width:6},viewBox:"6 -12 18 36",onClick:a}),f)}},{key:"toggle",value:function(e){this.setState({open:!this.state.open,anchor:e.currentTarget.parentNode})}}]),t}(i.Component),Ot=n(21),xt=n.n(Ot),wt=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e={fontWeight:700,marginTop:4},t=this.props.onChange;return c.a.createElement("div",{style:{width:150,fontSize:"smaller"}},c.a.createElement(St,{color:"currentColor",label:"Automatic",onSelect:t}),c.a.createElement("div",{style:e},"Theme Colors"),c.a.createElement(Ct,{onSelect:t}),c.a.createElement("div",{style:e},"Standard Colors"),c.a.createElement(jt,{onSelect:t}),c.a.createElement(St,{color:"",label:"No Color",onSelect:t}),c.a.createElement("div",{style:{marginTop:4}},c.a.createElement(B.FlatButton,{style:{textAlign:"left"},label:"More Colors...",icon:c.a.createElement(xt.a,null)})))}}]),t}(i.Component),kt=function(e){var t=e.color,n=e.size,r=void 0===n?12:n,a=D()(e,["color","size"]);return c.a.createElement("span",ie()({},a,{style:{cursor:"default",background:t,display:"inline-block",width:r,height:r,marginRight:2,lineHeight:"100%"}})," ")},St=function(e){var t=e.color,n=e.label,r=e.onSelect;return c.a.createElement(B.FlatButton,{fullWidth:!0,style:{textAlign:"left"},label:n,onClick:function(e){return r(t)},icon:c.a.createElement(B.FontIcon,null,c.a.createElement(kt,{color:t,size:16}))})},Ct=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.colorThemes,r=void 0===n?[]:n,a=t.onSelect;return c.a.createElement("div",{style:{padding:2}},[0,1,2,3,4,5].map((function(t){return c.a.createElement(jt,{key:t,onSelect:a,colors:r.map((function(n){return e.getColor(n,t)}))})})))}},{key:"getColor",value:function(e,t){return e}}]),t}(i.Component),jt=function(e){var t=e.onSelect,n=e.colors,r=void 0===n?"black,blue,red,yellow,chocolate,tan,pink,brown,green,orange".split(","):n;return c.a.createElement("div",{style:{paddingLeft:2,paddingTop:2,paddingBottom:2}},r.map((function(e){return c.a.createElement(kt,{key:e,color:e,onClick:function(){return t(e)}})})))};var Tt=function(e){function t(e){var n,r=e.value;return y()(this,t),(n=b()(this,x()(t).apply(this,arguments))).state={open:!1,color:r||"black"},n}return k()(t,e),v()(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.value;void 0!==t&&this.setState({color:t||this.state.value||"black"})}},{key:"render",value:function(){var e=this,t=this.state,n=t.open,r=(t.color,t.anchor),a=this.props,o=a.onChange,l=void 0===o?function(e){return e}:o,i=D()(a,["onChange"]),u=null;n&&(u=c.a.createElement(Et.a,{open:!0,anchorEl:r,onRequestClose:function(t){return e.setState({open:!1})}},c.a.createElement(wt,{onChange:function(t){e.setState({open:!1,color:t}),l(t)}})));var s=function(t){return e.setState({open:!n,anchor:t.currentTarget.parentNode})};return c.a.createElement("span",{style:{whiteSpace:"nowrap"}},c.a.createElement(Se,ie()({},i,{onClick:function(e){return"checked"==i.status?l(""):s(e)}})),c.a.createElement(_.a,{style:{height:24,width:6},viewBox:"6 -12 18 36",onClick:s}),u)}}]),t}(i.Component),It=n(49),Pt=n.n(It),Mt=n(50),At=n.n(Mt),Dt=n(51),zt=n.n(Dt),Nt=n(52),Rt=n.n(Nt),qt=n(53),Bt=n.n(qt),Lt=n(54),Ft=n.n(Lt),Ut=n(55),Wt=n.n(Ut),Ht=Object(N.compose)(Object(N.setDisplayName)("FontList"))((function(e){var t=e.fonts,n=void 0===t?Le.FontManager.names:t,r=e.value,a=e.changeFont,o=(e.muiTheme,e.dispatch,D()(e,["fonts","value","changeFont","muiTheme","dispatch"]));return c.a.createElement(ge,ie()({style:{width:150},value:r,dataSource:Array.from(new Set([].concat(n,["Arial","Times New Roman","Verdana","Calibri"]))).sort(),onChange:a,inputStyle:{border:"1px solid lightgray"},underlineShow:!1},o))})),Vt=function(e){return c.a.createElement(B.ToolbarSeparator,ie()({style:{marginRight:2,marginLeft:2}},e))},Gt=Object(N.compose)(Object(N.setDisplayName)("TextStyle"),Object(j.whenSelectionChange)((function(e){var t=e.selection;return t?{style:t.props("text",!1)}:{}})),Object(N.withProps)((function(e){var t=e.dispatch,n=e.style,r=function(e){return t(j.ACTION.Selection.UPDATE({text:{size:e}}))};return{style:n,toggleB:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{bold:!n.bold}}))},toggleI:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{italic:!n.italic}}))},toggleU:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{underline:!n.underline}}))},toggleSubscript:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{subscript:!n.subscript}}))},toggleSuperscript:function(e){return n&&t(j.ACTION.Selection.UPDATE({text:{superscript:!n.superscript}}))},changeFont:function(e){return t(j.ACTION.Selection.UPDATE({text:{fonts:e}}))},changeSize:r,smaller:function(){n&&r(Math.max(n.size-Math.ceil(Math.abs((n.size-8)/5)),8))},bigger:function(){n&&r(n.size+2)},changeHightlight:function(e){t(j.ACTION.Selection.UPDATE({text:{highlight:e}}))},changeColor:function(e){t(j.ACTION.Selection.UPDATE({text:{color:e}}))},clear:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];t(j.ACTION.Selection.UPDATE({text:{_clear:e}}))},toggleBorder:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(j.ACTION.Selection.UPDATE({text:{border:e}}))},underline:function(e){t(j.ACTION.Selection.UPDATE({text:{underline:e}}))},toggleStrike:function(){n&&t(j.ACTION.Selection.UPDATE({text:{strike:!n.strike}}))}}})),Object(N.shouldUpdate)((function(e,t){return!Object(N.shallowEqual)(e.style,t.style)})))((function(e){var t=e.style,n=e.children,r=e.bigger,a=e.smaller,o=e.clear,l=e.toggleStrike,i=e.changeHightlight,u=e.changeColor,s=e.toggleSubscript,m=e.toggleSuperscript,p=e.toggleBorder,f=e.toggleB,h=e.toggleI,d=e.underline,y=e.changeFont,g=e.changeSize;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Ht,{value:t&&t.fonts?t.fonts.split(",")[0]:"",changeFont:y}),c.a.createElement(ge,{style:{width:50},inputStyle:{border:"1px solid lightgray"},value:t?t.size:11,onChange:function(e){return g(parseInt(e))},dataSource:[8,9,10,11,12,14,16,20,22,24,26,28,36,72].map((function(e){return e+""})),underlineShow:!1}),c.a.createElement(je,{label:"increase font size",status:"unchecked",onClick:r,children:c.a.createElement(Kt,null)}),c.a.createElement(je,{label:"descrease font size",status:"unchecked",onClick:a,children:c.a.createElement(Xt,null)}),c.a.createElement(Vt,null),c.a.createElement(je,{label:"bold",status:t&&t.bold?"checked":"unchecked",onClick:function(){return f()},children:c.a.createElement(Pt.a,null)}),c.a.createElement(je,{label:"italic",status:t&&t.italic?"checked":"unchecked",onClick:function(){return h()},children:c.a.createElement(At.a,null)}),c.a.createElement(bt,{label:"underline",status:t&&t.underline?"checked":"unchecked",onClick:function(e){return d(t&&t.underline?"":"single")},icon:c.a.createElement(zt.a,null)},"single,double,dot,dash".split(",").map((function(e){return c.a.createElement(B.MenuItem,{key:e,onClick:function(t){return d(e)},primaryText:e})}))),c.a.createElement(je,{label:"strikethrough",status:t&&t.strike?"checked":"unchecked",onClick:function(){return l()},children:c.a.createElement(Bt.a,null)}),c.a.createElement(Vt,null),c.a.createElement(je,{label:"Subscript",status:t&&t.subscript?"checked":"unchecked",onClick:function(){return s()},children:c.a.createElement(Yt,null)}),c.a.createElement(je,{label:"Superscript",status:t&&t.superscript?"checked":"unchecked",onClick:function(){return m()},children:c.a.createElement(_t,null)}),c.a.createElement(je,{label:"text border",onClick:p,children:c.a.createElement(Jt,null)}),c.a.createElement(Tt,{label:"text highlight color",status:t&&t.highlight?"checked":"unchecked",onChange:function(e){return i(e)}},c.a.createElement(Ft.a,null)),c.a.createElement(Tt,{label:"text color",status:t&&t.color?"checked":"unchecked",onChange:function(e){return u(e)}},c.a.createElement(Wt.a,null)),c.a.createElement(Vt,null),c.a.createElement(je,{label:"clear all text formatting",onClick:o,children:c.a.createElement(Rt.a,null)}),n)})),_t=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 3) scale(0.7)"},c.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})),c.a.createElement("text",{x:"15",y:"9",style:{fontSize:9}},"2"))},Yt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 3) scale(0.7)"},c.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})),c.a.createElement("text",{x:"15",y:"20",style:{fontSize:9}},"2"))},Kt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 2)"},c.a.createElement("path",{d:"M5 17m4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"})),c.a.createElement("g",{transform:"translate(18 2)"},c.a.createElement("path",{d:"M0 3H6L3 0z"})))},Xt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 2)"},c.a.createElement("path",{d:"M5 17m4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"})),c.a.createElement("g",{transform:"translate(18 2)"},c.a.createElement("path",{d:"M0 0 H6L3 3z"})))},Jt=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"translate(0 2)"},c.a.createElement("path",{d:"M5 17m4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"})),c.a.createElement("path",{d:"M2 2 h20v20h-20z",fill:"none",stroke:"black"}))},Zt=n(56),$t=n.n(Zt),Qt=n(57),en=n.n(Qt),tn=n(58),nn=n.n(tn),rn=n(59),an=n.n(rn),on=n(30),ln=n.n(on);function cn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var un,sn=function(e){return c.a.createElement(B.ToolbarSeparator,ie()({style:{marginRight:2,marginLeft:2}},e))},mn=Object(N.compose)(Object(N.setDisplayName)("ParagraphStyle"),Object(j.whenSelectionChange)((function(e,t){var n=e.selection;return n?function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?cn(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):cn(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({style:n.props("paragraph",!1)},Object(j.getUI)(t)):Object(j.getUI)(t)})),Object(N.mapProps)((function(e){var t=e.dispatch,n=e.children,r=e.style,a=e.pilcrow;return{children:n,style:r,pilcrow:a,toggleAlign:function(e){var n=(r||{}).align;(void 0===n?"left":n)==e&&(e=null),t(j.ACTION.Selection.UPDATE({paragraph:{align:e}}))},numbering:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{numbering:e}}))},toggleBullet:function(e){r&&r.numbering&&"bullet"==r.numbering.format&&(e=null),t(j.ACTION.Selection.UPDATE({paragraph:{numbering:e}}))},toggleNumbering:function(e){r&&r.numbering&&"bullet"!==r.numbering.format&&(e=null),t(j.ACTION.Selection.UPDATE({paragraph:{numbering:e}}))},togglePilcrow:function(){t(j.ACTION.UI({pilcrow:!a}))}}})),Object(N.shouldUpdate)((function(e,t){return!(Object(N.shallowEqual)(e.style,t.style)&&e.pilcrow==t.pilcrow)})))((function(e){var t=e.style,n=e.toggleAlign,r=e.numbering,a=(e.bullet,e.toggleBullet),o=e.toggleNumbering,l=e.pilcrow,i=e.togglePilcrow,u=e.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{status:!t||t.align&&"left"!=t.align?"unchecked":"checked",onClick:function(){return n("left")},children:c.a.createElement(en.a,null)}),c.a.createElement(je,{status:t&&"center"==t.align?"checked":"unchecked",onClick:function(){return n("center")},children:c.a.createElement($t.a,null)}),c.a.createElement(je,{status:t&&"right"==t.align?"checked":"unchecked",onClick:function(){return n("right")},children:c.a.createElement(nn.a,null)}),c.a.createElement(je,{status:t&&"justify"==t.align?"checked":"unchecked",onClick:function(){return n("justify")},children:c.a.createElement(nt.a,null)}),c.a.createElement(sn,null),c.a.createElement(bt,{status:t&&t.numbering&&"bullet"==t.numbering.format?"checked":"unchecked",onClick:function(){return a({type:"bullet",text:"."})},icon:c.a.createElement(an.a,null)},c.a.createElement(B.MenuItem,{primaryText:".",onClick:function(e){return r({type:"bullet",text:"."})}}),c.a.createElement(B.MenuItem,{primaryText:"*",onClick:function(e){return r({type:"bullet",text:"*"})}})),c.a.createElement(bt,{status:t&&t.numbering&&"bullet"!==t.numbering.format?"checked":"unchecked",onClick:function(){return o({type:"decimal",text:"%1."})},icon:c.a.createElement(ln.a,null)},c.a.createElement(B.MenuItem,{primaryText:"1.",onClick:function(e){return r({type:"decimal",text:"%1."})}}),c.a.createElement(B.MenuItem,{primaryText:"a.",onClick:function(e){return r({type:"lowerLetter",text:"%1."})}}),c.a.createElement(B.MenuItem,{primaryText:"一",onClick:function(e){return r({type:"chinese",text:"%1"})}})),c.a.createElement(sn,null),c.a.createElement(je,{status:l?"checked":"unchecked",onClick:i,children:c.a.createElement(B.SvgIcon,null,c.a.createElement("g",{transform:"translate(0 4)"},c.a.createElement("path",{d:"M9 10v5h2V4h2v11h2V4h2V2H9C6.79 2 5 3.79 5 6s1.79 4 4 4z"})))}),u)})),pn=n(60),fn=n.n(pn),hn=n(61),dn=n.n(hn),yn=Object(N.compose)(Object(N.setDisplayName)("history"),Object(z.connect)((function(e){e=Object(j.getActive)(e).state;var t=Object(j.getRedos)(e),n=Object(j.getUndos)(e);return{canRedo:!!t.length,canUndo:!!n.length}}),(function(e){return{undo:function(){e(j.ACTION.History.undo())},redo:function(){e(j.ACTION.History.redo())}}})),Object(N.onlyUpdateForKeys)(["canRedo","canUndo"]))((function(e){var t=e.undo,n=e.redo,r=e.canUndo,a=e.canRedo,o=e.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{hint:"undo",status:r?"uncheck":"disabled",children:c.a.createElement(dn.a,null),onClick:t}),c.a.createElement(je,{hint:"redo",status:a?"uncheck":"disabled",children:c.a.createElement(fn.a,null),onClick:n}),o)})),gn=n(62),vn=n.n(gn),En=n(63),bn=n.n(En),On=n(64),xn=n.n(On),wn=Object(N.compose)(Object(N.setDisplayName)("clipboard"),Object(z.connect)((function(e){e=Object(j.getActive)(e).state;var t=Object(j.getSelection)(e),n=t.start,r=void 0===n?{}:n,a=t.end,o=void 0===a?{}:a;return{withSelection:!(r.id==o.id&&r.at==o.at),withClipboard:!!window._clipboard}}),(function(e){return{cut:function(){e(j.ACTION.Selection.CUT())},copy:function(){e(j.ACTION.Selection.COPY())},paste:function(){e(j.ACTION.Selection.PASTE())}}})),Object(N.onlyUpdateForKeys)(["withSelection","withClipboard"]))((function(e){var t=e.cut,n=e.copy,r=e.paste,a=e.withSelection,o=e.withClipboard,l=e.children;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(je,{label:"paste",status:o?"uncheck":"disabled",children:c.a.createElement(bn.a,null),onClick:r}),c.a.createElement(je,{label:"cut",status:a?"uncheck":"disabled",children:c.a.createElement(xn.a,null),onClick:t}),c.a.createElement(je,{label:"copy",status:a?"uncheck":"disabled",children:c.a.createElement(vn.a,null),onClick:n}),l)})),kn=n(65),Sn=n.n(kn),Cn=n(66),jn=n.n(Cn),Tn=n(31),In=n.n(Tn),Pn=n(32),Mn=n.n(Pn),An=n(67),Dn=n.n(An),zn=n(68),Nn=n.n(zn),Rn=n(69),qn=n.n(Rn),Bn=n(70),Ln=n.n(Bn),Fn=Object(N.compose)(Object(N.setDisplayName)("TableDesigner"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){var t=e.dispatch;return{addRowAbove:function(){t(j.ACTION.Entity.CREATE({type:"row",where:"before"}))},addRowBelow:function(){t(j.ACTION.Entity.CREATE({type:"row",where:"after"}))},addColRight:function(){t(j.ACTION.Entity.CREATE({type:"column",where:"after"}))},addColLeft:function(){t(j.ACTION.Entity.CREATE({type:"column",where:"before"}))},remove:function(e){t(j.ACTION.Selection.EXTEND(e)),t(j.ACTION.Selection.REMOVE({type:e}))},select:function(e){t(j.ACTION.Selection.EXTEND(e))}}})))((function(e){var t=e.addRowAbove,n=e.addRowBelow,r=e.addColLeft,a=e.addColRight,o=e.remove,l=e.select;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{title:"table conditions",icon:c.a.createElement(Un,{children:c.a.createElement(Kn,null)})},c.a.createElement(B.MenuItem,{primaryText:"Header Row",leftIcon:c.a.createElement(Mn.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Total Row",leftIcon:c.a.createElement(In.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Banded Rows",leftIcon:c.a.createElement(Mn.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"First Column",leftIcon:c.a.createElement(Mn.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Last Column",leftIcon:c.a.createElement(In.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Banded Columns",leftIcon:c.a.createElement(In.a,null)})),c.a.createElement(bt,{title:"select ...",icon:c.a.createElement(jn.a,null)},c.a.createElement(B.MenuItem,{primaryText:"Select Cell",leftIcon:c.a.createElement(Vn,null),onClick:function(){return l("cell")}}),c.a.createElement(B.MenuItem,{primaryText:"Select Column",leftIcon:c.a.createElement(Gn,null),onClick:function(){return l("column")}}),c.a.createElement(B.MenuItem,{primaryText:"Select Row",leftIcon:c.a.createElement(_n,null),onClick:function(){return l("row")}}),c.a.createElement(B.MenuItem,{primaryText:"Select Table",leftIcon:c.a.createElement(Yn,null),onClick:function(){return l("table")}})),c.a.createElement(bt,{title:"delete ...",icon:c.a.createElement(Wn,{children:c.a.createElement(Kn,{size:12,strokeWidth:3})})},c.a.createElement(B.MenuItem,{primaryText:"Delete Cell",onClick:function(){return o("cell")},leftIcon:c.a.createElement(Vn,null,c.a.createElement(Kn,null))}),c.a.createElement(B.MenuItem,{primaryText:"Delete Column",onClick:function(){return o("column")},leftIcon:c.a.createElement(Gn,null,c.a.createElement(Kn,null))}),c.a.createElement(B.MenuItem,{primaryText:"Delete Row",onClick:function(){return o("row")},leftIcon:c.a.createElement(_n,null,c.a.createElement(Kn,null))}),c.a.createElement(B.MenuItem,{primaryText:"Delete Table",onClick:function(){return o("table")},leftIcon:c.a.createElement(Yn,null,c.a.createElement(Kn,null))})),c.a.createElement(bt,{title:"insert row/column",icon:c.a.createElement(Wn,{children:null})},c.a.createElement(B.MenuItem,{primaryText:"Insert Row Above",leftIcon:c.a.createElement(Dn.a,null),onClick:t}),c.a.createElement(B.MenuItem,{primaryText:"Insert Row Below",leftIcon:c.a.createElement(Nn.a,null),onClick:n}),c.a.createElement(B.MenuItem,{primaryText:"Insert Column Left",leftIcon:c.a.createElement(qn.a,null),onClick:r}),c.a.createElement(B.MenuItem,{primaryText:"Insert Column Right",leftIcon:c.a.createElement(Ln.a,null),onClick:a})))})),Un=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("path",{d:"M7 5h2V3H7v2zm0 8h2v-2H7v2zm0 8h2v-2H7v2zm4-4h2v-2h-2v2zm0 4h2v-2h-2v2zm-8 0h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2v-2H3v2zm0-4h2V7H3v2zm0-4h2V3H3v2zm8 8h2v-2h-2v2zm8 4h2v-2h-2v2zm0-4h2v-2h-2v2zm0 8h2v-2h-2v2zm0-12h2V7h-2v2zm-8 0h2V7h-2v2zm8-6v2h2V3h-2zm-8 2h2V3h-2v2zm4 16h2v-2h-2v2zm0-8h2v-2h-2v2zm0-8h2V3h-2v2z"}),c.a.createElement("path",{d:"M5 8 l4 5l8 -8",stroke:"blue",fill:"none",strokeWidth:"3"}))},Wn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(B.SvgIcon,n,c.a.createElement("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z"}),t)},Hn=function(e){return c.a.createElement("rect",ie()({fill:"blue",width:"4",height:"4"},e))},Vn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"4",y:"10"}),t)},Gn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"10",y:"4"}),c.a.createElement(Hn,{x:"10",y:"10"}),c.a.createElement(Hn,{x:"10",y:"16"}),t)},_n=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"4",y:"10"}),c.a.createElement(Hn,{x:"10",y:"10"}),c.a.createElement(Hn,{x:"16",y:"10"}),t)},Yn=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(Wn,n,c.a.createElement(Hn,{x:"4",y:"4"}),c.a.createElement(Hn,{x:"10",y:"4"}),c.a.createElement(Hn,{x:"16",y:"4"}),c.a.createElement(Hn,{x:"4",y:"10"}),c.a.createElement(Hn,{x:"10",y:"10"}),c.a.createElement(Hn,{x:"16",y:"10"}),c.a.createElement(Hn,{x:"4",y:"16"}),c.a.createElement(Hn,{x:"10",y:"16"}),c.a.createElement(Hn,{x:"16",y:"16"}),t)},Kn=function(e){var t=e.size,n=void 0===t?8:t,r=e.p,a=void 0===r?(24-n)/2:r,o=D()(e,["size","p"]);return c.a.createElement("path",ie()({d:"M0 0 l".concat(n," ").concat(n," M0 ").concat(n," l").concat(n," -").concat(n),stroke:"red",strokeWidth:2,transform:"translate(".concat(a," ").concat(a,")")},o))},Xn=function(e){return c.a.createElement(B.Tab,{label:"Table"},c.a.createElement(B.Toolbar,null,c.a.createElement(Fn,null)))},Jn=Object(j.whenSelectionChange)()(function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{show:!1}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.selection,r=t.children,a=this.state,o=a.show,l=a.anchor,i=null;return n&&o&&(i=c.a.createElement(B.Popover,{open:!0,anchorEl:l,onRequestClose:function(t){return e.setState({show:!1})}},c.a.createElement(Zn,{onAction:function(t){return e.setState({show:!1})}}))),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Se,{disabled:!n,onClick:function(t){return e.setState({show:!e.state.show,anchor:t.target})}},c.a.createElement(Sn.a,null)),i,r)}}]),t}(i.Component)),Zn=function(e){function t(){return y()(this,t),b()(this,x()(t).apply(this,arguments))}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props.onAction;return c.a.createElement("div",null,c.a.createElement($n,{onAction:e}))}}]),t}(i.Component),$n=Object(N.compose)(Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){var t=e.onAction,n=e.selection,r=e.dispatch;return{create:function(e,a){var o,l,i,c=(o=n.props("page"),l=o.column,i=void 0===l?0:l,o.cols[i].width),u=new Array(a-1).fill(parseInt(c/a));u.push(c-u.reduce((function(e,t){return e+t}),0));var s={type:"table",rows:e,cols:u};r(j.ACTION.Entity.CREATE(s)),t()}}})))(function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{row:0,col:0}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.row,r=t.col,a="Insert Table";n&&(a="".concat(n,"x").concat(r," Table"));var o=this.tr.bind(this);return c.a.createElement("div",null,c.a.createElement(B.Subheader,null,a),c.a.createElement("table",{onMouseOut:function(t){return e.setState({row:0,col:0})}},c.a.createElement("tbody",null,o(),o(),o(),o(),o(),o(),o(),o(),o(),o())))}},{key:"tr",value:function(){var e=this,t=this.props.create,n=this.state,r=n.row,a=n.col,o=function(){return c.a.createElement("td",{style:{width:5,height:5,border:"1px solid gray"},onClick:function(e){return t(r,a)},onMouseOver:function(t){return e.rowCol(t.target)}})};return c.a.createElement("tr",null,o(),o(),o(),o(),o(),o(),o(),o(),o(),o())}},{key:"rowCol",value:function(e){for(var t=e.parentNode,n=-1,r=-1,a=0,o=t.parentNode.children,l=o.length;a<l;a++)if(o[a]==t){n=a+1;break}for(var i=0,c=t.children,u=c.length;i<u;i++)if(c[i]==e){r=i+1;break}this.setState({row:n,col:r})}}]),t}(i.Component)),Qn=n(71),er=n.n(Qn);var tr=n(18),nr=n.n(tr),rr=Object(N.compose)(Object(N.setDisplayName)("PictureSize"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){e.dispatch})))((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement("span",{style:{whiteSpace:"nowrap",marginLeft:2,marginRigth:2}},c.a.createElement("span",null,"height"),c.a.createElement("input",{type:"number"})),c.a.createElement("span",{style:{whiteSpace:"nowrap",marginLeft:2,marginRigth:2}},c.a.createElement("span",null,"width"),c.a.createElement("input",{type:"number"})))})),ar=Object(N.compose)(Object(N.setDisplayName)("PictureBorder"),Object(j.whenSelectionChange)())((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Tt,{label:"border color"},c.a.createElement(xt.a,null)),c.a.createElement(bt,{label:"border color"},c.a.createElement(B.MenuItem,{primaryText:"automatic"}),c.a.createElement(B.MenuItem,{primaryText:"no color"}),c.a.createElement(B.Subheader,null,"Theme Colors"),c.a.createElement(B.MenuItem,null,c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null)),c.a.createElement(B.Subheader,null,"Standard Colors"),c.a.createElement(B.MenuItem,null,c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null),c.a.createElement(B.SvgIcon,null))))})),or=n(22),lr=n.n(or),ir=n(17),cr=n.n(ir),ur=Object(N.compose)(Object(N.setDisplayName)("PicturePosition"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){e.dispatch})))((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{label:"wrap text",icon:c.a.createElement(cr.a,null)},c.a.createElement(B.MenuItem,{primaryText:"In Line with Text",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"Square",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Tight",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Through",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"Top and Bottom",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"Behind Text",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.MenuItem,{primaryText:"In Front of Text",leftIcon:c.a.createElement(cr.a,null)}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"More Layout Options..."})),c.a.createElement(bt,{label:"rotate",icon:c.a.createElement(lr.a,null)},c.a.createElement(B.MenuItem,{primaryText:"Rotate Right 90",leftIcon:c.a.createElement(lr.a,{degree:90})}),c.a.createElement(B.MenuItem,{primaryText:"Rotate Left 90",leftIcon:c.a.createElement(lr.a,{degree:-90})}),c.a.createElement(B.MenuItem,{primaryText:"Flip Vertical",leftIcon:c.a.createElement(lr.a,{degree:180})}),c.a.createElement(B.MenuItem,{primaryText:"Flip Horizontal",leftIcon:c.a.createElement(lr.a,{degree:-180})}),c.a.createElement(B.Divider,null),c.a.createElement(B.MenuItem,{primaryText:"More Rotation Options..."})))})),sr=Object(N.compose)(Object(N.setDisplayName)("PictureEffect"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){e.dispatch;return{}})))((function(e){return nr()(e),c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{label:"picture color",icon:c.a.createElement(xt.a,null)},c.a.createElement(B.Subheader,null,"Recolor"),c.a.createElement(B.MenuItem,null)))})),mr=function(e){var t=e.children;return c.a.createElement(B.Tab,{label:"Picture Format"},c.a.createElement(B.Toolbar,null,c.a.createElement(B.ToolbarGroup,null,c.a.createElement(sr,null),c.a.createElement(ar,null),c.a.createElement(ur,null),c.a.createElement(rr,null),t)))},pr=Object(N.compose)(Object(j.connect)(),Object(N.mapProps)((function(e){var t=e.children,n=e.dispatch;return{children:t,insert:function(e){fetch(e).then((function(e){if(!e.ok)throw new Error(e.statusText);return e.arrayBuffer()})).then((function(t){(t=new Uint8Array(t)).crc32=e,n(j.ACTION.Entity.CREATE({type:"image",data:t}))}))}}})))((function(e){var t=e.children,n=e.insert;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(Se,{onClick:function(e){return(t="image/*",null==un&&((un=document.createElement("input")).type="file",un.style.position="absolute",un.style.left="-9999px",document.body.appendChild(un)),un.setAttribute("accept",t||""),new Promise((function(e,t){un.onchange=function(){var n=this.files[0];un.value="",null==n?t():e(URL.createObjectURL(n))},un.click()}))).then(n);var t}},c.a.createElement(er.a,null)),t)})),fr=n(14),hr=n.n(fr),dr=n(34),yr=n.n(dr),gr=n(72),vr=n.n(gr);function Er(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function br(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Er(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Er(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Or=Object(N.compose)(Object(N.setDisplayName)("Page Layout"),Object(j.whenSelectionChange)(),Object(N.mapProps)((function(e){var t=e.children,n=e.dispatch,r=e.selection,a=r&&r.props("page",!1)||{};return{children:t,style:a,createSection:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};n(j.ACTION.Entity.CREATE(br({},e,{type:"section"})))},createPageBreak:function(){n(j.ACTION.Entity.CREATE({type:"pagebreak"}))},landscape:function(){n(j.ACTION.Entity.UPDATE({type:"section",orientation:"landscape"}))},protrait:function(){n(j.ACTION.Entity.UPDATE({type:"section",orientation:"portrait"}))},margin:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];n(j.ACTION.Entity.UPDATE({type:"section",margin:t}))},size:function(e,t){n(j.ACTION.Entity.UPDATE({type:"section",size:{width:e,height:t}}))},column:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];n(j.ACTION.Entity.UPDATE({type:"section",cols:t}))},sizeEqual:function(e,t){var n=a.size;return n&&Math.abs(n.width*t-n.height*e)<.1},marginEqual:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,o=t[0],l=t[1],i=void 0===l?o:l,c=t[2],u=void 0===c?o:c,s=t[3],m=void 0===s?i:s,p=a.margin;return p&&(r=parseInt(100*p.top/o))&&Math.abs(r-100*p.right/i)<1&&Math.abs(r-100*p.bottom/u)<1&&Math.abs(r-100*p.left/m)<1},cols:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=a.cols;return n&&n.length==e&&t.apply(void 0,n.map((function(e){return e.width})))}}})))((function(e){var t=e.children,n=e.createSection,r=e.createPageBreak,a=e.margin,o=e.size,l=e.column,u=e.landscape,s=e.protrait,m=e.sizeEqual,p=e.marginEqual,f=e.cols,h=e.style;return c.a.createElement(B.ToolbarGroup,null,c.a.createElement(bt,{label:"Breaks",title:"page breaks",icon:c.a.createElement(B.SvgIcon,null,c.a.createElement(wr,{transform:"translate(0 -12)"}),c.a.createElement("line",{strokeDasharray:"2",stroke:"blue",x1:"0",x2:"24",y1:"12",y2:"12",strokeWidth:"2"}),c.a.createElement(wr,{transform:"translate(0 12)"}))},c.a.createElement(yr.a,null,"Page Breaks"),c.a.createElement(hr.a,{primaryText:"Page",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(kr,{transform:"translate(0 -12)"}),c.a.createElement("path",{d:"M1 10 l2 2l-2 2z",fill:"blue"}),c.a.createElement(kr,{transform:"translate(0 12)"})),onClick:function(){return r()}}),c.a.createElement(hr.a,{primaryText:"Column",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement("path",{d:"M9 7 l0 10 M14 7 l0 10",strokeDasharray:"2",stroke:"blue",strokeWidth:"2"}),c.a.createElement(kr,null),c.a.createElement("path",{d:"M8.5 18 h3 v-12 h1",stroke:"red",strokeWidth:"1",fill:"none"}))}),c.a.createElement(yr.a,null,"Section Breaks"),c.a.createElement(hr.a,{primaryText:"Next Page",onClick:function(e){return n()},leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(wr,{transform:"translate(0 -12)"}),c.a.createElement("path",{d:"M1 10 l2 2l-2 2z",fill:"blue"}),c.a.createElement(wr,{transform:"translate(0 12)"}))}),c.a.createElement(hr.a,{primaryText:"Continuous",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement("path",{d:"M12 6 l0 5",strokeDasharray:"1",stroke:"lightblue",strokeWidth:"10"}),c.a.createElement(kr,null),c.a.createElement("path",{d:"M1 10 l2 2l-2 2z",fill:"blue"}),c.a.createElement("path",{d:"M12 12 l0 5",strokeDasharray:"1",stroke:"blue",strokeWidth:"10"})),onClick:function(e){return n({kind:"continuous"})}}),c.a.createElement(hr.a,{primaryText:"Even Page",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(kr,{transform:"translate(0 -12)"}),c.a.createElement(kr,{transform:"translate(0 12)"}),c.a.createElement("text",{x:"10",y:"6",fontSize:"6",fontFamily:"arial",stroke:"blue"},"2"),c.a.createElement("text",{x:"10",y:"22",fontSize:"6",fontFamily:"arial",stroke:"blue"},"4")),onClick:function(e){return n({kind:"evenPage"})}}),c.a.createElement(hr.a,{primaryText:"Odd Page",leftIcon:c.a.createElement(B.SvgIcon,null,c.a.createElement(kr,{transform:"translate(0 -12)"}),c.a.createElement(kr,{transform:"translate(0 12)"}),c.a.createElement("text",{x:"10",y:"6",fontSize:"6",fontFamily:"arial",stroke:"blue"},"1"),c.a.createElement("text",{x:"10",y:"22",fontSize:"6",fontFamily:"arial",stroke:"blue"},"3")),onClick:function(e){return n({kind:"oddPage"})}})),c.a.createElement(bt,{label:"Margins",title:"page margin",icon:c.a.createElement(Ir,null)},c.a.createElement(hr.a,{primaryText:"Normal",rightIcon:p(2.54)?xr:null,leftIcon:c.a.createElement(Ir,null),onClick:function(e){return a(2.54)}}),c.a.createElement(hr.a,{primaryText:"Narrow",rightIcon:p(1.27)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(1.27)}}),c.a.createElement(hr.a,{primaryText:"Moderate",rightIcon:p(2.54,1.91)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(2.54,1.91)}}),c.a.createElement(hr.a,{primaryText:"Wide",rightIcon:p(2.54,5.08)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(2.54,5.08)}}),c.a.createElement(hr.a,{primaryText:"Mirrored",rightIcon:p(2.54,2.54,2.54,3.18)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return a(2.54,2.54,2.54,3.18)}}),c.a.createElement(hr.a,{primaryText:"Custom Margins...",leftIcon:c.a.createElement(B.SvgIcon,null)})),c.a.createElement(bt,{label:"Orientation",title:"page orientation",icon:c.a.createElement(Tr,null)},c.a.createElement(hr.a,{primaryText:"Portrait",rightIcon:h.size&&h.size.width<h.size.height?xr:null,leftIcon:c.a.createElement(B.SvgIcon,{children:c.a.createElement(kr,null)}),onClick:s}),c.a.createElement(hr.a,{primaryText:"Landscape",rightIcon:h.size&&h.size.width>h.size.height?xr:null,leftIcon:c.a.createElement(B.SvgIcon,{children:c.a.createElement(kr,{transform:"translate(25 0) rotate(90)"})}),onClick:u})),c.a.createElement(bt,{label:"Size",title:"page size",icon:c.a.createElement(jr,null)},c.a.createElement(hr.a,{primaryText:"Letter",rightIcon:m(21.59,27.94)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(21.59,27.94)}}),c.a.createElement(hr.a,{primaryText:"Legal",rightIcon:m(21.59,35.56)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(21.59,35.56)}}),c.a.createElement(hr.a,{primaryText:"A3",rightIcon:m(29.7,42.01)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(29.7,42.01)}}),c.a.createElement(hr.a,{primaryText:"A4",rightIcon:m(20.99,29.7)?xr:null,leftIcon:c.a.createElement(B.SvgIcon,null),onClick:function(e){return o(20.99,29.7)}}),c.a.createElement(hr.a,{primaryText:"More Paper Sizes...",leftIcon:c.a.createElement(B.SvgIcon,null)})),c.a.createElement(bt,{label:"Columns",title:"page column",icon:c.a.createElement(Cr,{children:c.a.createElement(i.Fragment,null,c.a.createElement(Sr,null),c.a.createElement(Sr,{transform:"translate(7 0)"}))})},c.a.createElement(hr.a,{primaryText:"1",rightIcon:f(1)?xr:null,leftIcon:c.a.createElement(Cr,null,c.a.createElement(Sr,{d:"M12 6.5v12",strokeWidth:"12"})),onClick:function(e){return l(1)}}),c.a.createElement(hr.a,{primaryText:"2",rightIcon:f(2,(function(e,t){return e==t}))?xr:null,leftIcon:c.a.createElement(Cr,null,c.a.createElement(Sr,null),c.a.createElement(Sr,{transform:"translate(7 0)"})),onClick:function(e){return l(2)}}),c.a.createElement(hr.a,{primaryText:"3",rightIcon:f(3)?xr:null,leftIcon:c.a.createElement(Cr,null,c.a.createElement(Sr,{strokeWidth:"3"}),c.a.createElement(Sr,{strokeWidth:"3",transform:"translate(3.5 0)"}),c.a.createElement(Sr,{strokeWidth:"3",transform:"translate(7 0)"})),onClick:function(e){return l(3)}}),c.a.createElement(hr.a,{primaryText:"Left",rightIcon:f(2,(function(e,t){return e<t}))?xr:null,leftIcon:c.a.createElement(Cr,null,c.a.createElement(Sr,{strokeWidth:"3"}),c.a.createElement(Sr,{strokeWidth:"7",transform:"translate(6 0)"})),onClick:function(e){return l(1,2)}}),c.a.createElement(hr.a,{primaryText:"Right",rightIcon:f(2,(function(e,t){return e>t}))?xr:null,leftIcon:c.a.createElement(Cr,null,c.a.createElement(Sr,{strokeWidth:"7",transform:"translate(1 0)"}),c.a.createElement(Sr,{strokeWidth:"3",transform:"translate(7 0)"})),onClick:function(e){return l(2,1)}}),c.a.createElement(hr.a,{primaryText:"More Columns...",leftIcon:c.a.createElement(B.SvgIcon,null)})),t)})),xr=c.a.createElement(vr.a,null),wr=function(e){return c.a.createElement("path",ie()({},e,{d:"M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z"}))},kr=function(e){return c.a.createElement("path",ie()({},e,{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"}))},Sr=function(e){return c.a.createElement("path",ie()({d:"M8.5 6.5v12",fill:"none",stroke:"blue",strokeWidth:"5",strokeDasharray:"1.5"},e))},Cr=function(e){e.size,e.d;var t=e.children,n=D()(e,["size","d","children"]);return c.a.createElement(B.SvgIcon,n,c.a.createElement("path",{d:"M4 2h16v20H4z",fill:"none",stroke:"black"}),t)},jr=function(){return c.a.createElement(B.SvgIcon,null,c.a.createElement(kr,{transform:"scale(0.6) translate(10,10)"}),c.a.createElement("path",{d:"M9 3 v3v-1.5 h10v-1.5v3",fill:"none",stroke:"blue"}),c.a.createElement("path",{d:"M9 3 v3v-1.5 h10v-1.5v3",fill:"none",stroke:"blue",transform:"translate(9.5 -1) rotate(90)"}))},Tr=function(e){return c.a.createElement(B.SvgIcon,e,c.a.createElement("g",{transform:"scale(0.8) translate(4 4)"},c.a.createElement(kr,{transform:"translate(-3 -1) scale(0.9)"}),c.a.createElement(kr,{transform:"translate(24 4.5) scale(0.9) rotate(90)"})))},Ir=function(e){var t=e.children,n=D()(e,["children"]);return c.a.createElement(B.SvgIcon,n,c.a.createElement("path",{d:"M4 2h16v20H4z",fill:"none",stroke:"black"}),t||c.a.createElement(i.Fragment,null,c.a.createElement(Pr,null),c.a.createElement(Pr,{transform:"translate(10 0)"}),c.a.createElement(Mr,null),c.a.createElement(Mr,{transform:"translate(0 14)"})))},Pr=function(e){return c.a.createElement("path",ie()({d:"M7 2.5 v19",fill:"none",stroke:"blue"},e))},Mr=function(e){return c.a.createElement("path",ie()({d:"M4.5 5 h15",fill:"none",stroke:"blue"},e))};function Ar(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Dr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ar(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ar(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var zr=function(e){return c.a.createElement(B.Toolbar,ie()({style:{justifyContent:"initial"}},e))},Nr=function(e){return c.a.createElement(B.ToolbarSeparator,ie()({style:{marginRight:2,marginLeft:2}},e))},Rr=Object(N.compose)(Object(N.setDisplayName)("Ribbon"),Object(N.getContext)({muiTheme:C.a.object,selection:C.a.object}),Object(j.whenSelectionChange)())((function(e){var t=e.children,n=e.selection,r=e.muiTheme,a=e.buttonStyle,o=void 0===a?{height:24,fontSize:10,lineHeight:"24px",paddingRight:5,paddingLeft:5}:a,l=e.tabStyle,i=void 0===l?{width:"auto"}:l,u=e.style,s=e.commands,m=void 0===s?{layout:!1}:s,p="home,insert,layout,when".split(",").reduce((function(e,t){if(m[t]||void 0===m[t]){if("object"==me()(m[t])&&(e[t]=Dr({},e[t],{},m[t])),"when"==t)if(n){var r=e.when;e.when=Object.keys(r).reduce((function(e,t){var a=n.props(t);if(a){var o=r[t].type({style:a,selection:n});Array.isArray(o)?e=[].concat(e,o):o&&e.push(o)}return e}),[]).map((function(e){return c.a.cloneElement(e,{key:e.props.label,buttonStyle:Dr({},e.props.buttonStyle||{},{},o,{backgroundColor:"antiquewhite"}),style:Dr({},e.props.tabStyle||{},{},i,{marginRight:2})})}))}else e[t]=null}else e[t]=m[t];return e}),{home:{file:c.a.createElement(Be,null,c.a.createElement(Nr,null)),clipboard:c.a.createElement(wn,null,c.a.createElement(Nr,null)),history:c.a.createElement(yn,null,c.a.createElement(Nr,null)),text:c.a.createElement(Gt,null,c.a.createElement(Nr,null)),paragraph:c.a.createElement(mn,null,c.a.createElement(Nr,null))},insert:{table:c.a.createElement(Jn,null,c.a.createElement(Nr,null)),picture:c.a.createElement(pr,null,c.a.createElement(Nr,null))},layout:{basic:c.a.createElement(Or,null)},when:{table:c.a.createElement(Xn,null),image:c.a.createElement(mr,null)}}),f=p.home,h=p.insert,d=p.layout,y=p.when;return c.a.createElement("div",{style:Dr({height:54,borderBottom:"0.5px solid lightgray",marginBottom:1,paddingBottom:4},u)},c.a.createElement(F.a,{muiTheme:W()(r,{sizeIconButton:{size:24,padding:4},comboBox:{height:24,textFieldStyle:{fontSize:12},menu:{style:{overflowX:"hidden"},menuItemStyle:{minHeight:"24px",lineHeight:"24px",fontSize:12}}},toolbar:{height:30}})},c.a.createElement(B.Tabs,{contentContainerStyle:{height:30},inkBarStyle:{display:"none"}},f&&c.a.createElement(B.Tab,{label:"Home",buttonStyle:o,style:i},c.a.createElement(zr,null,f.file,f.clipboard,f.history,f.text,f.paragraph,f.more)),h&&c.a.createElement(B.Tab,{label:"Insert",buttonStyle:o,style:i},c.a.createElement(zr,null,h.table,h.picture,h.more)),d&&c.a.createElement(B.Tab,{label:"Page Layout",buttonStyle:o,style:i},c.a.createElement(zr,null,d.basic,d.more)),c.a.Children.toArray(t).map((function(e){return c.a.cloneElement(e,{buttonStyle:o,style:i,key:e.props.label})})),y,c.a.createElement(B.Tab,{label:"beautifier",buttonStyle:o,style:Dr({visibility:"hidden",flex:"1 100%"},i)}))))})),qr=Rr;function Br(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Lr=function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"state",{move:!1}),h()(p()(n),"changing",{}),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.move,r=(t.x0,t.y0,t.x,t.y,this.changing),a=this.props,o=(a.onMove,a.children),l=null;return n?(l=c.a.createElement(Fr,{onMouseUp:function(t){return e.onEndMove(t)},onMouseMove:function(t){return e.move(t)}}),o=c.a.cloneElement(o,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Br(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Br(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},r,{onMouseUp:function(t){return e.onEndMove(t)}}))):o=c.a.cloneElement(o,{onMouseDown:function(t){return e.onStartMove(t)}}),c.a.createElement(i.Fragment,null,l,o)}},{key:"onStartMove",value:function(e){var t=e.clientX,n=e.clientY;this.setState({move:!0,x0:t,y0:n,x:t,y:n}),e.stopPropagation()}},{key:"onEndMove",value:function(e){var t=this,n=this.state,r=n.x0,a=n.y0,o=n.x,l=n.y;this.setState({move:!1},(function(e){t.props.onAccept&&t.props.onAccept(o-r,l-a)})),e.stopPropagation()}},{key:"move",value:function(e){this.setState({x:e.clientX,y:e.clientY}),e.stopPropagation()}},{key:"shouldComponentUpdate",value:function(e,t){var n=e.onMove,r=t.move,a=t.x0,o=t.x,l=t.y0,i=t.y;return r&&n&&(this.changing=n(o-a,i-l)),this.props!=arguments[0]||this.state!=arguments[1]}}]),t}(i.Component),Fr=function(e){return c.a.createElement("div",ie()({},e,{style:{position:"fixed",left:0,top:0,width:"100%",height:"100%",cursor:"default"}}))},Ur=Object(N.onlyUpdateForKeys)("width,scale,leftMargin,rightMargin,firstLine,leftIndent,cm,step".split(","))((function(e){var t=e.width,n=void 0===t?0:t,r=e.scale,a=void 0===r?1:r,o=e.leftMargin,l=void 0===o?3:o,i=e.rightMargin,u=void 0===i?3:i,s=e.setLeftMargin,m=e.setRightMargin,p=e.firstLine,f=void 0===p?0:p,h=e.leftIndent,d=void 0===h?0:h,y=e.rightIndent,g=void 0===y?0:y,v=e.setFirstLine,E=e.setLeftIndent,b=e.setRightIndent,O=e.cm,x=void 0===O?96*a/2.54:O,w=e.step,k=void 0===w?x/8:w,S=e.trim,C=void 0===S?function(e,t){return Math[t>0?"ceil":"floor"]((e+t)/k)*k}:S,j=null;return c.a.createElement("div",{className:"ruler horizontal",style:{width:n*a,position:"relative"}},c.a.createElement(Yr,{width:n*a,from:l*a,cm:x}),!!n&&c.a.createElement(Hr,{style:{position:"absolute",top:0,left:0,width:l*a},onMove:s}),!!n&&c.a.createElement(Lr,{ref:function(e){return j=e},onAccept:function(e){return v((C((d+f)*a,e)-d*a)/a)},onMove:function(e){return{style:{position:"absolute",top:0,left:l*a+C((d+f)*a,e)}}}},c.a.createElement(Gr,{style:{position:"absolute",top:0,left:(l+d+f)*a}})),!!n&&c.a.createElement(Lr,{onAccept:function(e){j.setState({move:!1}),E(C(d*a,e)/a)},onMove:function(e){return j.setState({move:!0,x0:0,y0:0,x:e,y:0}),{style:{position:"absolute",top:0,left:l*a+C(d*a,e)}}}},c.a.createElement(Vr,{style:{position:"absolute",top:0,left:(l+d)*a}})),!!n&&c.a.createElement(Hr,{style:{position:"absolute",top:0,right:0,width:u*a},onMove:m}),!!n&&c.a.createElement(Lr,{onAccept:function(e){return b(C(g*a,-e)/a)},onMove:function(e){return{style:{position:"absolute",top:0,right:u*a+C(g*a,-e)}}}},c.a.createElement(Vr,{style:{position:"absolute",top:0,right:(u+g)*a}})))})),Wr=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.keys(e);return"left,right".split(",").find((function(e){return t.includes(e)}))},Hr=function(e){var t=e.style,n=(e.onMove,e.at),r=void 0===n?Wr(t):n;return c.a.createElement("div",{className:"margin ".concat(r),style:t,title:"".concat(r," Margin")},c.a.createElement("div",{className:"mover"}))},Vr=function(e){var t=e.style,n=e.at,r=void 0===n?Wr(t):n,a=D()(e,["style","at"]);return c.a.createElement("div",ie()({className:"indent ".concat(r),style:t,title:"".concat(r," Indent")},a),c.a.createElement(_r,null))},Gr=function(e){return c.a.createElement("div",ie()({className:"first-line left"},e,{title:"First Line Indent"}),c.a.createElement(_r,{direction:"bottom"}))},_r=function(e){var t=e.direction,n=void 0===t?"top":t,r=e.degs,a=void 0===r?{bottom:180}:r,o=D()(e,["direction","degs"]);return c.a.createElement(B.SvgIcon,o,c.a.createElement("path",{transform:"rotate(".concat(a[n]||0," 12 12)"),d:"M11.5 0 L23 11.5 L23 23 L0 23 L0 11.5Z",fill:"white",strokeWidth:"1",stroke:"gray"}))},Yr=function(e){var t=e.width,n=e.height,r=void 0===n?20:n,a=e.from,o=e.cm,l=e.children;return c.a.createElement("svg",{style:{width:t,height:r,backgroundColor:"white"},viewBox:"0 0 ".concat(t," ").concat(r)},c.a.createElement("g",{transform:"translate(".concat(a," 0)")},new Array(Math.ceil(a/o)).fill(0).map((function(e,t){return c.a.createElement(Kr,{cm:o,key:-t,i:-t-1})}))),c.a.createElement("g",{transform:"translate(".concat(a," 0)")},new Array(Math.ceil((t-a)/o)).fill(0).map((function(e,t){return c.a.createElement(Kr,{cm:o,key:t,i:t})}))),l)},Kr=function(e){var t=e.i,n=e.cm,r=e.nth,a=void 0===r?Math.abs(t+1):r;return c.a.createElement("g",{transform:"translate(".concat(t*n," 0)")},c.a.createElement("line",{x1:1*n/4,y1:8,x2:1*n/4,y2:12,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{x1:2*n/4,y1:6,x2:2*n/4,y2:14,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{x1:3*n/4,y1:8,x2:3*n/4,y2:12,stroke:"lightgray",strokeWidth:1}),0!=a?c.a.createElement("text",{x:n,y:13,textAnchor:"middle"},a):null)},Xr=Object(N.onlyUpdateForKeys)(["height","footer","header","scale","topMargin","bottomMargin"])((function(e){var t=e.height,n=void 0===t?0:t,r=(e.footer,e.header,e.scale),a=void 0===r?1:r,o=e.topMargin,l=void 0===o?3:o,i=e.bottomMargin,u=void 0===i?3:i,s=e.setTopMargin,m=e.setBottomMargin;return c.a.createElement("div",{className:"ruler vertical"},c.a.createElement(Zr,{height:n*a,from:l*a,cm:96*a/2.54}),!!n&&c.a.createElement(Jr,{style:{position:"absolute",top:0,left:0,height:l*a},onMove:s}),!!n&&c.a.createElement(Jr,{style:{position:"absolute",bottom:0,left:0,height:u*a},onMove:m}))})),Jr=function(e){var t=e.style,n=(e.onMove,e.at),r=void 0===n?function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.keys(e);return"top,bottom".split(",").find((function(e){return t.includes(e)}))}(t):n;return c.a.createElement("div",{className:"margin ".concat(r),style:t,title:"".concat(r," Margin")},c.a.createElement("div",{className:"mover"}))},Zr=function(e){var t=e.width,n=void 0===t?20:t,r=e.height,a=e.from,o=e.cm,l=void 0===o?96/2.54:o;e.scale;return c.a.createElement("svg",{style:{width:n,height:r,backgroundColor:"white"},viewBox:"0 0 ".concat(n," ").concat(r)},c.a.createElement("g",{transform:"translate(0 ".concat(a,")")},new Array(Math.ceil(a/l)).fill(0).map((function(e,t){return c.a.createElement($r,{cm:l,key:-t,i:-t-1})}))),c.a.createElement("g",{transform:"translate(0 ".concat(a,")")},new Array(Math.ceil((r-a)/l)).fill(0).map((function(e,t){return c.a.createElement($r,{cm:l,key:t,i:t})}))))},$r=function(e){var t=e.i,n=e.cm,r=e.nth,a=void 0===r?Math.abs(t+1):r;return c.a.createElement("g",{transform:"translate(0 ".concat(t*n,")")},c.a.createElement("line",{y1:1*n/4,x1:8,y2:1*n/4,x2:12,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{y1:2*n/4,x1:6,y2:2*n/4,x2:14,stroke:"lightgray",strokeWidth:1}),c.a.createElement("line",{y1:3*n/4,x1:8,y2:3*n/4,x2:12,stroke:"lightgray",strokeWidth:1}),0!=a?c.a.createElement("text",{y:n,x:13,textAnchor:"middle"},a):null)},Qr=Object(N.compose)(Object(N.setDisplayName)("Ruler"),Object(j.whenSelectionChange)(),Object(N.withProps)((function(e){var t=e.dispatch;return{setLeftMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{left:e}}}))},setRightMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{right:e}}}))},setBottomMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{bottom:e}}}))},setTopMargin:function(e){t(j.ACTION.Selection.UPDATE({section:{pgMar:{top:e}}}))},setFirstLine:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{indent:{firstLine:e}}}))},setLeftIndent:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{indent:{left:e}}}))},setRightIndent:function(e){t(j.ACTION.Selection.UPDATE({paragraph:{indent:{right:e}}}))}}})),Object(N.withProps)((function(e){var t=e.selection,n=t&&t.props("layout")||{},r=n.width,a=n.height,o=n.margin,l=(o=void 0===o?{}:o).left,i=o.top,c=o.right,u=o.bottom,s=o.header,m=o.footer,p=n.cols,f=void 0===p?[{x:l,width:r-l-c}]:p,h=(t&&t.props("paragraph",!1)||{}).indent;return{width:r,height:a,leftMargin:l,topMargin:i,bottomMargin:u,rightMargin:c,leftIndent:(h=void 0===h?{}:h).left,rightIndent:h.right,firstLine:h.firstLine,cols:f,header:s,footer:m}})))((function(e){var t=e.direction,n=void 0===t?"horizontal":t,r=e.Ruler,a=void 0===r?"horizontal"==n?Ur:Xr:r,o=D()(e,["direction","Ruler"]);return c.a.createElement(a,o)}));function ea(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ta(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ea(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ea(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var na=0,ra=Object(N.compose)(Object(N.setDisplayName)("VerticalRuler"),Object(j.whenSelectionChange)((function(e){var t=e.selection;if(t){var n=t.props("page",!1);if(n)return{pageY:n.pageY}}})))((function(e){var t=e.pageY,n=void 0===t?0:t,r=e.scale,a=D()(e,["pageY","scale"]);return c.a.createElement("div",{style:{position:"relative",top:n*r}},c.a.createElement(Qr,ie()({direction:"vertical"},a,{scale:r})))})),aa=Object(j.connect)((function(e){return{scale:Ee(e).scale}}))(function(e){function t(){var e;return y()(this,t),(e=b()(this,x()(t).apply(this,arguments))).uid=na++,e.state={},e}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.scale,n=void 0===t?100:t,r=e.ruler,a=void 0===r?{vertical:!0}:r,o=e.style,l=void 0===o?{}:o,i=e.children,u=this.state.error,s="canvas".concat(this.uid);return c.a.createElement("div",{id:s,style:ta({overflow:"auto",flex:"1 100%",overflowY:"scroll"},l,{display:"flex",flexDirection:"row"})},c.a.createElement(oa,{canvasId:s}),a&&!1!==a.vertical&&c.a.createElement("div",{style:{flex:1,paddingTop:20}},c.a.createElement(ra,{scale:n/100})),c.a.createElement("div",{style:{flex:"1 100%",display:"flex",flexDirection:"column"}},c.a.createElement("div",{style:{flex:"1 100%",textAlign:"center"}},a&&c.a.createElement("div",{style:{position:"sticky",top:0}},c.a.createElement(Qr,{direction:"horizontal",scale:n/100})),u?u.stack:i)))}}],[{key:"getDerivedStateFromError",value:function(e){return{error:e}}}]),t}(i.Component)),oa=Object(j.connect)((function(e){return{pilcrow:Object(j.getUI)(e).pilcrow}}))((function(e){var t=e.pilcrow;return c.a.createElement("style",null,!t&&"svg text.ender{visibility:hidden}")}));function la(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ia(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?la(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):la(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ca=function(e){function t(){var e;return y()(this,t),(e=b()(this,x()(t).apply(this,arguments))).state={},e.events=new M.a,e}return k()(t,e),v()(t,[{key:"getChildContext",value:function(){var e=this.props.debug;return{events:this.events,debug:e}}},{key:"render",value:function(){var e=this.state.error;if(e)return c.a.createElement("div",{style:{flex:1,display:"flex",flexDirection:"column"}},c.a.createElement("pre",{style:{margin:"auto",color:"red",fontSize:"bigger"}},e.stack));var t=this.props,n=t.doc,r=t.reducer,a=D()(t,["doc","reducer"]);return c.a.createElement(n.Store,{reducer:r},c.a.createElement(ua,a))}},{key:"componentDidCatch",value:function(e){this.setState({error:e})}}]),t}(i.PureComponent);h()(ca,"childContextTypes",{events:C.a.object,debug:C.a.bool}),h()(ca,"propTypes",{toolBar:C.a.node,statusBar:C.a.node,debug:C.a.bool,doc:C.a.object,ruler:C.a.bool,channel:C.a.string,layout:C.a.node}),h()(ca,"defaultProps",{toolBar:c.a.createElement(qr,null),statusBar:c.a.createElement(dt,null)}),h()(ca,"Desk",Object(j.connect)((function(e){var t=Ee(e).scale;return null!=t?{scale:t/100}:{}}))(Object(N.pure)((function(e){var t=e.children,n=(e.toolBar,e.ruler,e.channel,e.statusBar,e.icon,e.layout,D()(e,["children","toolBar","ruler","channel","statusBar","icon","layout"]));return c.a.createElement(i.Fragment,null,c.a.cloneElement(t,n))})))),h()(ca,"Layout",Object(N.pure)((function(e){var t=e.canvas,n=e.left,r=e.right,a=e.style;return c.a.createElement("div",{style:ia({flex:"1 100%",display:"flex",flexDirection:"row",overflow:"auto"},a)},n&&c.a.createElement("div",{style:{overflow:"auto"}},n),t,r&&c.a.createElement("div",{style:{overflow:"auto"}},r))})));var ua=Object(j.connect)((function(e,t){return{channel:Ee(e).channel||t.channel}}))(function(e){function t(){var e,n;y()(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=b()(this,(e=x()(t)).call.apply(e,[this].concat(a))),h()(p()(n),"getChannels",I()((function(e){return i.Children.toArray(e).filter((function(e){return e.props})).map((function(e){var t=e.props,n=t.channel,r=t.icon;return n?{channel:n,icon:r||c.a.createElement("span",{title:{channel:n}})}:null})).filter((function(e){return!!e}))}))),h()(p()(n),"getCurrent",I()((function(e,t){var n=(e=i.Children.toArray(e)).filter((function(e){return e.props})).find((function(e){return e.props.channel==t})),r=e.filter((function(e){var t=e.props;return!t||!t.channel})).filter((function(e){return e!=n}));return{current:n,uncontrolled:r}}))),n}return k()(t,e),v()(t,[{key:"render",value:function(){var e=this.props,t=e.channel,n=e.children,r=e.toolBar,a=e.statusBar,o=e.ruler,l=void 0===o||o,i=e.layout,u=e.dispatch,s=this.getCurrent(n,t),m=s.current,p=s.uncontrolled;m&&(r=void 0===m.props.toolBar?r:m.props.toolBar,a=void 0===m.props.statusBar?a:m.props.statusBar,l=void 0===m.props.ruler?l:m.props.ruler,i=void 0===m.props.layout?i:m.props.layout);var f=c.a.createElement(aa,{ruler:l},m,p);return c.a.createElement("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden"},key:t},r,i?c.a.cloneElement(i,{canvas:f,children:i.props.children||f}):f,a&&c.a.cloneElement(a,{channel:{items:this.getChannels(n),current:t,onChange:function(e){return u(ve.channel(e))}}}))}}]),t}(i.Component)),sa=c.a.createElement(ca,{debug:!0,accept:function(e){var t=e.props.supportPagination;e.name;return t},key:"default(accept=[supportPagination])",channel:"print"},c.a.createElement(ca.Desk,{channel:"print",icon:c.a.createElement(et.a,null),children:c.a.createElement(j.Editor,{representation:"pagination"})}),c.a.createElement(ca.Desk,{channel:"web",ruler:{vertical:!1},icon:c.a.createElement(nt.a,null),children:c.a.createElement(j.Editor,{representation:"html"})}),c.a.createElement(ca.Desk,{channel:"plain text",ruler:!1,toolBar:c.a.createElement(qr,{commands:{home:{text:!1,paragraph:!1},insert:!1,layout:!1,when:!1}}),icon:c.a.createElement(at.a,null),children:c.a.createElement(j.Editor,{representation:"text"})})),ma=n(35),pa=n(73),fa=n.n(pa);function ha(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function da(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ha(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ha(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ya="default(accept=*)";var ga=Object(z.connect)((function(e){var t=e[ya],n=Object(j.getActive)(e).doc.mode;return n?da({},t,{mode:n}):t}))((function(e){var t=e.dispatch,n=e.mode,r=e.theme,a=e.font,o=e.size,l=e.wrap,u=e.number;return c.a.createElement(i.Fragment,null,c.a.createElement(Ht,{value:a,changeFont:function(e){return t({type:"".concat(ya,"/font"),payload:e})},style:{paddingRight:15,width:80}}),c.a.createElement(ge,{style:{width:50,paddingRight:15},inputStyle:{border:"1px solid lightgray"},value:o,onChange:function(e){return t({type:"".concat(ya,"/size"),payload:parseInt(e)})},dataSource:[8,9,10,11,12,14,16,20,22,24,26,28,36,72].map((function(e){return e+""})),underlineShow:!1}),c.a.createElement(Nr,null),c.a.createElement(ge,{style:{width:80,paddingRight:15},title:"文件类型",inputStyle:{border:"1px solid lightgray",paddingLeft:5},underlineShow:!1,value:n,onChange:function(e){return t({type:"".concat(ya,"/mode"),payload:e})},dataSource:ma.modes.map((function(e){return e.mode}))}),c.a.createElement(ge,{style:{width:100,paddingRight:15},title:"风格",inputStyle:{border:"1px solid lightgray",paddingLeft:5},underlineShow:!1,value:r,onChange:function(e){return t({type:"".concat(ya,"/theme"),payload:e})},dataSource:Object.keys(ma.themes)}),c.a.createElement(Nr,null),c.a.createElement(je,{label:"wrap",status:l?"checked":"unchecked",onClick:function(){return t({type:"".concat(ya,"/wrap"),payload:!l})},children:c.a.createElement(fa.a,null)}),c.a.createElement(je,{label:"show number",status:u?"checked":"unchecked",onClick:function(){return t({type:"".concat(ya,"/number"),payload:!u})},children:c.a.createElement(ln.a,null)}))})),va=Object(z.connect)((function(e){return e[ya]}))((function(e){var t=e.mode,n=e.theme,r=e.font,a=e.size,o=e.wrap,l=e.number;return c.a.createElement(j.Editor,{representation:"plain",setting:{mode:t,theme:n,font:r,size:a,wrap:o,number:l}})}));function Ea(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ba(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ea(n,!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ea(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Oa,xa=[sa,c.a.createElement(ca,{debug:!0,accept:"*",key:ya,ruler:!1,statusBar:!1,reducer:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{mode:"",theme:"eclipse",font:"Calibri",size:12,wrap:!1,number:!0},t=arguments.length>1?arguments[1]:void 0,n=t.type,r=t.payload;switch(n){case"".concat(ya,"/mode"):return da({},e,{mode:r});case"".concat(ya,"/theme"):return da({},e,{theme:r});case"".concat(ya,"/font"):return da({},e,{font:r});case"".concat(ya,"/size"):return da({},e,{size:r});case"".concat(ya,"/wrap"):return da({},e,{wrap:r});case"".concat(ya,"/number"):return da({},e,{number:r})}return e},toolBar:c.a.createElement(qr,{commands:{home:{text:!1,paragraph:!1,clipboard:!1,more:c.a.createElement(ga,null)},insert:!1,layout:!1,when:!1}})},c.a.createElement(va,null))],wa=new(function(e){function t(){var e;y()(this,t),e=b()(this,x()(t).apply(this,arguments));var n=[],r=function(e,t){t&&n.push(t)};return e.on("change",r),e.once("office ready",(function(t){e.removeListener("change",r);try{n.forEach((function(e){return e(t)}))}catch(e){console.error(e)}})),e}return k()(t,e),v()(t,[{key:"ready",value:function(){this.emit.apply(this,["office ready"].concat(Array.prototype.slice.call(arguments)))}}]),t}(M.a)),ka=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e},Sa=function(e){function t(){var e;return y()(this,t),e=b()(this,x()(t).apply(this,arguments)),h()(p()(e),"getReducers",I()((function(e,t){return e.reduce((function(e,t){return t.props.reducer&&(e[t.key]=function(e,n){return ba({},e,{},t.props.reducer(e,n))}),e}),ba({},t))}),(function(e,t){return e===t||Object(j.shallowEqual)(e,t)}))),e.state={workspaces:null,excludes:{}},e.wedit=c.a.createRef(),e}return k()(t,e),v()(t,null,[{key:"install",value:function(e,t){(e=Array.isArray(e)&&e||[e]).reverse().forEach((function(e){return xa.unshift(e)})),wa.emit("change",[].concat(xa),t)}},{key:"uninstall",value:function(e){(e=Array.isArray(e)&&e||[e]).forEach((function(e){return xa.splice(xa.indexOf(e),1)})),wa.emit("change",[].concat(xa))}},{key:"getDerivedStateFromProps",value:function(e,t){var n=e.workspaces;return{workspaces:e.installable&&t.workspaces||n||[].concat(xa)}}}]),v()(t,[{key:"componentDidMount",value:function(){var e=this;if(this.props.installable){var t=this.wedit.current.store.dispatch;wa.ready(t),wa.on("change",this.updateWorkspaces=function(n,r){e.setState((function(e){var t=e.workspaces;return{workspaces:n,excludes:t.filter((function(e){return!n.find((function(t){return t.key===e.key}))})).reduce((function(e,t){return e[t.key]=ka,e}),{})}}),r&&function(){r(t)})})}}},{key:"render",value:function(){var e=this.state,t=e.workspaces,n=e.excludes,r=this.props,a=r.titleBarProps,o=r.children,l=r.titleBar,i=r.dashboard,u=r.reducers,s=void 0===u?{}:u;return s=this.getReducers(t,ba({},n,{},s)),c.a.createElement(j.WeEdit,{reducers:s,ref:this.wedit},c.a.createElement($e,{titleBarProps:a,titleBar:l,dashboard:i},t.map((function(e){return e.props.reducer?c.a.cloneElement(e,{reducer:void 0}):e})),o))}},{key:"componentWillUnmount",value:function(){this.props.installable&&wa.removeListener("change",this.updateWorkspaces)}}]),t}(i.PureComponent);function Ca(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.a.createElement(Sa,null);return e&&e!=document.body||(e=document.createElement("div"),document.body.style="margin:0px;padding:0px;border:0px",document.body.appendChild(e)),s.a.render(t,e)}h()(Sa,"propTypes",{workspaces:C.a.arrayOf(C.a.element),installable:C.a.bool}),h()(Sa,"defaultProps",{installable:!0}),n.d(t,"create",(function(){return Ca})),n.d(t,"WeEditUI",(function(){return $e})),n.d(t,"Workspace",(function(){return ca})),n.d(t,"StatusBar",(function(){return dt})),n.d(t,"Canvas",(function(){return aa})),n.d(t,"TitleBar",(function(){return Ke})),n.d(t,"Dashboard",(function(){return We})),n.d(t,"reducer",(function(){return Pe})),n.d(t,"ACTION",(function(){return ve})),n.d(t,"Ribbon",(function(){return l})),n.d(t,"Office",(function(){return Sa})),(Oa=window)&&Oa.addEventListener("load",(function(){var e=document.querySelector("#OfficeContainer");(e||"test"==document.title)&&Ca(e)}))}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndlLWVkaXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWNvbXBvc2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9NZW51SXRlbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWVtb2l6ZS1vbmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL3BpY3R1cmUtaW4tcGljdHVyZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0RGVzdHJ1Y3R1cmluZ0VtcHR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3R5bGVzL2NvbG9yc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWRyb3AtZG93blwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9pbWFnZS9jb2xvci1sZW5zXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL3JvdGF0ZS05MC1kZWdyZWVzLWNjd1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N0eWxlcy9nZXRNdWlUaGVtZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24tcGFnaW5hdGlvblwiIiwid2VicGFjazovLy9leHRlcm5hbCBcImV2ZW50c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N0eWxlcy9NdWlUaGVtZVByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1hbGlnbi1qdXN0aWZ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvUG9wb3ZlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWxpc3QtbnVtYmVyZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvdG9nZ2xlL2NoZWNrLWJveC1vdXRsaW5lLWJsYW5rXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL3RvZ2dsZS9jaGVjay1ib3hcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9SYWlzZWRCdXR0b25cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9TdWJoZWFkZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBsYWluXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3QtZG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWluaW1hdGNoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vY2xvc2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9tZW51XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvRGl2aWRlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvYm9yZGVyLWNvbG9yXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vYXJyb3ctYmFja1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3NhdmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9yZWZyZXNoXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi92aWV3LW1vZHVsZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3RleHQtZm9ybWF0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvTWVudVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWJvbGRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1pdGFsaWNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC11bmRlcmxpbmVkXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtY2xlYXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3N0cmlrZXRocm91Z2gtc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWNvbG9yLWZpbGxcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jb2xvci10ZXh0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tY2VudGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tbGVmdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLXJpZ2h0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1idWxsZXRlZFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3JlZG9cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC91bmRvXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1jb3B5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1wYXN0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L2NvbnRlbnQtY3V0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9ib3JkZXItYWxsXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi9vcGVuLXdpdGhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3ZlcnRpY2FsLWFsaWduLXRvcFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvdmVydGljYWwtYWxpZ24tYm90dG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vZmlyc3QtcGFnZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2xhc3QtcGFnZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvaW5zZXJ0LXBob3RvXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi9kb25lXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci93cmFwLXRleHRcIiIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvc3R5bGUubGVzcz82YTlhIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9zdHlsZS5sZXNzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NvbXBvbmVudHMvY29tYm8tYm94LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9zdGF0ZS9hY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2ZpbGUvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY29tcG9uZW50cy9zaXplLWljb24tYnV0dG9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9zdGF0ZS9yZWR1Y2VyLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9maWxlL29wZW4uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2ZpbGUvY3JlYXRlLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9maWxlL3ByaW50LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9maWxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9kYXNoYm9hcmQvZm9udC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvZGFzaGJvYXJkL29wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2Rhc2hib2FyZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvdGl0bGUtYmFyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy93ZS1lZGl0LXVpLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9zdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY29tcG9uZW50cy9zZWxlY3QtY29sb3IuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NvbXBvbmVudHMvY29sb3ItYnV0dG9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy90ZXh0L2ZvbnRzLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy90ZXh0L2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9wYXJhZ3JhcGgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NvbXBvbmVudHMvZmlsZS1zZWxlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2hpc3RvcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2NsaXBib2FyZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvdGFibGUvZGVzaWduLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy90YWJsZS9yaWJib24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3RhYmxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9waWN0dXJlL3NpemUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3BpY3R1cmUvYm9yZGVyLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9waWN0dXJlL3Bvc2l0aW9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9waWN0dXJlL2VmZmVjdC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvcGljdHVyZS9yaWJib24uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3BpY3R1cmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL2xheW91dC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvcmliYm9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9jb21wb25lbnRzL21vdmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3J1bGVyL2hvcml6b250YWwuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL3J1bGVyL3ZlcnRpY2FsLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9ydWxlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvY2FudmFzLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy93b3Jrc3BhY2UuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL29mZmljZS9wYWdpbmF0aW9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtb2ZmaWNlL3NyYy9vZmZpY2UvcGxhaW4uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1vZmZpY2Uvc3JjL29mZmljZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LW9mZmljZS9zcmMvaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiY29udGVudCIsIm9wdGlvbnMiLCJsb2NhbHMiLCJwdXNoIiwidXNlU291cmNlTWFwIiwibGlzdCIsInRvU3RyaW5nIiwidGhpcyIsIm1hcCIsIml0ZW0iLCJjc3NNYXBwaW5nIiwiYnRvYSIsInNvdXJjZU1hcHBpbmciLCJzb3VyY2VNYXAiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VVUkxzIiwic291cmNlcyIsInNvdXJjZSIsInNvdXJjZVJvb3QiLCJjb25jYXQiLCJqb2luIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsIm1lZGlhUXVlcnkiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwibGVuZ3RoIiwiaWQiLCJtZW1vIiwic3R5bGVzSW5Eb20iLCJpc09sZElFIiwiQm9vbGVhbiIsIndpbmRvdyIsImRvY3VtZW50IiwiYWxsIiwiYXRvYiIsImdldFRhcmdldCIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwicXVlcnlTZWxlY3RvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsImUiLCJsaXN0VG9TdHlsZXMiLCJzdHlsZXMiLCJuZXdTdHlsZXMiLCJiYXNlIiwicGFydCIsImNzcyIsIm1lZGlhIiwicGFydHMiLCJhZGRTdHlsZXNUb0RvbSIsImRvbVN0eWxlIiwiaiIsInJlZnMiLCJhZGRTdHlsZSIsImluc2VydFN0eWxlRWxlbWVudCIsInN0eWxlIiwiY3JlYXRlRWxlbWVudCIsImF0dHJpYnV0ZXMiLCJub25jZSIsImtleXMiLCJmb3JFYWNoIiwic2V0QXR0cmlidXRlIiwiaW5zZXJ0IiwiRXJyb3IiLCJhcHBlbmRDaGlsZCIsInRleHRTdG9yZSIsInJlcGxhY2VUZXh0IiwiaW5kZXgiLCJyZXBsYWNlbWVudCIsImZpbHRlciIsImFwcGx5VG9TaW5nbGV0b25UYWciLCJyZW1vdmUiLCJvYmoiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNzc05vZGUiLCJjcmVhdGVUZXh0Tm9kZSIsImNoaWxkTm9kZXMiLCJyZW1vdmVDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGx5VG9UYWciLCJmaXJzdENoaWxkIiwic2luZ2xldG9uIiwic2luZ2xldG9uQ291bnRlciIsInVwZGF0ZSIsInN0eWxlSW5kZXgiLCJwYXJlbnROb2RlIiwicmVtb3ZlU3R5bGVFbGVtZW50IiwibmV3T2JqIiwibmV3TGlzdCIsIm1heVJlbW92ZSIsIl9pIiwiX2RvbVN0eWxlIiwiQ29tYm9Cb3giLCJzZWFyY2hUZXh0IiwiZ2V0VGV4dCIsInByb3BzIiwiZmlyc3QiLCJkYXRhU291cmNlIiwiZGF0YVNvdXJjZUNvbmZpZyIsInRleHQiLCJrVGV4dCIsImtWYWx1ZSIsImlzT2JqZWN0RGF0YSIsImZvdW5kIiwiZmluZCIsImEiLCJmaW5kSW5kZXgiLCJpbmRleE9mIiwiY29tYm9Cb3giLCJjb250ZXh0IiwibXVpVGhlbWUiLCJEYXRlIiwibm93Iiwib25DaGFuZ2UiLCJvbkV4Y2VwdGlvbiIsIm1lbnVQcm9wcyIsInRleHRGaWVsZFN0eWxlIiwiaW5wdXRTdHlsZSIsImNoaWxkcmVuIiwiaWNvbiIsImxhYmVsIiwiaGludCIsInN0YXRlIiwiaGVpZ2h0IiwibWVudSIsIndpZHRoIiwiYm9yZGVyIiwicGFkZGluZ1JpZ2h0Iiwidmlld0JveCIsIndoaXRlU3BhY2UiLCJvbk5ld1JlcXVlc3QiLCJzZWxlY3RlZCIsImdldEluZGV4IiwiZ2V0VmFsdWUiLCJvblVwZGF0ZUlucHV0Iiwic2V0U3RhdGUiLCJvbkNsb3NlIiwib3Blbk9uRm9jdXMiLCJoaW50VGV4dCIsIm5leHQiLCJQdXJlQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwibG9hZGVyIiwidHlwZSIsIkRPTUFJTiIsInBheWxvYWQiLCJzdHJlYW0iLCJmb3JtYXQiLCJjaGFubmVsIiwic2NhbGUiLCJnZXRPZmZpY2UiLCJTYXZlciIsInN0b3JlIiwiYXJndW1lbnRzIiwiZ2V0QWN0aXZlIiwiZ2V0U3RhdGUiLCJkb2MiLCJnZXRFbWl0dGVyU3RyZWFtIiwiRW1pdHRlciIsInN1cHBvcnRzIiwiaGFzIiwiZm9ybWF0cyIsIkFycmF5IiwiZnJvbSIsImRlZmF1bHRQcm9wcyIsImV4dCIsInVuc2hpZnQiLCJ0eXBlTmFtZSIsInR5cGVFeHQiLCJTdHJlYW0iLCJGb3JtYXQiLCJyZXBsYWNlIiwic3RyZWFtUHJvcHMiLCJUeXBlIiwib25DYW5jZWwiLCJvblNhdmUiLCJzdXBwb3J0ZWRTdHJlYW1zIiwiZ2V0U3VwcG9ydGVkU3RyZWFtcyIsInN1cHBvcnRlZEZvcm1hdHMiLCJnZXRTdXBwb3J0ZWRGb3JtYXRzIiwibm9UeXBlZFN0cmVhbSIsInR5cGVkU3RyZWFtVUkiLCJyZWYiLCJmaXhOYW1lIiwiY29sb3IiLCJ0eXBlZEZvcm1hdFVJIiwiZm9ybWF0UHJvcHMiLCJTZXR0aW5nIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJsaW5lSGVpZ2h0IiwiZmxleCIsIm1hcmdpblJpZ2h0Iiwib25DbGljayIsImRpc2FibGVkIiwicHJpbWFyeSIsInNhdmUiLCJ0aGVuIiwiZGlzcGF0Y2giLCJBQ1RJT04iLCJ3ZUFDVElPTiIsIk1FU1NBR0UiLCJtZXNzYWdlIiwiT3V0cHV0SW5wdXQiLCJyZW5kZXIiLCJTdG9yZSIsInJlYWRvbmx5IiwicmVsZWFzZSIsIlNpemFibGVJY29uQnV0dG9uIiwibWVtb2l6ZSIsInNpemUiLCJwYWRkaW5nIiwiaWNvblN0eWxlIiwic3RhdHVzIiwic2l6ZUljb25CdXR0b24iLCJnZXRTdHlsZSIsInRvb2x0aXAiLCJjaGVja2VkIiwiYmFja2dyb3VuZCIsInVuY2hlY2tlZCIsImFjdGlvbiIsInNldCIsInJlZHVjZXIiLCJfXyQxIiwiTG9hZGVyIiwiTG9hZGVycyIsImdldFN1cHBvcnRlZExvYWRlcnMiLCJvbkxvYWQiLCJ0ZXh0QWxpZ24iLCJDcmVhdGUiLCJJbnB1dCIsInZhbHVlcyIsInRlbXBsYXRlIiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsInVybCIsInVuZGVmaW5lZCIsInRlbXBsYXRlcyIsImZldGNoIiwicmVzIiwiYmxvYiIsImRhdGEiLCJnZXRBbGwiLCJmaWxlIiwicGFyc2UiLCJvbkNyZWF0ZSIsIkFERCIsImZ1bmMiLCJVUkxGZXRjaGVyIiwiZm9udFNpemUiLCJvblByaW50IiwiRmlsZSIsIlJlZnJlc2giLCJTYXZlIiwiQ29tcG9uZW50IiwiY29ubmVjdCIsImlucHV0IiwibG9hZGVkIiwiRm9udE1hbmFnZXIiLCJuYW1lcyIsImNsaWNrIiwibXVsdGlwbGUiLCJsb2FkIiwiZnJvbUJyb3dzZXIiLCJEYXNoYm9hcmQiLCJkb25lIiwiYWN0aXZlIiwiekluZGV4IiwiYXZhdGFyIiwiY29tbWFuZHMiLCJwb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJ6RGVwdGgiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ6b29tIiwibWFyZ2luVG9wIiwiZ3JheTEwMCIsInllbGxvdzUwMCIsImF1dG9XaWR0aCIsInNlbGVjdGVkTWVudUl0ZW1TdHlsZSIsInByaW1hcnlUZXh0Iiwib25DYW5uY2VsIiwiQ2hpbGRyZW4iLCJCYXIiLCJzaG93RHJhd2VyIiwidGl0bGUiLCJkb2NzIiwic2V0QWN0aXZlIiwiY2xvc2UiLCJvbk1lbnUiLCJjbG9zZUJ1dHRvbiIsInBhZGRpbmdMZWZ0IiwidW5kZXJsaW5lU2hvdyIsImNvbXBvc2UiLCJzZXREaXNwbGF5TmFtZSIsImdldENvbnRleHQiLCJtYXBQcm9wcyIsInRpdGxlQmFyIiwiQUNUSVZFIiwiQ0xPU0UiLCJyb290IiwiQkFDS0dST1VORCIsIm92ZXJmbG93IiwidGhlbWUiLCJ0YWJzIiwidGV4dENvbG9yIiwic2VsZWN0ZWRUZXh0Q29sb3IiLCJ0b29sYmFyIiwidWlUaGVtZSIsImdldE11aVRoZW1lIiwidG9BcnJheSIsImFjY2VwdCIsImdsb2IiLCJtaW5pbWF0Y2giLCJWaWV3YWJsZSIsIklucHV0VHlwZSIsImlzVHlwZU9mIiwiZXJyb3IiLCJpbmZvIiwiZGFzaGJvYXJkIiwidGl0bGVCYXJQcm9wcyIsIm90aGVycyIsImFjdGl2ZVdvcmtzcGFjZSIsIm5vbldvcmtzcGFjZXMiLCJnZXROb25Xb3Jrc3BhY2VzIiwiZ2V0QWN0aXZlV29ya3NwYWNlIiwib25Db250ZXh0TWVudSIsInJlamVjdENvbnRleHRNZW51IiwicG9wb3ZlciIsImhhc0FjdGl2ZVdvcmtzcGFjZSIsIm9wZW4iLCJhdXRvSGlkZUR1cmF0aW9uIiwib25SZXF1ZXN0Q2xvc2UiLCJub2RlIiwiQnV0dG9uU3R5bGUiLCJSb290U3R5bGUiLCJibHVlODAwIiwiQ29tcGFjdEJ1dHRvblN0eWxlIiwibWluV2lkdGgiLCJTdGF0dXMiLCJzZXRTY2FsZSIsImJ1dHRvbiIsIm9ubHlVcGRhdGVGb3JLZXlzIiwiUGFnZSIsIldvcmRzIiwiaXRlbXMiLCJ3aGVuU2VsZWN0aW9uQ2hhbmdlIiwic2VsZWN0aW9uIiwiZ2V0U3RhdGlzdGljcyIsInBhZ2VzIiwidG90YWwiLCJhbGxDb21wb3NlZCIsImN1cnJlbnQiLCJwYWdlIiwid29yZHMiLCJTY2FsZSIsIm1heCIsIm1pbiIsInN0ZXAiLCJNYXRoIiwibGFiZWxTdHlsZSIsImZvbnRXZWlnaHQiLCJzbGlkZXJTdHlsZSIsIm5ld1ZhbHVlIiwiQ2hhbm5lbCIsIm9wYWNpdHkiLCJibHVlOTAwIiwidG9vbHRpcFBvc2l0aW9uIiwiRHJvcGRvd25CdXR0b24iLCJhbmNob3IiLCJ0b2dnbGUiLCJtZW51cyIsImFuY2hvckVsIiwib25JdGVtVG91Y2hUYXAiLCJjdXJyZW50VGFyZ2V0IiwiQ29sb3JTZWxlY3RvciIsInRpdGxlU3R5bGUiLCJvblNlbGVjdCIsIkNvbG9yQmxvY2siLCJjdXJzb3IiLCJTcGVjaWFsQ29sb3IiLCJmdWxsV2lkdGgiLCJUaGVtZUNvbG9ycyIsImNvbG9yVGhlbWVzIiwiY29sb3JzIiwiZ2V0Q29sb3IiLCJTdGFuZGFyZENvbG9ycyIsInNwbGl0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJDb2xvckJ1dHRvbiIsImNvbG9yU2VsZWN0b3IiLCJGb250TGlzdCIsImZvbnRzIiwiY2hhbmdlRm9udCIsIlNldCIsInNvcnQiLCJUb29sYmFyU2VwYXJhdG9yIiwibWFyZ2luTGVmdCIsIndpdGhQcm9wcyIsImNoYW5nZVNpemUiLCJTZWxlY3Rpb24iLCJVUERBVEUiLCJ0b2dnbGVCIiwiYiIsImJvbGQiLCJ0b2dnbGVJIiwiaXRhbGljIiwidG9nZ2xlVSIsInVuZGVybGluZSIsInRvZ2dsZVN1YnNjcmlwdCIsInN1YnNjcmlwdCIsInRvZ2dsZVN1cGVyc2NyaXB0Iiwic3VwZXJzY3JpcHQiLCJzbWFsbGVyIiwiY2VpbCIsImFicyIsImJpZ2dlciIsImNoYW5nZUhpZ2h0bGlnaHQiLCJoaWdobGlnaHQiLCJjaGFuZ2VDb2xvciIsImNsZWFyIiwiX2NsZWFyIiwidG9nZ2xlQm9yZGVyIiwidG9nZ2xlU3RyaWtlIiwic3RyaWtlIiwic2hvdWxkVXBkYXRlIiwic2hhbGxvd0VxdWFsIiwicGFyc2VJbnQiLCJJY29uU3VwZXJzY3JpcHQiLCJ0cmFuc2Zvcm0iLCJ4IiwieSIsIkljb25TdWJzY3JpcHQiLCJJY29uQmlnZ2VyIiwiSWNvblNtYWxsZXIiLCJJY29uVGV4dEJvcmRlciIsImZpbGwiLCJzdHJva2UiLCJnZXRVSSIsInBpbGNyb3ciLCJ0b2dnbGVBbGlnbiIsImFsaWduIiwicGFyYWdyYXBoIiwibnVtYmVyaW5nIiwidG9nZ2xlQnVsbGV0IiwidG9nZ2xlTnVtYmVyaW5nIiwidG9nZ2xlUGlsY3JvdyIsIlVJIiwiYnVsbGV0IiwicmVkb3MiLCJnZXRSZWRvcyIsInVuZG9zIiwiZ2V0VW5kb3MiLCJjYW5SZWRvIiwiY2FuVW5kbyIsInVuZG8iLCJIaXN0b3J5IiwicmVkbyIsImdldFNlbGVjdGlvbiIsInN0YXJ0IiwiZW5kIiwid2l0aFNlbGVjdGlvbiIsImF0Iiwid2l0aENsaXBib2FyZCIsIl9jbGlwYm9hcmQiLCJjdXQiLCJDVVQiLCJjb3B5IiwiQ09QWSIsInBhc3RlIiwiUEFTVEUiLCJhZGRSb3dBYm92ZSIsIkVudGl0eSIsIkNSRUFURSIsIndoZXJlIiwiYWRkUm93QmVsb3ciLCJhZGRDb2xSaWdodCIsImFkZENvbExlZnQiLCJFWFRFTkQiLCJSRU1PVkUiLCJzZWxlY3QiLCJsZWZ0SWNvbiIsInN0cm9rZVdpZHRoIiwiSWNvbkNvbmRpdGlvbiIsIkljb25UYWJsZSIsIkIiLCJJY29uQ2VsbCIsIkljb25Db2x1bW4iLCJJY29uUm93IiwiSWNvbldob2xlVGFibGUiLCJYIiwidyIsInNob3ciLCJzZXR0aW5nIiwib25BY3Rpb24iLCJSQ1NpemUiLCJyb3dzIiwiY29sIiwiY29sdW1uIiwibGF5b3V0V2lkdGgiLCJjb2xzIiwicmVkdWNlIiwic3VtIiwiZWxlbWVudCIsInJvdyIsInRyIiwib25Nb3VzZU91dCIsInRkIiwib25Nb3VzZU92ZXIiLCJyb3dDb2wiLCJ0cnMiLCJsZW4iLCJ0ZHMiLCJtYXJnaW5SaWd0aCIsImRlZ3JlZSIsIlRvb2xzIiwib2siLCJzdGF0dXNUZXh0IiwiYXJyYXlCdWZmZXIiLCJVaW50OEFycmF5IiwiY3JjMzIiLCJib2R5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJvbmNoYW5nZSIsImZpbGVzIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiY3JlYXRlU2VjdGlvbiIsImNyZWF0ZVBhZ2VCcmVhayIsImxhbmRzY2FwZSIsIm9yaWVudGF0aW9uIiwicHJvdHJhaXQiLCJtYXJnaW4iLCJzaXplRXF1YWwiLCJoIiwibWFyZ2luRXF1YWwiLCJtYXJnaW5zIiwicmlnaHQiLCJib3R0b20iLCJmIiwic3Ryb2tlRGFzaGFycmF5IiwieDEiLCJ4MiIsInkxIiwieTIiLCJraW5kIiwiZm9udEZhbWlseSIsInJpZ2h0SWNvbiIsIkljb25QYWdlIiwiSWNvbkJsYW5rIiwiQ29sdW1uIiwiSWNvblNpemUiLCJJY29uT3JpZW50YXRpb24iLCJJY29uTWFyZ2luIiwiSCIsIlYiLCJUb29sYmFyIiwianVzdGlmeUNvbnRlbnQiLCJSaWJib24iLCJidXR0b25TdHlsZSIsInRhYlN0eWxlIiwibGF5b3V0IiwibWVyZ2VkIiwiayIsIndoZW4iLCJjb2xsZWN0ZWQiLCJwbHVnaW5zIiwiaXNBcnJheSIsImhvbWUiLCJjbGlwYm9hcmQiLCJoaXN0b3J5IiwidGFibGUiLCJwaWN0dXJlIiwiYmFzaWMiLCJpbWFnZSIsImJvcmRlckJvdHRvbSIsIm1hcmdpbkJvdHRvbSIsIm92ZXJmbG93WCIsIm1lbnVJdGVtU3R5bGUiLCJtaW5IZWlnaHQiLCJjb250ZW50Q29udGFpbmVyU3R5bGUiLCJpbmtCYXJTdHlsZSIsIm1vcmUiLCJ2aXNpYmlsaXR5IiwiTW92YWJsZSIsIm1vdmUiLCJjaGFuZ2luZyIsIngwIiwieTAiLCJvbk1vdmUiLCJvdmVybGF5Iiwib25Nb3VzZVVwIiwib25FbmRNb3ZlIiwib25Nb3VzZU1vdmUiLCJvbk1vdXNlRG93biIsIm9uU3RhcnRNb3ZlIiwiY2xpZW50WCIsImNsaWVudFkiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkFjY2VwdCIsIk92ZXJsYXkiLCJsZWZ0TWFyZ2luIiwicmlnaHRNYXJnaW4iLCJzZXRMZWZ0TWFyZ2luIiwic2V0UmlnaHRNYXJnaW4iLCJmaXJzdExpbmUiLCJsZWZ0SW5kZW50IiwicmlnaHRJbmRlbnQiLCJzZXRGaXJzdExpbmUiLCJzZXRMZWZ0SW5kZW50Iiwic2V0UmlnaHRJbmRlbnQiLCJjbSIsInRyaW0iLCJkeCIsImZsIiwiY2xhc3NOYW1lIiwiQVQiLCJpbmNsdWRlcyIsIk1hcmdpbiIsIkluZGVudCIsIkZpcnN0TGluZSIsImRpcmVjdGlvbiIsIk1hcmtlciIsImRlZ3MiLCJDTSIsIm50aCIsInRleHRBbmNob3IiLCJmb290ZXIiLCJoZWFkZXIiLCJ0b3BNYXJnaW4iLCJib3R0b21NYXJnaW4iLCJzZXRUb3BNYXJnaW4iLCJzZXRCb3R0b21NYXJnaW4iLCJzZWN0aW9uIiwicGdNYXIiLCJpbmRlbnQiLCJSdWxlciIsIkhvcml6b250YWxSdWxlciIsIlZlcnRpY2FsUnVsZXIiLCJ1dWlkIiwicGFnZVkiLCJ1aWQiLCJydWxlciIsInZlcnRpY2FsIiwib3ZlcmZsb3dZIiwiUGlsY3JvdyIsImNhbnZhc0lkIiwic3RhY2siLCJXb3Jrc3BhY2UiLCJldmVudHMiLCJFdmVudEVtaXR0ZXIiLCJkZWJ1ZyIsIkNoYW5uZWxzIiwiYm9vbCIsInRvb2xCYXIiLCJzdGF0dXNCYXIiLCJzdHJpbmciLCJwdXJlIiwiY2FudmFzIiwidW5jb250cm9sbGVkIiwiZ2V0Q3VycmVudCIsImdldENoYW5uZWxzIiwic3VwcG9ydFBhZ2luYXRpb24iLCJEZXNrIiwicmVwcmVzZW50YXRpb24iLCJmb250Iiwid3JhcCIsIm51bWJlciIsIm1vZGVzIiwidGhlbWVzIiwiUGxhaW5FZGl0b3IiLCJtZSIsIm15T2ZmaWNlIiwiUGFnaW5hdGlvbk9mZmljZSIsImV2ZW50IiwiaW5pdHMiLCJvblJlYWR5Iiwid29ya3NwYWNlcyIsImluaXQiLCJvbiIsIm9uY2UiLCJyZW1vdmVMaXN0ZW5lciIsImNvbnNvbGUiLCJlbWl0IiwiZXhjbHVkZVJlZHVjZXIiLCJPZmZpY2UiLCJyZWR1Y2VycyIsImV4Y2x1ZGVzIiwid2VkaXQiLCJjcmVhdGVSZWYiLCJyZXZlcnNlIiwic3BsaWNlIiwiaW5zdGFsbGFibGUiLCJyZWFkeSIsInVwZGF0ZVdvcmtzcGFjZXMiLCJnZXRSZWR1Y2VycyIsImNvbnRhaW5lciIsIm9mZmljZSIsIlJlYWN0RE9NIiwiYXJyYXlPZiIsImFkZEV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiIyQkFDRSxJQUFJQSxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVQyxRQUduQyxJQUFJQyxFQUFTSixFQUFpQkUsR0FBWSxDQUN6Q0csRUFBR0gsRUFDSEksR0FBRyxFQUNISCxRQUFTLElBVVYsT0FOQUksRUFBUUwsR0FBVU0sS0FBS0osRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU0YsR0FHL0RHLEVBQU9FLEdBQUksRUFHSkYsRUFBT0QsUUEwRGYsT0FyREFGLEVBQW9CUSxFQUFJRixFQUd4Qk4sRUFBb0JTLEVBQUlWLEVBR3hCQyxFQUFvQlUsRUFBSSxTQUFTUixFQUFTUyxFQUFNQyxHQUMzQ1osRUFBb0JhLEVBQUVYLEVBQVNTLElBQ2xDRyxPQUFPQyxlQUFlYixFQUFTUyxFQUFNLENBQUVLLFlBQVksRUFBTUMsSUFBS0wsS0FLaEVaLEVBQW9Ca0IsRUFBSSxTQUFTaEIsR0FDWCxvQkFBWGlCLFFBQTBCQSxPQUFPQyxhQUMxQ04sT0FBT0MsZUFBZWIsRUFBU2lCLE9BQU9DLFlBQWEsQ0FBRUMsTUFBTyxXQUU3RFAsT0FBT0MsZUFBZWIsRUFBUyxhQUFjLENBQUVtQixPQUFPLEtBUXZEckIsRUFBb0JzQixFQUFJLFNBQVNELEVBQU9FLEdBRXZDLEdBRFUsRUFBUEEsSUFBVUYsRUFBUXJCLEVBQW9CcUIsSUFDL0IsRUFBUEUsRUFBVSxPQUFPRixFQUNwQixHQUFXLEVBQVBFLEdBQThCLGlCQUFWRixHQUFzQkEsR0FBU0EsRUFBTUcsV0FBWSxPQUFPSCxFQUNoRixJQUFJSSxFQUFLWCxPQUFPWSxPQUFPLE1BR3ZCLEdBRkExQixFQUFvQmtCLEVBQUVPLEdBQ3RCWCxPQUFPQyxlQUFlVSxFQUFJLFVBQVcsQ0FBRVQsWUFBWSxFQUFNSyxNQUFPQSxJQUN0RCxFQUFQRSxHQUE0QixpQkFBVEYsRUFBbUIsSUFBSSxJQUFJTSxLQUFPTixFQUFPckIsRUFBb0JVLEVBQUVlLEVBQUlFLEVBQUssU0FBU0EsR0FBTyxPQUFPTixFQUFNTSxJQUFRQyxLQUFLLEtBQU1ELElBQzlJLE9BQU9GLEdBSVJ6QixFQUFvQjZCLEVBQUksU0FBUzFCLEdBQ2hDLElBQUlTLEVBQVNULEdBQVVBLEVBQU9xQixXQUM3QixXQUF3QixPQUFPckIsRUFBZ0IsU0FDL0MsV0FBOEIsT0FBT0EsR0FFdEMsT0FEQUgsRUFBb0JVLEVBQUVFLEVBQVEsSUFBS0EsR0FDNUJBLEdBSVJaLEVBQW9CYSxFQUFJLFNBQVNpQixFQUFRQyxHQUFZLE9BQU9qQixPQUFPa0IsVUFBVUMsZUFBZTFCLEtBQUt1QixFQUFRQyxJQUd6Ry9CLEVBQW9Ca0MsRUFBSSxHQUlqQmxDLEVBQW9CQSxFQUFvQm1DLEVBQUksSSxnQkNsRnJEaEMsRUFBT0QsUUFBVWtDLFFBQVEsVSxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGdCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsWSxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwwQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHVDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsMEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxxRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDBDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsb0MsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxtQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsZSxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGlELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEseUIsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxnQixjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGdCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsb0QsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxvRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDhCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEscUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwyQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHNELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsbUMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxzQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLFcsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx3QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGtDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsc0QsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx3QixjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHNELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEseUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwyQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDZCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsMEIsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxpQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxjLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsMkMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwwQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHdCLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsOEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxnRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHVDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsNkMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx5QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDZDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsOEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxxQixjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDZDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsK0MsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxtRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDhDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsaUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxtRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEscUQsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxtRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG9ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsc0QsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx1QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHVDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsK0MsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxnRCxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLDhDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsNEMsY0NBekJqQyxFQUFPRCxRQUFV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WCxnQkFBZXZCLFdBQVNzQixhQUNyQ3lXLEVBQVd2cUIsS0FBSSxTQUFBc0csR0FBQyxPQUFFQSxFQUFFVixNQUFNK0gsUUFBVVcsSUFBTUUsYUFBYWxJLEVBQUUsQ0FBQ3FILGFBQVFlLElBQWNwSSxLQUNoRmEsTSw2Q0FPRHBILEtBQUs2RixNQUFNMGxCLGFBQ2JsQixHQUFNTyxlQUFlLFNBQVM1cUIsS0FBS3lyQixzQixHQXBGRi9pQixpQkMxQjdCLFNBQVM1SixHQUFPNnNCLEdBQTRCLElBQWpCQyxFQUFpQix1REFBVixrQkFBQyxHQUFELE1BTXhDLE9BTElELEdBQWFBLEdBQVdocUIsU0FBUytlLE9BQ3BDaUwsRUFBVWhxQixTQUFTMEIsY0FBYyxPQUNqQzFCLFNBQVMrZSxLQUFLdGQsTUFBTSxvQ0FDcEJ6QixTQUFTK2UsS0FBSzdjLFlBQVk4bkIsSUFFcEJFLElBQVNuZixPQUFPa2YsRUFBUUQsRyxJRG9CWFgsRyxZQUNILENBQ2hCUixXQUFZN2hCLElBQVVtakIsUUFBUW5qQixJQUFVNlcsU0FDeEMrTCxZQUFZNWlCLElBQVVxZ0IsTyxJQUhIZ0MsRyxlQU1BLENBQ25CTyxhQUFZLElDbERkLHNjQTBCVXJCLEdBT1B4b0IsU0FOSXdvQixHQUFHNkIsaUJBQWlCLFFBQVEsV0FDakMsSUFBSUosRUFBVWhxQixTQUFTTSxjQUFjLHFCQUNsQzBwQixHQUE2QixRQUFoQmhxQixTQUFTa1EsUUFDeEIvUyxHQUFPNnNCIiwiZmlsZSI6Im9mZmljZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA3OCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlY29tcG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvTWVudUl0ZW1cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWVtb2l6ZS1vbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi9waWN0dXJlLWluLXBpY3R1cmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3R5bGVzL2NvbG9yc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9hcnJvdy1kcm9wLWRvd25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL2NvbG9yLWxlbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2ltYWdlL3JvdGF0ZS05MC1kZWdyZWVzLWNjd1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdHlsZXMvZ2V0TXVpVGhlbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwid2UtZWRpdC1yZXByZXNlbnRhdGlvbi1wYWdpbmF0aW9uXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdHlsZXMvTXVpVGhlbWVQcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1hbGlnbi1qdXN0aWZ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL1BvcG92ZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1udW1iZXJlZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvdG9nZ2xlL2NoZWNrLWJveC1vdXRsaW5lLWJsYW5rXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy90b2dnbGUvY2hlY2stYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL1JhaXNlZEJ1dHRvblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9TdWJoZWFkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwid2UtZWRpdC1yZXByZXNlbnRhdGlvbi1wbGFpblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1kb21cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWluaW1hdGNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL21lbnVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2JvcmRlci1jb2xvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9hcnJvdy1iYWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L3NhdmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vcmVmcmVzaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2FjdGlvbi92aWV3LW1vZHVsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC90ZXh0LWZvcm1hdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9NZW51XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWJvbGRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtaXRhbGljXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LXVuZGVybGluZWRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtY2xlYXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9zdHJpa2V0aHJvdWdoLXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtY29sb3ItZmlsbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jb2xvci10ZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWNlbnRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1hbGlnbi1sZWZ0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLXJpZ2h0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWxpc3QtYnVsbGV0ZWRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvcmVkb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC91bmRvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L2NvbnRlbnQtY29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9jb250ZW50LXBhc3RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9jb250ZW50L2NvbnRlbnQtY3V0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvYm9yZGVyLWFsbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL29wZW4td2l0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3ZlcnRpY2FsLWFsaWduLXRvcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3ZlcnRpY2FsLWFsaWduLWJvdHRvbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9maXJzdC1wYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2xhc3QtcGFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2luc2VydC1waG90b1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL2RvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci93cmFwLXRleHRcIik7IiwidmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xlc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGUubGVzc1wiKTtcblxuaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG59XG5cbnZhciBvcHRpb25zID0ge31cblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYgKGNvbnRlbnQubG9jYWxzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG59XG4iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5ydWxlci52ZXJ0aWNhbHtwb3NpdGlvbjpyZWxhdGl2ZX0ucnVsZXIudmVydGljYWwgLm1hcmdpbnt3aWR0aDoyMHB4O2JhY2tncm91bmQtY29sb3I6IzAwMDtvcGFjaXR5Oi40fS5ydWxlci52ZXJ0aWNhbCAubWFyZ2luIC5tb3Zlcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NHB4O3dpZHRoOjEwMCU7Y3Vyc29yOm5zLXJlc2l6ZX0ucnVsZXIudmVydGljYWwgLm1hcmdpbi50b3B7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzp3cmFwLXJldmVyc2V9LnJ1bGVyLnZlcnRpY2FsIC5tYXJnaW4udG9wIC5tb3Zlcntib3R0b206LTJweH0ucnVsZXIuaG9yaXpvbnRhbHttYXJnaW46MCBhdXRvfS5ydWxlci5ob3Jpem9udGFsIC5tYXJnaW57aGVpZ2h0OjIwcHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjR9LnJ1bGVyLmhvcml6b250YWwgLm1hcmdpbiAubW92ZXJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NHB4O2hlaWdodDoxMDAlO2N1cnNvcjpldy1yZXNpemV9LnJ1bGVyLmhvcml6b250YWwgLm1hcmdpbi5yaWdodCAubW92ZXJ7cmlnaHQ6MnB4fS5ydWxlci5ob3Jpem9udGFsIC5tYXJnaW4ubGVmdCAubW92ZXJ7ZmxvYXQ6cmlnaHQ7cmlnaHQ6LTJweH0ucnVsZXIuaG9yaXpvbnRhbCAubWFya2Vye2hlaWdodDo4cHg7d2lkdGg6OHB4fS5ydWxlci5ob3Jpem9udGFsIC5tYXJrZXIgc3Zne3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MTJweH0ucnVsZXIuaG9yaXpvbnRhbCAuaW5kZW50e2hlaWdodDo4cHg7d2lkdGg6OHB4fS5ydWxlci5ob3Jpem9udGFsIC5pbmRlbnQgc3Zne3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MTJweH0ucnVsZXIuaG9yaXpvbnRhbCAuaW5kZW50LmxlZnQgc3Zne2xlZnQ6LTRweH0ucnVsZXIuaG9yaXpvbnRhbCAuaW5kZW50LnJpZ2h0IHN2Z3tyaWdodDotNHB4fS5ydWxlci5ob3Jpem9udGFsIC5maXJzdC1saW5le2hlaWdodDo4cHg7d2lkdGg6OHB4fS5ydWxlci5ob3Jpem9udGFsIC5maXJzdC1saW5lIHN2Z3t3aWR0aDoxMDAlIWltcG9ydGFudDtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmU7dG9wOjEycHh9LnJ1bGVyLmhvcml6b250YWwgLmZpcnN0LWxpbmUubGVmdCBzdmd7dG9wOjA7bGVmdDotNHB4fS5ydWxlcj5zdmcgdGV4dHtmb250LXNpemU6MTBweH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5Om15IGFyaWFsO3NyYzpsb2NhbChcXFwiYXJpYWxcXFwiKSx1cmwoXFxcIi9mb250cy9BcmlhbFxcXCIpfVwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiIsIi8qXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtcblx0dmFyIGxpc3QgPSBbXTtcblxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXHRcdFx0aWYoaXRlbVsyXSkge1xuXHRcdFx0XHRyZXR1cm4gXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBjb250ZW50ICsgXCJ9XCI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gY29udGVudDtcblx0XHRcdH1cblx0XHR9KS5qb2luKFwiXCIpO1xuXHR9O1xuXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cdGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcblx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG5cdFx0fVxuXHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcblx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2VpcmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG5cdHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblx0aWYgKCFjc3NNYXBwaW5nKSB7XG5cdFx0cmV0dXJuIGNvbnRlbnQ7XG5cdH1cblxuXHRpZiAodXNlU291cmNlTWFwICYmIHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG5cdFx0dmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcblx0XHRcdHJldHVybiAnLyojIHNvdXJjZVVSTD0nICsgY3NzTWFwcGluZy5zb3VyY2VSb290ICsgc291cmNlICsgJyAqLydcblx0XHR9KTtcblxuXHRcdHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuXHR9XG5cblx0cmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn1cblxuLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuZnVuY3Rpb24gdG9Db21tZW50KHNvdXJjZU1hcCkge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0dmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSk7XG5cdHZhciBkYXRhID0gJ3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCcgKyBiYXNlNjQ7XG5cblx0cmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5Eb20gPSB7fTtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGxpc3RUb1N0eWxlcyhsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZXMgPSBbXTtcbiAgdmFyIG5ld1N0eWxlcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY3NzID0gaXRlbVsxXTtcbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdO1xuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdO1xuICAgIHZhciBwYXJ0ID0ge1xuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH07XG5cbiAgICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7XG4gICAgICAgIGlkOiBpZCxcbiAgICAgICAgcGFydHM6IFtwYXJ0XVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGVzO1xufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXTtcbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXTtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgIGRvbVN0eWxlLnJlZnMrKztcblxuICAgICAgZm9yICg7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKTtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuICAgICAgfVxuXG4gICAgICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIHJlZnM6IDEsXG4gICAgICAgIHBhcnRzOiBwYXJ0c1xuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBvcHRpb25zLmF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhvcHRpb25zLmF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIG9wdGlvbnMuYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiBidG9hKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBvcHRpb25zLmF0dHJpYnV0ZXMgPSB0eXBlb2Ygb3B0aW9ucy5hdHRyaWJ1dGVzID09PSAnb2JqZWN0JyA/IG9wdGlvbnMuYXR0cmlidXRlcyA6IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMobGlzdCwgb3B0aW9ucyk7XG4gIGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXTtcbiAgICAgIHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXG4gICAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgICAgZG9tU3R5bGUucmVmcy0tO1xuICAgICAgICBtYXlSZW1vdmUucHVzaChkb21TdHlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAgIHZhciBuZXdTdHlsZXMgPSBsaXN0VG9TdHlsZXMobmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgICBhZGRTdHlsZXNUb0RvbShuZXdTdHlsZXMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtYXlSZW1vdmUubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2RvbVN0eWxlID0gbWF5UmVtb3ZlW19pXTtcblxuICAgICAgaWYgKF9kb21TdHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgX2RvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgX2RvbVN0eWxlLnBhcnRzW2pdKCk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgc3R5bGVzSW5Eb21bX2RvbVN0eWxlLmlkXTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59OyIsImltcG9ydCBSZWFjdCx7UHVyZUNvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuXG5pbXBvcnQge0F1dG9Db21wbGV0ZX0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBJY29uTW9yZSBmcm9tICdtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9hcnJvdy1kcm9wLWRvd24nXG5cbmV4cG9ydCBjbGFzcyBDb21ib0JveCBleHRlbmRzIFB1cmVDb21wb25lbnR7XG5cdHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuXHRcdG11aVRoZW1lOiBQcm9wVHlwZXMub2JqZWN0LFxuXHR9XG5cdHN0YXRlPXtzZWFyY2hUZXh0OnRoaXMuZ2V0VGV4dCh0aGlzLnByb3BzKX1cblxuXHRpc09iamVjdERhdGEocHJvcHMpe1xuXHRcdGNvbnN0IHtkYXRhU291cmNlOltmaXJzdF19PXByb3BzfHx0aGlzLnByb3BzXG5cdFx0cmV0dXJuIHR5cGVvZihmaXJzdCk9PVwib2JqZWN0XCJcblx0fVxuXG5cdGdldFRleHQocHJvcHMpe1xuXHRcdGNvbnN0IHtkYXRhU291cmNlLCB2YWx1ZSwgZGF0YVNvdXJjZUNvbmZpZ309cHJvcHN8fHRoaXMucHJvcHNcblx0XHRjb25zdCB7dGV4dDprVGV4dCx2YWx1ZTprVmFsdWV9PWRhdGFTb3VyY2VDb25maWd8fHsgdGV4dDogJ3RleHQnLCB2YWx1ZTogJ3ZhbHVlJyx9XG5cdFx0aWYodGhpcy5pc09iamVjdERhdGEocHJvcHMpKXtcblx0XHRcdGxldCBmb3VuZD1kYXRhU291cmNlLmZpbmQoYT0+YVtrVmFsdWVdPT12YWx1ZSlcblx0XHRcdGlmKGZvdW5kKXtcblx0XHRcdFx0cmV0dXJuIGZvdW5kW2tUZXh0XStcIlwiXG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuIFwiXCJcblx0XHRcdH1cblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiB2YWx1ZStcIlwiXG5cdFx0fVxuXHR9XG5cblx0Z2V0SW5kZXgodGV4dCl7XG5cdFx0Y29uc3Qge2RhdGFTb3VyY2UsIGRhdGFTb3VyY2VDb25maWd9PXRoaXMucHJvcHNcblx0XHRjb25zdCB7dGV4dDprVGV4dCx2YWx1ZTprVmFsdWV9PWRhdGFTb3VyY2VDb25maWd8fHsgdGV4dDogJ3RleHQnLCB2YWx1ZTogJ3ZhbHVlJyx9XG5cdFx0aWYodGhpcy5pc09iamVjdERhdGEoKSl7XG5cdFx0XHRyZXR1cm4gZGF0YVNvdXJjZS5maW5kSW5kZXgoYT0+YVtrVGV4dF09PXRleHQpXG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gZGF0YVNvdXJjZS5pbmRleE9mKHRleHQpXG5cdFx0fVxuXHR9XG5cblx0Z2V0VmFsdWUoaW5kZXgpe1xuXHRcdGNvbnN0IHtkYXRhU291cmNlLCBkYXRhU291cmNlQ29uZmlnfT10aGlzLnByb3BzXG5cdFx0Y29uc3Qge3RleHQ6a1RleHQsdmFsdWU6a1ZhbHVlfT1kYXRhU291cmNlQ29uZmlnfHx7IHRleHQ6ICd0ZXh0JywgdmFsdWU6ICd2YWx1ZScsfVxuXHRcdGlmKHRoaXMuaXNPYmplY3REYXRhKCkpe1xuXHRcdFx0cmV0dXJuIGRhdGFTb3VyY2VbaW5kZXhdW2tWYWx1ZV1cblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiBkYXRhU291cmNlW2luZGV4XVxuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGxldCB7Y29tYm9Cb3h9PXRoaXMuY29udGV4dC5tdWlUaGVtZVxuXHRcdGxldCB7bmFtZT1gXyR7RGF0ZS5ub3coKX1gLCB2YWx1ZSwgb25DaGFuZ2UsIG9uRXhjZXB0aW9uLCBzdHlsZSwgbWVudVByb3BzPXt9LFxuXHRcdFx0dGV4dEZpZWxkU3R5bGUsIGlucHV0U3R5bGUsIGNoaWxkcmVuLGljb249Y2hpbGRyZW4sbGFiZWwsaGludD1sYWJlbCwgLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRsZXQgdGV4dD10aGlzLmdldFRleHQoKVxuXHRcdGxldCB7c2VhcmNoVGV4dH09dGhpcy5zdGF0ZVxuXHRcdGlmKGNvbWJvQm94ICYmIGNvbWJvQm94LmhlaWdodCl7XG5cdFx0XHRpZighc3R5bGUpe1xuXHRcdFx0XHRzdHlsZT17aGVpZ2h0OmNvbWJvQm94LmhlaWdodH1cblx0XHRcdH1lbHNlIGlmKCFzdHlsZS5oZWlnaHQpe1xuXHRcdFx0XHRzdHlsZS5oZWlnaHQ9Y29tYm9Cb3guaGVpZ2h0XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYoY29tYm9Cb3ggJiYgY29tYm9Cb3gudGV4dEZpZWxkU3R5bGUpe1xuXHRcdFx0dGV4dEZpZWxkU3R5bGU9ey4uLmNvbWJvQm94LnRleHRGaWVsZFN0eWxlLC4uLnRleHRGaWVsZFN0eWxlfVxuXHRcdH1cblxuXHRcdGlmKGNvbWJvQm94ICYmIGNvbWJvQm94Lm1lbnUpe1xuXHRcdFx0bWVudVByb3BzPXsuLi5jb21ib0JveC5tZW51LC4uLm1lbnVQcm9wc31cblx0XHR9XG5cblx0XHRpZihzdHlsZSl7XG5cdFx0XHRpZighdGV4dEZpZWxkU3R5bGUpe1xuXHRcdFx0XHR0ZXh0RmllbGRTdHlsZT17fVxuXHRcdFx0fVxuXHRcdFx0aWYoc3R5bGUud2lkdGggJiYgIXRleHRGaWVsZFN0eWxlLndpZHRoKXtcblx0XHRcdFx0dGV4dEZpZWxkU3R5bGUud2lkdGg9c3R5bGUud2lkdGhcblx0XHRcdH1cblxuXHRcdFx0aWYoc3R5bGUuaGVpZ2h0ICYmICF0ZXh0RmllbGRTdHlsZS5oZWlnaHQpe1xuXHRcdFx0XHR0ZXh0RmllbGRTdHlsZS5oZWlnaHQ9c3R5bGUuaGVpZ2h0XG5cdFx0XHR9XG5cblx0XHRcdGlmKG1lbnVQcm9wcy5zdHlsZSAmJiAhbWVudVByb3BzLnN0eWxlLndpZHRoICYmIHN0eWxlLndpZHRoKVxuXHRcdFx0XHRtZW51UHJvcHMuc3R5bGU9ey4uLm1lbnVQcm9wcy5zdHlsZSwgd2lkdGg6c3R5bGUud2lkdGh9XG5cdFx0fVxuXG5cdFx0aWYoaW5wdXRTdHlsZSAmJiBpbnB1dFN0eWxlLmJvcmRlcil7XG5cdFx0XHRpbnB1dFN0eWxlLnBhZGRpbmdSaWdodD02XG5cblx0XHR9XG5cblx0XHRpZighaWNvbiAmJiB0ZXh0RmllbGRTdHlsZSAmJiB0ZXh0RmllbGRTdHlsZS5oZWlnaHQpe1xuXHRcdFx0aWNvbj0oPEljb25Nb3JlXG5cdFx0XHRcdFx0c3R5bGU9e3toZWlnaHQ6dGV4dEZpZWxkU3R5bGUuaGVpZ2h0LTQsd2lkdGg6Nn19XG5cdFx0XHRcdFx0dmlld0JveD1cIjYgLTIwIDE4IDI4XCJcblx0XHRcdFx0XHQvPilcblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PHNwYW4gc3R5bGU9e3t3aGl0ZVNwYWNlOlwibm93cmFwXCJ9fT5cblx0XHRcdFx0PEF1dG9Db21wbGV0ZVxuXHRcdFx0XHRcdG5hbWU9e25hbWV9XG5cdFx0XHRcdFx0c2VhcmNoVGV4dD17c2VhcmNoVGV4dH1cblx0XHRcdFx0XHRtZW51UHJvcHM9e21lbnVQcm9wc31cblx0XHRcdFx0XHRvbk5ld1JlcXVlc3Q9e1xuXHRcdFx0XHRcdFx0KHNlbGVjdGVkLCBpbmRleCk9Pntcblx0XHRcdFx0XHRcdFx0aWYoLTE9PWluZGV4ICYmIHNlbGVjdGVkKXsvL2VudGVyXG5cdFx0XHRcdFx0XHRcdFx0aW5kZXg9dGhpcy5nZXRJbmRleChzZWxlY3RlZClcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmKC0xIT1pbmRleCl7XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2UodGhpcy5nZXRWYWx1ZShpbmRleCkpXG5cdFx0XHRcdFx0XHRcdH1lbHNlIGlmKHNlbGVjdGVkKXtcblx0XHRcdFx0XHRcdFx0XHRvbkV4Y2VwdGlvbiAmJiBvbkV4Y2VwdGlvbihzZWxlY3RlZClcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG9uVXBkYXRlSW5wdXQ9e1xuXHRcdFx0XHRcdFx0KHNlYXJjaFRleHQsIGRhdGFTb3VyY2UpPT57XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe3NlYXJjaFRleHR9KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG9uQ2xvc2U9eygpPT50aGlzLnNldFN0YXRlKHtzZWFyY2hUZXh0OnRleHR9KX1cblxuXHRcdFx0XHRcdGZpbHRlcj17XG5cdFx0XHRcdFx0XHQoc2VhcmNoVGV4dCxrZXkpPT57XG5cdFx0XHRcdFx0XHRcdGlmKHNlYXJjaFRleHQhPXRleHQpe1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBrZXkuaW5kZXhPZihzZWFyY2hUZXh0KSE9LTFcblx0XHRcdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvcGVuT25Gb2N1cz17dHJ1ZX1cblx0XHRcdFx0XHRzdHlsZT17c3R5bGV9XG5cdFx0XHRcdFx0aW5wdXRTdHlsZT17aW5wdXRTdHlsZX1cblx0XHRcdFx0XHR0ZXh0RmllbGRTdHlsZT17dGV4dEZpZWxkU3R5bGV9XG5cdFx0XHRcdFx0aGludFRleHQ9e2hpbnR9XG5cdFx0XHRcdFx0ey4uLnByb3BzfSAvPlxuXHRcdFx0XHRcdHtpY29ufVxuXHRcdFx0PC9zcGFuPlxuXHRcdClcblx0fVxuXG5cdGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dCl7XG5cdFx0aWYodGhpcy5wcm9wcy52YWx1ZSE9bmV4dC52YWx1ZSl7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtzZWFyY2hUZXh0OnRoaXMuZ2V0VGV4dChuZXh0KX0pXG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbWJvQm94XG4iLCJpbXBvcnQge0RPTUFJTn0gZnJvbSBcIndlLWVkaXRcIlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGxvYWRlcjpsb2FkZXI9Pih7dHlwZTpgJHtET01BSU59L29mZmljZS9MT0FERVJgLCBwYXlsb2FkOmxvYWRlcn0pLFxuICAgIHN0cmVhbTpzdHJlYW09Pih7dHlwZTpgJHtET01BSU59L29mZmljZS9TVFJFQU1gLCBwYXlsb2FkOnN0cmVhbX0pLFxuICAgIGZvcm1hdDpwYXlsb2FkPT4oe3R5cGU6YCR7RE9NQUlOfS9vZmZpY2UvRk9STUFUYCxwYXlsb2FkfSksXG4gICAgY2hhbm5lbDpjaGFubmVsPT4oe3R5cGU6YCR7RE9NQUlOfS9vZmZpY2UvY2hhbm5lbGAscGF5bG9hZDpjaGFubmVsfSksXG4gICAgc2NhbGU6IHNjYWxlPT4oe3R5cGU6YCR7RE9NQUlOfS9vZmZpY2Uvc2NhbGVgLHBheWxvYWQ6c2NhbGV9KSxcbn1cblxuZXhwb3J0IGNvbnN0IGdldE9mZmljZT1zdGF0ZT0+c3RhdGUuZ2V0KFwib2ZmaWNlXCIpXG4iLCJpbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tIFwicmVhY3QtcmVkdXhcIlxuXG5pbXBvcnQge0VtaXR0ZXIsIFN0cmVhbSwgZ2V0QWN0aXZlLCBBQ1RJT04gYXMgd2VBQ1RJT04sIHJlbmRlcn0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IFJhaXNlZEJ1dHRvbiBmcm9tIFwibWF0ZXJpYWwtdWkvUmFpc2VkQnV0dG9uXCJcblxuaW1wb3J0IENvbWJvQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2NvbWJvLWJveFwiXG5pbXBvcnQgQUNUSU9OIGZyb20gXCIuLi9zdGF0ZS9hY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlciBleHRlbmRzIFB1cmVDb21wb25lbnR7XG4gICAgc3RhdGljIGNvbnRleHRUeXBlcz17XG4gICAgICAgIHN0b3JlOlByb3BUeXBlcy5vYmplY3RcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RW1pdHRlclN0cmVhbShzdGF0ZSwgZG9jKXtcbiAgICAgICAgbGV0IHtcblx0XHRcdGZvcm1hdD17dHlwZTpkb2MudHlwZX0sXG5cdFx0XHRzdHJlYW09e3R5cGU6XCJicm93c2VyXCIsbmFtZTpkb2MubmFtZX0sXG5cdFx0XHRsb2FkZXJcblx0XHR9PXN0YXRlLmdldChcIm9mZmljZVwiKVxuXG4gICAgICAgIGlmKGZvcm1hdC50eXBlIT1kb2MudHlwZSl7XG4gICAgICAgICAgICBpZihsb2FkZXIgJiYgRW1pdHRlci5zdXBwb3J0cy5oYXMobG9hZGVyLnR5cGUpKXtcbiAgICAgICAgICAgICAgICBzdHJlYW09ey4uLmxvYWRlcn1cbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHN0cmVhbT17dHlwZTpcImJyb3dzZXJcIiwgbmFtZTpkb2MubmFtZX1cbiAgICAgICAgICAgIH1cblxuXHRcdFx0Zm9ybWF0PXt0eXBlOmRvYy50eXBlfVxuICAgICAgICB9XG4gICAgICAgIGlmKCFzdHJlYW0udHlwZSlcbiAgICAgICAgICAgIHN0cmVhbT17dHlwZTpcImJyb3dzZXJcIiwgbmFtZTpkb2MubmFtZX1cbiAgICAgICAgcmV0dXJuIHtmb3JtYXQsc3RyZWFtfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cylcbiAgICAgICAgY29uc3Qge3N0b3JlfT10aGlzLmNvbnRleHRcbiAgICAgICAgY29uc3Qge2RvYywgc3RhdGV9PWdldEFjdGl2ZShzdG9yZS5nZXRTdGF0ZSgpKVxuICAgICAgICB0aGlzLmRvYz1kb2NcbiAgICAgICAgdGhpcy5zdGF0ZT1TYXZlci5nZXRFbWl0dGVyU3RyZWFtKHN0YXRlLCBkb2MpXG4gICAgfVxuXG4gICAgZ2V0U3VwcG9ydGVkRm9ybWF0cygpe1xuICAgICAgICBsZXQgc3VwcG9ydHM9RW1pdHRlci5zdXBwb3J0c1xuICAgICAgICBsZXQgZm9ybWF0cz1BcnJheS5mcm9tKHN1cHBvcnRzLmtleXMoKSkuZmlsdGVyKGE9PiEhYSlcbiAgICAgICAgICAgIC5tYXAodHlwZT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IHtleHQsbmFtZX09c3VwcG9ydHMuZ2V0KHR5cGUpLmRlZmF1bHRQcm9wc1xuICAgICAgICAgICAgICAgIHJldHVybiB7dGV4dDpgJHtuYW1lfSAoKi4ke2V4dH0pYCx2YWx1ZTp0eXBlfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgaWYoIXN1cHBvcnRzLmhhcyh0aGlzLmRvYy50eXBlKSl7XG4gICAgICAgICAgICBmb3JtYXRzLnVuc2hpZnQoe1xuXHRcdFx0XHR0ZXh0OmAke3RoaXMuZG9jLnR5cGVOYW1lfSAoKi4ke3RoaXMuZG9jLnR5cGVFeHR9KWAsXG5cdFx0XHRcdHZhbHVlOnRoaXMuZG9jLnR5cGUsXG5cdFx0XHR9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRzXG4gICAgfVxuXG5cdGdldFN1cHBvcnRlZFN0cmVhbXMoKXtcblx0XHRyZXR1cm4gQXJyYXkuZnJvbShTdHJlYW0uc3VwcG9ydHMua2V5cygpKS5maWx0ZXIoYT0+ISFhKVxuXHR9XG5cbiAgICBmaXhOYW1lKGZvcm1hdCxuYW1lKXtcblx0XHRpZighbmFtZSlcblx0XHRcdHJldHVybiBuYW1lXG4gICAgICAgIGxldCBGb3JtYXQ9RW1pdHRlci5nZXQoZm9ybWF0KVxuICAgICAgICBsZXQgZXh0PUZvcm1hdCA/IEZvcm1hdC5kZWZhdWx0UHJvcHMuZXh0IDogdGhpcy5kb2MudHlwZUV4dFxuICAgICAgICBpZihuYW1lLmluZGV4T2YoXCIuXCIpPT0tMSlcbiAgICAgICAgICAgIHJldHVybiBuYW1lKycuJytleHRcbiAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXFwuXFx3KyQvZywgXCIuXCIrZXh0KVxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBjb25zdCB7b25DYW5jZWwsIG9uU2F2ZX09dGhpcy5wcm9wc1xuXHRcdGxldCB7Zm9ybWF0LCBzdHJlYW19PXRoaXMuc3RhdGVcblx0XHRsZXQgc3VwcG9ydGVkU3RyZWFtcz10aGlzLmdldFN1cHBvcnRlZFN0cmVhbXMoKVxuXHRcdGxldCBzdXBwb3J0ZWRGb3JtYXRzPXRoaXMuZ2V0U3VwcG9ydGVkRm9ybWF0cygpXG5cbiAgICAgICAgbGV0IG5vVHlwZWRTdHJlYW09ZmFsc2VcbiAgICAgICAgbGV0IHR5cGVkU3RyZWFtVUk9KCh7dHlwZSwgLi4uc3RyZWFtUHJvcHN9KT0+e1xuXHRcdFx0bGV0IFR5cGU9U3RyZWFtLmdldCh0eXBlKVxuXHRcdFx0aWYoVHlwZSl7XG5cdFx0XHRcdHJldHVybiA8VHlwZVxuXHRcdFx0XHRcdFx0cmVmPVwic3RyZWFtXCJcblx0XHRcdFx0XHRcdHsuLi5zdHJlYW1Qcm9wc31cblx0XHRcdFx0XHRcdGZvcm1hdD17Zm9ybWF0LnR5cGV9XG5cdFx0XHRcdFx0XHRmaXhOYW1lPXtuYW1lPT50aGlzLmZpeE5hbWUoZm9ybWF0LnR5cGUsbmFtZSl9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdG5vVHlwZWRTdHJlYW09dHJ1ZVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdDxjZW50ZXIgc3R5bGU9e3tjb2xvcjpcInJlZFwifX0+XG5cdFx0XHRcdFx0bm8gc3RyZWFtW3R5cGU9e3R5cGV9XSBpbXBsZW1lbmF0aW9uXG5cdFx0XHRcdFx0PC9jZW50ZXI+XG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHR9KShzdHJlYW0pO1xuXG5cdFx0bGV0IHR5cGVkRm9ybWF0VUk9KCh7dHlwZSwgLi4uZm9ybWF0UHJvcHN9KT0+e1xuXHRcdFx0bGV0IFR5cGU9RW1pdHRlci5nZXQodHlwZSlcblx0XHRcdGlmKFR5cGUpe1xuXHRcdFx0XHRyZXR1cm4gPFR5cGUuU2V0dGluZyByZWY9XCJmb3JtYXRcIlx0ey4uLmZvcm1hdFByb3BzfSAvPlxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHJldHVybiBudWxsXG5cdFx0XHR9XG5cdFx0fSkoZm9ybWF0KTtcblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OlwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCJ9fT5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHR7c3VwcG9ydGVkU3RyZWFtcy5sZW5ndGg+MSAmJlxuXHRcdFx0XHRcdFx0KDxjZW50ZXIgc3R5bGU9e3toZWlnaHQ6MTAwLCBsaW5lSGVpZ2h0OlwiMTAwcHhcIn19PlxuXHRcdFx0XHRcdFx0XHQ8c3Bhbj5TYXZlIHRvOjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PENvbWJvQm94XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17c3RyZWFtLnR5cGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhU291cmNlPXtzdXBwb3J0ZWRTdHJlYW1zfVxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9e3R5cGU9PnRoaXMuc2V0U3RhdGUoe3N0cmVhbTp7Li4uc3RyZWFtLHR5cGV9fSl9Lz5cblx0XHRcdFx0XHRcdDwvY2VudGVyPilcblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvZGl2PlxuXG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0e3R5cGVkU3RyZWFtVUl9XG5cdFx0XHRcdDwvZGl2PlxuXG5cblx0XHRcdFx0PGRpdiBzdHlsZT17e2ZsZXg6XCIxIDEwMCVcIn19PlxuXHRcdFx0XHRcdCB7c3VwcG9ydGVkRm9ybWF0cy5sZW5ndGg+MCAmJiAoXG5cdFx0XHRcdFx0XHQ8Y2VudGVyPlxuXHRcdFx0XHRcdFx0XHQ8c3Bhbj5TYXZlIGFzIHR5cGU6PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8Q29tYm9Cb3hcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17Zm9ybWF0LnR5cGV9XG5cdFx0XHRcdFx0XHRcdFx0ZGF0YVNvdXJjZT17c3VwcG9ydGVkRm9ybWF0c31cblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17dHlwZT0+e1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7Zm9ybWF0OnsuLi5mb3JtYXQsdHlwZX19KVxuXHRcdFx0XHRcdFx0XHRcdH19Lz5cblx0XHRcdFx0XHRcdDwvY2VudGVyPlxuXHRcdFx0XHRcdCApfVxuXHRcdFx0XHQ8L2Rpdj5cblxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdHt0eXBlZEZvcm1hdFVJfVxuXHRcdFx0XHQ8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxjZW50ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxSYWlzZWRCdXR0b25cblx0XHRcdFx0XHRcdGxhYmVsPVwiQ2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luUmlnaHQ6NX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNhbmNlbH1cblx0XHRcdFx0XHRcdC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJhaXNlZEJ1dHRvblxuXHRcdFx0XHRcdFx0bGFiZWw9XCJTYXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtub1R5cGVkU3RyZWFtfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2F2ZS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0Lz5cbiAgICAgICAgICAgICAgICA8L2NlbnRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG5cdHNhdmUoKXtcbiAgICAgICAgY29uc3Qge3N0b3JlfT10aGlzLmNvbnRleHRcbiAgICAgICAgY29uc3Qge29uU2F2ZX09dGhpcy5wcm9wc1xuXHRcdHZhciB7Zm9ybWF0LHN0cmVhbX09dGhpcy5zdGF0ZVxuICAgICAgICBzdHJlYW09ey4uLnN0cmVhbSwgLi4uKHRoaXMucmVmcy5zdHJlYW0gJiYgdGhpcy5yZWZzLnN0cmVhbS5zdGF0ZSB8fCB7fSl9XG5cdFx0Zm9ybWF0PXsuLi5mb3JtYXQsIC4uLih0aGlzLnJlZnMuZm9ybWF0ICYmIHRoaXMucmVmcy5mb3JtYXQuc3RhdGUgfHwge30pfVxuICAgICAgICBTYXZlci5zYXZlKHN0b3JlKSh7Zm9ybWF0LHN0cmVhbX0pXG4gICAgICAgICAgICAudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKEFDVElPTi5zdHJlYW0oc3RyZWFtKSlcbiAgICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChBQ1RJT04uZm9ybWF0KGZvcm1hdCkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGU9PnN0b3JlLmRpc3BhdGNoKHdlQUNUSU9OLk1FU1NBR0Uoe3R5cGU6XCJlcnJvclwiLCBtZXNzYWdlOmUubWVzc2FnZX0pKSlcbiAgICAgICAgICAgIC50aGVuKG9uU2F2ZSlcblx0fVxuXG4gICAgc3RhdGljIHNhdmU9c3RvcmU9Pih7Zm9ybWF0LCBzdHJlYW19KT0+e1xuICAgICAgICBjb25zdCB7c3RhdGUsZG9jfT1nZXRBY3RpdmUoc3RvcmUuZ2V0U3RhdGUoKSlcblxuICAgICAgICBpZighc3RyZWFtKXtcbiAgICAgICAgICAgIHN0cmVhbT1TYXZlci5nZXRFbWl0dGVyU3RyZWFtKHN0YXRlLGRvYykuc3RyZWFtXG4gICAgICAgIH1cblxuICAgIFx0aWYoIWZvcm1hdClcbiAgICAgICAgICAgIGZvcm1hdD17dHlwZTpkb2MudHlwZX1cblxuICAgIFx0bGV0IEZvcm1hdD1kb2MudHlwZT09Zm9ybWF0LnR5cGUgPyBFbWl0dGVyLkZvcm1hdC5PdXRwdXRJbnB1dCA6IEVtaXR0ZXIuZ2V0KGZvcm1hdC50eXBlKVxuXG4gICAgXHRyZXR1cm4gcmVuZGVyKFxuICAgICAgICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICAgIFx0XHQ8ZG9jLlN0b3JlIHJlYWRvbmx5PXt0cnVlfSByZWxlYXNlPXtmYWxzZX0+XG4gICAgICAgIFx0XHRcdDxFbWl0dGVyPlxuICAgICAgICBcdFx0XHRcdDxTdHJlYW0gey4uLnN0cmVhbX0+XG4gICAgICAgIFx0XHRcdFx0XHQ8Rm9ybWF0IHsuLi5mb3JtYXR9Lz5cbiAgICAgICAgXHRcdFx0XHQ8L1N0cmVhbT5cbiAgICAgICAgXHRcdFx0PC9FbWl0dGVyPlxuICAgICAgICBcdFx0PC9kb2MuU3RvcmU+XG4gICAgICAgICAgICA8L1Byb3ZpZGVyPlxuICAgICAgICApXG4gICAgfVxufVxuIiwiaW1wb3J0IFJlYWN0LHtQdXJlQ29tcG9uZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgbWVtb2l6ZSBmcm9tIFwibWVtb2l6ZS1vbmVcIlxuXG5pbXBvcnQge0ljb25CdXR0b259IGZyb20gXCJtYXRlcmlhbC11aVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpemFibGVJY29uQnV0dG9uIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcblx0c3RhdGljIGNvbnRleHRUeXBlcz17XG5cdFx0bXVpVGhlbWU6UHJvcFR5cGVzLm9iamVjdCxcblx0fVxuXG5cdGdldFN0eWxlPW1lbW9pemUoKHN0eWxlLHNpemUscGFkZGluZyxpY29uU3R5bGUsIHN0YXR1cyk9Pntcblx0XHRjb25zdCBzaXplSWNvbkJ1dHRvbj10aGlzLmNvbnRleHQubXVpVGhlbWUuc2l6ZUljb25CdXR0b25cblx0XHRzdHlsZT1zdHlsZXx8e31cblx0XHRpY29uU3R5bGU9aWNvblN0eWxlfHx7fVxuXHRcdFxuXHRcdGlmKHNpemVJY29uQnV0dG9uKXtcblx0XHRcdGlmKCFzaXplICYmIHNpemVJY29uQnV0dG9uLnNpemUpXG5cdFx0XHRcdHNpemU9c2l6ZUljb25CdXR0b24uc2l6ZVxuXHRcdFx0aWYoIXBhZGRpbmcgJiYgc2l6ZUljb25CdXR0b24ucGFkZGluZylcblx0XHRcdFx0cGFkZGluZz1zaXplSWNvbkJ1dHRvbi5wYWRkaW5nXG5cdFx0fVxuXHRcdGlmKCFwYWRkaW5nKVxuXHRcdFx0cGFkZGluZz0yXG5cblx0XHRpZihzaXplKXtcblx0XHRcdHN0eWxlLndpZHRoPXN0eWxlLmhlaWdodD1zaXplXG5cdFx0XHRpY29uU3R5bGUud2lkdGg9aWNvblN0eWxlLmhlaWdodD1zaXplLXBhZGRpbmcqMlxuXHRcdFx0c3R5bGUucGFkZGluZz1wYWRkaW5nXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtzdHlsZTp7Li4uc3R5bGUsIC4uLnN0eWxlc1tzdGF0dXNdfSwgaWNvblN0eWxlfVxuXHR9KVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtzdGF0dXMsXG5cdFx0XHRkaXNhYmxlZD1zdGF0dXM9PVwiZGlzYWJsZWRcIixcblx0XHRcdHNpemUscGFkZGluZyxzdHlsZSxpY29uU3R5bGUsIGxhYmVsLCBoaW50PWxhYmVsLFxuXHRcdFx0Li4ucHJvcHN9PXRoaXMucHJvcHNcblxuXHRcdHJldHVybiA8SWNvbkJ1dHRvbiB7Li4ucHJvcHN9IFxuXHRcdFx0ey4uLnRoaXMuZ2V0U3R5bGUoc3R5bGUsc2l6ZSxwYWRkaW5nLGljb25TdHlsZSwgc3RhdHVzKX1cblx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH0gdG9vbHRpcD17aGludH0vPlxuXHR9XG59XG5jb25zdCBzdHlsZXM9e1xuXHRjaGVja2VkOntcblx0XHRiYWNrZ3JvdW5kOlwibGlnaHRibHVlXCIsXG5cdH0sXG5cdHVuY2hlY2tlZDp7XG5cdH0sXG5cdGRpc2FibGVkOntcblx0fVxufSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuL3NpemUtaWNvbi1idXR0b25cIlxuXG5leHBvcnQgZGVmYXVsdCBwcm9wcz0+KFxuXHQ8U2l6ZUljb25CdXR0b24gey4uLnByb3BzfS8+XG4pXG4iLCJpbXBvcnQge0RPTUFJTn0gZnJvbSBcIndlLWVkaXRcIlxuZnVuY3Rpb24gcmVkdWNlcihzdGF0ZT17bG9hZGVyOnt9LHN0cmVhbTp7fX0se3R5cGUscGF5bG9hZH0pe1xuXHRzd2l0Y2godHlwZSl7XG4gICAgICAgIGNhc2UgYCR7RE9NQUlOfS9vZmZpY2UvTE9BREVSYDpcbiAgICAgICAgICAgIHJldHVybiB7Li4uc3RhdGUsIGxvYWRlcjpwYXlsb2FkfVxuICAgICAgICBjYXNlIGAke0RPTUFJTn0vb2ZmaWNlL1NUUkVBTWA6XG4gICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlLCBzdHJlYW06cGF5bG9hZH1cbiAgICAgICAgY2FzZSBgJHtET01BSU59L29mZmljZS9GT1JNQVRgOlxuICAgICAgICAgICAgcmV0dXJuIHsuLi5zdGF0ZSwgZm9ybWF0OnBheWxvYWR9XG4gICAgICAgIGNhc2UgYCR7RE9NQUlOfS9vZmZpY2UvY2hhbm5lbGA6XG4gICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlLCBjaGFubmVsOnBheWxvYWR9XG4gICAgICAgIGNhc2UgYCR7RE9NQUlOfS9vZmZpY2Uvc2NhbGVgOlxuICAgICAgICAgICAgcmV0dXJuIHsuLi5zdGF0ZSwgc2NhbGU6cGF5bG9hZH1cblx0XHRkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCAoc3RhdGUsYWN0aW9uKT0+c3RhdGUuc2V0KFwib2ZmaWNlXCIsIHJlZHVjZXIoc3RhdGUuZ2V0KFwib2ZmaWNlXCIpLGFjdGlvbikpXG4iLCJpbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtMb2FkZXJ9IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IENvbWJvQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2NvbWJvLWJveFwiXG5pbXBvcnQgcmVkdWNlciBmcm9tIFwiLi4vc3RhdGUvcmVkdWNlclwiXG5pbXBvcnQgQUNUSU9OIGZyb20gXCIuLi9zdGF0ZS9hY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBfXyQxIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcbiAgICBzdGF0aWMgY29udGV4dFR5cGVzPXtcbiAgICAgICAgc3RvcmU6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9XG5cdFxuICAgIHN0YXRlPXt9XG4gICAgZ2V0U3VwcG9ydGVkTG9hZGVycygpe1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShMb2FkZXIuc3VwcG9ydHMua2V5cygpKVxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuXHRcdGNvbnN0IExvYWRlcnM9dGhpcy5nZXRTdXBwb3J0ZWRMb2FkZXJzKClcbiAgICAgICAgbGV0IHt0eXBlfT10aGlzLnN0YXRlXG4gICAgICAgIGNvbnN0IHtvbkxvYWR9PXRoaXMucHJvcHNcblx0XHRcblx0XHRpZighdHlwZSAmJiBMb2FkZXJzLmxlbmd0aD09MSl7XG5cdFx0XHR0eXBlPUxvYWRlcnNbMF1cblx0XHR9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgeyBMb2FkZXJzLmxlbmd0aD4xICYmXG4gICAgICAgICAgICAgICAgICAgICg8ZGl2IHN0eWxlPXt7dGV4dEFsaWduOlwiY2VudGVyXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb21ib0JveCBcblx0XHRcdFx0XHRcdFx0aGludFRleHQ9XCJzZWxlY3QgYSBsb2FkZXIuLi5cIlxuXHRcdFx0XHRcdFx0XHRkYXRhU291cmNlPXtMb2FkZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0eXBlPT50aGlzLnNldFN0YXRlKHt0eXBlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3R5cGV8fFwiXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+KVxuICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0e3R5cGUgJiYgXG5cdFx0XHRcdFx0PExvYWRlciB0eXBlPXt0eXBlfVxuXHRcdFx0XHRcdFx0ey4uLnRoaXMucHJvcHN9XG5cdFx0XHRcdFx0XHRvbkxvYWQ9e1xuXHRcdFx0XHRcdFx0XHRsb2FkZXI9Pntcblx0XHRcdFx0XHRcdFx0XHRvbkxvYWQoKVxuXHRcdFx0XHRcdFx0XHRcdGlmKGxvYWRlcil7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmNvbnRleHQuc3RvcmUuZGlzcGF0Y2goQUNUSU9OLmxvYWRlcihsb2FkZXIpKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmVkdWNlcj17cmVkdWNlcn1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdH1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9XG59XG4iLCJpbXBvcnQgUmVhY3Qse1B1cmVDb21wb25lbnQsIEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge0lucHV0LEFDVElPTiwgZ2V0QWxsfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQge1JhaXNlZEJ1dHRvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IENvbWJvQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2NvbWJvLWJveFwiXG5pbXBvcnQgcmVkdWNlciBmcm9tIFwiLi4vc3RhdGUvcmVkdWNlclwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyZWF0ZSBleHRlbmRzIFB1cmVDb21wb25lbnR7XG4gICAgc3RhdGljIGNvbnRleHRUeXBlcz17XG4gICAgICAgIHN0b3JlOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgfVxuXHRcblx0c3RhdGljIGNoaWxkQ29udGV4dFR5cGVzPXtcblx0XHRjcmVhdGU6UHJvcFR5cGVzLmZ1bmNcblx0fVxuXG4gICAgZ2V0U3VwcG9ydGVkRm9ybWF0cygpe1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShJbnB1dC5zdXBwb3J0cy52YWx1ZXMoKSlcblx0XHRcdC5maWx0ZXIoVHlwZT0+VHlwZS5wcm90b3R5cGUub25DaGFuZ2UgJiYgVHlwZS5kZWZhdWx0UHJvcHMudGVtcGxhdGUpXG4gICAgICAgICAgICAubWFwKCh7ZGVmYXVsdFByb3BzfSk9Pntcblx0XHRcdFx0bGV0IHt0ZW1wbGF0ZSwgdHlwZX09ZGVmYXVsdFByb3BzXG5cdFx0XHRcdGlmKFJlYWN0LmlzVmFsaWRFbGVtZW50KHRlbXBsYXRlKSl7XG5cdFx0XHRcdFx0cmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudCh0ZW1wbGF0ZSx7a2V5OnR5cGV9KVxuXHRcdFx0XHR9IGVsc2UgaWYodHlwZW9mKHRlbXBsYXRlKT09XCJzdHJpbmdcIil7XG5cdFx0XHRcdFx0cmV0dXJuIDxVUkxGZXRjaGVyIGtleT17dHlwZX0gey4uLmRlZmF1bHRQcm9wc30gdXJsPXt0ZW1wbGF0ZX0gdGVtcGxhdGU9e3VuZGVmaW5lZH0vPlxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuXHRcdGxldCB0ZW1wbGF0ZXM9dGhpcy5nZXRTdXBwb3J0ZWRGb3JtYXRzKClcblx0XHRpZih0ZW1wbGF0ZXMubGVuZ3RoPT0wKVxuXHRcdFx0dGVtcGxhdGVzPTxjZW50ZXIgc3R5bGU9e3tjb2xvcjpcInJlZFwifX0+bm8gdGVtcGxhdGVzPC9jZW50ZXI+XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2PlxuXHRcdFx0XHR7dGVtcGxhdGVzfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBjcmVhdGUoe3VybCwuLi5wcm9wc30pe1xuXHRcdGZldGNoKHVybClcblx0XHRcdC50aGVuKHJlcz0+cmVzLmJsb2IoKSlcblx0XHRcdC50aGVuKGRhdGE9Pih7ZGF0YSwuLi5wcm9wcyxuYW1lOmBEb2N1bWVudCR7Z2V0QWxsKHRoaXMuY29udGV4dC5zdG9yZS5nZXRTdGF0ZSgpKS5sZW5ndGgrMX0uJHtwcm9wcy5leHR9YH0pKVxuXHRcdFx0LnRoZW4oZmlsZT0+SW5wdXQucGFyc2UoZmlsZSkpXG5cdFx0XHQudGhlbihkb2M9Pntcblx0XHRcdFx0Y29uc3Qge29uQ3JlYXRlfT10aGlzLnByb3BzXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LnN0b3JlLmRpc3BhdGNoKEFDVElPTi5BREQoZG9jLHJlZHVjZXIpKVxuICAgICAgICAgICAgICAgIG9uQ3JlYXRlKClcblx0XHRcdH0pXG4gICAgfVxuXHRcblx0Z2V0Q2hpbGRDb250ZXh0KCl7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNyZWF0ZTp0aGlzLmNyZWF0ZS5iaW5kKHRoaXMpXG5cdFx0fVxuXHR9XG59XG5cbmNsYXNzIFVSTEZldGNoZXIgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRjcmVhdGU6IFByb3BUeXBlcy5mdW5jXG5cdH1cblxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7dHlwZSwuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdGNvbnN0IHtjcmVhdGV9PXRoaXMuY29udGV4dFxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IHN0eWxlPXt7ZGlzcGxheTpcImlubGluZS1ibG9ja1wifX0+XG5cdFx0XHRcdDxzdmcgb25DbGljaz17KCk9PmNyZWF0ZSh7Li4ucHJvcHMsdHlwZX0pfSBcblx0XHRcdFx0XHRzdHlsZT17e3dpZHRoOjUwLGhlaWdodDo3NSxiYWNrZ3JvdW5kOlwid2hpdGVcIn19Lz5cblx0XHRcdFx0PGNlbnRlciBzdHlsZT17e2ZvbnRTaXplOlwic21hbGxlclwifX0+e3R5cGV9PC9jZW50ZXI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cbn1cbiIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0VtaXR0ZXIsIFN0cmVhbX0gZnJvbSBcIndlLWVkaXRcIlxuY29uc3Qge0Zvcm1hdH09RW1pdHRlclxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBfXyQxIGV4dGVuZHMgUHVyZUNvbXBvbmVudHtcblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge2RvY309dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZG9jLlN0b3JlIHJlYWRvbmx5PXt0cnVlfSByZWxlYXNlPXtmYWxzZX0+XG5cdFx0XHRcdDxFbWl0dGVyPlxuXHRcdFx0XHRcdDxTdHJlYW0gdHlwZT1cImJyb3dzZXJcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cblx0XHRcdFx0XHRcdDxGb3JtYXQgdHlwZT1cInBkZlwiLz5cblx0XHRcdFx0XHQ8L1N0cmVhbT5cblx0XHRcdFx0PC9FbWl0dGVyPlxuXHRcdFx0PC9kb2MuU3RvcmU+XG5cdFx0KVxuXHR9XG5cdFxuXHRjb21wb25lbnREaWRNb3VudCgpe1xuXHRcdHRoaXMucHJvcHMub25QcmludCgpXG5cdH1cbn0iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7VG9vbGJhckdyb3VwfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IEljb25TYXZlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9zYXZlXCJcbmltcG9ydCBJY29uUmVmcmVzaCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vcmVmcmVzaFwiXG5cbmltcG9ydCB7QUNUSU9OfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCBTYXZlIGZyb20gXCIuL3NhdmVcIlxuaW1wb3J0IENoZWNrSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9jaGVjay1pY29uLWJ1dHRvblwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGUgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuXHRcdHN0b3JlOiBQcm9wVHlwZXMub2JqZWN0LFxuXHR9XG5cdHNob3VsZENvbXBvbmVudFVwZGF0ZSgpe1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG5cdFxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7Y2hpbGRyZW59PXRoaXMucHJvcHNcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRvb2xiYXJHcm91cD5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0XHRcdHN0YXR1cz1cInVuY2hlY2tlZFwiXG5cdFx0XHRcdFx0aGludD1cInJlZnJlc2hcIlxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9Pntcblx0XHRcdFx0XHRcdHRoaXMuY29udGV4dC5zdG9yZS5kaXNwYXRjaChBQ1RJT04uUmVmcmVzaCgpKVxuXHRcdFx0XHRcdH19PlxuXHRcdFx0XHRcdDxJY29uUmVmcmVzaC8+XG5cdFx0XHRcdDwvQ2hlY2tJY29uQnV0dG9uPlxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRcdFx0c3RhdHVzPVwidW5jaGVja2VkXCJcblx0XHRcdFx0XHRoaW50PVwic2F2ZVwiXG5cdFx0XHRcdFx0b25DbGljaz17ZT0+e1xuXHRcdFx0XHRcdFx0U2F2ZS5zYXZlKHRoaXMuY29udGV4dC5zdG9yZSkoe30pXG5cdFx0XHRcdFx0fX0+XG5cdFx0XHRcdFx0PEljb25TYXZlLz5cblx0XHRcdFx0PC9DaGVja0ljb25CdXR0b24+XG5cdFx0XHRcdHtjaGlsZHJlbn1cblx0XHRcdDwvVG9vbGJhckdyb3VwPlxuXHRcdClcblx0fVxufVxuXG5leHBvcnQge2RlZmF1bHQgYXMgU2F2ZX0gZnJvbSBcIi4vc2F2ZVwiXG5leHBvcnQge2RlZmF1bHQgYXMgT3Blbn0gZnJvbSBcIi4vb3BlblwiXG5leHBvcnQge2RlZmF1bHQgYXMgQ3JlYXRlfSBmcm9tIFwiLi9jcmVhdGVcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIFByaW50fSBmcm9tIFwiLi9wcmludFwiXG4iLCJpbXBvcnQgUmVhY3Qse1B1cmVDb21wb25lbnQsRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IHtGb250TWFuYWdlcn0gZnJvbSBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24tcGFnaW5hdGlvblwiXG5cblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdCgpKGNsYXNzIF9fJDEgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cylcbiAgICAgICAgdGhpcy5zdGF0ZT17fVxuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICB2YXIgaW5wdXRcbiAgICAgICAgY29uc3QgbG9hZGVkPUZvbnRNYW5hZ2VyLm5hbWVzXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAge2xvYWRlZC5sZW5ndGg+MCAmJiA8ZGl2PkFscmVhZHkgTG9hZGVkIHtsb2FkZWQubGVuZ3RofSBGb250czwvZGl2Pn1cbiAgICAgICAgICAgICAgICA8c3Bhbj55b3UgY2FuIDwvc3Bhbj48YnV0dG9uIG9uQ2xpY2s9e2U9PmlucHV0LmNsaWNrKCl9PmxvYWQgbW9yZSBsb2NhbCBmb250czwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIHJlZj17YT0+aW5wdXQ9YX0gbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tkaXNwbGF5Olwibm9uZVwifX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2U9PnRoaXMubG9hZChlLnRhcmdldCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApXG4gICAgfVxuXG4gICAgbG9hZChpbnB1dCl7XG4gICAgICAgIEZvbnRNYW5hZ2VyLmZyb21Ccm93c2VyKGlucHV0KVxuICAgICAgICAgICAgLnRoZW4oZT0+dGhpcy5zZXRTdGF0ZSh7bG9hZGVkOkRhdGUubm93KCl9KSlcbiAgICB9XG59KVxuIiwiaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IEZvbnQgZnJvbSBcIi4vZm9udFwiXG5cbmV4cG9ydCBkZWZhdWx0IHByb3BzPT4oXG4gICAgPGRpdiBzdHlsZT17e3dpZHRoOjMwMH19PlxuICAgICAgICA8Rm9udC8+XG4gICAgPC9kaXY+XG4pXG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIFB1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7Y29tcG9zZSxtYXBQcm9wcyxnZXRDb250ZXh0LHNldERpc3BsYXlOYW1lLH0gIGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge0RyYXdlcixNZW51LCBNZW51SXRlbSwgQXZhdGFyLFBhcGVyfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IERpdmlkZXIgZnJvbSAnbWF0ZXJpYWwtdWkvRGl2aWRlcic7XG5pbXBvcnQge3llbGxvdzUwMCwgZ3JheTEwMH0gZnJvbSAnbWF0ZXJpYWwtdWkvc3R5bGVzL2NvbG9ycyc7XG5cbmltcG9ydCBJY29uTG9nbyBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9ib3JkZXItY29sb3JcIlxuaW1wb3J0IEljb25CYWNrIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9hcnJvdy1iYWNrXCJcblxuaW1wb3J0IHtTYXZlLE9wZW4sQ3JlYXRlLFByaW50fSBmcm9tIFwiLi4vZmlsZVwiXG5pbXBvcnQgT3B0aW9uc1VJIGZyb20gXCIuL29wdGlvbnNcIlxuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhc2hib2FyZCBleHRlbmRzIFB1cmVDb21wb25lbnR7XG5cdHN0YXRlPXthY3Rpb246bnVsbCwgZGlzcGxheTogZmFsc2V9XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtkaXNwbGF5LGFjdGlvbn09dGhpcy5zdGF0ZVxuXHRcdGNvbnN0IGRvbmU9KCk9PnRoaXMuc2V0U3RhdGUoe2Rpc3BsYXk6ZmFsc2UsYWN0aW9uOm51bGx9KVxuXHRcdGNvbnN0IHthY3RpdmUsIHpJbmRleCwgd2lkdGg9MjU2LCBjaGlsZHJlbiwgYXZhdGFyLCBjb21tYW5kc309dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IHN0eWxlPXt7XG5cdFx0XHRcdFx0ekluZGV4LFxuXHRcdFx0XHRcdHBvc2l0aW9uOlwiZml4ZWRcIixsZWZ0OjAsdG9wOjAsd2lkdGg6XCIxMDAlXCIsXG5cdFx0XHRcdFx0aGVpZ2h0OlwiMTAwJVwiLCBkaXNwbGF5OmRpc3BsYXkgPyBcImZsZXhcIiA6IFwibm9uZVwiLFxuXHRcdFx0XHRcdGZsZXhEaXJlY3Rpb246XCJyb3dcIlxuXHRcdFx0XHR9fVxuXHRcdFx0XHQ+XG5cdFx0XHRcdDxQYXBlciB6RGVwdGg9ezJ9IHN0eWxlPXt7d2lkdGgsaGVpZ2h0OlwiMTAwJVwiLGJhY2tncm91bmRDb2xvcjpcIndoaXRlXCJ9fT5cblx0XHRcdFx0XHRcdDxjZW50ZXIgc3R5bGU9e3t6b29tOjIsbWFyZ2luVG9wOjV9fT5cblx0XHRcdFx0XHRcdFx0PEF2YXRhciBcblx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXtkb25lfVxuXHRcdFx0XHRcdFx0XHRcdHNpemU9ezEyfSBcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixsZWZ0OjEwLHRvcDoxMH19XG5cdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdDxJY29uQmFjay8+XG5cdFx0XHRcdFx0XHRcdDwvQXZhdGFyPlxuXHRcdFx0XHRcdFx0XHR7YXZhdGFyICYmIFJlYWN0LmNsb25lRWxlbWVudChhdmF0YXIse29uQ2xpY2s6ZG9uZX0pIHx8IFxuXHRcdFx0XHRcdFx0XHRcdDxBdmF0YXIgYmFja2dyb3VuZENvbG9yPXtncmF5MTAwfT5cblx0XHRcdFx0XHRcdFx0XHRcdDxJY29uTG9nbyBjb2xvcj17eWVsbG93NTAwfS8+XG5cdFx0XHRcdFx0XHRcdFx0PC9BdmF0YXI+XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDwvY2VudGVyPlxuXG5cdFx0XHRcdFx0XHQ8TWVudSB3aWR0aD17d2lkdGh9IGF1dG9XaWR0aD17IXdpZHRofVxuXHRcdFx0XHRcdFx0XHR2YWx1ZT17YWN0aW9ufVxuXHRcdFx0XHRcdFx0XHRzZWxlY3RlZE1lbnVJdGVtU3R5bGU9e3tiYWNrZ3JvdW5kOlwibGlnaHRncmF5XCIsY29sb3I6XCJyZWRcIn19XG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZSxhY3Rpb24pPT57dGhpcy5zZXRTdGF0ZSh7YWN0aW9ufSl9fVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0XHRcdHByaW1hcnlUZXh0PVwiTmV3XCJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17PENyZWF0ZVx0b25DYW5jZWw9e2RvbmV9IG9uQ3JlYXRlPXtkb25lfS8+fVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0XHRcdHByaW1hcnlUZXh0PVwiT3BlblwiXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9ezxPcGVuIG9uQ2FuY2VsPXtkb25lfSBvbkxvYWQ9e2RvbmV9Lz59XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9eyFhY3RpdmV9XG5cdFx0XHRcdFx0XHRcdFx0cHJpbWFyeVRleHQ9XCJTYXZlXCJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17PFNhdmUgb25DYW5jZWw9e2RvbmV9IG9uU2F2ZT17ZG9uZX0vPn1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17IWFjdGl2ZX1cblx0XHRcdFx0XHRcdFx0XHRwcmltYXJ5VGV4dD1cIlNhdmVBc1wiXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9ezxTYXZlIG9uQ2FuY2VsPXtkb25lfSBvblNhdmU9e2RvbmV9Lz59XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PERpdmlkZXIvPlxuXG5cdFx0XHRcdFx0XHRcdDxNZW51SXRlbVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXshYWN0aXZlfVxuXHRcdFx0XHRcdFx0XHRcdHByaW1hcnlUZXh0PVwiUHJpbnRcIlxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXs8UHJpbnQgZG9jPXthY3RpdmV9IG9uQ2FubmNlbD17ZG9uZX0gb25QcmludD17ZG9uZX0gLz59XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdFx0XHQ8TWVudUl0ZW1cblx0XHRcdFx0XHRcdFx0XHRwcmltYXJ5VGV4dD1cIk9wdGlvbnNcIlxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXs8T3B0aW9uc1VJLz59XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdFx0XHR7UmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLGZ1bmN0aW9uKGEpe1xuXHRcdFx0XHRcdFx0XHRcdGxldCB7dmFsdWV9PWEucHJvcHNcblx0XHRcdFx0XHRcdFx0XHRpZighdmFsdWUpe1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChhLHtvbkNsaWNrOmRvbmV9KVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdDwvTWVudT5cblx0XHRcdFx0PC9QYXBlcj5cblx0XHRcdFx0PGRpdiBzdHlsZT17e2ZsZXg6XCIxIDEwMCVcIiwgYmFja2dyb3VuZENvbG9yOlwibGlnaHRncmF5XCIsZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCIscGFkZGluZzoxMH19PlxuXHRcdFx0XHRcdHthY3Rpb24gJiYgUmVhY3QuY2xvbmVFbGVtZW50KGFjdGlvbiwge2RvbmV9KSB8fCA8ZGl2IG9uQ2xpY2s9e2RvbmV9IGZsZXg9XCIxIDEwMCVcIiBzdHlsZT17e2hlaWdodDpcIjEwMCVcIn19Lz59XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0KVxuXHR9XG59XG4iLCJpbXBvcnQgUmVhY3Qse1B1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSBcInJlYWN0LXJlZHV4XCJcbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZSwgZ2V0Q29udGV4dCwgbWFwUHJvcHN9IGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge0ljb25CdXR0b24sRHJhd2VyLE1lbnUsTWVudUl0ZW0sUG9wb3ZlcixGbGF0QnV0dG9ufSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IEljb25DbG9zZSBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vY2xvc2VcIlxuaW1wb3J0IEljb25GaWxlcyBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vYXJyb3ctZHJvcC1kb3duXCJcbmltcG9ydCBJY29uTWVudSBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL25hdmlnYXRpb24vbWVudVwiXG5cbmltcG9ydCBEYXNoYm9hcmQgZnJvbSBcIi4uL2Rhc2hib2FyZFwiXG5cbmltcG9ydCB7QUNUSU9OLGdldEFsbH0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQgQ29tYm9Cb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvY29tYm8tYm94XCJcbmltcG9ydCBTaXplSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9zaXplLWljb24tYnV0dG9uXCJcblxuZXhwb3J0IGNsYXNzIEJhciBleHRlbmRzIFB1cmVDb21wb25lbnR7XG4gICAgc3RhdGU9e3Nob3dEcmF3ZXI6ZmFsc2V9XG4gICAgcmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHt0aXRsZSwgY2hpbGRyZW4sIGFjdGl2ZSwgZG9jcywgc2V0QWN0aXZlLCBjbG9zZSwgaGVpZ2h0PTIwLCBzdHlsZT17fSwgb25NZW51fT10aGlzLnByb3BzXG4gICAgICAgIGxldCBjbG9zZUJ1dHRvbj1udWxsXG5cblx0XHRpZihkb2NzLmxlbmd0aD4wKXtcblx0XHRcdGNsb3NlQnV0dG9uPShcblx0XHRcdFx0PFNpemVJY29uQnV0dG9uIHNpemU9e2hlaWdodH0gcGFkZGluZz17aGVpZ2h0LzR9IG9uQ2xpY2s9e2Nsb3NlfT5cblx0XHRcdFx0XHQ8SWNvbkNsb3NlLz5cblx0XHRcdFx0PC9TaXplSWNvbkJ1dHRvbj5cblx0XHRcdClcblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdiBzdHlsZT17e1xuXHRcdFx0XHRcdHBvc2l0aW9uOlwicmVsYXRpdmVcIixcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixcblx0XHRcdFx0XHRoZWlnaHQsIFxuXHRcdFx0XHRcdHdoaXRlU3BhY2U6XCJub3dyYXBcIixcblx0XHRcdFx0XHRkaXNwbGF5OlwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOlwicm93XCIsIFxuXHRcdFx0XHRcdC4uLnN0eWxlfX0+XG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0PFNpemVJY29uQnV0dG9uXG5cdFx0XHRcdFx0XHRzaXplPXtoZWlnaHR9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXtvbk1lbnV9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8SWNvbk1lbnUvPlxuXHRcdFx0XHRcdDwvU2l6ZUljb25CdXR0b24+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7bGluZUhlaWdodDpgJHtoZWlnaHR9cHhgLGZvbnRTaXplOmhlaWdodC8yfX0+e3RpdGxlfHxcIndlLWVkaXRcIn08L2Rpdj5cblx0XHRcdFx0PGRpdiBzdHlsZT17e2ZsZXg6XCIxIDEwMCVcIixwYWRkaW5nTGVmdDoyMH19PlxuXHRcdFx0XHRcdDxDb21ib0JveFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2FjdGl2ZT09bnVsbH1cblx0XHRcdFx0XHRcdHZhbHVlPXthY3RpdmUgPyBhY3RpdmUuaWQgOiBcIlwifVxuXHRcdFx0XHRcdFx0ZGF0YVNvdXJjZT17ZG9jcy5tYXAoKHtkb2M6e2lkOnZhbHVlLG5hbWU6dGV4dH19KT0+KHt0ZXh0LHZhbHVlfSkpfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9e3NldEFjdGl2ZX1cblx0XHRcdFx0XHRcdHVuZGVybGluZVNob3c9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0c3R5bGU9e3t3aWR0aDoxMDAsaGVpZ2h0fX1cblx0XHRcdFx0XHRcdHRleHRGaWVsZFN0eWxlPXt7aGVpZ2h0LGxpbmVIZWlnaHQ6YCR7aGVpZ2h0fXB4YCxmb250U2l6ZTpoZWlnaHQvMn19XG5cdFx0XHRcdFx0XHRpY29uPXs8c3Bhbi8+fVxuXHRcdFx0XHRcdFx0Lz5cdFxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBzdHlsZT17e2xpbmVIZWlnaHQ6YCR7aGVpZ2h0fXB4YCxmb250U2l6ZTpoZWlnaHQvMn19PlxuXHRcdFx0XHRcdHtjaGlsZHJlbn1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgc3R5bGU9e3t3aWR0aDo1MH19PlxuXHRcdFx0XHRcdHtjbG9zZUJ1dHRvbn1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcbiAgICBzZXREaXNwbGF5TmFtZShcIlRpdGxlQmFyXCIpLFxuICAgIGdldENvbnRleHQoe1xuICAgICAgICBzdG9yZTpQcm9wVHlwZXMub2JqZWN0LFxuXHRcdG11aVRoZW1lOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIH0pLFxuICAgIG1hcFByb3BzKCh7IHN0b3JlOntkaXNwYXRjaH0sICBtdWlUaGVtZTp7dGl0bGVCYXJ9LCAuLi5vdGhlcnN9KT0+KHtcblx0XHQuLi5vdGhlcnMsXG4gICAgICAgIHNldEFjdGl2ZShpZCl7XG4gICAgICAgICAgICBkaXNwYXRjaChBQ1RJT04uQUNUSVZFKGlkKSlcbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2UoKXtcbiAgICAgICAgICAgIGRpc3BhdGNoKEFDVElPTi5DTE9TRSgpKVxuICAgICAgICB9LFxuXHRcdGhlaWdodDp0aXRsZUJhciA/IHRpdGxlQmFyLmhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICB9KSksXG4gICAgY29ubmVjdChzdGF0ZT0+e1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZG9jczpnZXRBbGwoc3RhdGUpXG4gICAgICAgIH1cbiAgICB9KVxuKShCYXIpXG4iLCJpbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50LCBDaGlsZHJlbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gXCJyZWFjdC1yZWR1eFwiXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWV9ICBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCBtaW5pbWF0Y2ggZnJvbSBcIm1pbmltYXRjaFwiXG5cbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5cbmltcG9ydCB7U25hY2tiYXJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5cbmltcG9ydCBNdWlUaGVtZVByb3ZpZGVyIGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9NdWlUaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IGdldE11aVRoZW1lIGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9nZXRNdWlUaGVtZSdcbmltcG9ydCBUaXRsZUJhciBmcm9tIFwiLi90aXRsZS1iYXJcIlxuaW1wb3J0IERhc2hib2FyZCBmcm9tIFwiLi9kYXNoYm9hcmRcIlxuaW1wb3J0IHtnZXRBY3RpdmUsSW5wdXR9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCB7Z3JleTUwIGFzIEJBQ0tHUk9VTkR9IGZyb20gXCJtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JzXCJcblxuaW1wb3J0IFwiLi9zdHlsZS5sZXNzXCJcblxuY29uc3Qgc3R5bGVzPXtcblx0cm9vdDp7XG5cdFx0cG9zaXRpb246XCJhYnNvbHV0ZVwiLFxuXHRcdHdpZHRoOlwiMTAwJVwiLFxuXHRcdGhlaWdodDpcIjEwMCVcIixcblx0XHRkaXNwbGF5OlwiZmxleFwiLFxuXHRcdGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixcblx0XHRiYWNrZ3JvdW5kOkJBQ0tHUk9VTkQsXG5cdFx0b3ZlcmZsb3c6XCJoaWRkZW5cIixcblx0fSxcblx0dGhlbWU6e1xuXHRcdHRhYnM6e1xuXHRcdFx0YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixcblx0XHRcdHRleHRDb2xvcjogXCJibGFja1wiLFxuXHRcdFx0c2VsZWN0ZWRUZXh0Q29sb3I6IFwicmVkXCIsXG5cdFx0fSxcblx0XHR0b29sYmFyOntcblx0XHRcdGJhY2tncm91bmRDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuXHRcdH1cblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJXZS1FZGl0LVVJXCIpLFxuXHRjb25uZWN0KHN0YXRlPT4oe2FjdGl2ZTooZ2V0QWN0aXZlKHN0YXRlKXx8e30pLmRvY30pKSxcbikoY2xhc3MgX18kMSBleHRlbmRzIFB1cmVDb21wb25lbnR7XG5cdHN0YXRpYyBwcm9wVHlwZXM9e1xuXHRcdHRpdGxlQmFyOlByb3BUeXBlcy5ub2RlLFxuXHRcdGRhc2hib2FyZDogUHJvcFR5cGVzLm5vZGUsXG5cdH1cblxuXHRzdGF0aWMgZGVmYXVsdFByb3BzPXtcblx0XHR0aXRsZUJhcjo8VGl0bGVCYXIvPixcblx0XHRkYXNoYm9hcmQ6IDxEYXNoYm9hcmQvPlxuXHR9XG5cblx0c3RhdGU9e31cblxuXHR0aGVtZT1tZW1vaXplKGFjdGl2ZT0+e1xuXHRcdGNvbnN0IHVpVGhlbWU9Z2V0TXVpVGhlbWUoc3R5bGVzLnRoZW1lLHRoaXMucHJvcHMudGhlbWUpXG5cdFx0aWYoYWN0aXZlICYmIGFjdGl2ZS5wcm9wcy50aGVtZSl7XG5cdFx0XHRyZXR1cm4gZ2V0TXVpVGhlbWUodWlUaGVtZSxhY3RpdmUucHJvcHMudGhlbWUpXG5cdFx0fVxuXHRcdHJldHVybiB1aVRoZW1lXG5cdH0pXG5cblx0Y29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGluZm8pe1xuXHRcdHRoaXMuc2V0U3RhdGUoe2Vycm9yOmVycm9yLm1lc3NhZ2V9KVxuXHR9XG5cblx0Z2V0QWN0aXZlV29ya3NwYWNlPW1lbW9pemUoKGNoaWxkcmVuLGFjdGl2ZSk9Pntcblx0XHRyZXR1cm4gQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbikuZmluZCgoe3Byb3BzOnthY2NlcHR9fSk9Pntcblx0XHRcdFx0aWYodHlwZW9mKGFjY2VwdCk9PVwic3RyaW5nXCIpe1xuXHRcdFx0XHRcdGxldCBnbG9iPWFjY2VwdFxuXHRcdFx0XHRcdGFjY2VwdD1hPT5taW5pbWF0Y2goYS5uYW1lfHxcIlwiLGdsb2IpXG5cdFx0XHRcdH1lbHNlIGlmKGFjY2VwdFxuXHRcdFx0XHRcdCYmIGFjY2VwdC5wcm90b3R5cGVcblx0XHRcdFx0XHQmJiBhY2NlcHQucHJvdG90eXBlIGluc3RhbmNlb2YgSW5wdXQuVmlld2FibGUpe1xuXHRcdFx0XHRcdGxldCBJbnB1dFR5cGU9YWNjZXB0XG5cdFx0XHRcdFx0YWNjZXB0PWE9PmEuaXNUeXBlT2YoSW5wdXRUeXBlKVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYodHlwZW9mKGFjY2VwdCk9PVwiZnVuY3Rpb25cIilcblx0XHRcdFx0XHRyZXR1cm4gYWNjZXB0KGFjdGl2ZSlcblxuXHRcdFx0XHRyZXR1cm4gISFhY2NlcHRcblx0XHRcdH0pXG5cdH0pXG5cblx0Z2V0Tm9uV29ya3NwYWNlcz1tZW1vaXplKChjaGlsZHJlbik9Pntcblx0XHRsZXQgYT1DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKS5maWx0ZXIoKHtwcm9wczp7YWNjZXB0fX0pPT4hYWNjZXB0KVxuXHRcdGlmKGEubGVuZ3RoKVxuXHRcdFx0cmV0dXJuIGFcblx0XHRyZXR1cm4gbnVsbFxuXHR9KVxuXG5cdHJlamVjdENvbnRleHRNZW51KGUpe1xuXHRcdC8vZS5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0Ly9yZXR1cm4gZmFsc2Vcblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGxldCB7Y2hpbGRyZW4sYWN0aXZlLCB0aXRsZUJhciwgZGFzaGJvYXJkLCBzdHlsZSwgZGlzcGF0Y2gsIHRpdGxlQmFyUHJvcHMsIC4uLm90aGVyc309dGhpcy5wcm9wc1xuXHRcdGxldCBhY3RpdmVXb3Jrc3BhY2U9bnVsbFxuXHRcdGxldCBub25Xb3Jrc3BhY2VzPXRoaXMuZ2V0Tm9uV29ya3NwYWNlcyhjaGlsZHJlbilcblxuXHRcdGlmKGFjdGl2ZSl7XG5cdFx0XHRhY3RpdmVXb3Jrc3BhY2U9dGhpcy5nZXRBY3RpdmVXb3Jrc3BhY2UoY2hpbGRyZW4sYWN0aXZlKVxuXG5cdFx0XHRpZihhY3RpdmVXb3Jrc3BhY2Upe1xuXHRcdFx0XHRhY3RpdmVXb3Jrc3BhY2U9UmVhY3QuY2xvbmVFbGVtZW50KGFjdGl2ZVdvcmtzcGFjZSwge2RvYzphY3RpdmUsIC4uLm90aGVycywgLi4uYWN0aXZlV29ya3NwYWNlLnByb3BzfSlcblx0XHRcdH1lbHNlIGlmKCFub25Xb3Jrc3BhY2VzKXtcblx0XHRcdFx0YWN0aXZlV29ya3NwYWNlPSg8ZGl2Pm5vIGVkaXRvciBmb3IgdGhpcyBkb2N1bWVudDwvZGl2Pilcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCB7ZXJyb3J9PXRoaXMuc3RhdGVcblx0XHRjb25zdCB0aGVtZT10aGlzLnRoZW1lKGFjdGl2ZVdvcmtzcGFjZSlcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8TXVpVGhlbWVQcm92aWRlciBtdWlUaGVtZT17dGhlbWV9PlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7Li4uc3R5bGVzLnJvb3QsLi4uc3R5bGV9fSBvbkNvbnRleHRNZW51PXt0aGlzLnJlamVjdENvbnRleHRNZW51fT5cblx0XHRcdFx0XHR7dGl0bGVCYXIgJiYgUmVhY3QuY2xvbmVFbGVtZW50KHRpdGxlQmFyLHtcblx0XHRcdFx0XHRcdC4uLnRpdGxlQmFyUHJvcHMsXG5cdFx0XHRcdFx0XHRhY3RpdmUsXG5cdFx0XHRcdFx0XHRvbk1lbnU6YT0+dGhpcy5yZWZzLmRhc2hib2FyZC5zZXRTdGF0ZSh7ZGlzcGxheTp0cnVlfSlcblx0XHRcdFx0XHR9KX1cblxuXHRcdFx0XHRcdHtkYXNoYm9hcmQgJiYgUmVhY3QuY2xvbmVFbGVtZW50KGRhc2hib2FyZCx7XG5cdFx0XHRcdFx0XHRyZWY6XCJkYXNoYm9hcmRcIixcblx0XHRcdFx0XHRcdGFjdGl2ZSxcblx0XHRcdFx0XHRcdGRpc3BhdGNoLFxuXHRcdFx0XHRcdFx0ekluZGV4OnRoZW1lLnpJbmRleC5wb3BvdmVyXG5cdFx0XHRcdFx0fSl9XG5cblx0XHRcdFx0XHR7YWN0aXZlV29ya3NwYWNlfVxuXG5cdFx0XHRcdFx0e25vbldvcmtzcGFjZXMgJiYgbm9uV29ya3NwYWNlcy5tYXAoYT0+UmVhY3QuY2xvbmVFbGVtZW50KGEse2hhc0FjdGl2ZVdvcmtzcGFjZTohIWFjdGl2ZVdvcmtzcGFjZX0pKX1cblxuXHRcdFx0XHRcdDxTbmFja2JhclxuXHRcdFx0XHRcdFx0b3Blbj17ISFlcnJvcn1cblx0XHRcdFx0XHRcdG1lc3NhZ2U9e2Vycm9yfHxcIlwifVxuXHRcdFx0XHRcdFx0YXV0b0hpZGVEdXJhdGlvbj17NDAwMH1cblx0XHRcdFx0XHRcdG9uUmVxdWVzdENsb3NlPXsoKT0+dGhpcy5zZXRTdGF0ZSh7ZXJyb3I6dW5kZWZpbmVkfSl9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvTXVpVGhlbWVQcm92aWRlcj5cblx0XHQpXG5cdH1cbn0pXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtjb21wb3NlLCBnZXRDb250ZXh0LCBtYXBQcm9wcyxzZXREaXNwbGF5TmFtZSwgb25seVVwZGF0ZUZvcktleXN9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHtGbGF0QnV0dG9uLCBTbGlkZXJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQge2JsdWU4MDAsIGJsdWU5MDB9IGZyb20gXCJtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JzXCJcbmltcG9ydCBTaXplSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9zaXplLWljb24tYnV0dG9uXCJcbmltcG9ydCB7Y29ubmVjdCwgd2hlblNlbGVjdGlvbkNoYW5nZSxnZXRTdGF0aXN0aWNzfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQgQUNUSU9OLHtnZXRPZmZpY2V9IGZyb20gXCIuLi9zdGF0ZS9hY3Rpb25cIlxuXG5jb25zdCBCdXR0b25TdHlsZT17XG5cdGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuXHRjb2xvcjpcIndoaXRlXCIsXG5cdGZvbnRTaXplOiA4LFxufVxuXG5jb25zdCBSb290U3R5bGU9e1xuXHRiYWNrZ3JvdW5kQ29sb3I6Ymx1ZTgwMCxcblx0Y29sb3I6XCJ3aGl0ZVwiLFxuXHR3aWR0aDpcIjEwMCVcIixcblx0ZGlzcGxheTpcImZsZXhcIixcblx0ZmxleERpcmVjdGlvbjpcInJvd1wiXG59XG5cbmNvbnN0IENvbXBhY3RCdXR0b25TdHlsZT17XG5cdC4uLkJ1dHRvblN0eWxlLFxuXHRtaW5XaWR0aDpcImF1dG9cIixcbn1cblxuXG5jb25zdCBTdGF0dXM9Y29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJTdGF0dXNCYXJcIiksXG5cdGdldENvbnRleHQoe1xuXHRcdG11aVRoZW1lOiBQcm9wVHlwZXMub2JqZWN0LFxuXHR9KSxcblx0bWFwUHJvcHMoKHttdWlUaGVtZSxjaGFubmVsLHNjYWxlLHNldFNjYWxlLHN0eWxlfSk9Pntcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2hhbm5lbCxzY2FsZSxzdHlsZSxcblx0XHRcdGhlaWdodDptdWlUaGVtZS5idXR0b24uaGVpZ2h0XG5cdFx0fVxuXHR9KSxcblx0b25seVVwZGF0ZUZvcktleXMoWydoZWlnaHQnLCdjaGFubmVsJ10pXG4pKCh7aGVpZ2h0LCBjaGFubmVsLCBzdHlsZX0pPT4oXG5cdDxkaXYgc3R5bGU9e3suLi5Sb290U3R5bGUsaGVpZ2h0LC4uLnN0eWxlfX0+XG5cdFx0PFBhZ2UvPlxuXHRcdDxXb3Jkcy8+XG5cdFx0PGRpdiBzdHlsZT17e2ZsZXg6XCIxIDEwMCVcIn19Lz5cblx0XHR7Y2hhbm5lbC5pdGVtcy5sZW5ndGg8MiA/IG51bGwgOiA8Q2hhbm5lbCBoZWlnaHQ9e2hlaWdodH0gey4uLmNoYW5uZWx9Lz59XG5cdFx0PFNjYWxlLz5cblx0PC9kaXY+XG4pKVxuXG5jb25zdCBQYWdlPWNvbXBvc2UoXG5cdHdoZW5TZWxlY3Rpb25DaGFuZ2UoKHtzZWxlY3Rpb259LHN0YXRlKT0+e1xuXHRcdGNvbnN0IHtwYWdlczp0b3RhbD0wLGFsbENvbXBvc2VkfT1nZXRTdGF0aXN0aWNzKHN0YXRlKVxuXHRcdGNvbnN0IHN0YXR1cz17dG90YWwsYWxsQ29tcG9zZWR9XG5cdFx0aWYoc2VsZWN0aW9uKXtcblx0XHRcdGxldCBwcm9wcz1zZWxlY3Rpb24ucHJvcHMoXCJwYWdlXCIsZmFsc2UpXG5cdFx0XHRpZihwcm9wcyl7XG5cdFx0XHRcdHN0YXR1cy5jdXJyZW50PXByb3BzLnBhZ2Vcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gc3RhdHVzXG5cdH0pXG4pKCh7Y3VycmVudD0wLHRvdGFsPTAsYWxsQ29tcG9zZWR9KT0+KFxuXHQ8RmxhdEJ1dHRvbiBzdHlsZT17QnV0dG9uU3R5bGV9PlxuXHRcdFBBR0Uge2N1cnJlbnQrMX0gT0Yge3RvdGFsfXshYWxsQ29tcG9zZWQgPyBcIi4uXCIgOiBcIlwifVxuXHQ8L0ZsYXRCdXR0b24+XG4pKVxuXG5jb25zdCBXb3Jkcz1jb25uZWN0KHN0YXRlPT5nZXRTdGF0aXN0aWNzKHN0YXRlKSkoKHt3b3Jkcz0wLGFsbENvbXBvc2VkfSk9Pihcblx0PEZsYXRCdXR0b24gc3R5bGU9e0J1dHRvblN0eWxlfT5cblx0XHR7YCR7d29yZHN9JHthbGxDb21wb3NlZD8nJzonLi4nfWB9IFdPUkRTXG5cdDwvRmxhdEJ1dHRvbj5cbikpXG5cblxuY29uc3QgU2NhbGU9Y29ubmVjdChzdGF0ZT0+KHtjdXJyZW50OmdldE9mZmljZShzdGF0ZSkuc2NhbGV9KSkoKHtcblx0Y3VycmVudD0xMDAsbWF4PTIwMCxtaW49MTAsc3RlcD0xMCxkaXNwYXRjaCxcblx0b25DaGFuZ2U9c2NhbGU9PmRpc3BhdGNoKEFDVElPTi5zY2FsZShzY2FsZSkpXG5cdH0pPT4oXG5cdDxkaXYgc3R5bGU9e3tkaXNwbGF5OlwiZmxleFwifX0+XG5cdFx0PEZsYXRCdXR0b24gbGFiZWw9XCItXCIgb25DbGljaz17KCk9Pm9uQ2hhbmdlKE1hdGgubWF4KGN1cnJlbnQtc3RlcCxtaW4pKX1cblx0XHRcdHN0eWxlPXt7Li4uQ29tcGFjdEJ1dHRvblN0eWxlfX1cblx0XHRcdGxhYmVsU3R5bGU9e3tmb250U2l6ZToyMCwgZm9udFdlaWdodDo3MDAscGFkZGluZ1JpZ2h0OjQscGFkZGluZ0xlZnQ6NH19Lz5cblx0XHQ8U2xpZGVyIHN0eWxlPXt7d2lkdGg6MTAwLCBkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9fVxuXHRcdFx0c2xpZGVyU3R5bGU9e3t0b3A6LTEzfX1cblx0XHRcdHN0ZXA9e3N0ZXB9XG5cdFx0XHRvbkNoYW5nZT17KGUsbmV3VmFsdWUpPT5vbkNoYW5nZShuZXdWYWx1ZSl9XG5cdFx0XHR2YWx1ZT17Y3VycmVudH0gbWluPXttaW59IG1heD17bWF4fVxuXHRcdFx0Lz5cblx0XHQ8RmxhdEJ1dHRvbiBsYWJlbD1cIitcIiBvbkNsaWNrPXsoKT0+b25DaGFuZ2UoTWF0aC5taW4oY3VycmVudCtzdGVwLG1heCkpfVxuXHRcdFx0c3R5bGU9e3suLi5Db21wYWN0QnV0dG9uU3R5bGV9fVxuXHRcdFx0bGFiZWxTdHlsZT17e2ZvbnRTaXplOjE4LCBmb250V2VpZ2h0OjcwMCxwYWRkaW5nUmlnaHQ6NCxwYWRkaW5nTGVmdDo0fX0vPlxuXHRcdDxGbGF0QnV0dG9uIGxhYmVsPXtgJHtjdXJyZW50fSVgfVxuXHRcdFx0c3R5bGU9e3suLi5Db21wYWN0QnV0dG9uU3R5bGV9fVxuXHRcdFx0bGFiZWxTdHlsZT17e2ZvbnRTaXplOkJ1dHRvblN0eWxlLmZvbnRTaXplfX1cblx0XHRcdC8+XG5cdDwvZGl2PlxuKSlcblxuY29uc3QgQ2hhbm5lbD0oe2l0ZW1zLCBjdXJyZW50LCBvbkNoYW5nZSwgaGVpZ2h0OnNpemV9KT0+KFxuXHQ8ZGl2IHN0eWxlPXt7ZGlzcGxheTpcImZsZXhcIiwgb3BhY2l0eTowLjR9fT5cblx0XHR7aXRlbXMubWFwKCh7Y2hhbm5lbCwgaWNvbiwgc3R5bGU9e319KT0+e1xuXHRcdFx0aWYoY2hhbm5lbD09Y3VycmVudCl7XG5cdFx0XHRcdHN0eWxlLmJhY2tncm91bmQ9Ymx1ZTkwMFxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8U2l6ZUljb25CdXR0b24ga2V5PXtjaGFubmVsfVxuXHRcdFx0XHRcdHNpemU9e3NpemV9XG5cdFx0XHRcdFx0cGFkZGluZz17c2l6ZS80fVxuXHRcdFx0XHRcdHN0eWxlPXtzdHlsZX1cblx0XHRcdFx0XHR0b29sdGlwPXtgJHtjaGFubmVsfSBtb2RlYH1cblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3AtY2VudGVyXCJcblx0XHRcdFx0XHRvbkNsaWNrPXsoKT0+b25DaGFuZ2UoY2hhbm5lbCl9XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdHtpY29ufVxuXHRcdFx0XHQ8L1NpemVJY29uQnV0dG9uPlxuXHRcdFx0KVxuXHRcdH0pfVxuXHQ8L2Rpdj5cbilcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzXG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgTWVudSBmcm9tICdtYXRlcmlhbC11aS9NZW51J1xuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIm1hdGVyaWFsLXVpL1BvcG92ZXJcIlxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b25cIlxuaW1wb3J0IEljb25Nb3JlIGZyb20gJ21hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2Fycm93LWRyb3AtZG93bidcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25CdXR0b24gZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRlPXtvcGVuOmZhbHNlfVxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7b3BlbixhbmNob3J9PXRoaXMuc3RhdGVcblx0XHRjb25zdCB0b2dnbGU9dGhpcy50b2dnbGUuYmluZCh0aGlzKVxuXHRcdGNvbnN0IHtpY29uLCBcblx0XHRcdGNoaWxkcmVuLCBsYWJlbFN0eWxlPXtmb250U2l6ZTpcInh4LXNtYWxsXCJ9LFxuXHRcdFx0c3RhdHVzLCBvbkNsaWNrPXRvZ2dsZSwgLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRcblx0XHRsZXQgbWVudXM9bnVsbFxuXHRcdGlmKG9wZW4pe1xuXHRcdFx0bWVudXM9KFxuXHRcdFx0XHQ8UG9wb3ZlciBcblx0XHRcdFx0XHRvcGVuPXt0cnVlfSBcblx0XHRcdFx0XHRhbmNob3JFbD17YW5jaG9yfVxuXHRcdFx0XHRcdG9uUmVxdWVzdENsb3NlPXtlPT50aGlzLnNldFN0YXRlKHtvcGVuOmZhbHNlfSl9PlxuXHRcdFx0XHRcdDxNZW51IG9uSXRlbVRvdWNoVGFwPXtlPT50aGlzLnNldFN0YXRlKHtvcGVuOmZhbHNlfSl9PlxuXHRcdFx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0XHRcdDwvTWVudT5cblx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0KVxuXHRcdH1cblx0XHRyZXR1cm4gKFxuXHRcdFx0PHNwYW4gc3R5bGU9e3t3aGl0ZVNwYWNlOlwibm93cmFwXCJ9fT5cblx0XHRcdFx0PFNpemVJY29uQnV0dG9uIG9uQ2xpY2s9e29uQ2xpY2t9IHsuLi5wcm9wc30gc3RhdHVzPXtzdGF0dXN9PlxuXHRcdFx0XHRcdHtpY29ufVxuXHRcdFx0XHQ8L1NpemVJY29uQnV0dG9uPlxuXHRcdFx0XHR7ZmFsc2UgJiYgKDxzcGFuIHN0eWxlPXtsYWJlbFN0eWxlfSBvbkNsaWNrPXtvbkNsaWNrfT57bGFiZWx9PC9zcGFuPil9XG5cdFx0XHRcdDxJY29uTW9yZSBzdHlsZT17e2hlaWdodDoyNCx3aWR0aDo2fX0gdmlld0JveD1cIjYgLTEyIDE4IDM2XCIgb25DbGljaz17dG9nZ2xlfS8+XG5cdFx0XHRcdHttZW51c31cblx0XHRcdDwvc3Bhbj5cblx0XHQpXG5cdH1cblx0XG5cdHRvZ2dsZShlKXtcblx0XHR0aGlzLnNldFN0YXRlKHtvcGVuOiF0aGlzLnN0YXRlLm9wZW4sIGFuY2hvcjplLmN1cnJlbnRUYXJnZXQucGFyZW50Tm9kZX0pXG5cdH1cbn0iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0ZsYXRCdXR0b24sRm9udEljb259IGZyb20gXCJtYXRlcmlhbC11aVwiXG5cbmltcG9ydCBJY29uQ29sb3IgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9pbWFnZS9jb2xvci1sZW5zXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudHtcblx0cmVuZGVyKCl7XG5cdFx0Y29uc3QgdGl0bGVTdHlsZT17Zm9udFdlaWdodDo3MDAsIG1hcmdpblRvcDo0fVxuXHRcdGNvbnN0IHtvbkNoYW5nZX09dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IHN0eWxlPXt7d2lkdGg6MTUwLCBmb250U2l6ZTpcInNtYWxsZXJcIn19PlxuXHRcdFx0XHQ8U3BlY2lhbENvbG9yIGNvbG9yPVwiY3VycmVudENvbG9yXCIgbGFiZWw9XCJBdXRvbWF0aWNcIiBvblNlbGVjdD17b25DaGFuZ2V9Lz5cblx0XHRcdFx0XG5cdFx0XHRcdDxkaXYgc3R5bGU9e3RpdGxlU3R5bGV9PlRoZW1lIENvbG9yczwvZGl2Plx0XG5cdFx0XHRcdDxUaGVtZUNvbG9ycyBvblNlbGVjdD17b25DaGFuZ2V9Lz5cblx0XHRcdFx0XG5cdFx0XHRcdDxkaXYgc3R5bGU9e3RpdGxlU3R5bGV9PlN0YW5kYXJkIENvbG9yczwvZGl2Plx0XG5cdFx0XHRcdDxTdGFuZGFyZENvbG9ycyBvblNlbGVjdD17b25DaGFuZ2V9Lz5cblx0XHRcdFx0XG5cdFx0XHRcdDxTcGVjaWFsQ29sb3IgY29sb3I9XCJcIiBsYWJlbD1cIk5vIENvbG9yXCIgb25TZWxlY3Q9e29uQ2hhbmdlfS8+XG5cdFx0XHRcdFxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXt7bWFyZ2luVG9wOjR9fT5cblx0XHRcdFx0XHQ8RmxhdEJ1dHRvbiBcblx0XHRcdFx0XHRcdHN0eWxlPXt7dGV4dEFsaWduOlwibGVmdFwifX1cblx0XHRcdFx0XHRcdGxhYmVsPVwiTW9yZSBDb2xvcnMuLi5cIlxuXHRcdFx0XHRcdFx0aWNvbj17PEljb25Db2xvci8+fS8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0KVxuXHR9XG59XG5cbmNvbnN0IENvbG9yQmxvY2s9KHtjb2xvcixzaXplPTEyLC4uLnByb3BzfSk9Pihcblx0PHNwYW4gey4uLnByb3BzfVxuXHRcdHN0eWxlPXt7XG5cdFx0XHRjdXJzb3I6XCJkZWZhdWx0XCIsXG5cdFx0XHRiYWNrZ3JvdW5kOmNvbG9yLFxuXHRcdFx0ZGlzcGxheTpcImlubGluZS1ibG9ja1wiLFxuXHRcdFx0d2lkdGg6c2l6ZSxcblx0XHRcdGhlaWdodDpzaXplLFxuXHRcdFx0bWFyZ2luUmlnaHQ6Mixcblx0XHRcdGxpbmVIZWlnaHQ6XCIxMDAlXCJcblx0XHR9fT5cblx0XHQmbmJzcDtcblx0PC9zcGFuPlxuKVxuXG5jb25zdCBTcGVjaWFsQ29sb3I9KHtjb2xvciwgbGFiZWwsIG9uU2VsZWN0fSk9Pihcblx0PEZsYXRCdXR0b24gXG5cdFx0ZnVsbFdpZHRoPXt0cnVlfVxuXHRcdHN0eWxlPXt7dGV4dEFsaWduOlwibGVmdFwifX1cblx0XHRsYWJlbD17bGFiZWx9XG5cdFx0b25DbGljaz17ZT0+b25TZWxlY3QoY29sb3IpfVxuXHRcdGljb249e1xuXHRcdFx0PEZvbnRJY29uPlxuXHRcdFx0XHQ8Q29sb3JCbG9jayBjb2xvcj17Y29sb3J9IHNpemU9ezE2fS8+XG5cdFx0XHQ8L0ZvbnRJY29uPlxuXHRcdH0vPlxuKVxuXG5jbGFzcyBUaGVtZUNvbG9ycyBleHRlbmRzIENvbXBvbmVudHtcblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge2NvbG9yVGhlbWVzPVtdLCBvblNlbGVjdH09dGhpcy5wcm9wc1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IHN0eWxlPXt7cGFkZGluZzoyfX0+XG5cdFx0XHRcdHtbMCwxLDIsMyw0LDVdLm1hcChvcGFjaXR5PT5cblx0XHRcdFx0XHQ8U3RhbmRhcmRDb2xvcnMga2V5PXtvcGFjaXR5fVxuXHRcdFx0XHRcdFx0b25TZWxlY3Q9e29uU2VsZWN0fSBcblx0XHRcdFx0XHRcdGNvbG9ycz17Y29sb3JUaGVtZXMubWFwKHRoZW1lPT50aGlzLmdldENvbG9yKHRoZW1lLG9wYWNpdHkpKX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdCl9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cblx0XG5cdGdldENvbG9yKGNvbG9yLG9wYWNpdHkpe1xuXHRcdHJldHVybiBjb2xvclxuXHR9XG59XG5jb25zdCBTdGFuZGFyZENvbG9ycz0oe29uU2VsZWN0LCBjb2xvcnM9XCJibGFjayxibHVlLHJlZCx5ZWxsb3csY2hvY29sYXRlLHRhbixwaW5rLGJyb3duLGdyZWVuLG9yYW5nZVwiLnNwbGl0KFwiLFwiKX0pPT4oXG5cdDxkaXYgc3R5bGU9e3twYWRkaW5nTGVmdDoyLCBwYWRkaW5nVG9wOjIsIHBhZGRpbmdCb3R0b206Mn19PlxuXHRcdHtjb2xvcnMubWFwKGE9PjxDb2xvckJsb2NrIGtleT17YX0gY29sb3I9e2F9IG9uQ2xpY2s9eygpPT5vblNlbGVjdChhKX0vPil9XG5cdDwvZGl2PlxuKSIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gIGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1N2Z0ljb259IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwibWF0ZXJpYWwtdWkvUG9wb3ZlclwiXG5cbmltcG9ydCBTaXplSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9zaXplLWljb24tYnV0dG9uXCJcbmltcG9ydCBJY29uTW9yZSBmcm9tICdtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9hcnJvdy1kcm9wLWRvd24nXG5cbmltcG9ydCBDb2xvclNlbGVjdG9yIGZyb20gXCIuL3NlbGVjdC1jb2xvclwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbG9yQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRjb25zdHJ1Y3Rvcih7dmFsdWV9KXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dGhpcy5zdGF0ZT17b3BlbjpmYWxzZSxjb2xvcjp2YWx1ZXx8XCJibGFja1wifVxuXHR9XG5cdFxuXHRjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHt2YWx1ZX0pe1xuXHRcdGlmKHR5cGVvZih2YWx1ZSkhPVwidW5kZWZpbmVkXCIpe1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7Y29sb3I6dmFsdWV8fHRoaXMuc3RhdGUudmFsdWV8fFwiYmxhY2tcIn0pXG5cdFx0fVxuXHR9XG5cdFxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7b3Blbixjb2xvcixhbmNob3J9PXRoaXMuc3RhdGVcblx0XHRjb25zdCB7b25DaGFuZ2U9YT0+YSwuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdGxldCBjb2xvclNlbGVjdG9yPW51bGxcblx0XHRpZihvcGVuKXtcblx0XHRcdGNvbG9yU2VsZWN0b3I9KFxuXHRcdFx0XHQ8UG9wb3ZlciBcblx0XHRcdFx0XHRvcGVuPXt0cnVlfSBcblx0XHRcdFx0XHRhbmNob3JFbD17YW5jaG9yfVxuXHRcdFx0XHRcdG9uUmVxdWVzdENsb3NlPXtlPT50aGlzLnNldFN0YXRlKHtvcGVuOmZhbHNlfSl9PlxuXHRcdFx0XHRcdDxDb2xvclNlbGVjdG9yIG9uQ2hhbmdlPXtjb2xvcj0+e3RoaXMuc2V0U3RhdGUoe29wZW46ZmFsc2UsY29sb3J9KTtvbkNoYW5nZShjb2xvcil9fS8+XG5cdFx0XHRcdDwvUG9wb3Zlcj5cblx0XHRcdClcblx0XHR9XG5cdFx0Y29uc3QgdG9nZ2xlPWU9PnRoaXMuc2V0U3RhdGUoe29wZW46IW9wZW4sYW5jaG9yOmUuY3VycmVudFRhcmdldC5wYXJlbnROb2RlfSlcblx0XHRcblx0XHRyZXR1cm4gKFxuXHRcdFx0PHNwYW4gc3R5bGU9e3t3aGl0ZVNwYWNlOlwibm93cmFwXCJ9fT5cblx0XHRcdFx0PFNpemVJY29uQnV0dG9uIHsuLi5wcm9wc30gb25DbGljaz17ZT0+cHJvcHMuc3RhdHVzPT1cImNoZWNrZWRcIiA/IG9uQ2hhbmdlKFwiXCIpIDogdG9nZ2xlKGUpfS8+XG5cdFx0XHRcdDxJY29uTW9yZSBzdHlsZT17e2hlaWdodDoyNCx3aWR0aDo2fX0gdmlld0JveD1cIjYgLTEyIDE4IDM2XCIgb25DbGljaz17dG9nZ2xlfS8+XG5cdFx0XHRcdHtjb2xvclNlbGVjdG9yfVxuXHRcdFx0PC9zcGFuPlxuXHRcdClcblx0fVxufVxuXG5jb25zdCBDb2xvcmFibGVJY29uPSh7Y2hpbGRyZW4sdmFsdWUsdmlld0JveCwuLi5wcm9wc30pPT57XG5cdHJldHVybiAoXG5cdFx0PFN2Z0ljb24gey4uLnt2aWV3Qm94LC4uLnByb3BzfX0+XG5cdFx0XHR7UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLHsuLi5wcm9wcyx2aWV3Qm94OlwiMCAwIDMyIDMyXCJ9KX1cblx0XHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg1IDIwKVwiPlxuXHRcdFx0XHQ8cGF0aCBkPVwiTTAgMHYyaDE0di0yaC0xNHpcIiBmaWxsPXt2YWx1ZX0vPlxuXHRcdFx0PC9nPlxuXHRcdDwvU3ZnSWNvbj5cblx0KVxufSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lfSBmcm9tIFwicmVjb21wb3NlXCJcblxuaW1wb3J0IHtGb250TWFuYWdlcn0gZnJvbSBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24tcGFnaW5hdGlvblwiXG5pbXBvcnQgQ29tYm9Cb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvY29tYm8tYm94XCJcblxuY29uc3QgRm9udExpc3Q9Y29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJGb250TGlzdFwiKSxcbikoKHtmb250cz1Gb250TWFuYWdlci5uYW1lcywgdmFsdWUsIGNoYW5nZUZvbnQ6c2V0LCBtdWlUaGVtZSxkaXNwYXRjaCwgLi4ucHJvcHN9KT0+KFxuXHQ8Q29tYm9Cb3hcblx0XHRzdHlsZT17e3dpZHRoOjE1MH19XG5cdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdGRhdGFTb3VyY2U9e0FycmF5LmZyb20obmV3IFNldChbLi4uZm9udHMsXCJBcmlhbFwiLFwiVGltZXMgTmV3IFJvbWFuXCIsIFwiVmVyZGFuYVwiLFwiQ2FsaWJyaVwiXSkpLnNvcnQoKX1cblx0XHRvbkNoYW5nZT17c2V0fVxuXHRcdGlucHV0U3R5bGU9e3tib3JkZXI6XCIxcHggc29saWQgbGlnaHRncmF5XCJ9fVxuXHRcdHVuZGVybGluZVNob3c9e2ZhbHNlfVxuXHRcdHsuLi5wcm9wc31cblx0XHQvPlxuKSlcblxuZXhwb3J0IGRlZmF1bHQgRm9udExpc3RcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQge0FDVElPTiwgd2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWUsd2l0aFByb3BzLCBzaGFsbG93RXF1YWwsc2hvdWxkVXBkYXRlfSBmcm9tIFwicmVjb21wb3NlXCJcblxuaW1wb3J0IHtUb29sYmFyR3JvdXAsTWVudUl0ZW0sU3ZnSWNvbixUb29sYmFyU2VwYXJhdG9yIGFzIFRvb2xiYXJTZXBhcmF0b3IwLH0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IENvbWJvQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2NvbWJvLWJveFwiXG5pbXBvcnQgQ2hlY2tJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uXCJcbmltcG9ydCBEcm9wRG93bkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uXCJcbmltcG9ydCBDb2xvckJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9jb2xvci1idXR0b25cIlxuXG5pbXBvcnQgSWNvbkJvbGQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWJvbGRcIlxuaW1wb3J0IEljb25JdGFsaWMgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWl0YWxpY1wiXG5pbXBvcnQgSWNvblVuZGVybGluZWQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LXVuZGVybGluZWRcIlxuXG5pbXBvcnQgSWNvbkNsZWFyIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jbGVhclwiXG5pbXBvcnQgSWNvblN0cmlrZSBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9zdHJpa2V0aHJvdWdoLXNcIlxuaW1wb3J0IEljb25CYWNrZ3JvdW5kIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1jb2xvci1maWxsXCJcbmltcG9ydCBJY29uQ29sb3IgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWNvbG9yLXRleHRcIlxuXG5pbXBvcnQgRm9udExpc3QgZnJvbSBcIi4vZm9udHNcIlxuY29uc3QgVG9vbGJhclNlcGFyYXRvcj1wcm9wcz0+PFRvb2xiYXJTZXBhcmF0b3IwIHN0eWxlPXt7bWFyZ2luUmlnaHQ6MiwgbWFyZ2luTGVmdDoyfX0gey4uLnByb3BzfS8+XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG5cdHNldERpc3BsYXlOYW1lKFwiVGV4dFN0eWxlXCIpLFxuXHR3aGVuU2VsZWN0aW9uQ2hhbmdlKCh7c2VsZWN0aW9ufSk9Pntcblx0XHRpZihzZWxlY3Rpb24pXG5cdFx0XHRyZXR1cm4ge3N0eWxlOnNlbGVjdGlvbi5wcm9wcyhcInRleHRcIixmYWxzZSl9XG5cdFx0cmV0dXJuIHt9XG5cdH0pLFxuXHR3aXRoUHJvcHMoKHtkaXNwYXRjaCwgc3R5bGV9KT0+e1xuXHRcdGxldCBjaGFuZ2VTaXplPXNpemU9PmRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0OntzaXplfX0pKVxuXHRcdHJldHVybiB7XG5cdFx0XHRzdHlsZSxcblx0XHRcdHRvZ2dsZUI6Yj0+c3R5bGUgJiYgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e2JvbGQ6IXN0eWxlLmJvbGR9fSkpLFxuXHRcdFx0dG9nZ2xlSTpiPT5zdHlsZSAmJiBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7aXRhbGljOiFzdHlsZS5pdGFsaWN9fSkpLFxuXHRcdFx0dG9nZ2xlVTpiPT5zdHlsZSAmJiBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7dW5kZXJsaW5lOiFzdHlsZS51bmRlcmxpbmV9fSkpLFxuXHRcdFx0dG9nZ2xlU3Vic2NyaXB0OmI9PnN0eWxlICYmIGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0OntzdWJzY3JpcHQ6IXN0eWxlLnN1YnNjcmlwdH19KSksXG5cdFx0XHR0b2dnbGVTdXBlcnNjcmlwdDpiPT5zdHlsZSAmJiBkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7c3VwZXJzY3JpcHQ6IXN0eWxlLnN1cGVyc2NyaXB0fX0pKSxcblx0XHRcdGNoYW5nZUZvbnQ6Zm9udHM9PmRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHt0ZXh0Ontmb250c319KSksXG5cdFx0XHRjaGFuZ2VTaXplLFxuXHRcdFx0c21hbGxlcigpe1xuXHRcdFx0XHRzdHlsZSAmJiBjaGFuZ2VTaXplKE1hdGgubWF4KHN0eWxlLnNpemUtTWF0aC5jZWlsKE1hdGguYWJzKChzdHlsZS5zaXplLTgpLzUpKSw4KSlcblx0XHRcdH0sXG5cdFx0XHRiaWdnZXIoKXtcblx0XHRcdFx0c3R5bGUgJiYgY2hhbmdlU2l6ZShzdHlsZS5zaXplKzIpXG5cdFx0XHR9LFxuXHRcdFx0Y2hhbmdlSGlnaHRsaWdodChoaWdobGlnaHQpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7dGV4dDp7aGlnaGxpZ2h0fX0pKVxuXHRcdFx0fSxcblx0XHRcdGNoYW5nZUNvbG9yKGNvbG9yKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e2NvbG9yfX0pKVxuXHRcdFx0fSxcblx0XHRcdGNsZWFyKF9jbGVhcj10cnVlKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e19jbGVhcn19KSlcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVCb3JkZXIoYm9yZGVyPXt9KXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e2JvcmRlcn19KSlcblx0XHRcdH0sXG5cdFx0XHR1bmRlcmxpbmUodW5kZXJsaW5lKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e3VuZGVybGluZX19KSlcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVTdHJpa2UoKXtcblx0XHRcdFx0c3R5bGUgJiYgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3RleHQ6e3N0cmlrZTohc3R5bGUuc3RyaWtlfX0pKVxuXHRcdFx0fSxcblxuXHRcdH1cblx0fSksXG5cdHNob3VsZFVwZGF0ZSgoYSxiKT0+IXNoYWxsb3dFcXVhbChhLnN0eWxlLGIuc3R5bGUpKSxcbikoKHtzdHlsZSwgY2hpbGRyZW4sXG5cdGJpZ2dlciwgc21hbGxlciwgY2xlYXIsXG5cdHRvZ2dsZVN0cmlrZSwgY2hhbmdlSGlnaHRsaWdodCxjaGFuZ2VDb2xvcixcblx0dG9nZ2xlU3Vic2NyaXB0LCB0b2dnbGVTdXBlcnNjcmlwdCwgdG9nZ2xlQm9yZGVyLFxuXHR0b2dnbGVCLCB0b2dnbGVJLCB1bmRlcmxpbmUsXG5cdGNoYW5nZUZvbnQsY2hhbmdlU2l6ZX0pPT4oXG5cdFx0XHQ8VG9vbGJhckdyb3VwPlxuXHRcdFx0XHQ8Rm9udExpc3Rcblx0XHRcdFx0XHR2YWx1ZT17c3R5bGUmJnN0eWxlLmZvbnRzID8gc3R5bGUuZm9udHMuc3BsaXQoXCIsXCIpWzBdIDogXCJcIn1cblx0XHRcdFx0XHRjaGFuZ2VGb250PXtjaGFuZ2VGb250fS8+XG5cdFx0XHRcdDxDb21ib0JveFxuXHRcdFx0XHRcdHN0eWxlPXt7d2lkdGg6NTB9fVxuXHRcdFx0XHRcdGlucHV0U3R5bGU9e3tib3JkZXI6XCIxcHggc29saWQgbGlnaHRncmF5XCJ9fVxuXHRcdFx0XHRcdHZhbHVlPXtzdHlsZSA/IHN0eWxlLnNpemU6IDExfVxuXHRcdFx0XHRcdG9uQ2hhbmdlPXt2YWx1ZT0+Y2hhbmdlU2l6ZShwYXJzZUludCh2YWx1ZSkpfVxuXHRcdFx0XHRcdGRhdGFTb3VyY2U9e1s4LDksMTAsMTEsMTIsMTQsMTYsMjAsMjIsMjQsMjYsMjgsMzYsNzJdLm1hcChhPT5hK1wiXCIpfVxuXHRcdFx0XHRcdHVuZGVybGluZVNob3c9e2ZhbHNlfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDxDaGVja0ljb25CdXR0b24gbGFiZWw9XCJpbmNyZWFzZSBmb250IHNpemVcIlxuXHRcdFx0XHRcdHN0YXR1cz17XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXtiaWdnZXJ9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uQmlnZ2VyLz59XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cImRlc2NyZWFzZSBmb250IHNpemVcIlxuXHRcdFx0XHRcdHN0YXR1cz17XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXtzbWFsbGVyfVxuXHRcdFx0XHRcdGNoaWxkcmVuPXs8SWNvblNtYWxsZXIvPn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8VG9vbGJhclNlcGFyYXRvci8+XG5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cImJvbGRcIlxuXHRcdFx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLmJvbGQgPyBcImNoZWNrZWRcIiA6IFwidW5jaGVja2VkXCJ9XG5cdFx0XHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZUIoKX1cblx0XHRcdFx0XHRjaGlsZHJlbj17PEljb25Cb2xkLz59XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cIml0YWxpY1wiXG5cdFx0XHRcdFx0c3RhdHVzPXtzdHlsZSAmJiBzdHlsZS5pdGFsaWM/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlSSgpfVxuXHRcdFx0XHRcdGNoaWxkcmVuPXs8SWNvbkl0YWxpYy8+fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDxEcm9wRG93bkJ1dHRvbiBsYWJlbD1cInVuZGVybGluZVwiXG5cdFx0XHRcdFx0c3RhdHVzPXtzdHlsZSYmc3R5bGUudW5kZXJsaW5lP1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRcdFx0b25DbGljaz17YT0+dW5kZXJsaW5lKHN0eWxlJiZzdHlsZS51bmRlcmxpbmUgPyBcIlwiIDogXCJzaW5nbGVcIil9XG5cdFx0XHRcdFx0aWNvbj17PEljb25VbmRlcmxpbmVkLz59XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdHtcInNpbmdsZSxkb3VibGUsZG90LGRhc2hcIi5zcGxpdChcIixcIikubWFwKGE9PlxuXHRcdFx0XHRcdFx0PE1lbnVJdGVtXG5cdFx0XHRcdFx0XHRcdGtleT17YX1cblx0XHRcdFx0XHRcdFx0b25DbGljaz17ZT0+dW5kZXJsaW5lKGEpfVxuXHRcdFx0XHRcdFx0XHRwcmltYXJ5VGV4dD17YX1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpfVxuXHRcdFx0XHQ8L0Ryb3BEb3duQnV0dG9uPlxuXG5cdFx0XHRcdDxDaGVja0ljb25CdXR0b24gbGFiZWw9XCJzdHJpa2V0aHJvdWdoXCJcblx0XHRcdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS5zdHJpa2U/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlU3RyaWtlKCl9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uU3RyaWtlLz59XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PFRvb2xiYXJTZXBhcmF0b3IvPlxuXG5cdFx0XHRcdDxDaGVja0ljb25CdXR0b24gbGFiZWw9XCJTdWJzY3JpcHRcIlxuXHRcdFx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLnN1YnNjcmlwdD9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVTdWJzY3JpcHQoKX1cblx0XHRcdFx0XHRjaGlsZHJlbj17PEljb25TdWJzY3JpcHQvPn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwiU3VwZXJzY3JpcHRcIlxuXHRcdFx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLnN1cGVyc2NyaXB0P1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZVN1cGVyc2NyaXB0KCl9XG5cdFx0XHRcdFx0Y2hpbGRyZW49ezxJY29uU3VwZXJzY3JpcHQvPn1cblx0XHRcdFx0XHQvPlxuXG5cdFx0XHRcdDxDaGVja0ljb25CdXR0b24gbGFiZWw9XCJ0ZXh0IGJvcmRlclwiXG5cdFx0XHRcdFx0b25DbGljaz17dG9nZ2xlQm9yZGVyfVxuXHRcdFx0XHRcdGNoaWxkcmVuPXs8SWNvblRleHRCb3JkZXIvPn1cblx0XHRcdFx0XHQvPlxuXG5cdFx0XHRcdDxDb2xvckJ1dHRvbiBsYWJlbD1cInRleHQgaGlnaGxpZ2h0IGNvbG9yXCJcblx0XHRcdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS5oaWdobGlnaHQ/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdFx0XHRvbkNoYW5nZT17Y29sb3I9PmNoYW5nZUhpZ2h0bGlnaHQoY29sb3IpfT5cblx0XHRcdFx0XHQ8SWNvbkJhY2tncm91bmQvPlxuXHRcdFx0XHQ8L0NvbG9yQnV0dG9uPlxuXG5cdFx0XHRcdDxDb2xvckJ1dHRvbiBsYWJlbD1cInRleHQgY29sb3JcIlxuXHRcdFx0XHRcdHN0YXR1cz17c3R5bGUmJnN0eWxlLmNvbG9yP1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRcdFx0b25DaGFuZ2U9e2NvbG9yPT5jaGFuZ2VDb2xvcihjb2xvcil9PlxuXHRcdFx0XHRcdDxJY29uQ29sb3IvPlxuXHRcdFx0XHQ8L0NvbG9yQnV0dG9uPlxuXG5cdFx0XHRcdDxUb29sYmFyU2VwYXJhdG9yLz5cblx0XHRcdFx0PENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cImNsZWFyIGFsbCB0ZXh0IGZvcm1hdHRpbmdcIlxuXHRcdFx0XHRcdG9uQ2xpY2s9e2NsZWFyfVxuXHRcdFx0XHRcdGNoaWxkcmVuPXs8SWNvbkNsZWFyLz59XG5cdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHR7Y2hpbGRyZW59XG5cdFx0XHQ8L1Rvb2xiYXJHcm91cD5cbikpXG5cbmNvbnN0IEljb25TdXBlcnNjcmlwdD1wcm9wcz0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDMpIHNjYWxlKDAuNylcIj5cblx0XHRcdDxwYXRoIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiLz5cblx0XHQ8L2c+XG5cdFx0PHRleHQgeD1cIjE1XCIgeT1cIjlcIiBzdHlsZT17e2ZvbnRTaXplOjl9fT4yPC90ZXh0PlxuXHQ8L1N2Z0ljb24+XG4pXG5cbmNvbnN0IEljb25TdWJzY3JpcHQ9cHJvcHM9Pihcblx0PFN2Z0ljb24gey4uLnByb3BzfT5cblx0XHQ8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAzKSBzY2FsZSgwLjcpXCI+XG5cdFx0XHQ8cGF0aCBkPVwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIi8+XG5cdFx0PC9nPlxuXHRcdDx0ZXh0IHg9XCIxNVwiIHk9XCIyMFwiIHN0eWxlPXt7Zm9udFNpemU6OX19PjI8L3RleHQ+XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSWNvbkJpZ2dlcj1wcm9wcz0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDIpXCI+XG5cdFx0XHQ8cGF0aCBkPVwiTTUgMTdtNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6XCIvPlxuXHRcdDwvZz5cblx0XHQ8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTggMilcIj5cblx0XHRcdDxwYXRoIGQ9XCJNMCAzSDZMMyAwelwiLz5cblx0XHQ8L2c+XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSWNvblNtYWxsZXI9cHJvcHM9Pihcblx0PFN2Z0ljb24gey4uLnByb3BzfT5cblx0XHQ8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAyKVwiPlxuXHRcdFx0PHBhdGggZD1cIk01IDE3bTQuNS00LjJoNWwuOSAyLjJoMi4xTDEyLjc1IDRoLTEuNUw2LjUgMTVoMi4xbC45LTIuMnpNMTIgNS45OEwxMy44NyAxMWgtMy43NEwxMiA1Ljk4elwiLz5cblx0XHQ8L2c+XG5cdFx0PGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDE4IDIpXCI+XG5cdFx0XHQ8cGF0aCBkPVwiTTAgMCBINkwzIDN6XCIvPlxuXHRcdDwvZz5cblx0PC9TdmdJY29uPlxuKVxuXG5jb25zdCBJY29uVGV4dEJvcmRlcj1wcm9wcz0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDIpXCI+XG5cdFx0XHQ8cGF0aCBkPVwiTTUgMTdtNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6XCIvPlxuXHRcdDwvZz5cblx0XHQ8cGF0aCBkPVwiTTIgMiBoMjB2MjBoLTIwelwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiYmxhY2tcIi8+XG5cdDwvU3ZnSWNvbj5cbilcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuXG5pbXBvcnQge2NvbXBvc2Usc2V0RGlzcGxheU5hbWUsbWFwUHJvcHMsIHNoYWxsb3dFcXVhbCxzaG91bGRVcGRhdGV9IGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IHtBQ1RJT04sIHdoZW5TZWxlY3Rpb25DaGFuZ2UsZ2V0VUl9IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IHtUb29sYmFyR3JvdXAsVG9vbGJhclNlcGFyYXRvciBhcyBUb29sYmFyU2VwYXJhdG9yMCxNZW51SXRlbSwgU3ZnSWNvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBDaGVja0ljb25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvY2hlY2staWNvbi1idXR0b25cIlxuaW1wb3J0IERyb3BEb3duQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2Ryb3AtZG93bi1idXR0b25cIlxuXG5cbmltcG9ydCBJY29uQWxpZ25DZW50ZXIgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWNlbnRlclwiXG5pbXBvcnQgSWNvbkFsaWduTGVmdCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtYWxpZ24tbGVmdFwiXG5pbXBvcnQgSWNvbkFsaWduUmlnaHQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLXJpZ2h0XCJcbmltcG9ydCBJY29uQWxpZ25KdXN0aWZ5IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1hbGlnbi1qdXN0aWZ5XCJcblxuaW1wb3J0IEljb25MaXN0QnVsbGV0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2Zvcm1hdC1saXN0LWJ1bGxldGVkXCJcbmltcG9ydCBJY29uTGlzdE51bWJlciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1udW1iZXJlZFwiXG5cbmNvbnN0IFRvb2xiYXJTZXBhcmF0b3I9cHJvcHM9PjxUb29sYmFyU2VwYXJhdG9yMCBzdHlsZT17e21hcmdpblJpZ2h0OjIsIG1hcmdpbkxlZnQ6Mn19IHsuLi5wcm9wc30vPlxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcIlBhcmFncmFwaFN0eWxlXCIpLFxuXHR3aGVuU2VsZWN0aW9uQ2hhbmdlKCh7c2VsZWN0aW9ufSxzdGF0ZSk9Pntcblx0XHRpZihzZWxlY3Rpb24pXG5cdFx0XHRyZXR1cm4ge3N0eWxlOnNlbGVjdGlvbi5wcm9wcyhcInBhcmFncmFwaFwiLGZhbHNlKSwuLi5nZXRVSShzdGF0ZSl9XG5cdFx0cmV0dXJuIGdldFVJKHN0YXRlKVxuXHR9KSxcblx0bWFwUHJvcHMoKHtkaXNwYXRjaCxjaGlsZHJlbixzdHlsZSxwaWxjcm93fSk9Pntcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2hpbGRyZW4sXG5cdFx0XHRzdHlsZSxcblx0XHRcdHBpbGNyb3csXG5cdFx0XHR0b2dnbGVBbGlnbihhbGlnbil7XG5cdFx0XHRcdGNvbnN0IHthbGlnbjpjdXJyZW50PVwibGVmdFwifT1zdHlsZXx8e31cblx0XHRcdFx0aWYoY3VycmVudD09YWxpZ24pe1xuXHRcdFx0XHRcdGFsaWduPW51bGxcblx0XHRcdFx0fVxuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7cGFyYWdyYXBoOnthbGlnbn19KSlcblx0XHRcdH0sXG5cdFx0XHRudW1iZXJpbmc6IG51bWJlcmluZz0+e1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7cGFyYWdyYXBoOntudW1iZXJpbmd9fSkpXG5cdFx0XHR9LFxuXHRcdFx0dG9nZ2xlQnVsbGV0KG51bWJlcmluZyl7XG5cdFx0XHRcdGlmKHN0eWxlJiZzdHlsZS5udW1iZXJpbmcmJnN0eWxlLm51bWJlcmluZy5mb3JtYXQ9PVwiYnVsbGV0XCIpe1xuXHRcdFx0XHRcdG51bWJlcmluZz1udWxsXG5cdFx0XHRcdH1cblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3BhcmFncmFwaDp7bnVtYmVyaW5nfX0pKVxuXHRcdFx0fSxcblx0XHRcdHRvZ2dsZU51bWJlcmluZyhudW1iZXJpbmcpe1xuXHRcdFx0XHRpZihzdHlsZSYmc3R5bGUubnVtYmVyaW5nJiZzdHlsZS5udW1iZXJpbmcuZm9ybWF0IT09XCJidWxsZXRcIil7XG5cdFx0XHRcdFx0bnVtYmVyaW5nPW51bGxcblx0XHRcdFx0fVxuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7cGFyYWdyYXBoOntudW1iZXJpbmd9fSkpXG5cdFx0XHR9LFxuXHRcdFx0dG9nZ2xlUGlsY3Jvdygpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uVUkoe3BpbGNyb3c6IXBpbGNyb3d9KSlcblx0XHRcdH1cblx0XHR9XG5cdH0pLFxuXHRzaG91bGRVcGRhdGUoKGEsYik9PiEoc2hhbGxvd0VxdWFsKGEuc3R5bGUsYi5zdHlsZSkgJiYgYS5waWxjcm93PT1iLnBpbGNyb3cpKVxuKSgoe3N0eWxlLCB0b2dnbGVBbGlnbixudW1iZXJpbmcsIGJ1bGxldCwgdG9nZ2xlQnVsbGV0LCB0b2dnbGVOdW1iZXJpbmcsIHBpbGNyb3csIHRvZ2dsZVBpbGNyb3csY2hpbGRyZW59KT0+KFxuXHQ8VG9vbGJhckdyb3VwPlxuXHRcdDxDaGVja0ljb25CdXR0b25cblx0XHRcdHN0YXR1cz17c3R5bGUgJiYoIXN0eWxlLmFsaWduIHx8c3R5bGUuYWxpZ249PVwibGVmdFwiKT9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZUFsaWduKFwibGVmdFwiKX1cblx0XHRcdGNoaWxkcmVuPXs8SWNvbkFsaWduTGVmdC8+fVxuXHRcdFx0Lz5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS5hbGlnbj09XCJjZW50ZXJcIj9cImNoZWNrZWRcIjpcInVuY2hlY2tlZFwifVxuXHRcdFx0b25DbGljaz17KCk9PnRvZ2dsZUFsaWduKFwiY2VudGVyXCIpfVxuXHRcdFx0Y2hpbGRyZW49ezxJY29uQWxpZ25DZW50ZXIvPn1cblx0XHRcdC8+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0c3RhdHVzPXtzdHlsZSAmJnN0eWxlLmFsaWduPT1cInJpZ2h0XCI/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVBbGlnbihcInJpZ2h0XCIpfVxuXHRcdFx0Y2hpbGRyZW49ezxJY29uQWxpZ25SaWdodC8+fVxuXHRcdFx0Lz5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS5hbGlnbj09XCJqdXN0aWZ5XCI/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVBbGlnbihcImp1c3RpZnlcIil9XG5cdFx0XHRjaGlsZHJlbj17PEljb25BbGlnbkp1c3RpZnkvPn1cblx0XHRcdC8+XG5cdFx0PFRvb2xiYXJTZXBhcmF0b3IvPlxuXG5cdFx0PERyb3BEb3duQnV0dG9uXG5cdFx0XHRzdGF0dXM9e3N0eWxlJiZzdHlsZS5udW1iZXJpbmcmJnN0eWxlLm51bWJlcmluZy5mb3JtYXQ9PVwiYnVsbGV0XCIgP1wiY2hlY2tlZFwiOlwidW5jaGVja2VkXCJ9XG5cdFx0XHRvbkNsaWNrPXsoKT0+dG9nZ2xlQnVsbGV0KHt0eXBlOlwiYnVsbGV0XCIsdGV4dDpcIi5cIn0pfVxuXHRcdFx0aWNvbj17PEljb25MaXN0QnVsbGV0Lz59XG5cdFx0XHQ+XG5cdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCIuXCIgb25DbGljaz17ZT0+bnVtYmVyaW5nKHt0eXBlOlwiYnVsbGV0XCIsdGV4dDpcIi5cIn0pfS8+XG5cdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCIqXCIgb25DbGljaz17ZT0+bnVtYmVyaW5nKHt0eXBlOlwiYnVsbGV0XCIsdGV4dDpcIipcIn0pfS8+XG5cblx0XHQ8L0Ryb3BEb3duQnV0dG9uPlxuXHRcdDxEcm9wRG93bkJ1dHRvblxuXHRcdFx0c3RhdHVzPXtzdHlsZSYmc3R5bGUubnVtYmVyaW5nJiZzdHlsZS5udW1iZXJpbmcuZm9ybWF0IT09XCJidWxsZXRcIiA/XCJjaGVja2VkXCI6XCJ1bmNoZWNrZWRcIn1cblx0XHRcdG9uQ2xpY2s9eygpPT50b2dnbGVOdW1iZXJpbmcoe3R5cGU6XCJkZWNpbWFsXCIsdGV4dDpcIiUxLlwifSl9XG5cdFx0XHRpY29uPXs8SWNvbkxpc3ROdW1iZXIvPn1cblx0XHRcdD5cblx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIjEuXCIgb25DbGljaz17ZT0+bnVtYmVyaW5nKHt0eXBlOlwiZGVjaW1hbFwiLHRleHQ6XCIlMS5cIn0pfS8+XG5cdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJhLlwiIG9uQ2xpY2s9e2U9Pm51bWJlcmluZyh7dHlwZTpcImxvd2VyTGV0dGVyXCIsdGV4dDpcIiUxLlwifSl9Lz5cblx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIuS4gFwiIG9uQ2xpY2s9e2U9Pm51bWJlcmluZyh7dHlwZTpcImNoaW5lc2VcIiwgdGV4dDpcIiUxXCJ9KX0vPlxuXHRcdDwvRHJvcERvd25CdXR0b24+XG5cdFx0PFRvb2xiYXJTZXBhcmF0b3IvPlxuXHRcdDxDaGVja0ljb25CdXR0b25cblx0XHRcdHN0YXR1cz17cGlsY3JvdyA/IFwiY2hlY2tlZFwiIDogXCJ1bmNoZWNrZWRcIn1cblx0XHRcdG9uQ2xpY2s9e3RvZ2dsZVBpbGNyb3d9XG5cdFx0XHRjaGlsZHJlbj17XG5cdFx0XHRcdDxTdmdJY29uPlxuXHRcdFx0XHRcdDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDQpXCI+XG5cdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTkgMTB2NWgyVjRoMnYxMWgyVjRoMlYySDlDNi43OSAyIDUgMy43OSA1IDZzMS43OSA0IDQgNHpcIi8+XG5cdFx0XHRcdFx0PC9nPlxuXHRcdFx0XHQ8L1N2Z0ljb24+XG5cdFx0XHR9XG5cdFx0XHQvPlxuXHRcdHtjaGlsZHJlbn1cblx0PC9Ub29sYmFyR3JvdXA+XG4pKVxuIiwidmFyIGlucHV0O1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNlbGVjdChhY2NlcHQpe1xuICAgIGlmKGlucHV0PT1udWxsKXtcbiAgICAgICAgaW5wdXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICAgICAgICBpbnB1dC50eXBlPVwiZmlsZVwiXG4gICAgICAgIGlucHV0LnN0eWxlLnBvc2l0aW9uPSdhYnNvbHV0ZSdcbiAgICAgICAgaW5wdXQuc3R5bGUubGVmdD0nLTk5OTlweCdcdFx0XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpXG4gICAgfVxuXG5cdGlucHV0LnNldEF0dHJpYnV0ZShcImFjY2VwdFwiLGFjY2VwdHx8XCJcIilcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpPT57XG4gICAgICAgIGlucHV0Lm9uY2hhbmdlPWZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgZmlsZT10aGlzLmZpbGVzWzBdO1xuXHRcdFx0aW5wdXQudmFsdWU9XCJcIlxuICAgICAgICAgICAgaWYoZmlsZT09bnVsbClcbiAgICAgICAgICAgICAgICByZWplY3QoKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSlcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC5jbGljaygpXG4gICAgfSlcbn1cblxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gXCJyZWFjdC1yZWR1eFwiXG5pbXBvcnQge2NvbXBvc2UsIHNldERpc3BsYXlOYW1lLCBvbmx5VXBkYXRlRm9yS2V5c30gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7VG9vbGJhckdyb3VwfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IENoZWNrSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9jaGVjay1pY29uLWJ1dHRvblwiXG5cblxuaW1wb3J0IEljb25SZWRvIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9yZWRvXCJcbmltcG9ydCBJY29uVW5kbyBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvdW5kb1wiXG5cbmltcG9ydCB7QUNUSU9OLCBnZXRVbmRvcywgZ2V0UmVkb3MsIElucHV0LCBnZXRBY3RpdmV9IGZyb20gXCJ3ZS1lZGl0XCJcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcblx0c2V0RGlzcGxheU5hbWUoXCJoaXN0b3J5XCIpLFxuXHRjb25uZWN0KHN0YXRlPT57XG5cdFx0c3RhdGU9Z2V0QWN0aXZlKHN0YXRlKS5zdGF0ZVxuXHRcdGxldCByZWRvcz1nZXRSZWRvcyhzdGF0ZSlcblx0XHRsZXQgdW5kb3M9Z2V0VW5kb3Moc3RhdGUpXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhblJlZG86ISFyZWRvcy5sZW5ndGgsXG5cdFx0XHRjYW5VbmRvOiEhdW5kb3MubGVuZ3RoXG5cdFx0fVxuXHR9LChkaXNwYXRjaCk9Pntcblx0XHRyZXR1cm4ge1xuXHRcdFx0dW5kbygpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uSGlzdG9yeS51bmRvKCkpXG5cdFx0XHR9LFxuXHRcdFx0cmVkbygpe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uSGlzdG9yeS5yZWRvKCkpXG5cdFx0XHR9XG5cdFx0fVxuXHR9KSxcblx0b25seVVwZGF0ZUZvcktleXMoWydjYW5SZWRvJywnY2FuVW5kbyddKVxuKSgoe3VuZG8scmVkbywgY2FuVW5kbywgY2FuUmVkbyxjaGlsZHJlbn0pPT4oXG5cdDxUb29sYmFyR3JvdXA+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0aGludD1cInVuZG9cIlxuXHRcdFx0c3RhdHVzPXtjYW5VbmRvID8gXCJ1bmNoZWNrXCIgOiBcImRpc2FibGVkXCJ9XG5cdFx0XHRjaGlsZHJlbj17PEljb25VbmRvLz59XG5cdFx0XHRvbkNsaWNrPXt1bmRvfVxuXHRcdFx0Lz5cblx0XHQ8Q2hlY2tJY29uQnV0dG9uXG5cdFx0XHRoaW50PVwicmVkb1wiXG5cdFx0XHRzdGF0dXM9e2NhblJlZG8gPyBcInVuY2hlY2tcIiA6IFwiZGlzYWJsZWRcIn1cblx0XHRcdGNoaWxkcmVuPXs8SWNvblJlZG8vPn1cblx0XHRcdG9uQ2xpY2s9e3JlZG99XG5cdFx0XHQvPlxuXHRcdHtjaGlsZHJlbn1cblx0PC9Ub29sYmFyR3JvdXA+XG4pKVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gXCJyZWFjdC1yZWR1eFwiXG5pbXBvcnQge2NvbXBvc2UsIHNldERpc3BsYXlOYW1lLCBvbmx5VXBkYXRlRm9yS2V5c30gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7VG9vbGJhckdyb3VwfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IENoZWNrSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9jaGVjay1pY29uLWJ1dHRvblwiXG5cblxuaW1wb3J0IEljb25Db3B5IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC9jb250ZW50LWNvcHlcIlxuaW1wb3J0IEljb25QYXN0ZSBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1wYXN0ZVwiXG5pbXBvcnQgSWNvbkN1dCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2NvbnRlbnQvY29udGVudC1jdXRcIlxuXG5cbmltcG9ydCB7QUNUSU9OLCBnZXRTZWxlY3Rpb24sIGdldEFjdGl2ZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcImNsaXBib2FyZFwiKSxcblx0Y29ubmVjdChzdGF0ZT0+e1xuXHRcdHN0YXRlPWdldEFjdGl2ZShzdGF0ZSkuc3RhdGVcblx0XHRjb25zdCB7c3RhcnQ9e30sZW5kPXt9fT1nZXRTZWxlY3Rpb24oc3RhdGUpXG5cdFx0Y29uc3QgaXNDdXJzb3I9c3RhcnQuaWQ9PWVuZC5pZCAmJiBzdGFydC5hdD09ZW5kLmF0XG4gICAgICAgIHJldHVybiB7XG5cdFx0XHR3aXRoU2VsZWN0aW9uOiAhaXNDdXJzb3IsXG4gICAgICAgICAgICB3aXRoQ2xpcGJvYXJkOiEhd2luZG93Ll9jbGlwYm9hcmQsXG5cdFx0fVxuXHR9LChkaXNwYXRjaCk9Pntcblx0XHRyZXR1cm4ge1xuICAgICAgICAgICAgY3V0KCl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5DVVQoKSlcbiAgICAgICAgICAgIH0sXG5cdFx0XHRjb3B5KCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uQ09QWSgpKVxuXHRcdFx0fSxcblx0XHRcdHBhc3RlKCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uUEFTVEUoKSlcblx0XHRcdH0sXG5cdFx0fVxuXHR9KSxcblx0b25seVVwZGF0ZUZvcktleXMoWyd3aXRoU2VsZWN0aW9uJywnd2l0aENsaXBib2FyZCddKVxuKSgoe2N1dCxjb3B5LHBhc3RlLHdpdGhTZWxlY3Rpb24sd2l0aENsaXBib2FyZCxjaGlsZHJlbn0pPT4oXG5cdDxUb29sYmFyR3JvdXA+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0bGFiZWw9XCJwYXN0ZVwiXG5cdFx0XHRzdGF0dXM9e3dpdGhDbGlwYm9hcmQgPyBcInVuY2hlY2tcIiA6IFwiZGlzYWJsZWRcIn1cblx0XHRcdGNoaWxkcmVuPXs8SWNvblBhc3RlLz59XG5cdFx0XHRvbkNsaWNrPXtwYXN0ZX1cblx0XHRcdC8+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0bGFiZWw9XCJjdXRcIlxuXHRcdFx0c3RhdHVzPXt3aXRoU2VsZWN0aW9uID8gXCJ1bmNoZWNrXCIgOiBcImRpc2FibGVkXCJ9XG5cdFx0XHRjaGlsZHJlbj17PEljb25DdXQvPn1cblx0XHRcdG9uQ2xpY2s9e2N1dH1cblx0XHRcdC8+XG5cdFx0PENoZWNrSWNvbkJ1dHRvblxuXHRcdFx0bGFiZWw9XCJjb3B5XCJcblx0XHRcdHN0YXR1cz17d2l0aFNlbGVjdGlvbiA/IFwidW5jaGVja1wiIDogXCJkaXNhYmxlZFwifVxuXHRcdFx0Y2hpbGRyZW49ezxJY29uQ29weS8+fVxuXHRcdFx0b25DbGljaz17Y29weX1cblx0XHRcdC8+XG5cdFx0e2NoaWxkcmVufVxuXHQ8L1Rvb2xiYXJHcm91cD5cbikpXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcblxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCB7QUNUSU9OLCB3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5cbmltcG9ydCB7TWVudUl0ZW0sU3ZnSWNvbixUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgRHJvcERvd25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvblwiXG5cbmltcG9ydCBJY29uU2VsZWN0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL29wZW4td2l0aFwiXG5cbmltcG9ydCBJY29uTm90Q2hlY2tlZCBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL3RvZ2dsZS9jaGVjay1ib3gtb3V0bGluZS1ibGFua1wiXG5pbXBvcnQgSWNvbkNoZWNrZWQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy90b2dnbGUvY2hlY2stYm94XCJcblxuaW1wb3J0IEljb25BYm92ZSBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci92ZXJ0aWNhbC1hbGlnbi10b3BcIlxuaW1wb3J0IEljb25CZWxvdyBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci92ZXJ0aWNhbC1hbGlnbi1ib3R0b21cIlxuaW1wb3J0IEljb25MZWZ0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvbmF2aWdhdGlvbi9maXJzdC1wYWdlXCJcbmltcG9ydCBJY29uUmlnaHQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9uYXZpZ2F0aW9uL2xhc3QtcGFnZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG4gICAgc2V0RGlzcGxheU5hbWUoXCJUYWJsZURlc2lnbmVyXCIpLFxuICAgIHdoZW5TZWxlY3Rpb25DaGFuZ2UoKSxcbiAgICBtYXBQcm9wcygoe2Rpc3BhdGNofSk9PntcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFkZFJvd0Fib3ZlKCl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5DUkVBVEUoe3R5cGU6XCJyb3dcIiwgd2hlcmU6XCJiZWZvcmVcIn0pKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZFJvd0JlbG93KCl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5DUkVBVEUoe3R5cGU6XCJyb3dcIiwgd2hlcmU6XCJhZnRlclwifSkpXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhZGRDb2xSaWdodCgpe1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuQ1JFQVRFKHt0eXBlOlwiY29sdW1uXCIsIHdoZXJlOlwiYWZ0ZXJcIn0pKVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYWRkQ29sTGVmdCgpe1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuQ1JFQVRFKHt0eXBlOlwiY29sdW1uXCIsIHdoZXJlOlwiYmVmb3JlXCJ9KSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZW1vdmUodHlwZSl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5FWFRFTkQodHlwZSkpXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5SRU1PVkUoe3R5cGV9KSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3QodHlwZSl7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5FWFRFTkQodHlwZSkpXG4gICAgICAgICAgICB9ICAgXG4gICAgICAgIH1cbiAgICB9KVxuKSgoe2FkZFJvd0Fib3ZlLCBhZGRSb3dCZWxvdywgYWRkQ29sTGVmdCwgYWRkQ29sUmlnaHQsIHJlbW92ZSwgc2VsZWN0fSk9PntcbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9vbGJhckdyb3VwPlxuICAgICAgICAgICAgPERyb3BEb3duQnV0dG9uIHRpdGxlPVwidGFibGUgY29uZGl0aW9uc1wiIGljb249ezxJY29uQ29uZGl0aW9uIGNoaWxkcmVuPXs8WC8+fS8+fSA+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiSGVhZGVyIFJvd1wiIGxlZnRJY29uPXs8SWNvbkNoZWNrZWQvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlRvdGFsIFJvd1wiIGxlZnRJY29uPXs8SWNvbk5vdENoZWNrZWQvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkJhbmRlZCBSb3dzXCIgbGVmdEljb249ezxJY29uQ2hlY2tlZC8+fS8+XG5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJGaXJzdCBDb2x1bW5cIiBsZWZ0SWNvbj17PEljb25DaGVja2VkLz59Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJMYXN0IENvbHVtblwiIGxlZnRJY29uPXs8SWNvbk5vdENoZWNrZWQvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkJhbmRlZCBDb2x1bW5zXCIgbGVmdEljb249ezxJY29uTm90Q2hlY2tlZC8+fS8+XG4gICAgICAgICAgICA8L0Ryb3BEb3duQnV0dG9uPlxuXG4gICAgICAgICAgICA8RHJvcERvd25CdXR0b24gdGl0bGU9XCJzZWxlY3QgLi4uXCIgaWNvbj17PEljb25TZWxlY3QvPn0+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiU2VsZWN0IENlbGxcIiBsZWZ0SWNvbj17PEljb25DZWxsLz59IG9uQ2xpY2s9eygpPT5zZWxlY3QoXCJjZWxsXCIpfS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiU2VsZWN0IENvbHVtblwiIGxlZnRJY29uPXs8SWNvbkNvbHVtbi8+fSBvbkNsaWNrPXsoKT0+c2VsZWN0KFwiY29sdW1uXCIpfS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiU2VsZWN0IFJvd1wiIGxlZnRJY29uPXs8SWNvblJvdy8+fSBvbkNsaWNrPXsoKT0+c2VsZWN0KFwicm93XCIpfS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiU2VsZWN0IFRhYmxlXCIgbGVmdEljb249ezxJY29uV2hvbGVUYWJsZS8+fSBvbkNsaWNrPXsoKT0+c2VsZWN0KFwidGFibGVcIil9Lz5cbiAgICAgICAgICAgIDwvRHJvcERvd25CdXR0b24+XG5cbiAgICAgICAgICAgIDxEcm9wRG93bkJ1dHRvbiAgdGl0bGU9XCJkZWxldGUgLi4uXCIgaWNvbj17PEljb25UYWJsZSBjaGlsZHJlbj17PFggc2l6ZT17MTJ9IHN0cm9rZVdpZHRoPXszfS8+fS8+fT5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJEZWxldGUgQ2VsbFwiIFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+cmVtb3ZlKFwiY2VsbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgbGVmdEljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25DZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkNlbGw+XG4gICAgICAgICAgICAgICAgICAgIH0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkRlbGV0ZSBDb2x1bW5cIiBcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCk9PnJlbW92ZShcImNvbHVtblwiKX1cbiAgICAgICAgICAgICAgICAgICAgbGVmdEljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25Db2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFgvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICB9Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJEZWxldGUgUm93XCIgXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5yZW1vdmUoXCJyb3dcIil9XG4gICAgICAgICAgICAgICAgICAgIGxlZnRJY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvblJvdz5cbiAgICAgICAgICAgICAgICAgICAgfS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiRGVsZXRlIFRhYmxlXCIgXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5yZW1vdmUoXCJ0YWJsZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgbGVmdEljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25XaG9sZVRhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxYLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbldob2xlVGFibGU+XG4gICAgICAgICAgICAgICAgICAgIH0vPlxuICAgICAgICAgICAgPC9Ecm9wRG93bkJ1dHRvbj5cblxuICAgICAgICAgICAgPERyb3BEb3duQnV0dG9uIHRpdGxlPVwiaW5zZXJ0IHJvdy9jb2x1bW5cIiBpY29uPXs8SWNvblRhYmxlIGNoaWxkcmVuPXtudWxsfS8+fSA+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiSW5zZXJ0IFJvdyBBYm92ZVwiIGxlZnRJY29uPXs8SWNvbkFib3ZlLz59IG9uQ2xpY2s9e2FkZFJvd0Fib3ZlfS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiSW5zZXJ0IFJvdyBCZWxvd1wiIGxlZnRJY29uPXs8SWNvbkJlbG93Lz59IG9uQ2xpY2s9e2FkZFJvd0JlbG93fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiSW5zZXJ0IENvbHVtbiBMZWZ0XCIgbGVmdEljb249ezxJY29uTGVmdC8+fSBvbkNsaWNrPXthZGRDb2xMZWZ0fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiSW5zZXJ0IENvbHVtbiBSaWdodFwiIGxlZnRJY29uPXs8SWNvblJpZ2h0Lz59IG9uQ2xpY2s9e2FkZENvbFJpZ2h0fS8+XG4gICAgICAgICAgICA8L0Ryb3BEb3duQnV0dG9uPlxuXG4gICAgICAgIDwvVG9vbGJhckdyb3VwPlxuICAgIClcbn0pXG5cbmNvbnN0IEljb25Db25kaXRpb249cHJvcHM9PihcbiAgICA8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuICAgICAgICA8cGF0aCBkPVwiTTcgNWgyVjNIN3Yyem0wIDhoMnYtMkg3djJ6bTAgOGgydi0ySDd2MnptNC00aDJ2LTJoLTJ2MnptMCA0aDJ2LTJoLTJ2MnptLTggMGgydi0ySDN2MnptMC00aDJ2LTJIM3Yyem0wLTRoMnYtMkgzdjJ6bTAtNGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptOCA4aDJ2LTJoLTJ2MnptOCA0aDJ2LTJoLTJ2MnptMC00aDJ2LTJoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptLTggMGgyVjdoLTJ2MnptOC02djJoMlYzaC0yem0tOCAyaDJWM2gtMnYyem00IDE2aDJ2LTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptMC04aDJWM2gtMnYyelwiLz5cbiAgICAgICAgPHBhdGggZD1cIk01IDggbDQgNWw4IC04XCIgc3Ryb2tlPVwiYmx1ZVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlV2lkdGg9XCIzXCIvPlxuICAgIDwvU3ZnSWNvbj5cbilcblxuY29uc3QgSWNvblRhYmxlPSh7Y2hpbGRyZW4sIC4uLnByb3BzfSk9PihcbiAgICA8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuICAgICAgICA8cGF0aCBkPVwiTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0elwiLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgIDwvU3ZnSWNvbj5cbilcblxuY29uc3QgQj1wcm9wcz0+PHJlY3QgZmlsbD1cImJsdWVcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgey4uLnByb3BzfS8+XG5cbmNvbnN0IEljb25DZWxsPSh7Y2hpbGRyZW4sIC4uLnByb3BzfSk9PihcbiAgICA8SWNvblRhYmxlIHsuLi5wcm9wc30+XG4gICAgICAgIDxCIHg9XCI0XCIgeT1cIjEwXCIvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9JY29uVGFibGU+XG4pXG5cbmNvbnN0IEljb25Db2x1bW49KHtjaGlsZHJlbiwgLi4ucHJvcHN9KT0+KFxuICAgIDxJY29uVGFibGUgey4uLnByb3BzfT5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjRcIi8+XG4gICAgICAgIDxCIHg9XCIxMFwiIHk9XCIxMFwiLz5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjE2XCIvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9JY29uVGFibGU+XG4pXG5cbmNvbnN0IEljb25Sb3c9KHtjaGlsZHJlbiwgLi4ucHJvcHN9KT0+KFxuICAgIDxJY29uVGFibGUgey4uLnByb3BzfT5cbiAgICAgICAgPEIgeD1cIjRcIiB5PVwiMTBcIi8+XG4gICAgICAgIDxCIHg9XCIxMFwiIHk9XCIxMFwiLz5cbiAgICAgICAgPEIgeD1cIjE2XCIgeT1cIjEwXCIvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9JY29uVGFibGU+XG4pXG5cbmNvbnN0IEljb25XaG9sZVRhYmxlPSh7Y2hpbGRyZW4sIC4uLnByb3BzfSk9PihcbiAgICA8SWNvblRhYmxlIHsuLi5wcm9wc30+XG4gICAgICAgIDxCIHg9XCI0XCIgeT1cIjRcIi8+XG4gICAgICAgIDxCIHg9XCIxMFwiIHk9XCI0XCIvPlxuICAgICAgICA8QiB4PVwiMTZcIiB5PVwiNFwiLz5cblxuICAgICAgICA8QiB4PVwiNFwiIHk9XCIxMFwiLz5cbiAgICAgICAgPEIgeD1cIjEwXCIgeT1cIjEwXCIvPlxuICAgICAgICA8QiB4PVwiMTZcIiB5PVwiMTBcIi8+XG5cbiAgICAgICAgPEIgeD1cIjRcIiB5PVwiMTZcIi8+XG4gICAgICAgIDxCIHg9XCIxMFwiIHk9XCIxNlwiLz5cbiAgICAgICAgPEIgeD1cIjE2XCIgeT1cIjE2XCIvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9JY29uVGFibGU+XG4pXG5cbmNvbnN0IFg9KHtzaXplOnc9OCxwPSgyNC13KS8yLCAuLi5wcm9wc30pPT48cGF0aCBkPXtgTTAgMCBsJHt3fSAke3d9IE0wICR7d30gbCR7d30gLSR7d31gfSBzdHJva2U9XCJyZWRcIiBzdHJva2VXaWR0aD17Mn0gdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7cH0gJHtwfSlgfSB7Li4ucHJvcHN9Lz5cblxuXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7VG9vbGJhcixUYWJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgRGVzaWduIGZyb20gXCIuL2Rlc2lnblwiXG5leHBvcnQgZGVmYXVsdCBwcm9wcz0+KFxuXHQ8VGFiIGxhYmVsPVwiVGFibGVcIj5cblx0XHQ8VG9vbGJhcj48RGVzaWduLz48L1Rvb2xiYXI+XG5cdDwvVGFiPlxuKVxuIiwiaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLCBtYXBQcm9wc30gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7IFBvcG92ZXIsU3ViaGVhZGVyLCBUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgSWNvblRhYmxlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2JvcmRlci1hbGxcIlxuXG5pbXBvcnQge0FDVElPTiwgd2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IFNpemVJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL3NpemUtaWNvbi1idXR0b25cIlxuXG5leHBvcnQge2RlZmF1bHQgYXMgUmliYm9ufSBmcm9tIFwiLi9yaWJib25cIlxuXG5leHBvcnQgY29uc3QgQ3JlYXRlPXdoZW5TZWxlY3Rpb25DaGFuZ2UoKShjbGFzcyAgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRlPXtzaG93OmZhbHNlfVxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7c2VsZWN0aW9uLCBjaGlsZHJlbn09dGhpcy5wcm9wc1xuXHRcdGNvbnN0IHtzaG93LGFuY2hvcn09dGhpcy5zdGF0ZVxuXHRcdGxldCBzZXR0aW5nPW51bGxcblx0XHRpZihzZWxlY3Rpb24gJiYgc2hvdyl7XG5cdFx0XHRzZXR0aW5nPShcblx0XHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0XHRvcGVuPXt0cnVlfVxuXHRcdFx0XHRcdGFuY2hvckVsPXthbmNob3J9XG5cdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U9e2U9PnRoaXMuc2V0U3RhdGUoe3Nob3c6ZmFsc2V9KX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0PFNldHRpbmcgb25BY3Rpb249e2U9PnRoaXMuc2V0U3RhdGUoe3Nob3c6ZmFsc2V9KX0vPlxuXHRcdFx0XHQ8L1BvcG92ZXI+XG5cdFx0XHQpXG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8VG9vbGJhckdyb3VwPlxuXHRcdFx0XHQ8U2l6ZUljb25CdXR0b25cblx0XHRcdFx0XHRkaXNhYmxlZD17IXNlbGVjdGlvbn1cblx0XHRcdFx0XHRvbkNsaWNrPXtlPT50aGlzLnNldFN0YXRlKHtzaG93OiF0aGlzLnN0YXRlLnNob3csYW5jaG9yOmUudGFyZ2V0fSl9PlxuXHRcdFx0XHRcdDxJY29uVGFibGUvPlxuXHRcdFx0XHQ8L1NpemVJY29uQnV0dG9uPlxuXHRcdFx0XHR7c2V0dGluZ31cblx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0PC9Ub29sYmFyR3JvdXA+XG5cdFx0KVxuXHR9XG59KVxuXG5jbGFzcyBTZXR0aW5nIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7b25BY3Rpb259PXRoaXMucHJvcHNcblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdj5cblx0XHRcdFx0PFJDU2l6ZSBvbkFjdGlvbj17b25BY3Rpb259Lz5cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxufVxuXG5jb25zdCBSQ1NpemU9Y29tcG9zZShcblx0d2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuXHRtYXBQcm9wcygoe29uQWN0aW9uLHNlbGVjdGlvbixkaXNwYXRjaH0pPT4oe1xuXHRcdGNyZWF0ZShyb3dzLCBjb2wpe1xuXHRcdFx0bGV0IGxheW91dFdpZHRoPSgoKT0+e1xuXHRcdFx0XHRsZXQge2NvbHVtbj0wLGNvbHN9PXNlbGVjdGlvbi5wcm9wcyhcInBhZ2VcIilcblx0XHRcdFx0cmV0dXJuIGNvbHNbY29sdW1uXS53aWR0aFxuXHRcdFx0fSkoKTtcblxuXHRcdFx0bGV0IGNvbHM9bmV3IEFycmF5KGNvbC0xKS5maWxsKHBhcnNlSW50KGxheW91dFdpZHRoL2NvbCkpXG5cdFx0XHRjb2xzLnB1c2gobGF5b3V0V2lkdGgtY29scy5yZWR1Y2UoKHN1bSxhKT0+c3VtKz1hLDApKVxuXHRcdFx0bGV0IGVsZW1lbnQ9e3R5cGU6XCJ0YWJsZVwiLCByb3dzLCBjb2xzfVxuXHRcdFx0ZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5DUkVBVEUoZWxlbWVudCkpXG5cdFx0XHRvbkFjdGlvbigpXG5cdFx0fVxuXHR9KSlcbikoY2xhc3MgUkNTaXplIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0ZT17cm93OjAsY29sOjB9XG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtyb3csIGNvbH09dGhpcy5zdGF0ZVxuXHRcdGxldCB0aXRsZT1cIkluc2VydCBUYWJsZVwiXG5cdFx0aWYocm93KXtcblx0XHRcdHRpdGxlPWAke3Jvd314JHtjb2x9IFRhYmxlYFxuXHRcdH1cblxuXHRcdGNvbnN0IHRyPXRoaXMudHIuYmluZCh0aGlzKVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxTdWJoZWFkZXI+e3RpdGxlfTwvU3ViaGVhZGVyPlxuXHRcdFx0XHQ8dGFibGUgb25Nb3VzZU91dD17ZT0+dGhpcy5zZXRTdGF0ZSh7cm93OjAsY29sOjB9KX0+XG5cdFx0XHRcdFx0PHRib2R5PlxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHRcdHt0cigpfVxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHRcdHt0cigpfVxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0XHR7dHIoKX1cblx0XHRcdFx0XHRcdHt0cigpfVxuXHRcdFx0XHRcdFx0e3RyKCl9XG5cdFx0XHRcdFx0PC90Ym9keT5cblx0XHRcdFx0PC90YWJsZT5cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxuXG5cdHRyKCl7XG5cdFx0Y29uc3Qge2NyZWF0ZX09dGhpcy5wcm9wc1xuXHRcdGNvbnN0IHtyb3csIGNvbH09dGhpcy5zdGF0ZVxuXHRcdGNvbnN0IHRkPSgpPT4oPHRkXG5cdFx0XHRzdHlsZT17e3dpZHRoOjUsaGVpZ2h0OjUsYm9yZGVyOlwiMXB4IHNvbGlkIGdyYXlcIn19XG5cdFx0XHRvbkNsaWNrPXtlPT5jcmVhdGUocm93LGNvbCl9XG5cdFx0XHRvbk1vdXNlT3Zlcj17ZT0+dGhpcy5yb3dDb2woZS50YXJnZXQpfS8+KVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8dHI+XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0XHR7dGQoKX1cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0XHR7dGQoKX1cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0XHR7dGQoKX1cblx0XHRcdFx0e3RkKCl9XG5cdFx0XHRcdHt0ZCgpfVxuXHRcdFx0PC90cj5cblx0XHQpXG5cdH1cblxuXHRyb3dDb2wodGQpe1xuXHRcdGxldCB0cj10ZC5wYXJlbnROb2RlXG5cdFx0bGV0IHRib2R5PXRyLnBhcmVudE5vZGVcblx0XHRsZXQgcm93PS0xLCBjb2w9LTFcblx0XHRmb3IobGV0IGk9MCwgdHJzPXRib2R5LmNoaWxkcmVuLCBsZW49dHJzLmxlbmd0aDtpPGxlbjtpKyspe1xuXHRcdFx0aWYodHJzW2ldPT10cil7XG5cdFx0XHRcdHJvdz1pKzFcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IobGV0IGk9MCwgdGRzPXRyLmNoaWxkcmVuLCBsZW49dGRzLmxlbmd0aDtpPGxlbjtpKyspe1xuXHRcdFx0aWYodGRzW2ldPT10ZCl7XG5cdFx0XHRcdGNvbD1pKzFcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnNldFN0YXRlKHtyb3csIGNvbH0pXG5cdH1cbn0pXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZSxtYXBQcm9wc30gZnJvbSBcInJlY29tcG9zZVwiXG5pbXBvcnQge3doZW5TZWxlY3Rpb25DaGFuZ2V9IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IHtNZW51SXRlbSxTdmdJY29uLFRvb2xiYXJHcm91cH0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcbmltcG9ydCBEcm9wZG93bkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9kcm9wLWRvd24tYnV0dG9uXCJcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcbiAgICBzZXREaXNwbGF5TmFtZShcIlBpY3R1cmVTaXplXCIpLFxuICAgIHdoZW5TZWxlY3Rpb25DaGFuZ2UoKSxcbiAgICBtYXBQcm9wcygoe2Rpc3BhdGNofSk9PntcbiAgICB9KSxcbikoKHt9KT0+e1xuICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sYmFyR3JvdXA+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17e3doaXRlU3BhY2U6XCJub3dyYXBcIiwgbWFyZ2luTGVmdDoyLCBtYXJnaW5SaWd0aDoyfX0+XG4gICAgICAgICAgICAgICAgPHNwYW4+aGVpZ2h0PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3t3aGl0ZVNwYWNlOlwibm93cmFwXCIsIG1hcmdpbkxlZnQ6MiwgbWFyZ2luUmlndGg6Mn19PlxuICAgICAgICAgICAgICAgIDxzcGFuPndpZHRoPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L1Rvb2xiYXJHcm91cD5cbiAgICApXG59KSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCB7d2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQge01lbnVJdGVtLFN2Z0ljb24sVG9vbGJhckdyb3VwLCBTdWJoZWFkZXJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgRHJvcGRvd25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvblwiXG5pbXBvcnQgQ29sb3JCdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvY29sb3ItYnV0dG9uXCJcbmltcG9ydCBJY29uQ29sb3IgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9pbWFnZS9jb2xvci1sZW5zXCJcblxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxuICAgIHNldERpc3BsYXlOYW1lKFwiUGljdHVyZUJvcmRlclwiKSxcbiAgICB3aGVuU2VsZWN0aW9uQ2hhbmdlKCksXG4pKCh7fSk9PntcbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9vbGJhckdyb3VwPlxuICAgICAgICAgICAgPENvbG9yQnV0dG9uIGxhYmVsPVwiYm9yZGVyIGNvbG9yXCI+XG4gICAgICAgICAgICAgICAgPEljb25Db2xvci8+XG4gICAgICAgICAgICA8L0NvbG9yQnV0dG9uPlxuXG4gICAgICAgICAgICA8RHJvcGRvd25CdXR0b24gbGFiZWw9XCJib3JkZXIgY29sb3JcIj5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJhdXRvbWF0aWNcIj48L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIm5vIGNvbG9yXCI+PC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8U3ViaGVhZGVyPlRoZW1lIENvbG9yczwvU3ViaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPFN2Z0ljb24vPlxuICAgICAgICAgICAgICAgICAgICA8U3ZnSWNvbi8+XG4gICAgICAgICAgICAgICAgICAgIDxTdmdJY29uLz5cbiAgICAgICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDxTdWJoZWFkZXI+U3RhbmRhcmQgQ29sb3JzPC9TdWJoZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICA8U3ZnSWNvbi8+XG4gICAgICAgICAgICAgICAgICAgIDxTdmdJY29uLz5cbiAgICAgICAgICAgICAgICAgICAgPFN2Z0ljb24vPlxuICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICA8L1Rvb2xiYXJHcm91cD5cbiAgICApXG59KSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCB7d2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQge01lbnVJdGVtLFN2Z0ljb24sVG9vbGJhckdyb3VwLCBEaXZpZGVyfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2Ryb3AtZG93bi1idXR0b25cIlxuaW1wb3J0IEljb25Sb3RhdGUgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9pbWFnZS9yb3RhdGUtOTAtZGVncmVlcy1jY3dcIlxuaW1wb3J0IEljb25XcmFwIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvYWN0aW9uL3BpY3R1cmUtaW4tcGljdHVyZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG4gICAgc2V0RGlzcGxheU5hbWUoXCJQaWN0dXJlUG9zaXRpb25cIiksXG4gICAgd2hlblNlbGVjdGlvbkNoYW5nZSgpLFxuICAgIG1hcFByb3BzKCh7ZGlzcGF0Y2h9KT0+e1xuICAgIH0pLFxuKSgoe30pPT57XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xiYXJHcm91cD5cbiAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvbiBsYWJlbD1cIndyYXAgdGV4dFwiIGljb249ezxJY29uV3JhcC8+fT5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJJbiBMaW5lIHdpdGggVGV4dFwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyLz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJTcXVhcmVcIiBsZWZ0SWNvbj17PEljb25XcmFwLz59Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJUaWdodFwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlRocm91Z2hcIiBsZWZ0SWNvbj17PEljb25XcmFwLz59Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJUb3AgYW5kIEJvdHRvbVwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyLz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJCZWhpbmQgVGV4dFwiIGxlZnRJY29uPXs8SWNvbldyYXAvPn0vPlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkluIEZyb250IG9mIFRleHRcIiBsZWZ0SWNvbj17PEljb25XcmFwLz59Lz5cbiAgICAgICAgICAgICAgICA8RGl2aWRlci8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTW9yZSBMYXlvdXQgT3B0aW9ucy4uLlwiLz5cbiAgICAgICAgICAgIDwvRHJvcGRvd25CdXR0b24+XG5cbiAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvbiBsYWJlbD1cInJvdGF0ZVwiIGljb249ezxJY29uUm90YXRlLz59PlxuICAgICAgICAgICAgICAgIDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlJvdGF0ZSBSaWdodCA5MFwiIGxlZnRJY29uPXs8SWNvblJvdGF0ZSBkZWdyZWU9ezkwfS8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiUm90YXRlIExlZnQgOTBcIiBsZWZ0SWNvbj17PEljb25Sb3RhdGUgZGVncmVlPXstOTB9Lz59Lz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJGbGlwIFZlcnRpY2FsXCIgbGVmdEljb249ezxJY29uUm90YXRlIGRlZ3JlZT17MTgwfS8+fS8+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiRmxpcCBIb3Jpem9udGFsXCIgbGVmdEljb249ezxJY29uUm90YXRlIGRlZ3JlZT17LTE4MH0vPn0vPlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyLz5cbiAgICAgICAgICAgICAgICA8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJNb3JlIFJvdGF0aW9uIE9wdGlvbnMuLi5cIi8+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICA8L1Rvb2xiYXJHcm91cD5cbiAgICApXG59KSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLHNldERpc3BsYXlOYW1lLG1hcFByb3BzfSBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCB7d2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQge01lbnVJdGVtLFN1YmhlYWRlcixUb29sYmFyR3JvdXB9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5pbXBvcnQgRHJvcGRvd25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvblwiXG5pbXBvcnQgSWNvbkNvbG9yIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvaW1hZ2UvY29sb3ItbGVuc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG4gICAgc2V0RGlzcGxheU5hbWUoXCJQaWN0dXJlRWZmZWN0XCIpLFxuICAgIHdoZW5TZWxlY3Rpb25DaGFuZ2UoKSxcbiAgICBtYXBQcm9wcygoe2Rpc3BhdGNofSk9PntcbiAgICAgICAgcmV0dXJuIHtcblxuICAgICAgICB9XG4gICAgfSksXG4pKCh7fSk9PntcbiAgICByZXR1cm4gKFxuICAgICAgICA8VG9vbGJhckdyb3VwPlxuICAgICAgICAgICAgPERyb3Bkb3duQnV0dG9uIGxhYmVsPVwicGljdHVyZSBjb2xvclwiIGljb249ezxJY29uQ29sb3IvPn0+XG4gICAgICAgICAgICAgICAgPFN1YmhlYWRlcj5SZWNvbG9yPC9TdWJoZWFkZXI+XG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICA8L1Rvb2xiYXJHcm91cD5cbiAgICApXG59KSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtUb29sYmFyLFRvb2xiYXJHcm91cCxUYWJ9IGZyb20gXCJtYXRlcmlhbC11aVwiXG5cbmltcG9ydCBTaXplIGZyb20gXCIuL3NpemVcIlxuaW1wb3J0IEJvcmRlciBmcm9tIFwiLi9ib3JkZXJcIlxuaW1wb3J0IFBvc2l0aW9uIGZyb20gXCIuL3Bvc2l0aW9uXCJcbmltcG9ydCBFZmZlY3QgZnJvbSBcIi4vZWZmZWN0XCJcblxuZXhwb3J0IGRlZmF1bHQgKHtjaGlsZHJlbn0pPT4oXG5cdDxUYWIgbGFiZWw9XCJQaWN0dXJlIEZvcm1hdFwiPlxuXHRcdDxUb29sYmFyPlxuXHRcdFx0PFRvb2xiYXJHcm91cD5cblx0XHRcdFx0PEVmZmVjdC8+XG5cdFx0XHRcdDxCb3JkZXIvPlxuXHRcdFx0XHQ8UG9zaXRpb24vPlxuXHRcdFx0XHQ8U2l6ZS8+XHRcblx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0PC9Ub29sYmFyR3JvdXA+XG5cdFx0PC9Ub29sYmFyPlxuXHQ8L1RhYj5cbikiLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtjb21wb3NlLCBnZXRDb250ZXh0LCBtYXBQcm9wc30gZnJvbSBcInJlY29tcG9zZVwiXG5cbmltcG9ydCB7VG9vbGJhckdyb3VwfSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IEljb25QaWN0dXJlIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL2luc2VydC1waG90b1wiXG5cbmltcG9ydCBTaXplSWNvbkJ1dHRvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9zaXplLWljb24tYnV0dG9uXCJcbmltcG9ydCBzZWxlY3RGaWxlIGZyb20gXCIuLi9jb21wb25lbnRzL2ZpbGUtc2VsZWN0XCJcblxuaW1wb3J0IHtBQ1RJT04sIGNvbm5lY3R9IGZyb20gXCJ3ZS1lZGl0XCJcblxuZXhwb3J0IHtkZWZhdWx0IGFzIFJpYmJvbn0gZnJvbSBcIi4vcmliYm9uXCJcblxuZXhwb3J0IGNvbnN0IFRvb2xzPWNvbXBvc2UoXG5cdGNvbm5lY3QoKSxcblx0bWFwUHJvcHMoKHtjaGlsZHJlbixkaXNwYXRjaH0pPT4oe1xuXHRcdGNoaWxkcmVuLFxuXHRcdGluc2VydCh1cmwpe1xuXHRcdFx0ZmV0Y2godXJsKVxuXHRcdFx0XHQudGhlbihyZXM9Pntcblx0XHRcdFx0XHRpZighcmVzLm9rKXtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihyZXMuc3RhdHVzVGV4dClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHJlcy5hcnJheUJ1ZmZlcigpXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKGRhdGE9Pntcblx0XHRcdFx0XHRkYXRhPW5ldyBVaW50OEFycmF5KGRhdGEpXG5cdFx0XHRcdFx0ZGF0YS5jcmMzMj11cmxcblx0XHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURSh7dHlwZTpcImltYWdlXCIsZGF0YX0pKVxuXHRcdFx0XHR9KVxuXHRcdH1cblx0fSkpLFxuKSgoe2NoaWxkcmVuLCBpbnNlcnR9KT0+e1xuXHRyZXR1cm4gKFxuXHRcdDxUb29sYmFyR3JvdXA+XG5cdFx0XHQ8U2l6ZUljb25CdXR0b24gXG5cdFx0XHRcdG9uQ2xpY2s9e2U9PnNlbGVjdEZpbGUoXCJpbWFnZS8qXCIpLnRoZW4oaW5zZXJ0KX0+XG5cdFx0XHRcdDxJY29uUGljdHVyZS8+XG5cdFx0XHQ8L1NpemVJY29uQnV0dG9uPlxuXHRcdFx0XG5cdFx0XHR7Y2hpbGRyZW59XG5cdFx0PC9Ub29sYmFyR3JvdXA+XG5cdClcbn0pXG5cblxuXG4iLCJpbXBvcnQgUmVhY3Qse0ZyYWdtZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb21wb3NlLCBtYXBQcm9wcywgc2V0RGlzcGxheU5hbWV9IGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge1Rvb2xiYXJHcm91cCwgU3ZnSWNvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IE1lbnVJdGVtIGZyb20gJ21hdGVyaWFsLXVpL01lbnVJdGVtJ1xuaW1wb3J0IFN1YmhlYWRlciBmcm9tICdtYXRlcmlhbC11aS9TdWJoZWFkZXInXG5pbXBvcnQgRHJvcERvd25CdXR0b24gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcC1kb3duLWJ1dHRvblwiXG5pbXBvcnQgSWNvbkNoZWNrZWQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vZG9uZVwiXG5cbmltcG9ydCB7QUNUSU9OLHdoZW5TZWxlY3Rpb25DaGFuZ2V9IGZyb20gXCJ3ZS1lZGl0XCJcblxuZXhwb3J0IGNvbnN0IFRvb2xzPWNvbXBvc2UoXG5cdHNldERpc3BsYXlOYW1lKFwiUGFnZSBMYXlvdXRcIiksXG5cdHdoZW5TZWxlY3Rpb25DaGFuZ2UoKSxcblx0bWFwUHJvcHMoKHtjaGlsZHJlbixkaXNwYXRjaCxzZWxlY3Rpb259KT0+e1xuXHRcdGNvbnN0IHN0eWxlPXNlbGVjdGlvbiYmc2VsZWN0aW9uLnByb3BzKFwicGFnZVwiLGZhbHNlKXx8e31cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2hpbGRyZW4sXG5cdFx0XHRzdHlsZSxcblx0XHRcdGNyZWF0ZVNlY3Rpb24ocHJvcHM9e30pe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LkNSRUFURSh7Li4ucHJvcHMsdHlwZTpcInNlY3Rpb25cIix9KSlcblx0XHRcdH0sXG5cdFx0XHRjcmVhdGVQYWdlQnJlYWsoKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5DUkVBVEUoe3R5cGU6XCJwYWdlYnJlYWtcIix9KSlcblx0XHRcdH0sXG5cdFx0XHRsYW5kc2NhcGUoKXtcblx0XHRcdFx0ZGlzcGF0Y2goQUNUSU9OLkVudGl0eS5VUERBVEUoe3R5cGU6XCJzZWN0aW9uXCIsb3JpZW50YXRpb246XCJsYW5kc2NhcGVcIn0pKVxuXHRcdFx0fSxcblx0XHRcdHByb3RyYWl0KCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuVVBEQVRFKHt0eXBlOlwic2VjdGlvblwiLG9yaWVudGF0aW9uOlwicG9ydHJhaXRcIn0pKVxuXHRcdFx0fSxcblx0XHRcdG1hcmdpbiguLi5tYXJnaW4pe1xuXHRcdFx0XHRkaXNwYXRjaChBQ1RJT04uRW50aXR5LlVQREFURSh7dHlwZTpcInNlY3Rpb25cIixtYXJnaW59KSlcblx0XHRcdH0sXG5cdFx0XHRzaXplKHdpZHRoLGhlaWdodCl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuVVBEQVRFKHt0eXBlOlwic2VjdGlvblwiLHNpemU6e3dpZHRoLGhlaWdodH19KSlcblx0XHRcdH0sXG5cdFx0XHRjb2x1bW4oLi4uY29scyl7XG5cdFx0XHRcdGRpc3BhdGNoKEFDVElPTi5FbnRpdHkuVVBEQVRFKHt0eXBlOlwic2VjdGlvblwiLGNvbHN9KSlcblx0XHRcdH0sXG5cdFx0XHRzaXplRXF1YWwodyxoKXtcblx0XHRcdFx0Y29uc3Qgc2l6ZT1zdHlsZS5zaXplXG5cdFx0XHRcdHJldHVybiBzaXplICYmIE1hdGguYWJzKHNpemUud2lkdGgqaC1zaXplLmhlaWdodCp3KTwwLjFcblx0XHRcdH0sXG5cdFx0XHRtYXJnaW5FcXVhbCguLi5tYXJnaW5zKXtcblx0XHRcdFx0Y29uc3QgW3RvcCxyaWdodD10b3AsYm90dG9tPXRvcCxsZWZ0PXJpZ2h0XT1tYXJnaW5zXG5cdFx0XHRcdGNvbnN0IG1hcmdpbj1zdHlsZS5tYXJnaW5cblx0XHRcdFx0dmFyIGFcblx0XHRcdFx0cmV0dXJuIG1hcmdpbiAmJiBcblx0XHRcdFx0XHQoYT1wYXJzZUludChtYXJnaW4udG9wKjEwMC90b3ApKSAmJlxuXHRcdFx0XHRcdE1hdGguYWJzKGEtbWFyZ2luLnJpZ2h0KjEwMC9yaWdodCk8MSAmJlxuXHRcdFx0XHRcdE1hdGguYWJzKGEtbWFyZ2luLmJvdHRvbSoxMDAvYm90dG9tKTwxICYmXG5cdFx0XHRcdFx0TWF0aC5hYnMoYS1tYXJnaW4ubGVmdCoxMDAvbGVmdCk8MVxuXHRcdFx0fSxcblx0XHRcdGNvbHMobiwgZj1hPT5hKXtcblx0XHRcdFx0Y29uc3QgY29scz1zdHlsZS5jb2xzXG5cdFx0XHRcdHJldHVybiBjb2xzICYmIGNvbHMubGVuZ3RoPT1uICYmIGYoLi4uY29scy5tYXAoYT0+YS53aWR0aCkpXG5cdFx0XHR9XG5cdFx0fVxuXHR9KSxcbikoKHtjaGlsZHJlbiwgY3JlYXRlU2VjdGlvbixjcmVhdGVQYWdlQnJlYWssIG1hcmdpbiwgc2l6ZSwgY29sdW1uLCBsYW5kc2NhcGUscHJvdHJhaXQsIFxuXHRzaXplRXF1YWwsbWFyZ2luRXF1YWwsIGNvbHMsXG5cdHN0eWxlXG59KT0+e1xuXHRyZXR1cm4gKFxuXHRcdDxUb29sYmFyR3JvdXA+XHRcdFx0XG5cdFx0XHQ8RHJvcERvd25CdXR0b24gXG5cdFx0XHRcdGxhYmVsPVwiQnJlYWtzXCJcblx0XHRcdFx0dGl0bGU9XCJwYWdlIGJyZWFrc1wiXG5cdFx0XHRcdGljb249e1xuXHRcdFx0XHRcdDxTdmdJY29uPlxuXHRcdFx0XHRcdFx0PEljb25QYWdlIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIC0xMilcIi8+XG5cdFx0XHRcdFx0XHQ8bGluZSBzdHJva2VEYXNoYXJyYXk9XCIyXCIgc3Ryb2tlPVwiYmx1ZVwiIHgxPVwiMFwiIHgyPVwiMjRcIiB5MT1cIjEyXCIgeTI9XCIxMlwiIHN0cm9rZVdpZHRoPVwiMlwiLz5cblx0XHRcdFx0XHRcdDxJY29uUGFnZSB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAxMilcIi8+XG5cdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHR9PlxuXHRcdFx0XHQ8U3ViaGVhZGVyPlBhZ2UgQnJlYWtzPC9TdWJoZWFkZXI+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIlBhZ2VcIiBsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8U3ZnSWNvbj5cblx0XHRcdFx0XHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAtMTIpXCIvPlxuXHRcdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEgMTAgbDIgMmwtMiAyelwiIGZpbGw9XCJibHVlXCIvPlxuXHRcdFx0XHRcdFx0XHQ8SWNvbkJsYW5rIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDEyKVwiLz5cblx0XHRcdFx0XHRcdDwvU3ZnSWNvbj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b25DbGljaz17KCk9PmNyZWF0ZVBhZ2VCcmVhaygpfVx0XG5cdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJDb2x1bW5cIiBsZWZ0SWNvbj17XG5cdFx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTkgNyBsMCAxMCBNMTQgNyBsMCAxMFwiIHN0cm9rZURhc2hhcnJheT1cIjJcIiBzdHJva2U9XCJibHVlXCIgc3Ryb2tlV2lkdGg9XCIyXCIvPlxuXHRcdFx0XHRcdFx0PEljb25CbGFuayAvPlxuXHRcdFx0XHRcdFx0PHBhdGggZD1cIk04LjUgMTggaDMgdi0xMiBoMVwiIHN0cm9rZT1cInJlZFwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIvPlxuXHRcdFx0XHRcdDwvU3ZnSWNvbj5cblx0XHRcdFx0fS8+XG5cblx0XHRcdFx0PFN1YmhlYWRlcj5TZWN0aW9uIEJyZWFrczwvU3ViaGVhZGVyPlxuXHRcdFx0XHQ8TWVudUl0ZW0gXG5cdFx0XHRcdFx0cHJpbWFyeVRleHQ9XCJOZXh0IFBhZ2VcIiBcblx0XHRcdFx0XHRvbkNsaWNrPXtlPT5jcmVhdGVTZWN0aW9uKCl9XG5cdFx0XHRcdFx0bGVmdEljb249e1xuXHRcdFx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0XHRcdDxJY29uUGFnZSB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAtMTIpXCIvPlxuXHRcdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEgMTAgbDIgMmwtMiAyelwiIGZpbGw9XCJibHVlXCIvPlxuXHRcdFx0XHRcdFx0XHQ8SWNvblBhZ2UgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMTIpXCIvPlxuXHRcdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJDb250aW51b3VzXCIgXG5cdFx0XHRcdFx0bGVmdEljb249e1xuXHRcdFx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0XHRcdDxwYXRoIGQ9XCJNMTIgNiBsMCA1XCIgc3Ryb2tlRGFzaGFycmF5PVwiMVwiIHN0cm9rZT1cImxpZ2h0Ymx1ZVwiIHN0cm9rZVdpZHRoPVwiMTBcIi8+XG5cdFx0XHRcdFx0XHRcdDxJY29uQmxhbmsgLz5cblx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xIDEwIGwyIDJsLTIgMnpcIiBmaWxsPVwiYmx1ZVwiLz5cblx0XHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMiAxMiBsMCA1XCIgc3Ryb2tlRGFzaGFycmF5PVwiMVwiIHN0cm9rZT1cImJsdWVcIiBzdHJva2VXaWR0aD1cIjEwXCIvPlxuXHRcdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvbkNsaWNrPXtlPT5jcmVhdGVTZWN0aW9uKHtraW5kOlwiY29udGludW91c1wifSl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiRXZlbiBQYWdlXCIgXG5cdFx0XHRcdFx0bGVmdEljb249e1xuXHRcdFx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0XHRcdDxJY29uQmxhbmsgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgLTEyKVwiLz5cblx0XHRcdFx0XHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAxMilcIi8+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHg9XCIxMFwiIHk9XCI2XCIgZm9udFNpemU9XCI2XCIgZm9udEZhbWlseT1cImFyaWFsXCIgc3Ryb2tlPVwiYmx1ZVwiPjI8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHg9XCIxMFwiIHk9XCIyMlwiIGZvbnRTaXplPVwiNlwiIGZvbnRGYW1pbHk9XCJhcmlhbFwiIHN0cm9rZT1cImJsdWVcIj40PC90ZXh0PlxuXHRcdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvbkNsaWNrPXtlPT5jcmVhdGVTZWN0aW9uKHtraW5kOlwiZXZlblBhZ2VcIn0pfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIk9kZCBQYWdlXCIgXG5cdFx0XHRcdFx0bGVmdEljb249e1xuXHRcdFx0XHRcdFx0PFN2Z0ljb24+XG5cdFx0XHRcdFx0XHRcdDxJY29uQmxhbmsgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgLTEyKVwiLz5cblx0XHRcdFx0XHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAxMilcIi8+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHg9XCIxMFwiIHk9XCI2XCIgZm9udFNpemU9XCI2XCIgZm9udEZhbWlseT1cImFyaWFsXCIgc3Ryb2tlPVwiYmx1ZVwiPjE8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdDx0ZXh0IHg9XCIxMFwiIHk9XCIyMlwiIGZvbnRTaXplPVwiNlwiIGZvbnRGYW1pbHk9XCJhcmlhbFwiIHN0cm9rZT1cImJsdWVcIj4zPC90ZXh0PlxuXHRcdFx0XHRcdFx0PC9TdmdJY29uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvbkNsaWNrPXtlPT5jcmVhdGVTZWN0aW9uKHtraW5kOlwib2RkUGFnZVwifSl9Lz5cdFx0XG5cdFx0XHQ8L0Ryb3BEb3duQnV0dG9uPlxuXHRcdFx0XG5cdFx0XHQ8RHJvcERvd25CdXR0b24gXG5cdFx0XHRcdGxhYmVsPVwiTWFyZ2luc1wiXG5cdFx0XHRcdHRpdGxlPVwicGFnZSBtYXJnaW5cIlxuXHRcdFx0XHRpY29uPXs8SWNvbk1hcmdpbi8+fT5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTm9ybWFsXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXttYXJnaW5FcXVhbCgyLjU0KSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8SWNvbk1hcmdpbi8+fSBvbkNsaWNrPXtlPT5tYXJnaW4oMi41NCl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTmFycm93XCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXttYXJnaW5FcXVhbCgxLjI3KSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbi8+fW9uQ2xpY2s9e2U9Pm1hcmdpbigxLjI3KX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJNb2RlcmF0ZVwiIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17bWFyZ2luRXF1YWwoMi41NCwxLjkxKSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbi8+fW9uQ2xpY2s9e2U9Pm1hcmdpbigyLjU0LDEuOTEpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIldpZGVcIiBcblx0XHRcdFx0XHRyaWdodEljb249e21hcmdpbkVxdWFsKDIuNTQsNS4wOCkgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17PFN2Z0ljb24vPn1vbkNsaWNrPXtlPT5tYXJnaW4oMi41NCw1LjA4KX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJNaXJyb3JlZFwiIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17bWFyZ2luRXF1YWwoMi41NCwyLjU0LDIuNTQsMy4xOCkgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17PFN2Z0ljb24vPn0gb25DbGljaz17ZT0+bWFyZ2luKDIuNTQsMi41NCwyLjU0LDMuMTgpfS8+XHRcblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiQ3VzdG9tIE1hcmdpbnMuLi5cIiBsZWZ0SWNvbj17PFN2Z0ljb24vPn0gLz5cdFx0XHRcdFx0XG5cdFx0XHQ8L0Ryb3BEb3duQnV0dG9uPlxuXHRcdFx0XG5cdFx0XHQ8RHJvcERvd25CdXR0b24gXG5cdFx0XHRcdGxhYmVsPVwiT3JpZW50YXRpb25cIlxuXHRcdFx0XHR0aXRsZT1cInBhZ2Ugb3JpZW50YXRpb25cIlxuXHRcdFx0XHRpY29uPXs8SWNvbk9yaWVudGF0aW9uLz59PlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJQb3J0cmFpdFwiIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17c3R5bGUuc2l6ZSAmJiBzdHlsZS5zaXplLndpZHRoPHN0eWxlLnNpemUuaGVpZ2h0ID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uIGNoaWxkcmVuPXs8SWNvbkJsYW5rLz59Lz59IG9uQ2xpY2s9e3Byb3RyYWl0fS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkxhbmRzY2FwZVwiICBcblx0XHRcdFx0XHRyaWdodEljb249e3N0eWxlLnNpemUgJiYgc3R5bGUuc2l6ZS53aWR0aD5zdHlsZS5zaXplLmhlaWdodCA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbiAgY2hpbGRyZW49ezxJY29uQmxhbmsgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI1IDApIHJvdGF0ZSg5MClcIiAvPn0gLz59IG9uQ2xpY2s9e2xhbmRzY2FwZX0vPlxuXHRcdFx0PC9Ecm9wRG93bkJ1dHRvbj5cblx0XHRcdFxuXHRcdFx0PERyb3BEb3duQnV0dG9uIFxuXHRcdFx0XHRsYWJlbD1cIlNpemVcIlxuXHRcdFx0XHR0aXRsZT1cInBhZ2Ugc2l6ZVwiXG5cdFx0XHRcdGljb249ezxJY29uU2l6ZS8+fT5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTGV0dGVyXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtzaXplRXF1YWwoMjEuNTksMjcuOTQpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uLz59IG9uQ2xpY2s9e2U9PnNpemUoMjEuNTksMjcuOTQpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkxlZ2FsXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtzaXplRXF1YWwoMjEuNTksMzUuNTYpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249ezxTdmdJY29uLz59IG9uQ2xpY2s9e2U9PnNpemUoMjEuNTksMzUuNTYpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIkEzXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtzaXplRXF1YWwoMjkuNyw0Mi4wMSkgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17PFN2Z0ljb24vPn0gb25DbGljaz17ZT0+c2l6ZSgyOS43LDQyLjAxKX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJBNFwiIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17c2l6ZUVxdWFsKDIwLjk5LCAyOS43KSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXs8U3ZnSWNvbi8+fSAgb25DbGljaz17ZT0+c2l6ZSgyMC45OSwgMjkuNyl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTW9yZSBQYXBlciBTaXplcy4uLlwiICBsZWZ0SWNvbj17PFN2Z0ljb24vPn0gLz5cblx0XHRcdDwvRHJvcERvd25CdXR0b24+XG5cdFx0XHRcblx0XHRcdDxEcm9wRG93bkJ1dHRvbiBcblx0XHRcdFx0bGFiZWw9XCJDb2x1bW5zXCJcblx0XHRcdFx0dGl0bGU9XCJwYWdlIGNvbHVtblwiXG5cdFx0XHRcdGljb249ezxJY29uQ29sdW1uIGNoaWxkcmVuPXtcblx0XHRcdFx0XHQ8RnJhZ21lbnQ+XG5cdFx0XHRcdFx0XHQ8Q29sdW1uLz5cblx0XHRcdFx0XHRcdDxDb2x1bW4gdHJhbnNmb3JtPVwidHJhbnNsYXRlKDcgMClcIi8+XG5cdFx0XHRcdFx0PC9GcmFnbWVudD5cblx0XHRcdFx0fS8+fT5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiMVwiIFxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17Y29scygxKSA/IGNoZWNrZWQgOiBudWxsfVxuXHRcdFx0XHRcdGxlZnRJY29uPXtcblx0XHRcdFx0XHRcdDxJY29uQ29sdW1uPlxuXHRcdFx0XHRcdFx0XHQ8Q29sdW1uIGQ9XCJNMTIgNi41djEyXCIgc3Ryb2tlV2lkdGg9XCIxMlwiLz5cblx0XHRcdFx0XHRcdDwvSWNvbkNvbHVtbj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b25DbGljaz17ZT0+Y29sdW1uKDEpfS8+XG5cdFx0XHRcdDxNZW51SXRlbSBwcmltYXJ5VGV4dD1cIjJcIlxuXHRcdFx0XHRcdHJpZ2h0SWNvbj17Y29scygyLCAoYSxiKT0+YT09YikgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8SWNvbkNvbHVtbj5cblx0XHRcdFx0XHRcdFx0PENvbHVtbi8+XG5cdFx0XHRcdFx0XHRcdDxDb2x1bW4gdHJhbnNmb3JtPVwidHJhbnNsYXRlKDcgMClcIi8+XG5cdFx0XHRcdFx0XHQ8L0ljb25Db2x1bW4+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNvbHVtbigyKX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCIzXCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtjb2xzKDMpID8gY2hlY2tlZCA6IG51bGx9XG5cdFx0XHRcdFx0bGVmdEljb249e1xuXHRcdFx0XHRcdFx0PEljb25Db2x1bW4+XG5cdFx0XHRcdFx0XHRcdDxDb2x1bW4gc3Ryb2tlV2lkdGg9XCIzXCIvPlxuXHRcdFx0XHRcdFx0XHQ8Q29sdW1uIHN0cm9rZVdpZHRoPVwiM1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzLjUgMClcIi8+XG5cdFx0XHRcdFx0XHRcdDxDb2x1bW4gc3Ryb2tlV2lkdGg9XCIzXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDcgMClcIi8+XG5cdFx0XHRcdFx0XHQ8L0ljb25Db2x1bW4+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNvbHVtbigzKX0vPlxuXHRcdFx0XHQ8TWVudUl0ZW0gcHJpbWFyeVRleHQ9XCJMZWZ0XCIgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtjb2xzKDIsKGEsYik9PmE8YikgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8SWNvbkNvbHVtbj5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiBzdHJva2VXaWR0aD1cIjNcIi8+XG5cdFx0XHRcdFx0XHRcdDxDb2x1bW4gc3Ryb2tlV2lkdGg9XCI3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDYgMClcIi8+XG5cdFx0XHRcdFx0XHQ8L0ljb25Db2x1bW4+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9uQ2xpY2s9e2U9PmNvbHVtbigxLDIpfS8+XHRcblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiUmlnaHRcIiAgXG5cdFx0XHRcdFx0cmlnaHRJY29uPXtjb2xzKDIsKGEsYik9PmE+YikgPyBjaGVja2VkIDogbnVsbH1cblx0XHRcdFx0XHRsZWZ0SWNvbj17XG5cdFx0XHRcdFx0XHQ8SWNvbkNvbHVtbj5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiBzdHJva2VXaWR0aD1cIjdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMSAwKVwiLz5cblx0XHRcdFx0XHRcdFx0PENvbHVtbiBzdHJva2VXaWR0aD1cIjNcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNyAwKVwiLz5cblx0XHRcdFx0XHRcdDwvSWNvbkNvbHVtbj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b25DbGljaz17ZT0+Y29sdW1uKDIsMSl9Lz5cblx0XHRcdFx0PE1lbnVJdGVtIHByaW1hcnlUZXh0PVwiTW9yZSBDb2x1bW5zLi4uXCIgbGVmdEljb249ezxTdmdJY29uLz59IC8+XHRcdFx0XHRcdFxuXHRcdFx0PC9Ecm9wRG93bkJ1dHRvbj5cblx0XHRcdHtjaGlsZHJlbn1cblx0XHQ8L1Rvb2xiYXJHcm91cD5cblx0KVxufSlcbmNvbnN0IGNoZWNrZWQ9PEljb25DaGVja2VkLz5cblxuY29uc3QgSWNvblBhZ2U9cHJvcHM9PjxwYXRoIHsuLi5wcm9wc30gZD1cIk04IDE2aDh2Mkg4em0wLTRoOHYySDh6bTYtMTBINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em00IDE4SDZWNGg3djVoNXYxMXpcIi8+XG5jb25zdCBJY29uQmxhbms9cHJvcHM9PjxwYXRoIHsuLi5wcm9wc30gZD1cIk0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6TTYgMjBWNGg3djVoNXYxMUg2elwiLz5cblxuY29uc3QgQ29sdW1uPXByb3BzPT48cGF0aCBkPVwiTTguNSA2LjV2MTJcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImJsdWVcIiBzdHJva2VXaWR0aD1cIjVcIiBzdHJva2VEYXNoYXJyYXk9XCIxLjVcIiB7Li4ucHJvcHN9Lz5cbmNvbnN0IEljb25Db2x1bW49KHtzaXplPTIwLCBkPSgyNC1zaXplKS8yLCBjaGlsZHJlbiwuLi5wcm9wc30pPT4oXG5cdDxTdmdJY29uIHsuLi5wcm9wc30+XG5cdFx0PHBhdGggZD1cIk00IDJoMTZ2MjBINHpcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImJsYWNrXCIvPlxuXHRcdHtjaGlsZHJlbn1cblx0PC9TdmdJY29uPlxuKVxuXG5jb25zdCBJY29uU2l6ZT0oKT0+KFxuXHQ8U3ZnSWNvbj5cblx0XHQ8SWNvbkJsYW5rIHRyYW5zZm9ybT1cInNjYWxlKDAuNikgdHJhbnNsYXRlKDEwLDEwKVwiLz5cbiAgICBcdDxwYXRoIGQ9XCJNOSAzIHYzdi0xLjUgaDEwdi0xLjV2M1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiYmx1ZVwiLz5cblx0XHQ8cGF0aCBkPVwiTTkgMyB2M3YtMS41IGgxMHYtMS41djNcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImJsdWVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoOS41IC0xKSByb3RhdGUoOTApXCIvPlxuXHQ8L1N2Z0ljb24+XG4pXG5cbmNvbnN0IEljb25PcmllbnRhdGlvbj1wcm9wcz0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxnIHRyYW5zZm9ybT1cInNjYWxlKDAuOCkgdHJhbnNsYXRlKDQgNClcIj5cblx0XHRcdDxJY29uQmxhbmsgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zIC0xKSBzY2FsZSgwLjkpXCIvPlxuXHRcdFx0PEljb25CbGFuayB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjQgNC41KSBzY2FsZSgwLjkpIHJvdGF0ZSg5MClcIi8+XG5cdFx0PC9nPlxuXHQ8L1N2Z0ljb24+XG4pXG5cbmNvbnN0IEljb25NYXJnaW49KHtjaGlsZHJlbiwgLi4ucHJvcHN9KT0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxwYXRoIGQ9XCJNNCAyaDE2djIwSDR6XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJibGFja1wiLz5cblx0XHRcblx0XHR7Y2hpbGRyZW4gfHwgXG5cdFx0XHQ8RnJhZ21lbnQ+XG5cdFx0XHRcdDxILz5cblx0XHRcdFx0PEggdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEwIDApXCIvPlxuXHRcdFx0XHQ8Vi8+XG5cdFx0XHRcdDxWIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDE0KVwiLz5cblx0XHRcdDwvRnJhZ21lbnQ+XG5cdFx0fVxuXHQ8L1N2Z0ljb24+XG4pXG5cbmNvbnN0IEg9cHJvcHM9PjxwYXRoIGQ9XCJNNyAyLjUgdjE5XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJibHVlXCIgey4uLnByb3BzfS8+XG5jb25zdCBWPXByb3BzPT48cGF0aCBkPVwiTTQuNSA1IGgxNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiYmx1ZVwiIHsuLi5wcm9wc30vPiIsImltcG9ydCBSZWFjdCwge0ZyYWdtZW50LENoaWxkcmVufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQge3doZW5TZWxlY3Rpb25DaGFuZ2V9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZSxnZXRDb250ZXh0LHNldFN0YXRpYyxicmFuY2gscmVuZGVyTm90aGluZ30gIGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge1Rvb2xiYXIgYXMgVG9vbGJhcjAsVG9vbGJhclNlcGFyYXRvciBhcyBUb29sYmFyU2VwYXJhdG9yMCwgVGFicywgVGFifSBmcm9tIFwibWF0ZXJpYWwtdWlcIlxuaW1wb3J0IE11aVRoZW1lUHJvdmlkZXIgZnJvbSAnbWF0ZXJpYWwtdWkvc3R5bGVzL011aVRoZW1lUHJvdmlkZXInXG5pbXBvcnQgZ2V0TXVpVGhlbWUgZnJvbSAnbWF0ZXJpYWwtdWkvc3R5bGVzL2dldE11aVRoZW1lJ1xuXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcbmltcG9ydCBQYXJhZ3JhcGggZnJvbSBcIi4vcGFyYWdyYXBoXCJcbmltcG9ydCBGaWxlIGZyb20gXCIuL2ZpbGVcIlxuaW1wb3J0IEhpc3RvcnkgZnJvbSBcIi4vaGlzdG9yeVwiXG5pbXBvcnQgQ2xpcGJvYXJkIGZyb20gXCIuL2NsaXBib2FyZFwiXG5cbmltcG9ydCAqIGFzIFRhYmxlIGZyb20gXCIuL3RhYmxlXCJcbmltcG9ydCAqIGFzIFBpY3R1cmUgZnJvbSBcIi4vcGljdHVyZVwiXG5pbXBvcnQgKiBhcyBMYXlvdXQgZnJvbSBcIi4vbGF5b3V0XCJcbmltcG9ydCB7Q2hlY2tJY29uQnV0dG9uLERyb3BEb3duQnV0dG9ufSBmcm9tIFwiLi9jb21wb25lbnRzXCJcblxuY29uc3QgVG9vbGJhcj1wcm9wcz0+PFRvb2xiYXIwIHN0eWxlPXt7anVzdGlmeUNvbnRlbnQ6XCJpbml0aWFsXCJ9fSB7Li4ucHJvcHN9Lz5cbmNvbnN0IFRvb2xiYXJTZXBhcmF0b3I9cHJvcHM9PjxUb29sYmFyU2VwYXJhdG9yMCBzdHlsZT17e21hcmdpblJpZ2h0OjIsIG1hcmdpbkxlZnQ6Mn19IHsuLi5wcm9wc30vPlxuY29uc3QgTm9UYWJJZk9ubHkxPSh7Y2hpbGRyZW46dGFifSk9Pntcblx0Y29uc3QgY29udGVudD1DaGlsZHJlbi50b0FycmF5KHRhYi5wcm9wcy5jaGlsZHJlbikuZmlsdGVyKGE9PiEhYSlcblx0aWYoY29udGVudC5sZW5ndGg+MSl7XG5cdFx0Y29uc3QgdGFicz1jb250ZW50LmZpbHRlcihhPT5hLnR5cGU9PVRhYilcblx0XHRpZih0YWJzLmxlbmd0aD09Mil7XG5cdFx0XHRyZXR1cm4gPEZyYWdtZW50Pnt0YWJzWzBdLnByb3BzLmNoaWxkcmVufTwvRnJhZ21lbnQ+XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0YWJcbn1cbmNvbnN0IFJpYmJvbj1jb21wb3NlKFxuXHRzZXREaXNwbGF5TmFtZShcIlJpYmJvblwiKSxcblx0Z2V0Q29udGV4dCh7bXVpVGhlbWU6UHJvcFR5cGVzLm9iamVjdCxzZWxlY3Rpb246UHJvcFR5cGVzLm9iamVjdH0pLFxuXHR3aGVuU2VsZWN0aW9uQ2hhbmdlKClcbikoKHtjaGlsZHJlbiwgc2VsZWN0aW9uLFxuXHRtdWlUaGVtZSxcblx0YnV0dG9uU3R5bGU9e2hlaWdodDoyNCwgZm9udFNpemU6MTAsIGxpbmVIZWlnaHQ6XCIyNHB4XCIsIHBhZGRpbmdSaWdodDo1LCAgcGFkZGluZ0xlZnQ6NX0sXG5cdHRhYlN0eWxlPXt3aWR0aDpcImF1dG9cIn0sXG5cdHN0eWxlLFxuXHRjb21tYW5kcz17bGF5b3V0OmZhbHNlfVxuXHR9KT0+e1xuXHRcdGxldCB7aG9tZSxpbnNlcnQsbGF5b3V0LHdoZW59PVwiaG9tZSxpbnNlcnQsbGF5b3V0LHdoZW5cIi5zcGxpdChcIixcIikucmVkdWNlKChtZXJnZWQsayk9Pntcblx0XHRcdFx0aWYoY29tbWFuZHNba10gIHx8IGNvbW1hbmRzW2tdPT09dW5kZWZpbmVkKXtcblx0XHRcdFx0XHRpZih0eXBlb2YoY29tbWFuZHNba10pPT1cIm9iamVjdFwiKXtcblx0XHRcdFx0XHRcdG1lcmdlZFtrXT17Li4ubWVyZ2VkW2tdLCAuLi5jb21tYW5kc1trXX1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoaz09XCJ3aGVuXCIpe1xuXHRcdFx0XHRcdFx0aWYoIXNlbGVjdGlvbil7XG5cdFx0XHRcdFx0XHRcdG1lcmdlZFtrXT1udWxsXG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0bGV0IHdoZW49bWVyZ2VkLndoZW5cblx0XHRcdFx0XHRcdFx0bWVyZ2VkLndoZW49T2JqZWN0LmtleXMod2hlbilcblx0XHRcdFx0XHRcdFx0XHQucmVkdWNlKChjb2xsZWN0ZWQsdHlwZSk9Pntcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBzdHlsZT1zZWxlY3Rpb24ucHJvcHModHlwZSlcblx0XHRcdFx0XHRcdFx0XHRcdGlmKHN0eWxlKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHBsdWdpbnM9d2hlblt0eXBlXS50eXBlKHtzdHlsZSxzZWxlY3Rpb259KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZihBcnJheS5pc0FycmF5KHBsdWdpbnMpKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2xsZWN0ZWQ9Wy4uLmNvbGxlY3RlZCwgLi4ucGx1Z2luc11cblx0XHRcdFx0XHRcdFx0XHRcdFx0fWVsc2UgaWYocGx1Z2lucyl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sbGVjdGVkLnB1c2gocGx1Z2lucylcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGNvbGxlY3RlZFxuXHRcdFx0XHRcdFx0XHRcdH0sW10pXG5cdFx0XHRcdFx0XHRcdFx0Lm1hcChhPT5SZWFjdC5jbG9uZUVsZW1lbnQoYSx7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGtleTphLnByb3BzLmxhYmVsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25TdHlsZTp7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4uKGEucHJvcHMuYnV0dG9uU3R5bGV8fHt9KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5idXR0b25TdHlsZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6XCJhbnRpcXVld2hpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZTp7Li4uKGEucHJvcHMudGFiU3R5bGV8fHt9KSwuLi50YWJTdHlsZSwgbWFyZ2luUmlnaHQ6Mn1cblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0bWVyZ2VkW2tdPWNvbW1hbmRzW2tdXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG1lcmdlZFxuXHRcdFx0fSx7XG5cdFx0XHRob21lOntcblx0XHRcdFx0ZmlsZTogPEZpbGU+PFRvb2xiYXJTZXBhcmF0b3IvPjwvRmlsZT4sXG5cdFx0XHRcdGNsaXBib2FyZDo8Q2xpcGJvYXJkPjxUb29sYmFyU2VwYXJhdG9yLz48L0NsaXBib2FyZD4sXG5cdFx0XHRcdGhpc3Rvcnk6IDxIaXN0b3J5PjxUb29sYmFyU2VwYXJhdG9yLz48L0hpc3Rvcnk+LFxuXHRcdFx0XHR0ZXh0OiA8VGV4dD48VG9vbGJhclNlcGFyYXRvci8+PC9UZXh0Pixcblx0XHRcdFx0cGFyYWdyYXBoOiA8UGFyYWdyYXBoPjxUb29sYmFyU2VwYXJhdG9yLz48L1BhcmFncmFwaD5cblx0XHRcdH0sXG5cdFx0XHRpbnNlcnQ6e1xuXHRcdFx0XHR0YWJsZTo8VGFibGUuQ3JlYXRlPjxUb29sYmFyU2VwYXJhdG9yLz48L1RhYmxlLkNyZWF0ZT4sXG5cdFx0XHRcdHBpY3R1cmU6PFBpY3R1cmUuVG9vbHM+PFRvb2xiYXJTZXBhcmF0b3IvPjwvUGljdHVyZS5Ub29scz4sXG5cdFx0XHR9LFxuXHRcdFx0bGF5b3V0Ontcblx0XHRcdFx0YmFzaWM6PExheW91dC5Ub29scy8+XG5cdFx0XHR9LFxuXHRcdFx0d2hlbjp7XG5cdFx0XHRcdHRhYmxlOjxUYWJsZS5SaWJib24vPixcblx0XHRcdFx0aW1hZ2U6IDxQaWN0dXJlLlJpYmJvbi8+LFxuXHRcdFx0fVxuXHRcdH0pXG5cdHJldHVybiAoXG5cdFx0PGRpdiBzdHlsZT17e2hlaWdodDoyNCszMCwgYm9yZGVyQm90dG9tOlwiMC41cHggc29saWQgbGlnaHRncmF5XCIsbWFyZ2luQm90dG9tOjEscGFkZGluZ0JvdHRvbTo0LCAuLi5zdHlsZX19PlxuXHRcdFx0PE11aVRoZW1lUHJvdmlkZXIgbXVpVGhlbWU9e2dldE11aVRoZW1lKG11aVRoZW1lLHtcblx0XHRcdFx0c2l6ZUljb25CdXR0b246e1xuXHRcdFx0XHRcdHNpemU6MjQsXG5cdFx0XHRcdFx0cGFkZGluZzo0LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21ib0JveDp7XG5cdFx0XHRcdFx0aGVpZ2h0OjI0LFxuXHRcdFx0XHRcdHRleHRGaWVsZFN0eWxlOntcblx0XHRcdFx0XHRcdGZvbnRTaXplOjEyXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRtZW51Ontcblx0XHRcdFx0XHRcdHN0eWxlOntvdmVyZmxvd1g6XCJoaWRkZW5cIn0sXG5cdFx0XHRcdFx0XHRtZW51SXRlbVN0eWxlOnttaW5IZWlnaHQ6XCIyNHB4XCIsIGxpbmVIZWlnaHQ6XCIyNHB4XCIsIGZvbnRTaXplOjEyfVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0dG9vbGJhcjp7XG5cdFx0XHRcdFx0aGVpZ2h0OjMwXG5cdFx0XHRcdH1cblx0XHRcdFx0fSl9PlxuXHRcdFx0XHQ8VGFic1xuXHRcdFx0XHRcdGNvbnRlbnRDb250YWluZXJTdHlsZT17e2hlaWdodDozMH19XG5cdFx0XHRcdFx0aW5rQmFyU3R5bGU9e3tkaXNwbGF5Olwibm9uZVwifX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0e2hvbWUgJiYgPFRhYiBsYWJlbD1cIkhvbWVcIiBidXR0b25TdHlsZT17YnV0dG9uU3R5bGV9IHN0eWxlPXt0YWJTdHlsZX0+XG5cdFx0XHRcdFx0XHQ8VG9vbGJhcj5cblx0XHRcdFx0XHRcdFx0e2hvbWUuZmlsZX1cblxuXHRcdFx0XHRcdFx0XHR7aG9tZS5jbGlwYm9hcmR9XG5cblx0XHRcdFx0XHRcdFx0e2hvbWUuaGlzdG9yeX1cblxuXHRcdFx0XHRcdFx0XHR7aG9tZS50ZXh0fVxuXG5cdFx0XHRcdFx0XHRcdHtob21lLnBhcmFncmFwaH1cblxuXHRcdFx0XHRcdFx0XHR7aG9tZS5tb3JlfVxuXHRcdFx0XHRcdFx0PC9Ub29sYmFyPlxuXHRcdFx0XHRcdDwvVGFiPn1cblx0XHRcdFx0XHR7aW5zZXJ0ICYmIDxUYWIgbGFiZWw9XCJJbnNlcnRcIiAgYnV0dG9uU3R5bGU9e2J1dHRvblN0eWxlfSBzdHlsZT17dGFiU3R5bGV9PlxuXHRcdFx0XHRcdFx0PFRvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdHtpbnNlcnQudGFibGV9XG5cdFx0XHRcdFx0XHRcdHtpbnNlcnQucGljdHVyZX1cblx0XHRcdFx0XHRcdFx0e2luc2VydC5tb3JlfVxuXHRcdFx0XHRcdFx0PC9Ub29sYmFyPlxuXHRcdFx0XHRcdDwvVGFiPn1cblxuXHRcdFx0XHRcdHtsYXlvdXQgJiYgPFRhYiBsYWJlbD1cIlBhZ2UgTGF5b3V0XCIgIGJ1dHRvblN0eWxlPXtidXR0b25TdHlsZX0gc3R5bGU9e3RhYlN0eWxlfT5cblx0XHRcdFx0XHRcdDxUb29sYmFyPlxuXHRcdFx0XHRcdFx0XHR7bGF5b3V0LmJhc2ljfVxuXHRcdFx0XHRcdFx0XHR7bGF5b3V0Lm1vcmV9XG5cdFx0XHRcdFx0XHQ8L1Rvb2xiYXI+XG5cdFx0XHRcdFx0PC9UYWI+fVxuXHRcdFx0XHRcdHtSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKS5tYXAoYT0+UmVhY3QuY2xvbmVFbGVtZW50KGEse2J1dHRvblN0eWxlLCBzdHlsZTp0YWJTdHlsZSxrZXk6YS5wcm9wcy5sYWJlbH0pKX1cblx0XHRcdFx0XHR7d2hlbn1cblx0XHRcdFx0XHQ8VGFiIGxhYmVsPVwiYmVhdXRpZmllclwiXG5cdFx0XHRcdFx0XHRidXR0b25TdHlsZT17YnV0dG9uU3R5bGV9XG5cdFx0XHRcdFx0XHRzdHlsZT17e3Zpc2liaWxpdHk6XCJoaWRkZW5cIiwgZmxleDpcIjEgMTAwJVwiLC4uLnRhYlN0eWxlfX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvVGFicz5cblx0XHRcdDwvTXVpVGhlbWVQcm92aWRlcj5cblx0XHQ8L2Rpdj5cblx0KVxufSlcblxuZXhwb3J0IGRlZmF1bHQgUmliYm9uXG5cbmV4cG9ydCB7UmliYm9uLCBUZXh0LCBQYXJhZ3JhcGgsRmlsZSxIaXN0b3J5LFRhYmxlLFBpY3R1cmUsTGF5b3V0LCBUb29sYmFyLCBUb29sYmFyU2VwYXJhdG9yLCBUYWJzLCBUYWIsIENoZWNrSWNvbkJ1dHRvbixEcm9wRG93bkJ1dHRvbn1cbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb3ZhYmxlIGV4dGVuZHMgQ29tcG9uZW50e1xyXG5cdHN0YXRlPXttb3ZlOmZhbHNlfVxyXG5cdGNoYW5naW5nPXt9XHJcblx0cmVuZGVyKCl7XHJcblx0XHRjb25zdCB7bW92ZSwgeDAseTAseCx5fT10aGlzLnN0YXRlXHJcblx0XHRjb25zdCB7Y2hhbmdpbmd9PXRoaXNcclxuXHRcdGxldCB7b25Nb3ZlPWE9Pm51bGwsIGNoaWxkcmVufT10aGlzLnByb3BzXHJcblx0XHRcclxuXHRcdGxldCBvdmVybGF5PW51bGxcclxuXHRcdGlmKG1vdmUpe1xyXG5cdFx0XHRvdmVybGF5PTxPdmVybGF5IG9uTW91c2VVcD17ZT0+dGhpcy5vbkVuZE1vdmUoZSl9IG9uTW91c2VNb3ZlPXtlPT50aGlzLm1vdmUoZSl9Lz5cclxuXHRcdFx0Y2hpbGRyZW49UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7Li4uY2hhbmdpbmcsIG9uTW91c2VVcDplPT50aGlzLm9uRW5kTW92ZShlKX0pXHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0Y2hpbGRyZW49UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XHJcblx0XHRcdFx0b25Nb3VzZURvd246ZT0+dGhpcy5vblN0YXJ0TW92ZShlKSxcclxuXHRcdFx0fSlcclxuXHRcdH1cclxuXHRcdHJldHVybiAoXHJcblx0XHRcdDxGcmFnbWVudD5cclxuXHRcdFx0XHR7b3ZlcmxheX1cclxuXHRcdFx0XHR7Y2hpbGRyZW59XHJcblx0XHRcdDwvRnJhZ21lbnQ+XHJcblx0XHQpXHJcblx0fVxyXG5cdFxyXG5cdG9uU3RhcnRNb3ZlKGUpe1xyXG5cdFx0bGV0IHg9ZS5jbGllbnRYLHk9ZS5jbGllbnRZXHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7bW92ZTp0cnVlLHgwOngsIHkwOnkseCx5fSlcclxuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgIH1cclxuXHJcbiAgICBvbkVuZE1vdmUoZSl7XHJcbiAgICAgICAgbGV0IHt4MCx5MCx4LHl9PXRoaXMuc3RhdGVcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHttb3ZlOmZhbHNlfSxhPT57XHJcblx0XHRcdHRoaXMucHJvcHMub25BY2NlcHQgJiYgdGhpcy5wcm9wcy5vbkFjY2VwdCh4LXgwLCB5LXkwKVxyXG4gICAgICAgIH0pXHJcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICB9XHJcblxyXG4gICAgbW92ZShlKXtcclxuXHRcdHRoaXMuc2V0U3RhdGUoe3g6ZS5jbGllbnRYLCB5OmUuY2xpZW50WX0pXHJcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICB9XHJcblx0XHJcblx0c2hvdWxkQ29tcG9uZW50VXBkYXRlKHtvbk1vdmV9LHttb3ZlLHgwLHgsIHkwLCB5fSl7XHJcblx0XHRpZihtb3ZlICYmIG9uTW92ZSl7XHJcblx0XHRcdHRoaXMuY2hhbmdpbmc9b25Nb3ZlKHgteDAseS15MClcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnByb3BzIT1hcmd1bWVudHNbMF0gfHwgdGhpcy5zdGF0ZSE9YXJndW1lbnRzWzFdXHJcblx0fVxyXG59XHJcblxyXG5jb25zdCBPdmVybGF5PXByb3BzPT48ZGl2IHsuLi5wcm9wc30gc3R5bGU9e3twb3NpdGlvbjpcImZpeGVkXCIsIGxlZnQ6MCwgdG9wOjAsIHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixjdXJzb3I6XCJkZWZhdWx0XCJ9fS8+IiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge29ubHlVcGRhdGVGb3JLZXlzfSBmcm9tIFwicmVjb21wb3NlXCJcbmltcG9ydCB7U3ZnSWNvbn0gZnJvbSBcIm1hdGVyaWFsLXVpXCJcblxuaW1wb3J0IE1vdmFibGUgZnJvbSBcIi4uL2NvbXBvbmVudHMvbW92YWJsZVwiXG5cbmV4cG9ydCBkZWZhdWx0IG9ubHlVcGRhdGVGb3JLZXlzKFwid2lkdGgsc2NhbGUsbGVmdE1hcmdpbixyaWdodE1hcmdpbixmaXJzdExpbmUsbGVmdEluZGVudCxjbSxzdGVwXCIuc3BsaXQoXCIsXCIpKSgoXG5cdHt3aWR0aD0wLHNjYWxlPTEsXG5cdGxlZnRNYXJnaW49MywgcmlnaHRNYXJnaW49Mywgc2V0TGVmdE1hcmdpbiwgc2V0UmlnaHRNYXJnaW4sXG5cdGZpcnN0TGluZT0wLCBsZWZ0SW5kZW50PTAsIHJpZ2h0SW5kZW50PTAsIHNldEZpcnN0TGluZSwgc2V0TGVmdEluZGVudCwgc2V0UmlnaHRJbmRlbnQsXG5cdGNtPXNjYWxlKjk2LzIuNTQsIHN0ZXA9Y20vOCwgdHJpbT0oeCxkeCk9Pk1hdGhbZHg+MCA/ICdjZWlsJyA6ICdmbG9vciddKCh4K2R4KS9zdGVwKSpzdGVwXG5cdH0pPT57XG5cdFx0bGV0IGZsPW51bGxcblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJydWxlciBob3Jpem9udGFsXCIgc3R5bGU9e3t3aWR0aDp3aWR0aCpzY2FsZSxwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fT5cblx0XHRcdFx0PFNjYWxlIHsuLi57d2lkdGg6d2lkdGgqc2NhbGUsZnJvbTpsZWZ0TWFyZ2luKnNjYWxlLGNtfX0vPlxuXG5cdFx0XHRcdHshIXdpZHRoICYmICg8TWFyZ2luIHN0eWxlPXt7cG9zaXRpb246XCJhYnNvbHV0ZVwiLCB0b3A6MCxsZWZ0OjAsd2lkdGg6bGVmdE1hcmdpbipzY2FsZX19IG9uTW92ZT17c2V0TGVmdE1hcmdpbn0vPil9XG5cblx0XHRcdFx0eyEhd2lkdGggJiYgKDxNb3ZhYmxlIHJlZj17YT0+Zmw9YX1cblx0XHRcdFx0XHRvbkFjY2VwdD17ZHg9PnNldEZpcnN0TGluZSgodHJpbSgobGVmdEluZGVudCtmaXJzdExpbmUpKnNjYWxlLGR4KS1sZWZ0SW5kZW50KnNjYWxlKS9zY2FsZSl9XG5cdFx0XHRcdFx0b25Nb3ZlPXtkeD0+KHtzdHlsZTp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLCB0b3A6MCxsZWZ0OmxlZnRNYXJnaW4qc2NhbGUrdHJpbSgobGVmdEluZGVudCtmaXJzdExpbmUpKnNjYWxlLGR4KX19KX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0PEZpcnN0TGluZSBzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIiwgdG9wOjAsbGVmdDoobGVmdE1hcmdpbitsZWZ0SW5kZW50K2ZpcnN0TGluZSkqc2NhbGV9fS8+XG5cdFx0XHRcdDwvTW92YWJsZT4pfVxuXG5cdFx0XHRcdHshIXdpZHRoICYmICg8TW92YWJsZVxuXHRcdFx0XHRcdG9uQWNjZXB0PXtkeD0+e1xuXHRcdFx0XHRcdFx0Zmwuc2V0U3RhdGUoe21vdmU6ZmFsc2V9KVxuXHRcdFx0XHRcdFx0c2V0TGVmdEluZGVudCh0cmltKGxlZnRJbmRlbnQqc2NhbGUsZHgpL3NjYWxlKVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0b25Nb3ZlPXtkeD0+e1xuXHRcdFx0XHRcdFx0Zmwuc2V0U3RhdGUoe21vdmU6dHJ1ZSx4MDowLHkwOjAseDpkeCx5OjB9KVxuXHRcdFx0XHRcdFx0cmV0dXJuIHtzdHlsZTp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLCB0b3A6MCxsZWZ0OmxlZnRNYXJnaW4qc2NhbGUrdHJpbShsZWZ0SW5kZW50KnNjYWxlLGR4KX19XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0PEluZGVudCBzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIiwgdG9wOjAsbGVmdDoobGVmdE1hcmdpbitsZWZ0SW5kZW50KSpzY2FsZX19Lz5cblx0XHRcdFx0PC9Nb3ZhYmxlPil9XG5cblx0XHRcdFx0eyEhd2lkdGggJiYgKDxNYXJnaW4gc3R5bGU9e3twb3NpdGlvbjpcImFic29sdXRlXCIsIHRvcDowLHJpZ2h0OjAsd2lkdGg6cmlnaHRNYXJnaW4qc2NhbGV9fSBvbk1vdmU9e3NldFJpZ2h0TWFyZ2lufS8+KX1cblxuXHRcdFx0XHR7ISF3aWR0aCAmJiAoPE1vdmFibGVcblx0XHRcdFx0XHRvbkFjY2VwdD17ZHg9PnNldFJpZ2h0SW5kZW50KHRyaW0ocmlnaHRJbmRlbnQqc2NhbGUsLWR4KS9zY2FsZSl9XG5cdFx0XHRcdFx0b25Nb3ZlPXtkeD0+KHtzdHlsZTp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLCB0b3A6MCxyaWdodDpyaWdodE1hcmdpbipzY2FsZSt0cmltKHJpZ2h0SW5kZW50KnNjYWxlLC1keCl9fSl9XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdDxJbmRlbnQgc3R5bGU9e3twb3NpdGlvbjpcImFic29sdXRlXCIsIHRvcDowLHJpZ2h0OihyaWdodE1hcmdpbityaWdodEluZGVudCkqc2NhbGV9fS8+XG5cdFx0XHRcdDwvTW92YWJsZT4pfVxuXHRcdFx0PC9kaXY+XG5cdFx0KVxufSlcblxuY29uc3QgQVQ9KHN0eWxlLGtleXM9T2JqZWN0LmtleXMoc3R5bGUpKT0+XCJsZWZ0LHJpZ2h0XCIuc3BsaXQoXCIsXCIpLmZpbmQoYT0+a2V5cy5pbmNsdWRlcyhhKSlcblxuY29uc3QgTWFyZ2luPSh7c3R5bGUsIG9uTW92ZSwgYXQ9QVQoc3R5bGUpfSk9Pihcblx0PGRpdiBjbGFzc05hbWU9e2BtYXJnaW4gJHthdH1gfSBzdHlsZT17c3R5bGV9IHRpdGxlPXtgJHthdH0gTWFyZ2luYH0+XG5cdFx0PGRpdiBjbGFzc05hbWU9XCJtb3ZlclwiLz5cblx0PC9kaXY+XG4pXG5cbmNvbnN0IEluZGVudD0oe3N0eWxlLGF0PUFUKHN0eWxlKSwgLi4ucHJvcHN9KT0+KFxuXHQ8ZGl2IGNsYXNzTmFtZT17YGluZGVudCAke2F0fWB9IHN0eWxlPXtzdHlsZX0gdGl0bGU9e2Ake2F0fSBJbmRlbnRgfSB7Li4ucHJvcHN9PlxuXHRcdDxNYXJrZXIvPlxuXHQ8L2Rpdj5cbilcblxuY29uc3QgRmlyc3RMaW5lPXByb3BzPT4oXG5cdDxkaXYgY2xhc3NOYW1lPVwiZmlyc3QtbGluZSBsZWZ0XCIgey4uLnByb3BzfSB0aXRsZT1cIkZpcnN0IExpbmUgSW5kZW50XCI+XG5cdFx0PE1hcmtlciBkaXJlY3Rpb249XCJib3R0b21cIi8+XG5cdDwvZGl2PlxuKVxuXG5jb25zdCBNYXJrZXI9KHtkaXJlY3Rpb249XCJ0b3BcIixkZWdzPXtib3R0b206MTgwfSwgLi4ucHJvcHN9KT0+KFxuXHQ8U3ZnSWNvbiB7Li4ucHJvcHN9PlxuXHRcdDxwYXRoIHRyYW5zZm9ybT17YHJvdGF0ZSgke2RlZ3NbZGlyZWN0aW9uXXx8MH0gMTIgMTIpYH1cblx0XHRcdGQ9XCJNMTEuNSAwIEwyMyAxMS41IEwyMyAyMyBMMCAyMyBMMCAxMS41WlwiIGZpbGw9XCJ3aGl0ZVwiIHN0cm9rZVdpZHRoPVwiMVwiIHN0cm9rZT1cImdyYXlcIi8+XG5cdDwvU3ZnSWNvbj5cbilcblxuY29uc3QgU2NhbGU9KHt3aWR0aCxoZWlnaHQ9MjAsZnJvbSxjbSwgY2hpbGRyZW59KT0+KFxuXHQ8c3ZnIHN0eWxlPXt7d2lkdGg6d2lkdGgsaGVpZ2h0LGJhY2tncm91bmRDb2xvcjpcIndoaXRlXCJ9fVxuXHRcdHZpZXdCb3g9e2AwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YH0gPlxuXHRcdDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke2Zyb219IDApYH0+XG5cdFx0e1xuXHRcdFx0bmV3IEFycmF5KE1hdGguY2VpbChmcm9tL2NtKSkuZmlsbCgwKVxuXHRcdFx0XHQubWFwKChhLGkpPT48Q00gY209e2NtfSBrZXk9ey1pfSBpPXstaS0xfS8+KVxuXHRcdH1cblx0XHQ8L2c+XG5cdFx0PGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7ZnJvbX0gMClgfT5cblx0XHR7XG5cdFx0XHRuZXcgQXJyYXkoTWF0aC5jZWlsKCh3aWR0aC1mcm9tKS9jbSkpLmZpbGwoMClcblx0XHRcdFx0Lm1hcCgoYSxpKT0+PENNIGNtPXtjbX0ga2V5PXtpfSBpPXtpfS8+KVxuXHRcdH1cblx0XHQ8L2c+XG5cdFx0e2NoaWxkcmVufVxuXHQ8L3N2Zz5cbilcblxuXG5cbmNvbnN0IENNPSh7aSxjbSxudGg9TWF0aC5hYnMoaSsxKX0pPT4oXG5cdDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke2kqY219IDApYH0+XG5cdFx0PGxpbmUgeDE9ezEqY20vNH0geTE9ezh9IHgyPXsxKmNtLzR9IHkyPXsxMn0gc3Ryb2tlPVwibGlnaHRncmF5XCIgc3Ryb2tlV2lkdGg9ezF9Lz5cblx0XHQ8bGluZSB4MT17MipjbS80fSB5MT17Nn0geDI9ezIqY20vNH0geTI9ezE0fSBzdHJva2U9XCJsaWdodGdyYXlcIiBzdHJva2VXaWR0aD17MX0gLz5cblx0XHQ8bGluZSB4MT17MypjbS80fSB5MT17OH0geDI9ezMqY20vNH0geTI9ezEyfSBzdHJva2U9XCJsaWdodGdyYXlcIiBzdHJva2VXaWR0aD17MX0gLz5cblx0XHR7bnRoIT0wID8gPHRleHQgeD17Y219IHk9ezEzfSB0ZXh0QW5jaG9yPVwibWlkZGxlXCI+e250aH08L3RleHQ+IDogbnVsbH1cblx0PC9nPlxuKVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge29ubHlVcGRhdGVGb3JLZXlzfSBmcm9tIFwicmVjb21wb3NlXCJcblxuZXhwb3J0IGRlZmF1bHQgb25seVVwZGF0ZUZvcktleXMoWydoZWlnaHQnLCdmb290ZXInLFwiaGVhZGVyXCIsJ3NjYWxlJywndG9wTWFyZ2luJywnYm90dG9tTWFyZ2luJyxdKShcblx0KHtoZWlnaHQ9MCwgZm9vdGVyPTAsIGhlYWRlcj0wLCBzY2FsZT0xLFxuXHR0b3BNYXJnaW49MywgYm90dG9tTWFyZ2luPTMsXG5cdHNldFRvcE1hcmdpbiwgc2V0Qm90dG9tTWFyZ2luLFxuXHR9KT0+KFxuXHQ8ZGl2IGNsYXNzTmFtZT1cInJ1bGVyIHZlcnRpY2FsXCI+XG5cdFx0PFNjYWxlIHsuLi57aGVpZ2h0OmhlaWdodCpzY2FsZSxmcm9tOnRvcE1hcmdpbipzY2FsZSwgY206c2NhbGUqOTYvMi41NH19Lz5cblx0XHR7ISFoZWlnaHQgJiYgPE1hcmdpbiBzdHlsZT17e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6MCwgbGVmdDowLCBoZWlnaHQ6dG9wTWFyZ2luKnNjYWxlfX0gb25Nb3ZlPXtzZXRUb3BNYXJnaW59Lz59XG5cdFx0eyEhaGVpZ2h0ICYmIDxNYXJnaW4gc3R5bGU9e3twb3NpdGlvbjpcImFic29sdXRlXCIsIGJvdHRvbTowLCBsZWZ0OjAsIGhlaWdodDpib3R0b21NYXJnaW4qc2NhbGV9fSBvbk1vdmU9e3NldEJvdHRvbU1hcmdpbn0vPn1cblx0PC9kaXY+XG4pKVxuXG5cbmNvbnN0IEFUPShzdHlsZSxrZXlzPU9iamVjdC5rZXlzKHN0eWxlKSk9PlwidG9wLGJvdHRvbVwiLnNwbGl0KFwiLFwiKS5maW5kKGE9PmtleXMuaW5jbHVkZXMoYSkpXG5cbmNvbnN0IE1hcmdpbj0oe3N0eWxlLCBvbk1vdmUsIGF0PUFUKHN0eWxlKX0pPT4oXG5cdDxkaXYgY2xhc3NOYW1lPXtgbWFyZ2luICR7YXR9YH0gc3R5bGU9e3N0eWxlfSB0aXRsZT17YCR7YXR9IE1hcmdpbmB9PlxuXHRcdDxkaXYgY2xhc3NOYW1lPVwibW92ZXJcIi8+XG5cdDwvZGl2PlxuKVxuXG5jb25zdCBTY2FsZT0oe3dpZHRoPTIwLGhlaWdodCxmcm9tLGNtPTk2LzIuNTQsIHNjYWxlfSk9Pihcblx0PHN2ZyBzdHlsZT17e3dpZHRoLGhlaWdodCxiYWNrZ3JvdW5kQ29sb3I6XCJ3aGl0ZVwifX1cblx0XHR2aWV3Qm94PXtgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWB9ID5cblx0XHQ8ZyB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoMCAke2Zyb219KWB9PlxuXHRcdHtcblx0XHRcdG5ldyBBcnJheShNYXRoLmNlaWwoZnJvbS9jbSkpLmZpbGwoMClcblx0XHRcdFx0Lm1hcCgoYSxpKT0+PENNIGNtPXtjbX0ga2V5PXstaX0gaT17LWktMX0vPilcblx0XHR9XG5cdFx0PC9nPlxuXHRcdDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgwICR7ZnJvbX0pYH0+XG5cdFx0e1xuXHRcdFx0bmV3IEFycmF5KE1hdGguY2VpbCgoaGVpZ2h0LWZyb20pL2NtKSkuZmlsbCgwKVxuXHRcdFx0XHQubWFwKChhLGkpPT48Q00gY209e2NtfSBrZXk9e2l9IGk9e2l9Lz4pXG5cdFx0fVxuXHRcdDwvZz5cblxuXHQ8L3N2Zz5cbilcblxuXG5cbmNvbnN0IENNPSh7aSxjbSxudGg9TWF0aC5hYnMoaSsxKX0pPT4oXG5cdDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgwICR7aSpjbX0pYH0+XG5cdFx0PGxpbmUgeTE9ezEqY20vNH0geDE9ezh9IHkyPXsxKmNtLzR9IHgyPXsxMn0gc3Ryb2tlPVwibGlnaHRncmF5XCIgc3Ryb2tlV2lkdGg9ezF9Lz5cblx0XHQ8bGluZSB5MT17MipjbS80fSB4MT17Nn0geTI9ezIqY20vNH0geDI9ezE0fSBzdHJva2U9XCJsaWdodGdyYXlcIiBzdHJva2VXaWR0aD17MX0gLz5cblx0XHQ8bGluZSB5MT17MypjbS80fSB4MT17OH0geTI9ezMqY20vNH0geDI9ezEyfSBzdHJva2U9XCJsaWdodGdyYXlcIiBzdHJva2VXaWR0aD17MX0gLz5cblx0XHR7bnRoIT0wID8gPHRleHQgeT17Y219IHg9ezEzfSB0ZXh0QW5jaG9yPVwibWlkZGxlXCI+e250aH08L3RleHQ+IDogbnVsbH1cblx0PC9nPlxuKVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCB7Y29tcG9zZSxzZXREaXNwbGF5TmFtZSx3aXRoUHJvcHN9IGZyb20gXCJyZWNvbXBvc2VcIlxuXG5pbXBvcnQge0FDVElPTiwgd2hlblNlbGVjdGlvbkNoYW5nZX0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQgSG9yaXpvbnRhbFJ1bGVyIGZyb20gXCIuL2hvcml6b250YWxcIlxuaW1wb3J0IFZlcnRpY2FsUnVsZXIgZnJvbSBcIi4vdmVydGljYWxcIlxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXG5cdHNldERpc3BsYXlOYW1lKFwiUnVsZXJcIiksXG5cdHdoZW5TZWxlY3Rpb25DaGFuZ2UoKSxcblx0d2l0aFByb3BzKCh7ZGlzcGF0Y2h9KT0+KHtcblx0XHRzZXRMZWZ0TWFyZ2luKGxlZnQpe1xuXHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3NlY3Rpb246e3BnTWFyOntsZWZ0fX19KSlcblx0XHR9LFxuXHRcdHNldFJpZ2h0TWFyZ2luKHJpZ2h0KXtcblx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtzZWN0aW9uOntwZ01hcjp7cmlnaHR9fX0pKVxuXHRcdH0sXG5cdFx0c2V0Qm90dG9tTWFyZ2luKGJvdHRvbSl7XG5cdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7c2VjdGlvbjp7cGdNYXI6e2JvdHRvbX19fSkpXG5cdFx0fSxcblx0XHRzZXRUb3BNYXJnaW4odG9wKXtcblx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtzZWN0aW9uOntwZ01hcjp7dG9wfX19KSlcblx0XHR9LFxuXHRcdHNldEZpcnN0TGluZShmaXJzdExpbmUpe1xuXHRcdFx0ZGlzcGF0Y2goQUNUSU9OLlNlbGVjdGlvbi5VUERBVEUoe3BhcmFncmFwaDp7aW5kZW50OntmaXJzdExpbmV9fX0pKVxuXHRcdH0sXG5cdFx0c2V0TGVmdEluZGVudChsZWZ0KXtcblx0XHRcdGRpc3BhdGNoKEFDVElPTi5TZWxlY3Rpb24uVVBEQVRFKHtwYXJhZ3JhcGg6e2luZGVudDp7bGVmdH19fSkpXG5cdFx0fSxcblx0XHRzZXRSaWdodEluZGVudChyaWdodCl7XG5cdFx0XHRkaXNwYXRjaChBQ1RJT04uU2VsZWN0aW9uLlVQREFURSh7cGFyYWdyYXBoOntpbmRlbnQ6e3JpZ2h0fX19KSlcblx0XHR9XG5cdH0pKSxcblx0d2l0aFByb3BzKCh7c2VsZWN0aW9ufSk9Pntcblx0XHRsZXQge1xuXHRcdFx0XHR3aWR0aCxoZWlnaHQsXG5cdFx0XHRcdG1hcmdpbjp7XG5cdFx0XHRcdFx0bGVmdDpsZWZ0TWFyZ2luLHRvcDp0b3BNYXJnaW4scmlnaHQ6cmlnaHRNYXJnaW4sYm90dG9tOmJvdHRvbU1hcmdpbixcblx0XHRcdFx0XHRoZWFkZXIsZm9vdGVyLFxuXHRcdFx0XHR9PXt9LFxuXHRcdFx0XHRjb2xzPVt7eDpsZWZ0TWFyZ2luLHdpZHRoOndpZHRoLWxlZnRNYXJnaW4tcmlnaHRNYXJnaW59XVxuXHRcdFx0fT0oc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5wcm9wcyhcImxheW91dFwiKXx8e30pXG5cblx0XHRsZXQge1xuXHRcdFx0aW5kZW50OntsZWZ0OmxlZnRJbmRlbnQscmlnaHQ6cmlnaHRJbmRlbnQsZmlyc3RMaW5lfT17fVxuXHRcdH09KHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucHJvcHMoXCJwYXJhZ3JhcGhcIixmYWxzZSl8fHt9KVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHdpZHRoLGhlaWdodCxsZWZ0TWFyZ2luLHRvcE1hcmdpbixib3R0b21NYXJnaW4scmlnaHRNYXJnaW4sbGVmdEluZGVudCxyaWdodEluZGVudCxmaXJzdExpbmUsXG5cdFx0XHRjb2xzLFxuXHRcdFx0aGVhZGVyLGZvb3RlclxuXHRcdH1cblx0fSksXG4pKCh7ZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiLCBSdWxlcj1kaXJlY3Rpb249PVwiaG9yaXpvbnRhbFwiID8gSG9yaXpvbnRhbFJ1bGVyIDogVmVydGljYWxSdWxlciwgLi4ucHJvcHN9KT0+KFxuXHQ8UnVsZXIgey4uLnByb3BzfS8+XG4pKVxuIiwiaW1wb3J0IFJlYWN0LHtDb21wb25lbnR9IGZyb20gIFwicmVhY3RcIlxyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcclxuaW1wb3J0IHtjb25uZWN0LHdoZW5TZWxlY3Rpb25DaGFuZ2UsIGdldFVJfSBmcm9tIFwid2UtZWRpdFwiXHJcbmltcG9ydCB7Y29tcG9zZSwgc2V0RGlzcGxheU5hbWV9IGZyb20gXCJyZWNvbXBvc2VcIlxyXG5cclxuaW1wb3J0IFJ1bGVyIGZyb20gXCIuL3J1bGVyXCJcclxuaW1wb3J0IHtnZXRPZmZpY2V9IGZyb20gXCIuL3N0YXRlL2FjdGlvblwiXHJcblxyXG52YXIgdXVpZD0wXHJcbmNvbnN0IFZlcnRpY2FsUnVsZXI9Y29tcG9zZShcclxuXHRzZXREaXNwbGF5TmFtZShcIlZlcnRpY2FsUnVsZXJcIiksXHJcblx0d2hlblNlbGVjdGlvbkNoYW5nZSgoe3NlbGVjdGlvbn0pPT57XHJcblx0XHRpZihzZWxlY3Rpb24pe1xyXG5cdFx0XHRsZXQgcHJvcHM9c2VsZWN0aW9uLnByb3BzKFwicGFnZVwiLGZhbHNlKVxyXG5cdFx0XHRpZihwcm9wcyl7XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdHBhZ2VZOnByb3BzLnBhZ2VZXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSlcclxuKSgoe3BhZ2VZPTAsIHNjYWxlLCAuLi5wcm9wc30pPT57XHJcblx0cmV0dXJuIChcclxuXHRcdDxkaXYgc3R5bGU9e3twb3NpdGlvbjpcInJlbGF0aXZlXCIsdG9wOnBhZ2VZKnNjYWxlfX0+XHJcblx0XHRcdDxSdWxlciBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiIHsuLi5wcm9wc30gc2NhbGU9e3NjYWxlfS8+XHJcblx0XHQ8L2Rpdj5cclxuXHQpXHJcbn0pXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlPT4oe3NjYWxlOmdldE9mZmljZShzdGF0ZSkuc2NhbGV9KSkoXHJcbmNsYXNzIENhbnZhcyBleHRlbmRzIENvbXBvbmVudHtcclxuXHRjb25zdHJ1Y3Rvcigpe1xyXG5cdFx0c3VwZXIoLi4uYXJndW1lbnRzKVxyXG5cdFx0dGhpcy51aWQ9dXVpZCsrXHJcblx0XHR0aGlzLnN0YXRlPXt9XHJcblx0fVxyXG5cclxuXHRyZW5kZXIoKXtcclxuXHRcdGNvbnN0IHtzY2FsZT0xMDAscnVsZXI9e3ZlcnRpY2FsOnRydWV9LCBzdHlsZT17fSwgY2hpbGRyZW59PXRoaXMucHJvcHNcclxuXHRcdGNvbnN0IHtlcnJvcn09dGhpcy5zdGF0ZVxyXG5cdFx0Y29uc3QgaG9yaXpvbnRhbFJ1bGVySGVpZ2h0PTIwXHJcblx0XHRjb25zdCBpZD1gY2FudmFzJHt0aGlzLnVpZH1gXHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHQ8ZGl2IGlkPXtpZH0gc3R5bGU9e3tcclxuXHRcdFx0XHRcdG92ZXJmbG93OlwiYXV0b1wiLCBmbGV4OlwiMSAxMDAlXCIsXHJcblx0XHRcdFx0XHRvdmVyZmxvd1k6XCJzY3JvbGxcIixcclxuXHRcdFx0XHRcdC4uLnN0eWxlLFxyXG5cdFx0XHRcdFx0ZGlzcGxheTpcImZsZXhcIiwgZmxleERpcmVjdGlvbjpcInJvd1wiXHJcblx0XHRcdFx0fX0+XHJcblx0XHRcdFx0PFBpbGNyb3cgY2FudmFzSWQ9e2lkfS8+XHJcblx0XHRcdFx0e3J1bGVyICYmIHJ1bGVyLnZlcnRpY2FsIT09ZmFsc2UgJiYgKFxyXG5cdFx0XHRcdFx0PGRpdiBzdHlsZT17e2ZsZXg6MSwgcGFkZGluZ1RvcDpob3Jpem9udGFsUnVsZXJIZWlnaHR9fT5cclxuXHRcdFx0XHRcdFx0PFZlcnRpY2FsUnVsZXIgc2NhbGU9e3NjYWxlLzEwMH0gLz5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdCl9XHJcblx0XHRcdFx0PGRpdiBzdHlsZT17e2ZsZXg6XCIxIDEwMCVcIiwgZGlzcGxheTpcImZsZXhcIiwgZmxleERpcmVjdGlvbjpcImNvbHVtblwifX0+XHJcblx0XHRcdFx0XHQ8ZGl2IHN0eWxlPXt7ZmxleDpcIjEgMTAwJVwiLHRleHRBbGlnbjpcImNlbnRlclwifX0+XHJcblx0XHRcdFx0XHRcdHtydWxlciAmJiAoXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBzdHlsZT17e3Bvc2l0aW9uOlwic3RpY2t5XCIsdG9wOjB9fT5cclxuXHRcdFx0XHRcdFx0XHRcdDxSdWxlciBkaXJlY3Rpb249XCJob3Jpem9udGFsXCIgc2NhbGU9e3NjYWxlLzEwMH0vPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQpfVxyXG5cdFx0XHRcdFx0XHR7ZXJyb3IgPyAgZXJyb3Iuc3RhY2sgOiBjaGlsZHJlbn1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQpXHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKXtcclxuXHRcdHJldHVybiB7ZXJyb3J9XHJcblx0fVxyXG59KVxyXG5cclxuY29uc3QgUGlsY3Jvdz1jb25uZWN0KHN0YXRlPT4oe3BpbGNyb3c6Z2V0VUkoc3RhdGUpLnBpbGNyb3d9KSkoKHtwaWxjcm93fSk9PjxzdHlsZT57IXBpbGNyb3cgJiYgYHN2ZyB0ZXh0LmVuZGVye3Zpc2liaWxpdHk6aGlkZGVufWB9PC9zdHlsZT4pXHJcbiIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnQsIENvbXBvbmVudCwgQ2hpbGRyZW4sIEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtjb25uZWN0fSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7cHVyZX0gIGZyb20gXCJyZWNvbXBvc2VcIlxuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5cbmltcG9ydCBTdGF0dXMgZnJvbSBcIi4vc3RhdHVzXCJcbmltcG9ydCBSaWJib24gZnJvbSBcIi4vcmliYm9uXCJcbmltcG9ydCBDYW52YXMgZnJvbSBcIi4vY2FudmFzXCJcbmltcG9ydCBBQ1RJT04se2dldE9mZmljZX0gZnJvbSBcIi4vc3RhdGUvYWN0aW9uXCJcblxuLyoqXG4gKiBkb2MuU3RvcmUgY2FuJ3QgYmUgcmVtb3ZlZCB0byBXb3Jrc3BhY2Ugc2luY2UgY3Vyc29yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvcmtzcGFjZSBleHRlbmRzIFB1cmVDb21wb25lbnR7XG5cdHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcz17XG5cdFx0ZXZlbnRzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRcdGRlYnVnOiBQcm9wVHlwZXMuYm9vbCxcblx0fVxuXG5cdHN0YXRpYyBwcm9wVHlwZXM9e1xuXHRcdHRvb2xCYXI6UHJvcFR5cGVzLm5vZGUsXG5cdFx0c3RhdHVzQmFyOiBQcm9wVHlwZXMubm9kZSxcblx0XHRkZWJ1ZzogUHJvcFR5cGVzLmJvb2wsXG5cdFx0ZG9jOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRcdHJ1bGVyOiBQcm9wVHlwZXMuYm9vbCxcblx0XHRjaGFubmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdGxheW91dDogUHJvcFR5cGVzLm5vZGUsXG5cdH1cblxuXHRzdGF0aWMgZGVmYXVsdFByb3BzPXtcblx0XHR0b29sQmFyOiAoPFJpYmJvbi8+KSxcblx0XHRzdGF0dXNCYXI6KDxTdGF0dXMvPilcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCl7XG5cdFx0c3VwZXIoLi4uYXJndW1lbnRzKVxuXHRcdHRoaXMuc3RhdGU9e31cblx0XHR0aGlzLmV2ZW50cz1uZXcgRXZlbnRFbWl0dGVyKClcblx0fVxuXHRcblx0Z2V0Q2hpbGRDb250ZXh0KCl7XG5cdFx0Y29uc3Qge2RlYnVnfT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIHtcblx0XHRcdGV2ZW50czp0aGlzLmV2ZW50cyxcblx0XHRcdGRlYnVnXG5cdFx0fVxuXHR9XG5cblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge2Vycm9yfT10aGlzLnN0YXRlXG5cdFx0aWYoZXJyb3Ipe1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGRpdiBzdHlsZT17e2ZsZXg6MSwgZGlzcGxheTpcImZsZXhcIiwgZmxleERpcmVjdGlvbjpcImNvbHVtblwifX0+XG5cdFx0XHRcdFx0PHByZSBzdHlsZT17e21hcmdpbjpcImF1dG9cIixjb2xvcjpcInJlZFwiLGZvbnRTaXplOlwiYmlnZ2VyXCJ9fT5cblx0XHRcdFx0XHRcdHtlcnJvci5zdGFja31cblx0XHRcdFx0XHQ8L3ByZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQpXG5cdFx0fVxuXHRcdGNvbnN0IHtkb2MscmVkdWNlciwgLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRvYy5TdG9yZSByZWR1Y2VyPXtyZWR1Y2VyfT5cblx0XHRcdFx0PENoYW5uZWxzIHsuLi5wcm9wc30vPlxuXHRcdFx0PC9kb2MuU3RvcmU+XG5cdFx0KVxuXHR9XG5cblx0Y29tcG9uZW50RGlkQ2F0Y2goZXJyb3Ipe1xuXHRcdHRoaXMuc2V0U3RhdGUoe2Vycm9yfSlcblx0fVxuXG5cdHN0YXRpYyBEZXNrPWNvbm5lY3QoKHN0YXRlKT0+e1xuXHRcdGNvbnN0IHNjYWxlPWdldE9mZmljZShzdGF0ZSkuc2NhbGVcblx0XHRpZihzY2FsZSE9dW5kZWZpbmVkKVxuXHRcdFx0cmV0dXJuIHtzY2FsZTpzY2FsZS8xMDB9XG5cdFx0cmV0dXJuIHt9XG5cdH0pKHB1cmUoKHtjaGlsZHJlbiwgdG9vbEJhciwgcnVsZXIsIGNoYW5uZWwsIHN0YXR1c0JhciwgaWNvbiwgbGF5b3V0LC4uLnByb3BzfSk9Pihcblx0XHQ8RnJhZ21lbnQ+XG5cdFx0XHR7UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLHByb3BzKX1cblx0XHQ8L0ZyYWdtZW50PlxuXHQpKSlcblxuXHRzdGF0aWMgTGF5b3V0PXB1cmUoKHtjYW52YXMsIGxlZnQsICByaWdodCwgc3R5bGV9KT0+KFxuXHRcdDxkaXYgc3R5bGU9e3tmbGV4OlwiMSAxMDAlXCIsIGRpc3BsYXk6XCJmbGV4XCIsICBmbGV4RGlyZWN0aW9uOlwicm93XCIsIG92ZXJmbG93OlwiYXV0b1wiLC4uLnN0eWxlfX0+XG5cdFx0XHR7bGVmdCAmJiA8ZGl2IHN0eWxlPXt7b3ZlcmZsb3c6XCJhdXRvXCJ9fT57bGVmdH08L2Rpdj59XG5cdFx0XHR7Y2FudmFzfVxuXHRcdFx0e3JpZ2h0ICYmIDxkaXYgc3R5bGU9e3tvdmVyZmxvdzpcImF1dG9cIn19PntyaWdodH08L2Rpdj59XG5cdFx0PC9kaXY+XG5cdCkpXG59XG5cbi8vZXh0cmFjdCBDaGFubmVscyBmcm9tIFdvcmtzcGFjZSB0byBtYWtlIGNoYW5uZWwgaW50byByZWR1eCBzdGF0ZVxuY29uc3QgQ2hhbm5lbHM9Y29ubmVjdCgoc3RhdGUscHJvcHMpPT4oe2NoYW5uZWw6Z2V0T2ZmaWNlKHN0YXRlKS5jaGFubmVsfHxwcm9wcy5jaGFubmVsfSkpKFxuXHRjbGFzcyBCYXNlQ2hhbm5lbHMgZXh0ZW5kcyBDb21wb25lbnR7XG5cdFx0Z2V0Q2hhbm5lbHM9bWVtb2l6ZShjaGlsZHJlbj0+XG5cdFx0XHRDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKS5maWx0ZXIoYT0+YS5wcm9wcylcblx0XHRcdFx0Lm1hcCgoe3Byb3BzOntjaGFubmVsLGljb259fSk9PmNoYW5uZWwgPyB7Y2hhbm5lbCxpY29uOmljb258fDxzcGFuIHRpdGxlPXt7Y2hhbm5lbH19Lz59IDogbnVsbClcblx0XHRcdFx0LmZpbHRlcihhPT4hIWEpXG5cdFx0KVxuXG5cdFx0Z2V0Q3VycmVudD1tZW1vaXplKChjaGlsZHJlbixjaGFubmVsKT0+e1xuXHRcdFx0Y2hpbGRyZW49Q2hpbGRyZW4udG9BcnJheShjaGlsZHJlbilcblx0XHRcdGNvbnN0IGN1cnJlbnQ9Y2hpbGRyZW4uZmlsdGVyKGE9PmEucHJvcHMpLmZpbmQoKHtwcm9wc30pPT5wcm9wcy5jaGFubmVsPT1jaGFubmVsKVxuXHRcdFx0Y29uc3QgdW5jb250cm9sbGVkPWNoaWxkcmVuLmZpbHRlcigoe3Byb3BzfSk9PiFwcm9wcyB8fCAhcHJvcHMuY2hhbm5lbCkuZmlsdGVyKGE9PmEhPWN1cnJlbnQpXG5cdFx0XHRyZXR1cm4ge2N1cnJlbnQsIHVuY29udHJvbGxlZH1cblx0XHR9KVx0XG5cblx0XHRyZW5kZXIoKXtcblx0XHRcdGxldCB7Y2hhbm5lbCwgY2hpbGRyZW4sIHRvb2xCYXIsIHN0YXR1c0JhciwgcnVsZXI9dHJ1ZSwgbGF5b3V0LCBkaXNwYXRjaH09dGhpcy5wcm9wc1xuXHRcdFx0bGV0IHtjdXJyZW50LHVuY29udHJvbGxlZH09dGhpcy5nZXRDdXJyZW50KGNoaWxkcmVuLCBjaGFubmVsKVxuXG5cdFx0XHRpZihjdXJyZW50KXtcblx0XHRcdFx0dG9vbEJhcj10eXBlb2YoY3VycmVudC5wcm9wcy50b29sQmFyKT09XCJ1bmRlZmluZWRcIiA/IHRvb2xCYXIgOiBjdXJyZW50LnByb3BzLnRvb2xCYXJcblx0XHRcdFx0c3RhdHVzQmFyPXR5cGVvZihjdXJyZW50LnByb3BzLnN0YXR1c0Jhcik9PVwidW5kZWZpbmVkXCI/IHN0YXR1c0JhciA6IGN1cnJlbnQucHJvcHMuc3RhdHVzQmFyXG5cdFx0XHRcdHJ1bGVyPXR5cGVvZihjdXJyZW50LnByb3BzLnJ1bGVyKT09XCJ1bmRlZmluZWRcIj8gcnVsZXIgOiBjdXJyZW50LnByb3BzLnJ1bGVyXG5cdFx0XHRcdGxheW91dD10eXBlb2YoY3VycmVudC5wcm9wcy5sYXlvdXQpPT1cInVuZGVmaW5lZFwiPyBsYXlvdXQgOiBjdXJyZW50LnByb3BzLmxheW91dFxuXHRcdFx0fVxuXG5cblx0XHRcdGNvbnN0IGNhbnZhcz0oXG5cdFx0XHRcdDxDYW52YXMgcnVsZXI9e3J1bGVyfT5cblx0XHRcdFx0XHR7Y3VycmVudH1cblx0XHRcdFx0XHR7dW5jb250cm9sbGVkfVxuXHRcdFx0XHQ8L0NhbnZhcz5cblx0XHRcdClcblxuXHRcdFx0Y29uc3Qgcm9vdFN0eWxlPXtcblx0XHRcdFx0ZmxleDoxLCBcblx0XHRcdFx0ZGlzcGxheTpcImZsZXhcIiwgXG5cdFx0XHRcdGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIiwgXG5cdFx0XHRcdG92ZXJmbG93OlwiaGlkZGVuXCIvKipjYW4ndCByZW1vdmUsIG90aGVyd2lzZSBlZGl0b3IgIHNjcm9sbCB3b3VsZCBiZSBkZXN0cm9pZWQgKi9cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGRpdiBzdHlsZT17cm9vdFN0eWxlfSBrZXk9e2NoYW5uZWx9PlxuXHRcdFx0XHRcdHt0b29sQmFyfVxuXG5cdFx0XHRcdFx0e2xheW91dCA/IFJlYWN0LmNsb25lRWxlbWVudChsYXlvdXQsIHtjYW52YXMsIGNoaWxkcmVuOmxheW91dC5wcm9wcy5jaGlsZHJlbnx8Y2FudmFzfSkgOiBjYW52YXN9XG5cblx0XHRcdFx0XHR7c3RhdHVzQmFyICYmIFJlYWN0LmNsb25lRWxlbWVudChzdGF0dXNCYXIse1xuXHRcdFx0XHRcdFx0Y2hhbm5lbDp7XG5cdFx0XHRcdFx0XHRcdGl0ZW1zOnRoaXMuZ2V0Q2hhbm5lbHMoY2hpbGRyZW4pLFxuXHRcdFx0XHRcdFx0XHRjdXJyZW50OmNoYW5uZWwsXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBjaGFubmVsPT5kaXNwYXRjaChBQ1RJT04uY2hhbm5lbChjaGFubmVsKSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KX1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQpXHRcdFxuXHRcdH1cblx0fVxuKSIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtFZGl0b3J9IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCBJY29uUHJpbnQgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9hY3Rpb24vdmlldy1tb2R1bGVcIlxuaW1wb3J0IEljb25XZWIgZnJvbSBcIm1hdGVyaWFsLXVpL3N2Zy1pY29ucy9lZGl0b3IvZm9ybWF0LWFsaWduLWp1c3RpZnlcIlxuaW1wb3J0IEljb25UZXh0IGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvY29udGVudC90ZXh0LWZvcm1hdFwiXG5cbmltcG9ydCBXb3Jrc3BhY2UgZnJvbSBcIi4uL3dvcmtzcGFjZVwiXG5pbXBvcnQgUmliYm9uLHt9IGZyb20gXCIuLi9yaWJib25cIlxuXG5cblxuZXhwb3J0IGRlZmF1bHQgKFxuICAgIDxXb3Jrc3BhY2Vcblx0XHRcdGRlYnVnPXt0cnVlfVxuXHRcdFx0YWNjZXB0PXtcblx0XHRcdFx0ZnVuY3Rpb24oe3Byb3BzOntzdXBwb3J0UGFnaW5hdGlvbn0sbmFtZX0pe1xuXHRcdFx0XHRcdHJldHVybiBzdXBwb3J0UGFnaW5hdGlvblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRrZXk9XCJkZWZhdWx0KGFjY2VwdD1bc3VwcG9ydFBhZ2luYXRpb25dKVwiXG5cdFx0XHRjaGFubmVsPVwicHJpbnRcIlxuXHRcdFx0PlxuXG5cdFx0XHQ8V29ya3NwYWNlLkRlc2tcblx0XHRcdFx0Y2hhbm5lbD1cInByaW50XCJcblx0XHRcdFx0aWNvbj17PEljb25QcmludC8+fVxuXHRcdFx0XHRjaGlsZHJlbj17PEVkaXRvciByZXByZXNlbnRhdGlvbj1cInBhZ2luYXRpb25cIi8+fVxuXHRcdFx0XHQvPlxuXG5cblx0XHRcdDxXb3Jrc3BhY2UuRGVza1xuXHRcdFx0XHRjaGFubmVsPVwid2ViXCJcblx0XHRcdFx0cnVsZXI9e3t2ZXJ0aWNhbDpmYWxzZX19XG5cdFx0XHRcdGljb249ezxJY29uV2ViLz59XG5cdFx0XHRcdGNoaWxkcmVuPXs8RWRpdG9yIHJlcHJlc2VudGF0aW9uPVwiaHRtbFwiLz59XG5cdFx0XHRcdC8+XG5cblx0XHRcdDxXb3Jrc3BhY2UuRGVza1xuXHRcdFx0XHRjaGFubmVsPVwicGxhaW4gdGV4dFwiXG5cdFx0XHRcdHJ1bGVyPXtmYWxzZX1cblx0XHRcdFx0dG9vbEJhcj17XG5cdFx0XHRcdFx0PFJpYmJvbiBjb21tYW5kcz17e1xuXHRcdFx0XHRcdFx0aG9tZTp7XG5cdFx0XHRcdFx0XHRcdHRleHQ6ZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHBhcmFncmFwaDpmYWxzZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGluc2VydDpmYWxzZSxsYXlvdXQ6ZmFsc2Usd2hlbjpmYWxzZSxcblx0XHRcdFx0XHR9fT5cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdDwvUmliYm9uPlxuXHRcdFx0XHR9XG5cdFx0XHRcdGljb249ezxJY29uVGV4dC8+fVxuXHRcdFx0XHRjaGlsZHJlbj17PEVkaXRvciByZXByZXNlbnRhdGlvbj1cInRleHRcIi8+fVxuXHRcdFx0XHQvPlxuXHRcdDwvV29ya3NwYWNlPlxuKSIsImltcG9ydCBSZWFjdCx7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gIFwicmVhY3QtcmVkdXhcIlxuaW1wb3J0IHtFZGl0b3IsZ2V0QWN0aXZlfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQge21vZGVzLCB0aGVtZXN9IGZyb20gXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBsYWluXCJcblxuXG5pbXBvcnQgRm9udExpc3QgZnJvbSBcIi4uL3RleHQvZm9udHNcIlxuaW1wb3J0IFdvcmtzcGFjZSBmcm9tIFwiLi4vd29ya3NwYWNlXCJcbmltcG9ydCBSaWJib24se1Rvb2xiYXJTZXBhcmF0b3J9IGZyb20gXCIuLi9yaWJib25cIlxuaW1wb3J0IENvbWJvQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2NvbWJvLWJveFwiXG5pbXBvcnQgQ2hlY2tJY29uQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL2NoZWNrLWljb24tYnV0dG9uXCJcblxuaW1wb3J0IEljb25XcmFwIGZyb20gXCJtYXRlcmlhbC11aS9zdmctaWNvbnMvZWRpdG9yL3dyYXAtdGV4dFwiXG5pbXBvcnQgSWNvbk51bWJlciBmcm9tIFwibWF0ZXJpYWwtdWkvc3ZnLWljb25zL2VkaXRvci9mb3JtYXQtbGlzdC1udW1iZXJlZFwiXG5cbmNvbnN0IERPTUFJTj1cImRlZmF1bHQoYWNjZXB0PSopXCJcblxuZnVuY3Rpb24gcmVkdWNlcihzdGF0ZT17XG4gICAgbW9kZTpcIlwiLHRoZW1lOlwiZWNsaXBzZVwiLGZvbnQ6XCJDYWxpYnJpXCIsc2l6ZToxMix3cmFwOmZhbHNlLG51bWJlcjp0cnVlXG4gICAgfSx7dHlwZSxwYXlsb2FkfSl7XG5cdHN3aXRjaCh0eXBlKXtcblx0Y2FzZSBgJHtET01BSU59L21vZGVgOlxuXHRcdHJldHVybiB7Li4uc3RhdGUsbW9kZTpwYXlsb2FkfVxuXHRjYXNlIGAke0RPTUFJTn0vdGhlbWVgOlxuICAgICAgICByZXR1cm4gey4uLnN0YXRlLHRoZW1lOnBheWxvYWR9XHRcbiAgICBjYXNlIGAke0RPTUFJTn0vZm9udGA6XG4gICAgICAgIHJldHVybiB7Li4uc3RhdGUsZm9udDpwYXlsb2FkfVxuICAgIGNhc2UgYCR7RE9NQUlOfS9zaXplYDpcbiAgICAgICAgcmV0dXJuIHsuLi5zdGF0ZSxzaXplOnBheWxvYWR9XHRcbiAgICBjYXNlIGAke0RPTUFJTn0vd3JhcGA6XG4gICAgICAgIHJldHVybiB7Li4uc3RhdGUsd3JhcDpwYXlsb2FkfVxuICAgIGNhc2UgYCR7RE9NQUlOfS9udW1iZXJgOlxuICAgICAgICByZXR1cm4gey4uLnN0YXRlLG51bWJlcjpwYXlsb2FkfVx0XG5cdH1cblx0cmV0dXJuIHN0YXRlXG59XG5cbmNvbnN0IFNldHRpbmc9Y29ubmVjdChzdGF0ZT0+e1xuICAgIGNvbnN0IHNldHRpbmc9c3RhdGVbRE9NQUlOXVxuICAgIGNvbnN0IGFjdGl2ZT1nZXRBY3RpdmUoc3RhdGUpXG4gICAgY29uc3QgbW9kZT1hY3RpdmUuZG9jLm1vZGVcbiAgICBpZihtb2RlKXtcbiAgICAgICAgcmV0dXJuIHsuLi5zZXR0aW5nLG1vZGV9XG4gICAgfVxuICAgIHJldHVybiBzZXR0aW5nXG59KSgoe2Rpc3BhdGNoLG1vZGUsdGhlbWUsZm9udCxzaXplLHdyYXAsbnVtYmVyfSk9Pntcblx0cmV0dXJuIChcblx0XHQ8RnJhZ21lbnQ+XG4gICAgICAgICAgICA8Rm9udExpc3QgXG4gICAgICAgICAgICAgICAgdmFsdWU9e2ZvbnR9XG4gICAgICAgICAgICAgICAgY2hhbmdlRm9udD17cGF5bG9hZD0+ZGlzcGF0Y2goe3R5cGU6YCR7RE9NQUlOfS9mb250YCxwYXlsb2FkfSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3twYWRkaW5nUmlnaHQ6MTUsd2lkdGg6ODB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Q29tYm9Cb3hcbiAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOjUwLHBhZGRpbmdSaWdodDoxNX19XG4gICAgICAgICAgICAgICAgaW5wdXRTdHlsZT17e2JvcmRlcjpcIjFweCBzb2xpZCBsaWdodGdyYXlcIn19XG4gICAgICAgICAgICAgICAgdmFsdWU9e3NpemV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3NpemU9PmRpc3BhdGNoKHt0eXBlOmAke0RPTUFJTn0vc2l6ZWAscGF5bG9hZDpwYXJzZUludChzaXplKX0pfVxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U9e1s4LDksMTAsMTEsMTIsMTQsMTYsMjAsMjIsMjQsMjYsMjgsMzYsNzJdLm1hcChhPT5hK1wiXCIpfVxuICAgICAgICAgICAgICAgIHVuZGVybGluZVNob3c9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VG9vbGJhclNlcGFyYXRvci8+ICAgIFxuXHRcdFx0PENvbWJvQm94IC8vbGFiZWw9XCLmlofku7bnsbvlnotcIiBcblx0XHRcdFx0c3R5bGU9e3t3aWR0aDo4MCxwYWRkaW5nUmlnaHQ6MTV9fVxuXHRcdFx0XHR0aXRsZT1cIuaWh+S7tuexu+Wei1wiXG5cdFx0XHRcdGlucHV0U3R5bGU9e3tib3JkZXI6XCIxcHggc29saWQgbGlnaHRncmF5XCIscGFkZGluZ0xlZnQ6NX19XG5cdFx0XHRcdHVuZGVybGluZVNob3c9e2ZhbHNlfVxuXHRcdFx0XHR2YWx1ZT17bW9kZX1cblx0XHRcdFx0b25DaGFuZ2U9e3BheWxvYWQ9PmRpc3BhdGNoKHt0eXBlOmAke0RPTUFJTn0vbW9kZWAscGF5bG9hZH0pfVxuXHRcdFx0XHRkYXRhU291cmNlPXttb2Rlcy5tYXAoKHttb2RlfSk9Pm1vZGUpfVxuXHRcdFx0XHQvPlxuXHRcdFx0PENvbWJvQm94IC8vbGFiZWw9XCLpo47moLxcIiBcblx0XHRcdFx0c3R5bGU9e3t3aWR0aDoxMDAscGFkZGluZ1JpZ2h0OjE1fX1cblx0XHRcdFx0dGl0bGU9XCLpo47moLxcIlxuXHRcdFx0XHRpbnB1dFN0eWxlPXt7Ym9yZGVyOlwiMXB4IHNvbGlkIGxpZ2h0Z3JheVwiLHBhZGRpbmdMZWZ0OjV9fVxuXHRcdFx0XHR1bmRlcmxpbmVTaG93PXtmYWxzZX1cblx0XHRcdFx0dmFsdWU9e3RoZW1lfVxuXHRcdFx0XHRvbkNoYW5nZT17cGF5bG9hZD0+ZGlzcGF0Y2goe3R5cGU6YCR7RE9NQUlOfS90aGVtZWAscGF5bG9hZH0pfVxuXHRcdFx0XHRkYXRhU291cmNlPXtPYmplY3Qua2V5cyh0aGVtZXMpfVxuXHRcdFx0XHQvPlxuICAgICAgICAgICAgPFRvb2xiYXJTZXBhcmF0b3IvPlxuICAgICAgICAgICAgPENoZWNrSWNvbkJ1dHRvbiBsYWJlbD1cIndyYXBcIlxuICAgICAgICAgICAgICAgIHN0YXR1cz17d3JhcCA/IFwiY2hlY2tlZFwiIDogXCJ1bmNoZWNrZWRcIn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKT0+ZGlzcGF0Y2goe3R5cGU6YCR7RE9NQUlOfS93cmFwYCxwYXlsb2FkOiF3cmFwfSl9XG4gICAgICAgICAgICAgICAgY2hpbGRyZW49ezxJY29uV3JhcC8+fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Q2hlY2tJY29uQnV0dG9uIGxhYmVsPVwic2hvdyBudW1iZXJcIlxuICAgICAgICAgICAgICAgIHN0YXR1cz17bnVtYmVyID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwifVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpPT5kaXNwYXRjaCh7dHlwZTpgJHtET01BSU59L251bWJlcmAscGF5bG9hZDohbnVtYmVyfSl9XG4gICAgICAgICAgICAgICAgY2hpbGRyZW49ezxJY29uTnVtYmVyLz59XG4gICAgICAgICAgICAgICAgLz5cblx0XHQ8L0ZyYWdtZW50PlxuXHQpXG59KVxuXG5jb25zdCBQbGFpbkVkaXRvcj1jb25uZWN0KHN0YXRlPT5zdGF0ZVtET01BSU5dKSgoe21vZGUsdGhlbWUsZm9udCxzaXplLHdyYXAsbnVtYmVyfSk9Pihcblx0PEVkaXRvciByZXByZXNlbnRhdGlvbj1cInBsYWluXCIgc2V0dGluZz17e21vZGUsdGhlbWUsZm9udCxzaXplLHdyYXAsbnVtYmVyfX0vPlxuKSlcblxuZXhwb3J0IGRlZmF1bHQgKFxuICAgIDxXb3Jrc3BhY2VcbiAgICAgICAgZGVidWc9e3RydWV9XG4gICAgICAgIGFjY2VwdD1cIipcIlxuICAgICAgICBrZXk9e0RPTUFJTn1cbiAgICAgICAgcnVsZXI9e2ZhbHNlfVxuICAgICAgICBzdGF0dXNCYXI9e2ZhbHNlfVxuICAgICAgICByZWR1Y2VyPXtyZWR1Y2VyfVxuICAgICAgICB0b29sQmFyPXtcbiAgICAgICAgICAgIDxSaWJib24gY29tbWFuZHM9e3tcbiAgICAgICAgICAgICAgICBob21lOntcbiAgICAgICAgICAgICAgICAgICAgdGV4dDpmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoOmZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQ6ZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1vcmU6KDxTZXR0aW5nLz4pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbnNlcnQ6ZmFsc2UsXG4gICAgICAgICAgICAgICAgbGF5b3V0OmZhbHNlLFxuICAgICAgICAgICAgICAgIHdoZW46ZmFsc2UsXG5cbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgPC9SaWJib24+XG4gICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICA8UGxhaW5FZGl0b3IvPlxuICAgIDwvV29ya3NwYWNlPlxuKSIsImltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7V2VFZGl0LHNoYWxsb3dFcXVhbH0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5cbmltcG9ydCBXZUVkaXRVSSBmcm9tIFwiLi4vd2UtZWRpdC11aVwiXG5cbmltcG9ydCBQYWdpbmF0aW9uT2ZmaWNlIGZyb20gXCIuL3BhZ2luYXRpb25cIlxuaW1wb3J0IFBsYWluT2ZmaWNlIGZyb20gXCIuL3BsYWluXCJcblxuXG5jb25zdCBteU9mZmljZT1bUGFnaW5hdGlvbk9mZmljZSxQbGFpbk9mZmljZV1cblxuY29uc3QgZXZlbnQ9bmV3IChjbGFzcyBPZmZpY2VFdmVudCBleHRlbmRzIEV2ZW50RW1pdHRlcntcblx0Y29uc3RydWN0b3IoKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dmFyIGluaXRzPVtdXG5cdFx0dmFyIG9uUmVhZHk9KHdvcmtzcGFjZXMsaW5pdCk9Pntcblx0XHRcdGlmKGluaXQpe1xuXHRcdFx0XHRpbml0cy5wdXNoKGluaXQpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5vbihcImNoYW5nZVwiLG9uUmVhZHkpXG5cdFx0XG5cdFx0dGhpcy5vbmNlKCdvZmZpY2UgcmVhZHknLGRpc3BhdGNoPT57XG5cdFx0XHR0aGlzLnJlbW92ZUxpc3RlbmVyKFwiY2hhbmdlXCIsIG9uUmVhZHkpXG5cdFx0XHR0cnl7XG5cdFx0XHRcdGluaXRzLmZvckVhY2goaW5pdD0+aW5pdChkaXNwYXRjaCkpXG5cdFx0XHR9Y2F0Y2goZSl7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZSlcblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cblx0cmVhZHkoKXtcblx0XHR0aGlzLmVtaXQoXCJvZmZpY2UgcmVhZHlcIiwgLi4uYXJndW1lbnRzKVxuXHR9XG59KSgpO1xuXG5jb25zdCBleGNsdWRlUmVkdWNlcj0oc3RhdGU9e30pPT5zdGF0ZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPZmZpY2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50e1xuXHRzdGF0aWMgcHJvcFR5cGVzPXtcblx0XHR3b3Jrc3BhY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuZWxlbWVudCksXG5cdFx0aW5zdGFsbGFibGU6UHJvcFR5cGVzLmJvb2wsXG5cdH1cblxuXHRzdGF0aWMgZGVmYXVsdFByb3BzPXtcblx0XHRpbnN0YWxsYWJsZTp0cnVlLFxuXHR9XG5cblx0c3RhdGljIGluc3RhbGwod29ya3NwYWNlcyxpbml0KXtcblx0XHR3b3Jrc3BhY2VzPUFycmF5LmlzQXJyYXkod29ya3NwYWNlcykgJiYgd29ya3NwYWNlcyB8fCBbd29ya3NwYWNlc11cblx0XHR3b3Jrc3BhY2VzLnJldmVyc2UoKS5mb3JFYWNoKGE9Pm15T2ZmaWNlLnVuc2hpZnQoYSkpXG5cdFx0ZXZlbnQuZW1pdChcImNoYW5nZVwiLCBbLi4ubXlPZmZpY2VdLCBpbml0KVxuXHR9XG5cblx0c3RhdGljIHVuaW5zdGFsbCh3b3Jrc3BhY2VzKXtcblx0XHR3b3Jrc3BhY2VzPUFycmF5LmlzQXJyYXkod29ya3NwYWNlcykgJiYgd29ya3NwYWNlcyB8fCBbd29ya3NwYWNlc11cblx0XHR3b3Jrc3BhY2VzLmZvckVhY2goYT0+bXlPZmZpY2Uuc3BsaWNlKG15T2ZmaWNlLmluZGV4T2YoYSksMSkpXG5cdFx0ZXZlbnQuZW1pdChcImNoYW5nZVwiLFsuLi5teU9mZmljZV0pXG5cdH1cblxuXHRzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHt3b3Jrc3BhY2VzLGluc3RhbGxhYmxlfSxzdGF0ZSl7XG5cdFx0cmV0dXJuIHt3b3Jrc3BhY2VzOiAoaW5zdGFsbGFibGUgJiYgc3RhdGUud29ya3NwYWNlcyl8fHdvcmtzcGFjZXN8fFsuLi5teU9mZmljZV19XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcigpe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLnN0YXRlPXt3b3Jrc3BhY2VzOm51bGwsZXhjbHVkZXM6e319XG5cdFx0dGhpcy53ZWRpdD1SZWFjdC5jcmVhdGVSZWYoKVxuXHR9XG5cblx0Z2V0UmVkdWNlcnM9bWVtb2l6ZSgod29ya3NwYWNlcyxyZWR1Y2Vycyk9Pntcblx0XHRyZXR1cm4gd29ya3NwYWNlcy5yZWR1Y2UoKGNvbGxlY3RlZCxhKT0+e1xuXHRcdFx0aWYoYS5wcm9wcy5yZWR1Y2VyKXtcblx0XHRcdFx0Y29sbGVjdGVkW2Eua2V5XT0oc3RhdGUsYWN0aW9uKT0+e1xuXHRcdFx0XHRcdGxldCByZWR1Y2VkPWEucHJvcHMucmVkdWNlcihzdGF0ZSxhY3Rpb24pXG5cdFx0XHRcdFx0cmV0dXJuIHsuLi5zdGF0ZSwuLi5yZWR1Y2VkfVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY29sbGVjdGVkXG5cdFx0fSx7Li4ucmVkdWNlcnN9KVxuXHR9LChhLGIpPT5hPT09YiB8fCBzaGFsbG93RXF1YWwoYSxiKSlcblxuXHRjb21wb25lbnREaWRNb3VudCgpe1xuXHRcdGNvbnN0IHtpbnN0YWxsYWJsZX09dGhpcy5wcm9wc1xuXHRcdGlmKGluc3RhbGxhYmxlKXtcblx0XHRcdGNvbnN0IGRpc3BhdGNoPXRoaXMud2VkaXQuY3VycmVudC5zdG9yZS5kaXNwYXRjaFxuXHRcdFx0ZXZlbnQucmVhZHkoZGlzcGF0Y2gpXG5cdFx0XHRldmVudC5vbihcImNoYW5nZVwiLCB0aGlzLnVwZGF0ZVdvcmtzcGFjZXM9KHdvcmtzcGFjZXMsaW5pdCk9Pntcblx0XHRcdFx0dGhpcy5zZXRTdGF0ZSgoe3dvcmtzcGFjZXM6Y3VycmVudH0pPT57XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHdvcmtzcGFjZXMsXG5cdFx0XHRcdFx0XHRleGNsdWRlczpjdXJyZW50LmZpbHRlcihhPT4hd29ya3NwYWNlcy5maW5kKGI9PmIua2V5PT09YS5rZXkpKVxuXHRcdFx0XHRcdFx0XHRcdFx0LnJlZHVjZSgoZXhjbHVkZXMsYSk9Pntcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZXNbYS5rZXldPWV4Y2x1ZGVSZWR1Y2VyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBleGNsdWRlc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSx7fSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIGluaXQgJiYgKCgpPT57XG5cdFx0XHRcdFx0aW5pdChkaXNwYXRjaClcblx0XHRcdFx0fSkpXG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHt3b3Jrc3BhY2VzLCBleGNsdWRlc309dGhpcy5zdGF0ZVxuXHRcdGxldCB7dGl0bGVCYXJQcm9wcyxjaGlsZHJlbiwgdGl0bGVCYXIsIGRhc2hib2FyZCwgcmVkdWNlcnM9e319PXRoaXMucHJvcHNcblx0XHRcblx0XHRyZWR1Y2Vycz10aGlzLmdldFJlZHVjZXJzKHdvcmtzcGFjZXMsey4uLmV4Y2x1ZGVzLC4uLnJlZHVjZXJzfSlcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8V2VFZGl0IHJlZHVjZXJzPXtyZWR1Y2Vyc30gcmVmPXt0aGlzLndlZGl0fT5cblx0XHRcdFx0PFdlRWRpdFVJIHsuLi57dGl0bGVCYXJQcm9wcywgdGl0bGVCYXIsZGFzaGJvYXJkfX0+XG5cdFx0XHRcdFx0e3dvcmtzcGFjZXMubWFwKGE9PmEucHJvcHMucmVkdWNlciA/IFJlYWN0LmNsb25lRWxlbWVudChhLHtyZWR1Y2VyOnVuZGVmaW5lZH0pIDogYSl9XG5cdFx0XHRcdFx0e2NoaWxkcmVufVxuXHRcdFx0XHQ8L1dlRWRpdFVJPlxuXHRcdFx0PC9XZUVkaXQ+XG5cdFx0KVxuXHR9XG5cblx0Y29tcG9uZW50V2lsbFVubW91bnQoKXtcblx0XHRpZih0aGlzLnByb3BzLmluc3RhbGxhYmxlKXtcblx0XHRcdGV2ZW50LnJlbW92ZUxpc3RlbmVyKFwiY2hhbmdlXCIsdGhpcy51cGRhdGVXb3Jrc3BhY2VzKVxuXHRcdH1cblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiXG5pbXBvcnQgT2ZmaWNlIGZyb20gXCIuL29mZmljZVwiXG5pbXBvcnQgKiBhcyBSaWJib24gIGZyb20gXCIuL3JpYmJvblwiXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBXZUVkaXRVSX0gZnJvbSBcIi4vd2UtZWRpdC11aVwiXG5leHBvcnQge2RlZmF1bHQgYXMgV29ya3NwYWNlfSBmcm9tIFwiLi93b3Jrc3BhY2VcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIFN0YXR1c0Jhcn0gZnJvbSBcIi4vc3RhdHVzXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBDYW52YXN9IGZyb20gXCIuL2NhbnZhc1wiXG5leHBvcnQge2RlZmF1bHQgYXMgVGl0bGVCYXJ9IGZyb20gXCIuL3RpdGxlLWJhclwiXG5leHBvcnQge2RlZmF1bHQgYXMgRGFzaGJvYXJkfSBmcm9tIFwiLi9kYXNoYm9hcmRcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIHJlZHVjZXJ9IGZyb20gXCIuL3N0YXRlL3JlZHVjZXJcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIEFDVElPTn0gZnJvbSBcIi4vc3RhdGUvYWN0aW9uXCJcblxuXG5leHBvcnQge1JpYmJvbixPZmZpY2V9XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoY29udGFpbmVyLCBvZmZpY2U9PE9mZmljZS8+KXtcblx0aWYoIWNvbnRhaW5lciB8fCBjb250YWluZXI9PWRvY3VtZW50LmJvZHkpe1xuXHRcdGNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXG5cdFx0ZG9jdW1lbnQuYm9keS5zdHlsZT1cIm1hcmdpbjowcHg7cGFkZGluZzowcHg7Ym9yZGVyOjBweFwiXG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpXG5cdH1cblx0cmV0dXJuIFJlYWN0RE9NLnJlbmRlcihvZmZpY2UsIGNvbnRhaW5lcilcbn1cblxuKGZ1bmN0aW9uKG1lKXsvL21hZ2ljXG5cdG1lICYmIG1lLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpPT57XG5cdFx0bGV0IGNvbnRhaW5lcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjT2ZmaWNlQ29udGFpbmVyJylcblx0XHRpZihjb250YWluZXIgfHwgZG9jdW1lbnQudGl0bGU9PVwidGVzdFwiKXtcblx0XHRcdGNyZWF0ZShjb250YWluZXIpXG5cdFx0fVxuXHR9KVxufSkod2luZG93KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
\No newline at end of file