UNPKG

412 kBJavaScriptView Raw
1module.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=22)}([function(t,e){t.exports=require("@babel/runtime/helpers/getPrototypeOf")},function(t,e){t.exports=require("@babel/runtime/helpers/defineProperty")},function(t,e){t.exports=require("@babel/runtime/helpers/classCallCheck")},function(t,e){t.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(t,e){t.exports=require("@babel/runtime/helpers/inherits")},function(t,e){t.exports=require("@babel/runtime/helpers/createClass")},function(t,e){t.exports=require("react")},function(t,e){t.exports=require("prop-types")},function(t,e){t.exports=require("@babel/runtime/helpers/objectWithoutProperties")},function(t,e){t.exports=require("@babel/runtime/helpers/get")},function(t,e){t.exports=require("@babel/runtime/helpers/assertThisInitialized")},function(t,e){t.exports=require("memoize-one")},function(t,e){t.exports=require("we-edit")},function(t,e){t.exports=require("@babel/runtime/helpers/slicedToArray")},function(t,e){t.exports=require("@babel/runtime/helpers/extends")},function(t,e){t.exports=require("recompose")},function(t,e){t.exports=require("docx4js")},function(t,e){t.exports=require("@babel/runtime/helpers/toArray")},function(t,e){t.exports=require("lodash.get")},function(t,e){t.exports=require("readable-stream")},function(t,e){t.exports=require("fetchable")},function(t,e){t.exports=require("lodash.invoke")},function(t,e,n){"use strict";n.r(e);var r=n(13),i=n.n(r),o=n(9),l=n.n(o),s=n(8),c=n.n(s),u=n(2),h=n.n(u),f=n(5),p=n.n(f),d=n(3),w=n.n(d),v=n(0),m=n.n(v),g=n(4),y=n.n(g),b=n(1),x=n.n(b),k=n(12),P=n(19),_=n(17),O=n.n(_),C=n(16),j=n.n(C),S=n(20),I=n.n(S),A=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"createObjectURL",value:function(t,n){var r;return(r=e.URL).createObjectURL.apply(r,arguments)}},{key:"revokeObjectURL",value:function(t){var n;return(n=e.URL).revokeObjectURL.apply(n,arguments)}},{key:"getDataPartAsUrl",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"*/*",n=this.parts[t],r=n._data.crc32;return this._shouldReleased.has(r)||this._shouldReleased.set(r,this.createObjectURL(this.getDataPart(t),e)),this._shouldReleased.get(r)}},{key:"release",value:function(){var t=!0,e=!1,n=void 0;try{for(var r,a=this._shouldReleased[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=i()(r.value,2)[1];this.revokeObjectURL(o)}}catch(t){e=!0,n=t}finally{try{t||null==a.return||a.return()}finally{if(e)throw n}}}},{key:"startTransaction",value:function(){this.officeDocument.content.startTransaction(),this.officeDocument.numbering.startTransaction(),this.officeDocument.styles.startTransaction()}},{key:"commit",value:function(){return{content:this.officeDocument.content.commit(),numbering:this.officeDocument.numbering.commit(),styles:this.officeDocument.styles.commit()}}},{key:"rollback",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.content,n=t.numbering,r=t.styles;this.officeDocument.content.rollback(e),this.officeDocument.numbering.rollback(n),this.officeDocument.styles.rollback(r)}}],[{key:"URL",get:function(){return this.__cachedData||(this.__cachedData=new I.a("docx-memory")),this.__cachedData}}]),e}(j.a);x()(A,"parseXml",(function(){var t=j.a.parseXml.apply(j.a,arguments);return t.prototype.afterOrPrepend=function(t,e){var n=this.children(e);return n.length?n.after(t):this.prepend(t),this},t})),x()(A,"OfficeDocument",function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"_init",value:function(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];(t=l()(m()(e.prototype),"_init",this)).call.apply(t,[this].concat(r));var a=this;Object.assign(this.theme,{fontx:function(t){var e=t.split(/(?=[A-Z])/g),n=O()(e),r=n[0],i=n.slice(1);i={HAnsi:"latin",Ascii:"latin",Bidi:"cs",EastAsia:"ea"}[i.join("")];var o=this("a\\:fontScheme>a\\:".concat(r,"Font>a\\:").concat(i)).attr("typeface");if(!o&&("cs"==i||"ea"==i)){var l=a.settings("w\\:themeFontLang").attr("w:".concat({cs:"bidi",ea:"eastAsia"}[i]));if(l)return this("a\\:fontScheme>a\\:".concat(r,"Font>a\\:font[script=").concat({"zh-CN":"Hans"}[l],"]")).attr("typeface")}return o},colorx:function(t){return"phClr"==t?t:this.color(a.settings("w\\:clrSchemeMapping").attr("w:".concat(t))||t)}}),this.numbering||this.addNumberingPart(),Object(k.transactifyCheerio)(this.content),Object(k.transactifyCheerio)(this.numbering),Object(k.transactifyCheerio)(this.styles)}},{key:"addNumberingPart",value:function(){this.add("http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering","numbering.xml",'<?xml version="1.0" encoding="UTF-8"?>\n\t\t\t\t<w:numbering xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid wp14">\n\t\t\t\t</w:numbering>'.replace(/>\s+/g,">").replace(/\s+</g,"<"));Object.defineProperty(this,"numbering",{get:function(){return this.getRelObject("numbering.xml")}})}}]),e}(j.a.OfficeDocument));var D=n(18),T=n.n(D),N=n(21),F=n.n(N),L=function(){function t(e,n,r){h()(this,t),this.styles=n}return p()(t,[{key:"get",value:function(t){if(this.cache&&this.cache.has(t))return this.cache.get(t);var e=T()(this,t);return null==e&&(e=this._getFromBasedOn.apply(this,arguments)),this.cache&&this.cache.set(t,e),e}},{key:"_getFromBasedOn",value:function(t){var e=this.parent;return e?e.get.apply(e,arguments):void 0}},{key:"invoke",value:function(t){var e=F.a.apply(void 0,[this].concat(Array.prototype.slice.call(arguments)));return null==e&&(e=this._invokeOnBasedOn.apply(this,arguments)),e}},{key:"_invokeOnBasedOn",value:function(t){var e=this.parent;return e?e.invoke.apply(e,arguments):void 0}},{key:"toJSON",value:function(){}},{key:"parent",get:function(){return this.styles[this.basedOn]||this.basedOn||void 0}}]),t}(),E=function(t){function e(){var t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{attribs:{},children:[]};arguments.length>1&&arguments[1],arguments.length>2&&arguments[2];return h()(this,e),(t=w()(this,m()(e).apply(this,arguments))).id=n.attribs["w:styleId"],n.children.filter((function(t){return"text"!=t.type})).forEach((function(e){switch(e.name.split(":").pop()){case"name":return t.name=e.attribs["w:val"];case"rStyle":case"pStyle":case"tblStyle":case"basedOn":return t.basedOn=e.attribs["w:val"]}})),t.basedOn&&(t.cache=new Map),t}return y()(e,t),p()(e,[{key:"_convert",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{attribs:{},children:[]},e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=e?t.children.find((function(t){return t.name==e})):t;if(i)return i.children.reduce((function(t,e){var i=n[e.name];return i&&(t[i]=r.selectValue(e)),t}),{})}},{key:"clone",value:function(){var t=this.styles,e=(this.name,this.basedOn),n=(this.id,this.next),r=this.p,i=this.r,a=new this.constructor(void 0,t);return Object.assign(a,{basedOn:e,p:r,r:i,next:n})}}]),e}(function(t){function e(){var t;return h()(this,e),(t=w()(this,m()(e).apply(this,arguments))).next=[],t}return y()(e,t),p()(e,[{key:"_getFromBasedOn",value:function(t){var n=arguments,r=l()(m()(e.prototype),"_getFromBasedOn",this).apply(this,arguments);return null==r&&(r=this.next.reduce((function(t,e){return null==t?e.get.apply(e,n):t}),void 0)),r}},{key:"_invokeOnBasedOn",value:function(t){var n=arguments,r=l()(m()(e.prototype),"_invokeFromBasedOn",this).apply(this,arguments);return null==r&&(r=this.next.reduce((function(t,e){return null==t?e.invoke.apply(e,n):t}),void 0)),r}},{key:"inherit",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];if(0==e.length)return this;var r=Object.create(this);r.next=e;var i=r.next.findIndex((function(t){return"*"==t.id}));return-1!=i&&r.next.push(r.next.splice(i,1)[0]),r}}]),e}(L)),R=function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).apply(this,arguments))).id="*",i.basedOn=null,i.cache=null,i.r=i._convert(t.children.find((function(t){return"w:rPrDefault"==t.name})),"w:rPr",{"w:rFonts":"fonts","w:sz":"size","w:color":"color","w:b":"bold","w:i":"italic","w:vanish":"vanish"},r),i.p=i._convert(t.children.find((function(t){return"w:pPrDefault"==t.name})),"w:pPr",{"w:spacing":"spacing","w:indent":"indent"},r),i}return y()(e,t),e}(E),z={"w:rFonts":"fonts","w:sz":"size","w:color":"color","w:b":"bold","w:i":"italic","w:vanish":"vanish","w:highlight":"highlight","w:bdr":"border"},H=function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).call(this,t,n,r))).r=i._convert(t,"w:rPr",z,r),i}return y()(e,t),p()(e,[{key:"flat",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=[this].concat(e);return"fonts,size,color,highlight,border,underline,bold,italic,vanish,strike".split(",").reduce((function(t,e){return r.find((function(n){return void 0!==(t[e]=n.get("r.".concat(e)))})),t}),{})}}]),e}(E);function $(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function q(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?$(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):$(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}x()(H,"Direct",function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).call(this,t,n,r))).r=i._convert(t,null,z,r),i}return y()(e,t),e}(H));var M={"w:spacing":"spacing","w:ind":"indent","w:numPr":"num","w:jc":"align","w:outlineLvl":"heading","w:widowControl":"widow","w:keepNext":"keepWithNext","w:keepLines":"keepLines"},B=function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).call(this,t,n,r))).p=i._convert(t,"w:pPr",M,r),i}return y()(e,t),p()(e,[{key:"flat4Character",value:function(){return l()(m()(e.prototype),"flat",this).apply(this,arguments)}},{key:"flat",value:function(){for(var t=this,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];var a=[this].concat(r);return Object.values(M).reduce((function(n,i){if(a.find((function(t){return void 0!==(n[i]=t.get("p.".concat(i)))}))&&"num"===i){var o,s=n.num,c=s.numId,u=s.ilvl,h=void 0===u?0:u,f=t.styles["_num_".concat(c)];n.indent=q({},n.indent,{},f.get("".concat(h,".p.indent"))),n.numbering={nextValue:function(){return f.level(h).nextValue()},style:(o=l()(m()(e.prototype),"flat",t)).call.apply(o,[t,f.get("".concat(h))].concat(r)),format:f.parent[h].numFmt,numId:c,level:h},delete n.num}return n}),{})}}]),e}(H);x()(B,"Direct",function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).call(this,t,n,r))).p=i._convert(t,null,M,r),i}return y()(e,t),e}(B));var V=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),e}(B),W="seCell,swCell,neCell,nwCell,lastCol,firstCol,lastRow,firstRow,band2Horz,band1Horz,band2Vert,band1Vert".split(","),G="firstRow,lastRow,firstCol,lastCol,band1Vert,band2Vert,band1Horz,band2Horz,nwCell,neCell,swCell,seCell".split(","),J=function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).call(this,t,n,r))).tbl=i._convert(t,"w:tcPr",{"w:tcMargin":"margin","w:tcBorders":"border","w:shd":"background"},r),i}return y()(e,t),p()(e,[{key:"right",value:function(){return this.get("tbl.border.right")}},{key:"left",value:function(){return this.get("tbl.border.left")}},{key:"top",value:function(){return this.get("tbl.border.top")}},{key:"bottom",value:function(){return this.get("tbl.border.bottom")}}]),e}(B),U=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"right",value:function(t){return t.includes("lastCol")?l()(m()(e.prototype),"right",this).apply(this,arguments):this.get("tbl.border.insideV")}},{key:"left",value:function(t){return t.includes("firstCol")?l()(m()(e.prototype),"right",this).apply(this,arguments):this.get("tbl.border.insideV")}}]),e}(J),X=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),e}(J),Q=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"top",value:function(t){if(t.includes("firstRow"))return l()(m()(e.prototype),"top",this).apply(this,arguments)}},{key:"bottom",value:function(t,n){if(t.includes("lastRow"))return l()(m()(e.prototype),"bottom",this).apply(this,arguments)}}]),e}(J),Z=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),e}(U),K=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),e}(Q),Y={};Y.seCell=X,Y.swCell=X,Y.neCell=X,Y.nwCell=X,Y.lastCol=Q,Y.firstCol=Q,Y.lastRow=U,Y.firstRow=U,Y.band2Horz=Z,Y.band1Horz=Z,Y.band2Vert=K,Y.band1Vert=K,Y.row=U,Y.cell=X;var tt={tbl:{"w:tblInd":"indent","w:tblCellMar":"margin","w:tblBorders":"border","w:tblW":"width","w:shd":"background","w:jc":"align","w:tblStyleColBandSize":"cellSpan","w:tblStyleRowBandSize":"rowSpan","w:tblLook":"conditional"},tr:{"w:tblInd":"indent","w:tblCellMar":"margin","w:tblBorders":"border","w:cnfStyle":"conditional","w:trHeight":"height","w:cantSplit":"keepLines"},tc:{"w:tblInd":"indent","w:tblCellMar":"margin","w:tblBorders":"border","w:cnfStyle":"conditional","w:vAlign":"vertAlign"}},et=function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).apply(this,arguments))).tbl=i._convert(t,"w:tblPr",tt.tbl,r),i.tc=i._convert(t,"w:tcPr",tt.tc,r),i.tr=i._convert(t,"w:tblPrEx",tt.tr,r),t.children.filter((function(t){return"w:tblStylePr"==t.name})).forEach((function(t){var e=t.attribs["w:type"];i[e]=new Y[e](t,n,r)})),i}return y()(e,t),p()(e,[{key:"flat4Table",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=[this].concat(e);return"indent,background,width,conditional".split(",").reduce((function(t,e){return r.find((function(n){return void 0!==(t[e]=n.get("tbl.".concat(e)))})),t}),{})}},{key:"flat4Row",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=[this].concat(e);return"height,cantSplit,keepLines,conditional".split(",").reduce((function(t,e){return r.find((function(n){return void 0!==(t[e]=n.get("tr.".concat(e)))})),t}),{})}},{key:"flat4Cell",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=Array.from(("000000000000"+(t>>>0).toString(2)).substr(-12)).map((function(t,e){return"1"==t&&G[e]})).filter((function(t){return t})).sort((function(t,e){return W.indexOf(t)-W.indexOf(e)})),i="left,right,top,bottom".split(",").reduce((function(t,n){var i=e.get("margin.".concat(n));return null==i&&(i=e.get("tbl.margin.".concat(n),r)),void 0!==i&&(t[n]=i),t}),{}),a="left,right,top,bottom".split(",").reduce((function(t,i){var a=e.get("border.".concat(i));return null==a&&(a=e[i](r,n)),t[i]=void 0!==a?a:{sz:0},t}),{}),o="spacing,indent".split(",").reduce((function(t,n){var i=e.get("p.".concat(n),r);return void 0!==i&&(t[n]=i),t}),{}),l="fonts,size,color".split(",").reduce((function(t,n){var i=e.get("r.".concat(n),r);return void 0!==i&&(t[n]=i),t}),"bold,italic,vanish".split(",").reduce((function(t,n){var i=e.get("r.".concat(n),r);return void 0!==i&&(t[n]=!!i),t}),{})),s=this.get("tbl.background",r);return{margin:i,border:a,background:s,p:o,r:l}}},{key:"get",value:function(t){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=r.reduce((function(r,i){return null!=r?r:l()(m()(e.prototype),"get",n).call(n,"".concat(i,".").concat(t))}),void 0);return null==i&&(i=l()(m()(e.prototype),"get",this).call(this,t)),i}},{key:"right",value:function(t,e){var n=this,r=t.reduce((function(e,r){return null!=e?e:n.invoke("".concat(r,".right"),t)}),void 0);return null==r&&(r=this.get("tc.border.right")),null==r&&(r=t.includes("lastCol")?this.get("tr.border.right"):this.get("tr.border.insideV")),null==r&&(r=t.includes("lastCol")||e.includes("lastCol")?this.get("tbl.border.right"):this.get("tbl.border.insideV")),r}},{key:"left",value:function(t,e){var n=this,r=t.reduce((function(e,r){return null!=e?e:n.invoke("".concat(r,".left"),t)}),void 0);return null==r&&(r=this.get("tc.border.left")),null==r&&(r=t.includes("firstCol")?this.get("tr.border.left"):this.get("tr.border.insideV")),null==r&&(r=t.includes("firstCol")||e.includes("firstCol")?this.get("tbl.border.left"):this.get("tbl.border.insideV")),r}},{key:"top",value:function(t,e){var n=this,r=t.reduce((function(e,r){return null!=e?e:n.invoke("".concat(r,".top"),t)}),void 0);return null==r&&(r=this.get("tc.border.top")),null==r&&(r=t.includes("firstRow")?this.get("tr.border.top"):this.get("tr.border.insideH")),null==r&&(r=t.includes("firstRow")||e.includes("firstRow")?this.get("tbl.border.top"):this.get("tbl.border.insideH")),r}},{key:"bottom",value:function(t,e){var n=this,r=t.reduce((function(e,r){return null!=e?e:n.invoke("".concat(r,".bottom"),t)}),void 0);return null==r&&(r=this.get("tc.border.top")),null==r&&(r=t.includes("lastRow")?this.get("tr.border.bottom"):this.get("tr.border.insideH")),null==r&&(r=t.includes("lastRow")||e.includes("lastRow")?this.get("tbl.border.bottom"):this.get("tbl.border.insideH")),r}}]),e}(J);x()(et,"Direct",function(t){function e(t,n,r){var i;h()(this,e),i=w()(this,m()(e).call(this,t,n,r));var a=t.name.split(":").pop().replace("Pr","");return i[a]=i._convert(t,null,tt[a],r),i}return y()(e,t),e}(et));var nt=n(10),rt=n.n(nt),it=function(t){function e(t,n,r){var i;return h()(this,e),i=w()(this,m()(e).apply(this,arguments)),t.children.forEach((function(t){switch(t.name){case"w:pPr":case"w:rPr":break;default:var e=t.name.split(":").pop();i[e]=t.attribs["w:val"]}})),i.level=parseInt(t.attribs["w:ilvl"]),i.start=parseInt(i.start),i}return y()(e,t),e}(B),at={decimal:function(t){return t},lowerLetter:function(t){return String.fromCharCode("a".charCodeAt(0)+t-1)},upperLetter:function(t){return String.fromCharCode("A".charCodeAt(0)+t-1)},lowerRoman:function(t){return ot[t].toLowerCase()},upperRoman:function(t){return ot[t]}},ot=["I","II","III","IV","V","VI","VII","VIII","IX"],lt=function(t){function e(t,n,r){var i;h()(this,e),(i=w()(this,m()(e).apply(this,arguments))).id="_num_".concat(t.attribs["w:numId"]);var a=new Set;return t.children.forEach((function(t){switch(t.name){case"w:abstractNumId":i.basedOn="_abstractNum_".concat(t.attribs["w:val"]);break;case"w:lvlOverride":var e=t.attribs["w:ilvl"],a=t.children.find((function(t){return"w:startOverride"==t.name})),o=t.children.find((function(t){return"w:lvl"==t.name}))||{name:"w:lvl",attribs:{"w:ilvl":e},children:[]};a&&o.children.push({name:"w:start",attribs:{"w:val":a.attribs["w:val"]}}),i[e]=new st(o,n,r,rt()(i))}})),i.level=function(t){return a.add(t),i[t]||(i[t]=new st({attribs:{"w:ilvl":t},children:[]},n,r,rt()(i))),i[t]},i.reset=function(){var t=!0,e=!1,n=void 0;try{for(var r,o=a[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var l=r.value;i[l].reset()}}catch(t){e=!0,n=t}finally{try{t||null==o.return||o.return()}finally{if(e)throw n}}},i}return y()(e,t),e}(L),st=function(t){function e(t,n,r,i){var a;return h()(this,e),a=w()(this,m()(e).apply(this,arguments)),x()(rt()(a),"current",0),a.num=i,a}return y()(e,t),p()(e,[{key:"nextValue",value:function(){var t=this;if(this.lvlPicBulletId)throw new Error("pic bullet not supported yet!");var e="start,numFmt,lvlText".split(",").reduce((function(e,n){return e[n]=t[n]||t.num.parent.get("".concat(t.level,".").concat(n)),e}),{}),n=e.start,r=e.numFmt;return e.lvlText.replace(/%(\d+)/g,(function(e,i){return(i=parseInt(i)-1)==t.level?(at[r]||at.decimal)(n+t.current++):t.num.level(i).currentValue()}))}},{key:"currentValue",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.current-1,n="start,numFmt,lvlText".split(",").reduce((function(e,n){return e[n]=t[n]||t.num.parent.get("".concat(t.level,".").concat(n)),e}),{}),r=n.start,i=n.numFmt;n.lvlText;return(at[i]||at.decimal)(r+Math.max(0,e))}},{key:"label",value:function(t){var e=this,n="start,numFmt,lvlText".split(",").reduce((function(t,n){return t[n]=e[n]||e.num.parent.get("".concat(e.level,".").concat(n)),t}),{});n.start,n.numFmt;return n.lvlText.replace(/%(\d+)/g,(function(n,r){return r=parseInt(r)-1,e.num.level(r).currentValue((t.get(r)||0)-1)}))}},{key:"reset",value:function(){this.current=0,this.content=[]}}]),e}(it),ct=function(t){function e(t,n,r){var i;return h()(this,e),(i=w()(this,m()(e).apply(this,arguments))).id="_abstractNum_".concat(t.attribs["w:abstractNumId"]),t.children.filter((function(t){return"w:lvl"==t.name})).forEach((function(t){i[t.attribs["w:ilvl"]]=new it(t,n,r,rt()(i))})),i}return y()(e,t),e}(L),ut=function(){function t(e,n,r){h()(this,t);var i=function(t){return e.children.find((function(e){return e.name===t}))};switch(this.distance=r.toDist(e),Object.assign(this,r.selectValue(i("wp:extent"))),e.attribs.simplePos){case"1":Object.assign(this,r.selectValue(i("wp:simplePos")));break;case"0":default:Object.assign(this,r.select([i("wp:positionH"),i("wp:positionV")],{positionH:"x",positionV:"y"}))}var a="TopAndBottom,Square,Tight,Through".split(",").reduce((function(t,e){return t||i("wp:wrap".concat(e))}),null);a&&(this.wrap=r.selectValue(a))}return p()(t,[{key:"flat",value:function(){return{distance:this.distance,x:this.x,y:this.y,wrap:this.wrap,width:this.width,height:this.height}}}]),t}();function ht(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ft(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ht(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ht(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var pt={Default:R,Character:H,Paragraph:B,Num:lt,Numbering:V,Table:et,AbstractNum:ct,Properties:function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;h()(this,t),this.docx=e,this.theme=function(t,e){return Object.assign(t.officeDocument.theme.prototype,{font:function(e){var n=e.split(/(?=[A-Z])/g),r=O()(n),i=r[0],a=r.slice(1);a={HAnsi:"latin",Ascii:"latin",Bidi:"cs",EastAsia:"ea"}[a.join("")];var o=this.find("a\\:fontScheme>a\\:".concat(i,"Font>a\\:").concat(a)).attr("typeface");if(!o&&("cs"==a||"ea"==a)){var l=t.officeDocument.settings("w\\:themeFontLang").attr("w:".concat({cs:"bidi",ea:"eastAsia"}[a]));l&&(o=this.find("a\\:fontScheme>a\\:".concat(i,"Font>a\\:font[script=").concat({"zh-CN":"Hans"}[l],"]")).attr("typeface"))}return o},color:function(e){if("phClr"==e)return e;var n=t.officeDocument.settings("w\\:clrSchemeMapping").attr("w:".concat(e))||e,r=this.find("a\\:clrScheme>a\\:".concat(n)),i=r.find("a\\:srgbClr").attr("val")||r.find("a\\:sysClr").attr("lastClr")||"000000";return"#".concat(i)},format:function(t,e){var n={line:"ln",fill:"fillStyleLst",bgFill:"bgFillStyleLst",effect:"effectStyle",font:"fontScheme"}[t];return this.find("a\\:fmtScheme a\\:".concat(n,":nth-child(").concat(parseInt(e)+1,")"))}}),t.officeDocument.theme.root()}(e),this.rStyle=this.pStyle=this.tblStyle=this.type=this._val,this.wrapSquare=this.wrapTight=this.wrapThrough=this.wrapTopAndBottom=this.wrap,this.vAlign=this.vertAlign,this.ext=this.extent,this.requireFonts=new Set,this.precision=n}return p()(t,[{key:"emu2Px",value:function(t){return parseInt(this.docx.pt2Px(parseInt(t)/12700)*this.precision)}},{key:"dxa2Px",value:function(){var t;return parseInt((t=this.docx).dxa2Px.apply(t,arguments)*this.precision)}},{key:"pt2Px",value:function(){var t;return parseInt((t=this.docx).pt2Px.apply(t,arguments)*this.precision)}},{key:"select",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.reduce((function(t,r){var i=r.name.split(":").pop();return e[i]&&(t[n[r.name]||n[i]||i]=e[i](r)),t}),{})}},{key:"selectValue",value:function(t){var e=t.name.split(":").pop();if(this[e])return this[e](t)}},{key:"pgSz",value:function(t){return{width:this.dxa2Px(t.attribs["w:w"]),height:this.dxa2Px(t.attribs["w:h"])}}},{key:"pgMar",value:function(t){var e=this;return Object.keys(t.attribs).reduce((function(n,r){return n[r.split(":").pop()]=e.dxa2Px(t.attribs[r]),n}),{})}},{key:"titlePg",value:function(t){return"false"!==a.atrribs["w:val"]}},{key:"cnfStyle",value:function(t){return parseInt(t.attribs["w:val"],2)}},{key:"cols",value:function(t){var e=this,n={num:1};t.attribs["w:num"]&&(n.num=parseInt(t.attribs["w:num"])),t.attribs["w:space"]&&(n.space=this.dxa2Px(t.attribs["w:space"]));var r=this.docx.officeDocument.content(t).find("w\\:col").toArray().map((function(t){return{width:e.dxa2Px(t.attribs["w:w"]),space:e.dxa2Px(t.attribs["w:space"])}}));return r.length&&(n.data=r),n}},{key:"_val",value:function(t){return t.attribs["w:val"]}},{key:"jc",value:function(t){return this._val(t)}},{key:"ind",value:function(t){var e=this;return Object.keys(t.attribs).reduce((function(n,r){return n[r.split(":").pop()]=e.dxa2Px(t.attribs[r]),n}),{})}},{key:"spacing",value:function(t){return this.toSpacing(t)}},{key:"widowControl",value:function(t){return"0"!==this._val(t)}},{key:"keepNext",value:function(t){return!0}},{key:"keepLines",value:function(t){return!0}},{key:"pBdr",value:function(t){var e=this;return Object.keys(t.attribs).reduce((function(n,r){return n[r.split(":").pop()]=e.toBorder(t[r][0]),n}),{})}},{key:"rFonts",value:function(t){var e,n=this,r=[];if((e=t.attribs["w:ascii"])?r.push(e):(e=t.attribs["w:asciiTheme"])&&r.push(this.theme.font(e)),(e=t.attribs["w:eastAsia"])?r.push(e):(e=t.attribs["w:eastAsiaTheme"])&&r.push(this.theme.font(e)),r.length)return(r=r.join(",")).split(",").forEach((function(t){return n.requireFonts.add(t)})),r}},{key:"lang",value:function(t){return this._val(t)}},{key:"vertAlign",value:function(t){return this._val(t)}},{key:"sz",value:function(t){return this._val(t)/2}},{key:"kern",value:function(t){return this._val(t)/2}},{key:"w",value:function(t){return this._val(t)/100}},{key:"position",value:function(t){return this.dxa2Px(this._val(t))}},{key:"i",value:function(t){return this.asToggle(t)}},{key:"strike",value:function(t){return this.asToggle(t)}},{key:"u",value:function(t){return this._val(t)}},{key:"vanish",value:function(t){return this.asToggle(t)}},{key:"smallCaps",value:function(t){return this.asToggle(t)}},{key:"b",value:function(t){return this.asToggle(t)}},{key:"background",value:function(t){return this.toColor(t,"w:color")}},{key:"highlight",value:function(t){return this.toColor(t)}},{key:"color",value:function(t){return this.toColor(t)}},{key:"bdr",value:function(t){return this.toBorder(t)}},{key:"tblGrid",value:function(t){var e=this;return t.children.map((function(t){return e.dxa2Px(t.attribs["w:w"])}))}},{key:"tcBorders",value:function(t){var e=this;return t.children.reduce((function(t,n){return t[n.name.split(":").pop()]=e.toBorder(n),t}),{})}},{key:"tblBorders",value:function(t){return this.tcBorders(t)}},{key:"tblCellMar",value:function(t){var e=this;return t.children.reduce((function(t,n){return t[n.name.split(":").pop()]=e.dxa2Px(n.attribs["w:w"]),t}),{})}},{key:"tblLook",value:function(t){return Object.keys(t.attribs).reduce((function(e,n){return e[n.split(":").pop()]=t.attribs[n],e}),{})}},{key:"tblStyleColBandSize",value:function(t){return parseInt(this._val(t))}},{key:"tblStyleRowBandSize",value:function(t){return parseInt(this._val(t))}},{key:"tblInd",value:function(t){return this.dxa2Px(t.attribs["w:w"])}},{key:"tcW",value:function(t){return this.dxa2Px(t.attribs["w:w"])}},{key:"shd",value:function(t){return this.docx.asColor(t.attribs["w:fill"])}},{key:"trHeight",value:function(t){return this.dxa2Px(t.attribs["w:val"])}},{key:"cantSplit",value:function(t){return!0}},{key:"cnfStyle",value:function(t){return this._val(t)}},{key:"positionH",value:function(t){var e=this;return ft({base:t.attribs.relativeFrom},t.children.reduce((function(t,n){switch(n.name.split(":").pop()){case"posOffset":t.offset=e.emu2Px(n.children[0].data);break;case"align":t.align=n.children[0].data}return t}),{}))}},{key:"positionV",value:function(){return this.positionH.apply(this,arguments)}},{key:"simplePos",value:function(t){return{x:{base:"page",offset:this.emu2Px(t.attribs.x)},y:{base:"page",offset:this.emu2Px(t.attribs.y)}}}},{key:"extent",value:function(t){return{width:this.emu2Px(t.attribs.cx),height:this.emu2Px(t.attribs.cy)}}},{key:"off",value:function(t){return{x:this.emu2Px(t.attribs.x),y:this.emu2Px(t.attribs.y)}}},{key:"xfrm",value:function(t){var e=this.select(t.children,{off:"position",ext:"size"});return t.attribs.rot&&(e.rotate=Math.ceil(parseInt(t.attribs.rot)/6e4)),"1"===t.attribs.flipH&&(e.flipH=!0),"1"===t.attribs.flipV&&(e.flipV=!0),e}},{key:"prstGeom",value:function(t){return t.attribs.prst}},{key:"custGeom",value:function(t){for(var e,n=this,r=[],i=function(t){return n.emu2Px(t)},a=t.children.find((function(t){return"a:pathLst"==t.name})).children[0].children,o=a.length,l=0;l<o;l++)switch((e=a[l]).name.split(":").pop()){case"moveTo":r.push("M "+i(e.children[0].attribs.x)+" "+i(e.children[0].attribs.y));break;case"lnTo":r.push("L "+i(e.children[0].attribs.x)+" "+i(e.children[0].attribs.y));break;case"cubicBezTo":r.push("L "+i(e.children[0].attr("x"))+" "+i(e.children[0].attr("y"))),r.push("Q "+i(e.children[1].attr("x"))+" "+i(e.children[1].attr("y"))+" "+i(e.children[2].attr("x"))+" "+i(e.children[2].attr("y")));break;case"arcTo":r.push("A");break;case"close":r.push("Z")}return r.join(" ")}},{key:"solidFill",value:function(t){return this.toColor(t.children[0])}},{key:"blip",value:function(t){var e=t.attribs["r:embed"];return ft({},officeDocument.getRel(e))}},{key:"stretch",value:function(t){return this.fillRect(t.children[0])}},{key:"fillRect",value:function(t){return"left,right,bottom,top".split(",").reduce((function(e,n){return e[n]=parseInt(t.attribs[n[0]])/1e5,e}),{})}},{key:"srcRect",value:function(t){return this.fillRect(t)}},{key:"tile",value:function(t){return ft({},t.attribs)}},{key:"blipFill",value:function(t){return this.select(t.children,{blip:"src",stretch:"stretch",srcRect:"portion",tile:"tile"})}},{key:"ln",value:function(t){var e=this.select(t.children,{prstDash:"dash"});return e.width=this.emu2Px(t.attribs.w),e}},{key:"bodyPr",value:function(t){var e=this,n={};return n.margin="bottom,top,right,left".split(",").reduce((function(n,r,i){return(i=t.attribs["".concat(r[0],"Ins")])&&(n[r]=e.emu2Px(i)),n}),{}),n}},{key:"wrapPolygon",value:function(t){var e=this;return t.children.map((function(t){return function(t){var n=t.attribs,r=n.x,i=n.y;return{x:e.emu2Px(r),y:e.emu2Px(i)}}(t)}))}},{key:"wrap",value:function(t){var e=ft({mode:t.name.substring("wp:wrap".length),wrapText:t.attribs.wrapText,distance:this.toDist(t)},this.select(t.children,{wrapPolygon:"polygon"}));if("Square"==e.mode&&!e.distance){var n=this.emu2Px(36e3);e.distance={left:n,right:n,top:n,bottom:n}}return e}},{key:"numPr",value:function(t){return t.children.reduce((function(t,e){return t[e.name.split(":").pop()]=e.attribs["w:val"],t}),{})}},{key:"outlineLvl",value:function(t){return parseInt(t.attribs["w:val"])}},{key:"asToggle",value:function(t){return null==t||null==t.attribs["w:val"]||!!parseInt(this._val(t))}},{key:"toDist",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"dist",r="Right,Left,Bottom,Top".split(",").reduce((function(r,i){return t.attribs["".concat(n).concat(i[0])]&&(r[i.toLowerCase()]=e.emu2Px(t.attribs["".concat(n).concat(i[0])])),r}),{});if(Object.keys(r).length>0)return r}},{key:"toSpacing",value:function(t){var e,n,r={};if(!t.attribs["w:beforeAutospacing"]&&(n=t.attribs["w:beforeLines"])?r.top=this.dxa2Px(n):(n=t.attribs["w:before"])&&(r.top=this.dxa2Px(n)),!t.attribs["w:afterAutospacing"]&&(n=t.attribs["w:afterLines"])?r.bottom=this.dxa2Px(n):(n=t.attribs["w:after"])&&(r.bottom=this.dxa2Px(n)),!(e=t.attribs["w:line"]))return r;switch(r.lineRule=t.attribs["w:lineRule"]){case"atLeast":case"exact":r.lineHeight=this.dxa2Px(e);break;case"auto":default:r.lineHeight=100*parseInt(e)/240+"%"}return r}},{key:"toBorder",value:function(t){var e,n={};if(n.val=t.attribs["w:val"],"nil"!=n.val)return(e=t.attribs["w:sz"])&&(n.sz=this.pt2Px(e/8)),(e=t.attribs["w:color"])?n.color=this.docx.asColor(e):(e=t.attribs["w:themeColor"])&&(n.color=this.theme.color(e)),(e=t.attribs["w:space"])&&(n.space=parseInt(e)),n;n.sz=0}},{key:"toColor",value:function(t){return this.docx.asColor(t.attribs["w:val"]||t.attribs["w:color"]||this.theme.color(t.attribs["w:themeColor"]))}}]),t}(),Shape:function t(e,n,r){h()(this,t),this.styles=n;var i=e.children.find((function(t){return t.name.endsWith(":spPr")}));this.props=i?r.select(i.children,{xfrm:"transform",custGeom:"path",prstGeom:"shape",ln:"outline",solidFill:"fill",blipFill:"image"}):{}},Anchor:ut},dt=n(6),wt=n.n(dt),vt=n(7),mt=n.n(vt),gt=n(11),yt=n.n(gt),bt=n(14),xt=n.n(bt),kt=n(15);function Pt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _t(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Pt(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Pt(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Ot(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ct(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Ot(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Ot(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function jt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function St(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function It(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?St(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):St(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function At(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Dt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Tt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Nt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Tt(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Tt(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var Ft=function(t){var e,n,r=t.Shape;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(i))),x()(rt()(n),"childStyle",yt()((function(t,e){return t?t.inherit(e):e}))),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){return{style:this.props.textStyle?this.props.textStyle.inherit(this.context.style):this.context.style}}},{key:"render",value:function(){return wt.a.createElement(r,this.props)}}],[{key:"asStyle",value:function(t){return Object.assign(new Et(t).flat(),{_raw:t})}}]),e}(dt.Component),x()(e,"displayName","shape"),x()(e,"contextTypes",{style:mt.a.object}),x()(e,"childContextTypes",{style:mt.a.object}),n},Lt=function(){function t(e,n){for(var r=this,i=arguments.length,a=new Array(i>2?i-2:0),o=2;o<i;o++)a[o-2]=arguments[o];h()(this,t);var l=function(t){return t};this.flat=function(){return Object.keys(e).reduce((function(t,i){var o=r[i]||a.includes(i)&&l;if(o){var s=o.bind(r)(e[i],t,e);if(null!=s&&s!=t)t[n[i]||i]=s}return t}),{})}}return p()(t,[{key:"got",value:function(t,e){return t[e]||(t[e]={})}}]),t}(),Et=function(t){function e(t){var n;h()(this,e),n=w()(this,m()(e).call(this,t,{anchor:"vertAlign",ln:"outline",bodyPr:"textStyle"},"geometry","solidFill","rotate","textStyle")),x()(rt()(n),"xfrm",(function(t,e){return Object.assign(e,t)})),x()(rt()(n),"blipFill",(function(t){return Nt({},t.blip,{},c()(t,["blip"]))}));var r=n.flat.bind(rt()(n));return n.flat=function(){var t=r();if(t.outline&&t.outline.noFill){var e=t.outline,i=e.width,a=void 0===i?0:i,o=e.half,l=void 0===o?a/2:o,s=n.got(t,"margin"),c=s.left,u=void 0===c?0:c,h=s.right,f=void 0===h?0:h,p=s.bottom,d=void 0===p?0:p,w=s.top,v=void 0===w?0:w;t.margin={left:u+l,right:f+l,bottom:d+l,top:v+l},delete t.outline}return t},n}return y()(e,t),p()(e,[{key:"anchor",value:function(t){return{b:"bottom",ctr:"middle",t:"top",dist:"distributed",just:"justified"}[t]}},{key:"ln",value:function(t){return Nt({width:t.w},c()(t,["w"]))}},{key:"bodyPr",value:function(t,e){var n=new Rt(t).flat().margin;e.margin=n}},{key:"textStyle",value:function(t,e){Object.assign(this.got(e,"textStyle"),t)}}]),e}(Lt),Rt=function(t){function e(t){var n;h()(this,e);var r=function(t){return function(e,r){n.got(r,"margin")[t]=e}};return(n=w()(this,m()(e).call(this,t,{}))).rIns=r("right"),n.tIns=r("top"),n.lIns=r("left"),n.bIns=r("bottom"),n}return y()(e,t),e}(Lt);function zt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ht(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?zt(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):zt(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var $t=function(t){var e,n,r=t.Frame,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"headerFooter";return n=e=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"render",value:function(){return wt.a.createElement(r,xt()({},this.props,{width:this.context.headerFooterWidth}))}}]),e}(dt.Component),x()(e,"displayName",i),x()(e,"contextTypes",{headerFooterWidth:mt.a.number}),n},qt=function(t){var e,n;return n=e=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"render",value:function(){return null}}]),e}(dt.PureComponent),x()(e,"displayName","".concat(t)),n},Mt={Document:function(t){var e,n,r=t.Document;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(a))),x()(rt()(n),"numberingContext",yt()((function(t){var e=null,r=n.styles;return{numbering:function(n){e||(e={},k.ContentQuery.fromContent(t).findFirst((function(t){if("paragraph"==t.get("type")){if(t.hasIn(["props","numId"])){var n=t.getIn(["props","numId"]),r=t.getIn(["props","level"]);(e[n]=e[n]||[]).push([t.get("id"),r])}return!1}})));var a=t.getIn([n,"props"]).toJS(),o=a.numId,l=a.level,s=e[o].findIndex((function(t){return t[0]==n})),c=e[o].slice(0,s+1).reduce((function(t,e){var n=i()(e,2),r=(n[0],n[1]);return t.set(r,(t.get(r)||0)+1),t}),new Map);return r["_num_".concat(o)].level(l).label(c)}}}),(function(t,e){return t.equals(e)}))),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){var t=this;return{styles:this.styles,evenAndOddHeaders:!!this.props.evenAndOddHeaders,style:this.styles["*"],numbering:function(e){return t.numberingContext(t.props.content).numbering(e)}}}},{key:"resetNumbering",value:function(){var t=this.styles;Object.keys(t).forEach((function(e,n){return(n=t[e])&&n.reset&&n.reset()}))}},{key:"render",value:function(){var t=this.constructor.Document(r),e=this.props,n=(e.evenAndOddHeaders,c()(e,["evenAndOddHeaders"]));return this.resetNumbering(),wt.a.createElement(t,n)}},{key:"styles",get:function(){return this.props.styles}}]),e}(dt.Component),x()(e,"displayName","document"),x()(e,"childContextTypes",{styles:mt.a.object,evenAndOddHeaders:mt.a.bool,style:mt.a.object,numbering:mt.a.func}),x()(e,"Document",yt()((function(t){return function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"appendComposed",value:function(t){if(t.computed.isContinuousLayout){var n=this.computed.composed,r=n[n.length-1];r&&r.continuous&&r.appendContinuousLayout(t)}else l()(m()(e.prototype),"appendComposed",this).call(this,t)}}]),e}(t)}))),n},Section:function(t){var e,n,r=t.Section,a=t.Group;return n=e=function(t){function e(){var t,n;h()(this,e);for(var i=arguments.length,a=new Array(i),o=0;o<i;o++)a[o]=arguments[o];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(a))),x()(rt()(n),"getCols",yt()((function(t,e,n){var r=e.left,i=void 0===r?0:r,a=e.right,o=void 0===a?0:a,l=n.num,s=void 0===l?1:l,c=n.space,u=void 0===c?0:c,h=n.data,f=t-i-o;return(h||new Array(s).fill({width:(f-(s-1)*u)/s,space:u})).reduce((function(t,e){var n=e.width,r=e.space;return t.cols.push({x:t.x,width:n}),t.x+=r+n,t}),{x:i,cols:[]}).cols}),kt.shallowEqual)),x()(rt()(n),"getCreate",yt()((function(t,e,i,a,o){return function(l,s){var c=n.constructor.Section(r).Layout,u="continuous"==o;if(u&&0==l.i){var h=s.getComposer("root").computed.composed,f=h[h.length-1];if(f&&f.continuous){var p=f._makeContinuousLayout(_t({},l,{margin:i,width:t,height:e,I:void 0,cols:a}),s);if(p)return p}}var d=n.getHeaderFooter(l,s),w=d.header,v=d.footer,m=i.top;w&&(w=wt.a.cloneElement(w,{x:i.left,y:i.header,className:"header"}),m=Math.max(m,i.header+w.props.height));var g=e-i.bottom;if(v){var y=e-i.footer-v.props.height;v=wt.a.cloneElement(v,{x:i.left,y:y,className:"footer"}),g=Math.min(y,g)}return new c(_t({continuous:u,balance:u,header:w,footer:v,width:t,height:e,margin:i,cols:a.map((function(t){return _t({},t,{y:m,maxHeight:g-m})}))},l),s)}}),kt.shallowEqual)),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){var t=this.props,e=t.pgSz.width,n=t.pgMar,r=(n=void 0===n?{}:n).left,i=void 0===r?0:r,a=n.right;return{headerFooterWidth:e-i-(void 0===a?0:a)}}},{key:"getHeaderFooter",value:function(t,e){var n=t.I,r=t.i,i=this.context.evenAndOddHeaders,a=this.props,o=a.titlePg,l=void 0===o||o,s=a.id,c=function(t){return[l&&0==n&&"first",i&&(r%2==0?"even":"odd"),"default"].filter((function(t){return!!t})).reduceRight((function(n,r){return n||function(t){var n=e.getComposer("root"),r=dt.Children.toArray(n.props.children).filter((function(t){return"section"==t.type.displayName})).map((function(t){return t.props.id}));return r.slice(0,r.indexOf(s)+1).reduceRight((function(n,r){return n||e.getComposer(r).named(t)}),null)}("".concat(t,".").concat(r))}),null)};return{header:c("header"),footer:c("footer")}}},{key:"render",value:function(){var t=this.constructor.Section(r),e=this.props,n=e.pgSz,i=n.width,a=n.height,o=e.pgMar,l=e.cols,s=e.type,u=c()(e,["pgSz","pgMar","cols","type"]),h=this.getCreate(i,a,o,this.getCols(i,o,l),s);return wt.a.createElement(t,xt()({createLayout:h},u))}}]),e}(dt.Component),x()(e,"displayName","section"),x()(e,"propTypes",{cols:mt.a.shape({num:mt.a.number.isRequired,space:mt.a.number,data:mt.a.arrayOf(mt.a.shape({width:mt.a.number,space:mt.a.number}))}),titlePg:mt.a.bool}),x()(e,"defaultProps",{cols:{num:1}}),x()(e,"contextTypes",{evenAndOddHeaders:mt.a.bool}),x()(e,"childContextTypes",{headerFooterWidth:mt.a.number}),x()(e,"Section",yt()((function(t){var e,n;return t.Layout?(n=e=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"cancelUnusableLastComposed",value:function(){var t,n=this.computed.lastComposed[this.computed.lastComposed.length-1];n&&(n.continuousLayouts=[]);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return(t=l()(m()(e.prototype),"cancelUnusableLastComposed",this)).call.apply(t,[this].concat(i))}}]),e}(t),x()(e,"Layout",function(e){function n(){return h()(this,n),w()(this,m()(n).apply(this,arguments))}return y()(n,e),p()(n,[{key:"defineProperties",value:function(){l()(m()(n.prototype),"defineProperties",this).call(this),this.computed.continuousLayouts=[],Object.defineProperties(this,{continuousLayouts:{get:function(){return this.computed.continuousLayouts},set:function(t){this.computed.continuousLayouts=t}},continuous:{get:function(){return this.props.continuous}},composedHeight:{get:function(){var t=function(t){return Math.max.apply(Math,t.columns.map((function(t){return t.contentHeight})))};return this.computed.continuousLayouts.reduce((function(e,n){return e+t(n)}),t(this))}}})}},{key:"createComposed2Parent",value:function(){var t=this.props,e=t.header,r=t.footer,i=l()(m()(n.prototype),"createComposed2Parent",this).call(this),o=_t({},i.props);return this.hasMultipleSectionContent&&Object.keys(o).filter((function(t){return t.startsWith("data-")})).forEach((function(t){return o[t]=void 0})),wt.a.cloneElement(i,o,wt.a.createElement(a.Layers,null,[wt.a.createElement(a.Layer,{key:"headerfooter",z:Number.MIN_SAFE_INTEGER},e,r),wt.a.createElement(a.Layer,{key:"content",z:Number.MAX_SAFE_INTEGER},i.props.children)]))}},{key:"positionLines",value:function(){for(var t,e=arguments.length,r=new Array(e),i=0;i<e;i++)r[i]=arguments[i];if(!this.hasMultipleSectionContent)return(t=l()(m()(n.prototype),"positionLines",this)).call.apply(t,[this].concat(r));var o=Object.assign(this._makeContinuousLayout(this.props,this.context,!1),{computed:_t({},this.computed,{columns:this.columns.map((function(t){return _t({},t,{y:void 0})}))})}).createComposed2Parent();o=wt.a.cloneElement(o,{key:"content",y:this.cols[0].y});var s=Math.max.apply(Math,this.columns.map((function(t){return t.blockOffset}))),c=Math.max.apply(Math,this.columns.map((function(t){var e=t.contentHeight,n=t.height;return void 0===n?e:n}))),u=this.continuousLayouts.map((function(t,e){var n=wt.a.cloneElement(t.createComposed2Parent(),{y:s,key:e});return s+=n.props.height,c+=n.props.height,n}));return wt.a.createElement(a,{height:c},[o].concat(u))}},{key:"_makeContinuousLayout",value:function(e,n){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=e.margin,o=e.width,l=e.height,s=e.cols,u=c()(e,["margin","width","height","cols"]),h=i()(this.cols,1),f=h[0].maxHeight,p=this.composedHeight;if(!(r&&(f-=p)<=1)){var d=a.left,w=void 0===d?0:d,v=a.right,m=void 0===v?0:v,g=new t.Layout(_t({},u,{I:void 0,cols:s.map((function(t){return _t({},t,{maxHeight:f,y:void 0})})),balance:!0,width:o-w-m,height:void 0,_layout:{width:o,height:l,cols:s,margin:a}}),_t({},n,{frame:this}));return g.computed.isContinuousLayout=!0,g}}},{key:"appendContinuousLayout",value:function(t){this.continuousLayouts.push(t)}},{key:"layoutOf",value:function(t){var e=t.id,r=this.context.getComposer(e).closest("section");if(r.props.id==this.props.id)return l()(m()(n.prototype),"layoutOf",this).call(this);var i=r.computed.composed[0].props._layout,a=i.margin,o=a.left,s=a.right;return _t({},c()(i,["margin"]),{margin:_t({},this.props.margin,{left:o,right:s})})}},{key:"columnIndexOf",value:function(t,e){return l()(m()(n.prototype),"columnIndexOf",this).call(this,t)}},{key:"hasMultipleSectionContent",get:function(){return this.continuousLayouts.length>0}}]),n}(t.Layout)),n):t}))),n},Paragraph:function(t){var e,n,r=t.Paragraph;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(i))),x()(rt()(n),"style",yt()((function(t,e){var n=t.flat4Character(e),r=t.flat(e);if(r.indent&&r.indent.hanging&&(r.indent.firstLine=-r.indent.hanging),r.numbering){var i=r.numbering,a=i.nextValue,o=i.style,l=i.format;r.numbering={style:Ct({},o,{},n),label:a(),format:l}}return{style:r,defaultStyle:n}}),kt.shallowEqual)),x()(rt()(n),"childStyle",yt()((function(t,e){return Object.assign(t.clone(),{r:{}}).inherit(e)}),kt.shallowEqual)),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){return{style:this.childStyle(this.props.style,this.context.style)}}},{key:"render",value:function(){var t=this.props,e=(t.style,c()(t,["style"])),n=this.style(this.props.style,this.context.style),i=n.style,a=i.widow,o=i.orphan,l=void 0===o?a:o,s=c()(i,["widow","orphan"]),u=n.defaultStyle;return wt.a.createElement(r,xt()({},s,e,{widow:a,orphan:l,defaultStyle:u}))}}]),e}(dt.Component),x()(e,"displayName","paragraph"),x()(e,"propTypes",{style:mt.a.object.isRequired,numId:mt.a.string,level:mt.a.number,outline:mt.a.number}),x()(e,"contextTypes",{style:mt.a.object}),x()(e,"childContextTypes",{style:mt.a.object}),n},Text:function(t){var e,n,r=t.Text;return n=e=function(t){function e(){var t;return h()(this,e),(t=w()(this,m()(e).apply(this,arguments))).componentWillReceiveProps(t.props,t.context),t}return y()(e,t),p()(e,[{key:"componentWillReceiveProps",value:function(t,e){this.style=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?jt(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):jt(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},e.r,{},t)}},{key:"render",value:function(){return wt.a.createElement(r,this.style)}}]),e}(dt.Component),x()(e,"displayName","text"),x()(e,"contextTypes",{r:mt.a.object}),n},Run:function(t){var e,n,r=t.Container;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(i))),x()(rt()(n),"style",(function(t,e){return t.flat(e)})),n}return y()(e,t),p()(e,[{key:"render",value:function(){var t=this.props,e=t.style,n=c()(t,["style"]);return e=this.style(e,this.context.style),wt.a.createElement(r,xt()({},n,{type:this.constructor.displayName}),wt.a.Children.map(this.props.children,(function(t){return"text"==t.type.displayName?wt.a.cloneElement(t,e):t})))}}]),e}(dt.Component),x()(e,"displayName","run"),x()(e,"propTypes",{style:mt.a.object.isRequired}),x()(e,"contextTypes",{style:mt.a.object}),n},Cell:function(t){var e,n,r=t.Cell;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(i))),x()(rt()(n),"childStyle",yt()((function(t,e){return t?t.inherit(e):e}))),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){return{style:this.childStyle(this.props.style,this.context.style)}}},{key:"render",value:function(){var t=this.props,e=(t.style,c()(t,["style"])),n=this.childStyle(this.props.style,this.context.style),i=n.get("tc.conditional")|n.get("tr.conditional"),a=n.flat4Cell(i,[]);return wt.a.createElement(r,function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Dt(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Dt(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},e,{},a))}}]),e}(dt.Component),x()(e,"displayName","cell"),x()(e,"contextTypes",{style:mt.a.object}),x()(e,"childContextTypes",{style:mt.a.object}),n},Row:function(t){var e,n,r=t.Row;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(i))),x()(rt()(n),"childStyle",yt()((function(t,e){return t?t.inherit(e):e}))),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){return{style:this.childStyle(this.props.style,this.context.style)}}},{key:"render",value:function(){var t=this.props,e=(t.style,c()(t,["style"])),n=this.childStyle(this.props.style,this.context.style).flat4Row(),i=this.context.cols.reduce((function(t,e){return t.cols.push({x:t.x,width:e}),t.x+=e,t}),{x:0,cols:[]}).cols,a=i.slice(-1).reduce((function(t,e){return e.x+e.width}),0);return wt.a.createElement(r,function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?At(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):At(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},e,{},n,{cols:i,width:a}))}}]),e}(dt.Component),x()(e,"displayName","row"),x()(e,"contextTypes",{style:mt.a.object,cols:mt.a.arrayOf(mt.a.number)}),x()(e,"childContextTypes",{style:mt.a.object}),n},Table:function(t){var e,n,r=t.Table;t.Container;return n=e=function(t){function e(){var t,n;h()(this,e);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return n=w()(this,(t=m()(e)).call.apply(t,[this].concat(i))),x()(rt()(n),"childStyle",yt()((function(t,e){return t?t.inherit(e):e}))),x()(rt()(n),"getIndent",yt()((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,i=new k.ContentQuery(n.context.activeDocStore.getState(),"#".concat(n.props.id));if(i.parents("table").length>0)return t;var a=new k.ReactQuery(wt.a.createElement(dt.Fragment,null,r)).findFirst("cell"),o=a.attr("margin")||e||{},l=o.right,s=void 0===l?0:l;return t-s}))),x()(rt()(n),"getConditionalChildren",yt()((function(t,e){return e}))),n}return y()(e,t),p()(e,[{key:"getChildContext",value:function(){return{style:this.childStyle(this.props.style,this.context.style),cols:this.props.cols}}},{key:"componentWillReceiveProps1",value:function(t,e){var n=e.styles,r=t.children,i=c()(t,["children"]),a=n[i.namedStyle||this.constructor.namedStyle],o="indent".split(",").reduce((function(t,e,n){return null==i[e]&&null!=(n=a.get("tbl.".concat(e)))&&(t[e]=n),t}),{}),l=r.map((function(t,e){var n=t.props.children.map((function(n,o){var l=(n.props||{}).cnfStyle,s=void 0===l?0:l,c=(t.props||{}).cnfStyle,u=(void 0===c?0:c)|s,h=a.merge(It({},n.props,{cnfStyle:u}),function(t,e){var n=[];return 0==t&&n.push("firstRow"),t==r.length-1&&n.push("lastRow"),0==e&&n.push("firstCol"),e==i.cols.length-1&&n.push("lastCol"),n}(e,o));return wt.a.cloneElement(n,It({},h,{cnfStyle:void 0}))}));return wt.a.cloneElement(t,null,n)}));this.style=It({},o,{},i,{children:l})}},{key:"render",value:function(){var t=this.props,e=t.cols,n=t.width,i=void 0===n?e.reduce((function(t,e){return t+e}),0):n,a=t.children,o=(t.style,c()(t,["cols","width","children","style"])),l=this.childStyle(this.props.style,this.context.style),s=l.flat4Table(),u=s.indent,h=c()(s,["indent"]),f=this.getIndent(u,l.get("tbl.margin"),a),p=this.props.style.get("conditional");return null!=p&&(a=this.getConditionalChildren(p,a)),wt.a.createElement(r,It({},o,{},h,{indent:f,width:i,cols:e,children:a}))}}]),e}(dt.Component),x()(e,"displayName","table"),x()(e,"namedStyle","*table"),x()(e,"contextTypes",{style:mt.a.object,styles:mt.a.object,activeDocStore:mt.a.object}),x()(e,"childContextTypes",{style:mt.a.object,cols:mt.a.arrayOf(mt.a.number)}),n},Image:function(t){var e,n,r=Ft(t);return n=e=function(e){function n(){return h()(this,n),w()(this,m()(n).apply(this,arguments))}return y()(n,e),p()(n,[{key:"render",value:function(){return wt.a.createElement(t.Image,this.props)}}],[{key:"asStyle",value:function(){var t=r.asStyle.apply(r,arguments),e=t.blipFill,n=(e=void 0===e?{}:e).url,i=t.width,a=t.height,o=(t.id,t.hash,t.changed,t.children,c()(t,["blipFill","width","height","id","hash","changed","children"]));return{src:n,width:i,height:a,outline:Ht({},o,{width:i,height:a})}}}]),n}(r),x()(e,"displayName","image"),n},Shape:Ft,Anchor:function(t){var e,n,r=t.Anchor;return n=e=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"render",value:function(){var t=this.props,e=t.distance,n=t.wrap,i=t.x,a=t.y,o=c()(t,["distance","wrap","x","y"]),l=function(t,e){return"left,right,top,bottom".split(",").reduce((function(n,r){return n[r]=Math.max(t[r]||0,e[r]||0),n}),{})}(e||{},n&&n.distance||{});switch(i.base){case"leftMargin":i.base="margin",i.align="left";break;case"rightMargin":i.base="margin",i.align="right"}switch(a.base){case"topMargin":a.base="margin",a.align="top";break;case"bottomMargin":a.base="margin",a.align="bottom"}return wt.a.createElement(r,xt()({},o,{margin:l,wrap:n,x:i,y:a}))}}]),e}(dt.Component),x()(e,"displayName","anchor"),n},Header:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return $t.apply(void 0,e.concat(["header"]))},Footer:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return $t.apply(void 0,e.concat(["footer"]))},Styles:function(){return qt("styles")},Style:function(){return qt("style")}},Bt={seperate_up_to_run_at_end_of_text:function(){var t=this.target,e=t.closest("w\\:r"),n=e.clone();n.children(":not(".concat(this.PR,")")).remove(),n.append(t.nextAll()),e.after(n),this.file.renderChanged(e);var r=this.file.renderChanged(n);this.$target.closest("run").after("#".concat(r.id))}},Vt=function(){function t(e){h()(this,t),this.file=e}return p()(t,[{key:"$",value:function(){var t;return(t=this.file.doc.officeDocument).content.apply(t,arguments)}},{key:"got",value:function(t,e,n){var r=e.replace(":","\\:"),i=n.replace(":","\\:"),a=this.node.closest(r),o=a.children(i);0==o.length&&(a.prepend("<".concat(n,"/>")),o=a.children(i));var l=t.replace(":","\\:"),s=o.children(l);return 0==s.length&&(o.append("<".concat(t,"/>")),s=o.children(l)),s}},{key:"trim",value:function(t){return t.replace(/>\s+/g,">").replace(/\s+</g,"<")}},{key:"create",value:function(t){var e=this.template(t),n=this.file.doc.constructor.parseXml(this.trim(e));return this.node=n.root().children().first(),this.apply(t),this.file.attach(this.node)}},{key:"update",value:function(t){this.apply(t),this.file.renderChanged(this.node)}},{key:"apply",value:function(t){var e=this;return Object.keys(t).forEach((function(n){e[n]&&e[n](t[n],t)})),this.node}},{key:"template",value:function(t){return""}}]),t}(),Wt=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"apply",value:function(t){var n=t.data,r=c()(t,["data"]);return"pic:pic"!==this.node.prop("name")&&(this.node=this.node.find("pic\\:pic")),n&&(r.rid="string"==typeof n?this.file.doc.officeDocument.addExternalImage(n):this.file.doc.officeDocument.addImage(n)),l()(m()(e.prototype),"apply",this).call(this,r),this.node.closest("w\\:drawing")}},{key:"size",value:function(t){var e=this,n=t.width,r=t.height,i=this.node.find("a\\:xfrm>a\\:ext"),a=this.node.closest("wp\\:inline"),o=function(t,n){if(t){var r=e.file.px2cm(t),o=parseInt(i.attr(n));if(i.attr(n,r),a.length){var l=a.children("wp\\:extent"),s=parseInt(l.attr(n));l.attr(n,r+s-o)}}};o(n,"cx"),o(r,"cy")}},{key:"rotate",value:function(t){var e=parseInt(6e4*t);this.node.find("a\\:xfrm").attr("rot",e)}},{key:"effectExtent",value:function(t){return null}},{key:"offset",value:function(t){return null}},{key:"rid",value:function(t){this.node.find("a\\:blip").attr("r:embed",t)}},{key:"name",value:function(t,e){var n=e.rid;this.node.find("pic\\:cNvPr").attr("name",t),this.node.closest("wp\\:inline").find("wp\\:docPr").attr("id",n).attr("name",t)}},{key:"template",value:function(t){return'\n <w:drawing>\n <wp:inline distT="0" distB="0" distL="0" distR="0">\n <wp:extent cx="1636295" cy="920416"/>\n <wp:effectExtent l="0" t="0" r="0" b="0"/>\n <wp:docPr/>\n <wp:cNvGraphicFramePr>\n <a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/>\n </wp:cNvGraphicFramePr>\n <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">\n <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">\n <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">\n <pic:nvPicPr>\n <pic:cNvPr/>\n <pic:cNvPicPr/>\n </pic:nvPicPr>\n <pic:blipFill>\n <a:blip r:embed="rId9"/>\n <a:stretch>\n <a:fillRect/>\n </a:stretch>\n </pic:blipFill>\n <pic:spPr>\n <a:xfrm>\n <a:off x="0" y="0"/>\n <a:ext cx="1636295" cy="920416"/>\n </a:xfrm>\n <a:prstGeom prst="rect">\n <a:avLst/>\n </a:prstGeom>\n </pic:spPr>\n </pic:pic>\n </a:graphicData>\n </a:graphic>\n </wp:inline>\n </w:drawing>\n '}}]),e}(Vt),Gt=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"apply",value:function(t,n){var r=t.rows,i=t.cols,a=c()(t,["rows","cols"]);return r&&this.make(r,i),l()(m()(e.prototype),"apply",this).call(this,a)}},{key:"style",value:function(t){return t.namedStyle}},{key:"tblLook",value:function(t){if(!t.tblLook)return null}},{key:"cols",value:function(t){var e=this;t=t.map((function(t){return e.file.px2dxa(t)})),this.node.find("w\\:tblGrid").empty().append(t.map((function(t){return'<w:gridCol w:w="'.concat(t,'"/>')})).join(""))}},{key:"height",value:function(t){var e=t.value,n=t.row,r=(t.cell,this.node.find('[xxid="'.concat(n,'"]'))),i=r.find("w\\:trPr");0==i.length&&(r.prepend("<w:trPr/>"),i=r.find("w\\:trPr"));var a=i.find("w\\:trHeight");0==a.length&&(i.append("<w:trHeight/>"),a=i.find("w\\:trHeight")),e=this.file.px2dxa(e),a.attr("w:val",e)}},{key:"width",value:function(t){var e=t.value,n=t.row,r=t.cell,i=t.i;if(!(e<=0)){var a=this.node.find("w\\:tblGrid").first().find("w\\:gridCol"),o=a.map((function(t,e){return parseInt(e.attribs["w:w"])})).toArray(),l=this.node.find('[xxid="'.concat(n,'"]')).find('[xxid="'.concat(r,'"]')).find("w\\:tcPr>w\\:tcW"),s=(e=this.file.px2dxa(e))-parseInt(l.attr("w:w")||o[i]);if(o.length>i+1){if(!(o[i+1]-s>0))return;o[i+1]=o[i+1]-s}o[i]=e,a.each((function(t,e){e.attribs["w:w"]=o[t]}));var c=this.node.find("w\\:tr");c.toArray().forEach((function(t,e){var n=c.eq(e).find("w\\:tc");n.eq(i).find("w\\:tcPr>w\\:tcW").attr("w:w",o[i]),o.length>i+1&&n.eq(i+1).find("w\\:tcPr>w\\:tcW").attr("w:w",o[i+1])}))}}},{key:"make",value:function(t,e){var n=this;e=e.map((function(t){return n.file.px2dxa(t)})),this.node.find("w\\:tblGrid").empty().append(e.map((function(t){return'<w:gridCol w:w="'.concat(t,'"/>')})).join(""));var r=new Array(t).fill(0).map((function(t){return["<w:tr>",e.map((function(t){return n.template_tc(t)})).join(""),"</w:tr>"].join("")}));this.node.append(this.trim(r.join(""))),this.makeStyleReady()}},{key:"makeStyleReady",value:function(){var t=this.file.doc.officeDocument.styles;if(0==t('w\\:style[w\\:styleId="TableNormal"]').length){var e=t(this.trim(Jt)).insertAfter(t('w\\:style[w\\:default="1"]').last());this.file.renderChanged(e)}if(0==t('w\\:style[w\\:styleId="TableGrid"]').length){var n=t(this.trim(Ut)).appendTo(t("w\\:styles"));this.file.renderChanged(n)}}},{key:"template_tc",value:function(t){return"<w:tc>".concat(null!=t?'<w:tcPr><w:tcW w:w="'.concat(t,'" w:type="dxa"/></w:tcPr>'):"","<w:p><w:r><w:t></w:t></w:r></w:p></w:tc>")}},{key:"template",value:function(t){return'\n <w:tbl>\n <w:tblPr>\n <w:tblStyle w:val="TableGrid"/>\n <w:tblW w:w="0" w:type="auto"/>\n <w:tblLook w:val="04A0" w:noVBand="1" w:noHBand="0" w:lastColumn="0" w:firstColumn="1" w:lastRow="0" w:firstRow="1"/>\n </w:tblPr>\n <w:tblGrid>\n </w:tblGrid>\n </w:tbl>\n '}}]),e}(Vt),Jt='\n <w:style w:type="table" w:default="1" w:styleId="TableNormal">\n <w:name w:val="Normal Table"/>\n <w:uiPriority w:val="99"/>\n <w:semiHidden/>\n <w:unhideWhenUsed/>\n <w:tblPr>\n <w:tblInd w:w="0" w:type="dxa"/>\n <w:tblCellMar>\n <w:top w:w="0" w:type="dxa"/>\n <w:left w:w="108" w:type="dxa"/>\n <w:bottom w:w="0" w:type="dxa"/>\n <w:right w:w="108" w:type="dxa"/>\n </w:tblCellMar>\n </w:tblPr>\n </w:style>\n',Ut='\n <w:style w:type="table" w:styleId="TableGrid">\n <w:name w:val="Table Grid"/>\n <w:basedOn w:val="TableNormal"/>\n <w:uiPriority w:val="39"/>\n <w:rsid w:val="000164E0"/>\n <w:tblPr>\n <w:tblBorders>\n <w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/>\n <w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/>\n <w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/>\n <w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/>\n <w:insideH w:val="single" w:sz="4" w:space="0" w:color="auto"/>\n <w:insideV w:val="single" w:sz="4" w:space="0" w:color="auto"/>\n </w:tblBorders>\n </w:tblPr>\n </w:style>\n',Xt=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"template",value:function(){return"<w:t></w:t>"}},{key:"update",value:function(t){this.apply(t);var e=this.node.parent().closest("[xxid]");e.length&&this.file.renderChanged(e)}},{key:"children",value:function(t){this.node.text(t),(t.startsWith(" ")||t.endsWith(" "))&&this.node.attr("xml:space","preserve")}},{key:"got",value:function(t){return l()(m()(e.prototype),"got",this).call(this,t,"w:r","w:rPr")}},{key:"split",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.node.text();if((t=t<0?n.length+t:t)>=n.length||0==t)return[{id:this.node.attr("xxid"),at:t},{id:this.node.attr("xxid"),at:t}];this.node.text(n.substring(0,t));var r,i=this.node.closest("w\\:r"),a=i.clone();return a.find("w\\:t").remove(),a=a.append(this.node.clone().text(n.substring(t))).insertAfter(i),(r=e?a:i).removeAttr("xxid"),r.find("[xxid]").removeAttr("xxid"),this.file.renderChanged(i.parent().closest("[xxid]")),[{id:this.node.attr("xxid"),at:t},{id:a.find("w\\:t").attr("xxid"),at:0}]}},{key:"remove",value:function(){this.node.remove()}},{key:"fonts",value:function(t){this.got("w:rFonts").attr("w:ascii",t)}},{key:"size",value:function(t){this.got("w:sz").attr("w:val",2*parseInt(t)),this.got("w:szCs").attr("w:val",2*parseInt(t))}},{key:"bold",value:function(t){this._toggle("w:b",t)}},{key:"italic",value:function(t){this._toggle("w:i",t)}},{key:"vanish",value:function(t){this._toggle("w:vanish",t)}},{key:"color",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"w:color",r=this.got(n);t?r.attr("w:val",t):r.remove()}},{key:"highlight",value:function(t,e){this.color(t,e,"w:highlight")}},{key:"border",value:function(){var t=this.got("w:bdr");t.attr("w:val")?t.remove():t.replaceWith('<w:bdr w:val="single" w:sz="4" w:space="0" w:color="auto"/>')}},{key:"underline",value:function(t){var e=this.got("w:u");t?e.attr("w:val",t):e.remove()}},{key:"strike",value:function(t){this._toggle("w:strike",t)}},{key:"tab",value:function(t){t.shiftKey,t.at}},{key:"_toggle",value:function(t,e){var n=this.got(t);e?n.attr("w:val","1"):n.remove()}},{key:"_clear",value:function(){this.node.closest("w\\:r").children("w\\:rPr").remove()}}]),e}(Vt),Qt=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"got",value:function(t){return this.node.children(t.replace(":","\\:"))}},{key:"cols",value:function(t){t.length>1&&1==new Set(t).size&&(t=[t.length]),1==t.length&&1==t[0]&&(t=[]);var e=this.got("w:cols");switch(t.length){case 0:e.removeAttr("w:num").removeAttr("w:equalWidth").children().remove();break;case 1:e.attr("w:num",t[0]).attr("w:space",720).children().remove();break;default:e.empty(),e.attr("w:equalWidth","0"),e.attr("w:num",t.length);var n=parseInt(this.node.children("w\\:pgSz").attr("w:w")),r=this.node.children("w\\:pgMar")[0].attribs,i=r["w:left"],a=r["w:right"],o=r.left,l=void 0===o?parseInt(i):o,s=r.right,c=(n-(void 0===s?parseInt(a):s)-l-720*(t.length-1))/t.reduce((function(t,e){return t+e}),0);e.append(t.map((function(t){return'<w:col w:w="'.concat(parseInt(c*t),'" w:space="').concat(720,'"/>')}))),e.children().last().removeAttr("w:space")}}},{key:"size",value:function(t){var e=t.width,n=t.height;this.got("w:pgSz").attr("w:w",this.file.cm2dxa(e)).attr("w:h",this.file.cm2dxa(n))}},{key:"margin",value:function(t){var e=i()(t,4),n=e[0],r=e[1],a=void 0===r?n:r,o=e[2],l=void 0===o?n:o,s=e[3],c=void 0===s?a:s;this.got("w:pgMar").attr("w:top",this.file.cm2dxa(n)).attr("w:right",this.file.cm2dxa(a)).attr("w:bottom",this.file.cm2dxa(l)).attr("w:left",this.file.cm2dxa(c))}},{key:"orientation",value:function(t){var e=this.got("w:pgSz"),n=e[0].attribs,r=n["w:w"],i=n["w:h"];if(parseInt(r)<parseInt(i)&&"landscape"==t||parseInt(r)>parseInt(i)&&"portrait"==t){"portrait"==t?e.removeAttr("w:orient"):e.attr("w:orient",t),e.attr("w:h",r).attr("w:w",i);var a=this.got("w:pgMar"),o=a[0].attribs,l=o["w:top"],s=o["w:bottom"],c=o["w:left"],u=o["w:right"];a.attr("w:top",u).attr("w:right",s).attr("w:bottom",c).attr("w:left",l)}}},{key:"template",value:function(t){return'\n\t\t<w:p>\n\t\t\t<w:pPr>\n\t\t\t\t<w:sectPr w:rsidR="002C1430">\n\t\t\t\t\t<w:pgSz w:w="12240" w:h="15840"/>\n\t\t\t\t\t<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>\n\t\t\t\t\t<w:cols w:space="708"/>\n\t\t\t\t\t<w:docGrid w:linePitch="360"/>\n\t\t\t\t</w:sectPr>\n\t\t\t</w:pPr>\n\t\t</w:p>\n\t\t'}}]),e}(Vt),Zt=function t(){h()(this,t)};x()(Zt,"Template",(function(t,e){return'\n <w:num w:numId="'.concat(t,'">\n <w:abstractNumId w:val="').concat(e,'"/>\n </w:num>\n ')})),x()(Zt,"Numeric",(function(t){return'\n <w:abstractNum w:abstractNumId="'.concat(t,'" w15:restartNumberingAfterBreak="0">\n <w:nsid w:val="4EB77DE4"/>\n <w:multiLevelType w:val="hybridMultilevel"/>\n <w:tmpl w:val="DE9ED1E8"/>\n <w:lvl w:ilvl="0" w:tplc="8250C364">\n <w:start w:val="1"/>\n <w:numFmt w:val="decimal"/>\n <w:lvlText w:val="%1."/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="720" w:hanging="360"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="1" w:tplc="04090019" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="lowerLetter"/>\n <w:lvlText w:val="%2."/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="1440" w:hanging="360"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="2" w:tplc="0409001B" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="lowerRoman"/>\n <w:lvlText w:val="%3."/>\n <w:lvlJc w:val="right"/>\n <w:pPr>\n <w:ind w:left="2160" w:hanging="180"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="3" w:tplc="0409000F" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="decimal"/>\n <w:lvlText w:val="%4."/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="2880" w:hanging="360"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="4" w:tplc="04090019" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="lowerLetter"/>\n <w:lvlText w:val="%5."/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="3600" w:hanging="360"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="5" w:tplc="0409001B" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="lowerRoman"/>\n <w:lvlText w:val="%6."/>\n <w:lvlJc w:val="right"/>\n <w:pPr>\n <w:ind w:left="4320" w:hanging="180"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="6" w:tplc="0409000F" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="decimal"/>\n <w:lvlText w:val="%7."/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="5040" w:hanging="360"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="7" w:tplc="04090019" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="lowerLetter"/>\n <w:lvlText w:val="%8."/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="5760" w:hanging="360"/>\n </w:pPr>\n </w:lvl>\n <w:lvl w:ilvl="8" w:tplc="0409001B" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="lowerRoman"/>\n <w:lvlText w:val="%9."/>\n <w:lvlJc w:val="right"/>\n <w:pPr>\n <w:ind w:left="6480" w:hanging="180"/>\n </w:pPr>\n </w:lvl>\n </w:abstractNum>\n ')})),x()(Zt,"Bullet",(function(t){return'\n <w:abstractNum w:abstractNumId="'.concat(t,'" w15:restartNumberingAfterBreak="0">\n <w:nsid w:val="75004FB5"/>\n <w:multiLevelType w:val="hybridMultilevel"/>\n <w:tmpl w:val="760C20E4"/>\n <w:lvl w:ilvl="0" w:tplc="04090003">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val="o"/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="720" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="1" w:tplc="04090003" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val="o"/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="1440" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="2" w:tplc="04090005" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val=""/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="2160" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="3" w:tplc="04090001" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val=""/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="2880" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="4" w:tplc="04090003" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val="o"/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="3600" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="5" w:tplc="04090005" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val=""/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="4320" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="6" w:tplc="04090001" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val=""/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="5040" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="7" w:tplc="04090003" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val="o"/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="5760" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n <w:lvl w:ilvl="8" w:tplc="04090005" w:tentative="1">\n <w:start w:val="1"/>\n <w:numFmt w:val="bullet"/>\n <w:lvlText w:val=""/>\n <w:lvlJc w:val="left"/>\n <w:pPr>\n <w:ind w:left="6480" w:hanging="360"/>\n </w:pPr>\n <w:rPr>\n <w:rFonts w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>\n </w:rPr>\n </w:lvl>\n </w:abstractNum>\n ')}));var Kt=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"got",value:function(t){return l()(m()(e.prototype),"got",this).call(this,t,"w:p","w:pPr")}},{key:"align",value:function(t){this.got("w:jc").attr("w:val",t)}},{key:"numbering",value:function(t){var e=this,n=this.got("w:numPr");if(t){this.file.doc.officeDocument.numbering||this.file.doc.officeDocument.addNumberingPart(),this.makeStyleReady();var r=this.file.doc.officeDocument.numbering,i=function(t){return{numId:t.children("w\\:numId").attr("w:val"),level:parseInt(t.children("w\\:ilvl").attr("w:val")||0)}},a=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r('w\\:num[w\\:numId="'.concat(t,'"]>w\\:abstractNumId')).attr("w:val");return r('w\\:abstractNum[w\\:abstractNumId="'.concat(n,'"]>w\\:lvl[w\\:ilvl="').concat(e,'"]'))};if(!(n.children("w\\:numId").length>0)){var o=this.node.prev("w\\:p:has(w\\:numPr>w\\:numId)");if(1==o.length){var l=i(o.children("w\\:pPr").children("w\\:numPr"));if(function(t,e){var n=t.type,r=t.text,i=e.numId,o=e.level,l=a(i,o);return!!l.is(':has(w\\:numFmt[w\\:val="'.concat(n,'"])'))&&(!r||l.is(':has(w\\:lvlText[w\\:val="'.concat(r,'"])')))}(t,l))return n.append('<w:ilvl w:val="'.concat(l.level,'"/>')),void n.append('<w:numId w:val="'.concat(l.numId,'"/>'))}var s=r("w\\:abstractNum"),c=Math.max.apply(Math,[-1].concat(s.map((function(t,e){return parseInt(e.attribs["w:abstractNumId"])})).get()))+1,u=r(this.trim(Zt["bullet"==t.type?"Bullet":"Numeric"](c)));s.length>0?u.insertAfter(s.last()):u.appendTo(r("w\\:numbering"));var h=Math.max.apply(Math,[-1].concat(r("w\\:num").map((function(t,e){return parseInt(e.attribs["w:numId"])})).get()))+1;r(this.trim(Zt.Template(h,c))).appendTo(r("w\\:numbering"));n.append('<w:ilvl w:val="'.concat(0,'"/>')),n.append('<w:numId w:val="'.concat(h,'"/>')),this.file.renderChanged(r('w\\:num[w\\:numId="'.concat(h,'"]')))}!function(t,n){var i=t.type,o=t.text,l=t.start,s=t.indent,c=t.hanging,u=t.font,h=(t.tabs,n.numId),f=n.level,p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a(h,f);null!=i&&p.find("w\\:numFmt").attr("w:val",i),null!=o&&p.find("w\\:lvlText").attr("w:val",o),null!=l&&p.find("w\\:start").attr("w:val",l),null!=s&&p.find("w\\:pPr>w\\:ind").attr("w:left",s),null!=c&&p.find("w\\:pPr>w\\:ind").attr("w:hanging",c),null!=u&&p.find("w\\:rPr>w\\:rFonts").attr("w:ascii",u).attr("w:hAnsi",u),e.file.renderChanged(r('w\\:abstractNum[w\\:abstractNumId="'.concat(p.closest("w\\:abstractNum").attr("w:abstractNumId"),'"]')))}(t,i(n))}else n.remove()}},{key:"numDemote",value:function(){var t=this.got("w:numPr"),e=t.children("w\\:numId").attr("w:val"),n=!this.node.prev().is('w\\:p:has(w\\:numPr>w\\:numId[w\\:val="'.concat(e,'"])')),r=this.file.doc.officeDocument.numbering,i=r('w\\:num[w\\:numId="'.concat(e,'"]>w\\:abstractNumId')).attr("w:val"),a=r('w\\:abstractNum[w\\:abstractNumId="'.concat(i,'"]')),o=a.find("w\\:lvl");if(n){var l=o.length;new Array(o.length-1).fill(0).forEach((function(t,e){return o.eq(e).find("w\\:ind").replaceWith(o.eq(e+1).find("w\\:ind").clone())}));var s=o.eq(l-1).find("w\\:ind");s.attr("w:left",String(parseInt(s.attr("w:left"))+2*parseInt(s.attr("w:hanging")))),this.file.renderChanged(a)}else{var c=t.children("w\\:ilvl"),u=parseInt(c.attr("w:val"));if(u<8&&c.attr("w:val",String(u+1)),o.length-1<u+1){var h=o.eq(0).find("w\\:numFmt").attr("w:val");r(this.trim(Zt["bullet"==h?"Bullet":"Numeric"](i))).find("w\\:lvl").slice(u+1).insertAfter(o.last()),a.find("w\\:multiLevelType").attr("w:val","hybridMultilevel"),this.file.renderChanged(a)}}}},{key:"numPromote",value:function(){var t=this.got("w:numPr"),e=t.children("w\\:numId").attr("w:val");if(!this.node.prev().is('w\\:p:has(w\\:numPr>w\\:numId[w\\:val="'.concat(e,'"])'))){var n=this.file.doc.officeDocument.numbering,r=n('w\\:num[w\\:numId="'.concat(e,'"]>w\\:abstractNumId')).attr("w:val"),i=n('w\\:abstractNum[w\\:abstractNumId="'.concat(r,'"]')),a=i.find("w\\:lvl w\\:ind"),o=a.eq(0),l=parseInt(o.attr("w:hanging"));parseInt(o.attr("w:left"))!=l&&(a.each((function(t,e){e.attribs["w:left"]=String(parseInt(e.attribs["w:left"])-l)})),o.attr("w:left",String(l))),this.file.renderChanged(i)}else{var s=t.children("w\\:ilvl"),c=parseInt(s.attr("w:val"));c>0&&s.attr("w:val",String(c-1))}}},{key:"tab",value:function(t){var e=t.shiftKey;if(this.node.is(":has(w\\:numPr)"))this["num".concat(e?"Pro":"De","mote")]();else{var n=parseInt((/^Heading(\d)$/.exec(this.node.find("w\\:pStyle").attr("w:val"))||[])[1])||0;if(n)!e&&n<9?this.node.find("w\\:pStyle").attr("w:val","Heading".concat(n+1)):e&&n>1&&this.node.find("w\\:pStyle").attr("w:val","Heading".concat(n-1));else{var r=this.got("w:ind"),i=parseInt(r.attr("w:left"))||0;r.attr("w:left",String(e?Math.max(0,i-360):i+360))}}}},{key:"indent",value:function(t){var e=t.left,n=t.right,r=t.firstLine,i=this.got("w:ind");null!=e&&i.attr("w:left",this.file.px2dxa(e)||null),null!=n&&i.attr("w:right",this.file.px2dxa(n)||null),null!=r&&(r>0?(i.attr("w:firstLine",this.file.px2dxa(Math.abs(r))||null),i.attr("w:hanging",null)):r<0&&(i.attr("w:hanging",this.file.px2dxa(Math.abs(r))||null),i.attr("w:firstLine",null)))}},{key:"makeStyleReady",value:function(){var t=this.file.doc.officeDocument.styles;if(0==t('w\\:style[w\\:styleId="NoList"]').length){var e=t(this.trim(Yt)).insertAfter(t('w\\:style[w\\:default="1"]').last());this.file.renderChanged(e)}}}]),e}(Vt),Yt='\n\t<w:style w:type="numbering" w:default="1" w:styleId="NoList">\n <w:name w:val="No List"/>\n <w:uiPriority w:val="99"/>\n <w:semiHidden/>\n <w:unhideWhenUsed/>\n\t</w:style>\n',te={create_table_at_end_of_up_to_document:function(){var t=this.target.closest("w\\:p"),e=t.clone();e.children(":not(".concat(this.PR,")")).remove(),e.append("<w:r><w:t/></w:r>"),t.after(e);var n=this.file.renderChanged(e);this.$target.closest("paragraph").after("#"+n.id),this.create.apply(this,arguments)},create_table_at_beginning_of_paragraph:function(){var t=new Gt(this.file);t.create.apply(t,arguments),this.target.before(t.node);var e=this.file.renderChanged(t.node),n=e.id;this.$target.before("#"+n),this.cursorAt(this.$("#"+n).first("text").attr("id"),0)},create_table_at_end_of_paragraph:function(){var t=new Gt(this.file);t.create.apply(t,arguments),this.target.after(t.node);var e=this.file.renderChanged(t.node),n=e.id;this.$target.after("#"+n),this.cursorAt(this.$("#"+n).first("text").attr("id"),0)},create_image_at_text:function(){this.seperate_at_text_for_end(),this.seperate_up_to_run_at_end_of_text(),this.cursorAt(this.$target.parent().attr("id"),1),this.create.apply(this,arguments)},create_image_at_beginning_of_up_to_run:function(){this.cursorAt(this.$target.closest("run").attr("id"),0),this.create.apply(this,arguments)},create_image_at_end_of_up_to_run:function(){this.cursorAt(this.$target.closest("run").attr("id"),1),this.create.apply(this,arguments)},create_image_at_beginning_of_run:function(){var t=new Wt(this.file);t.create.apply(t,arguments),this.target.before("<w:r/>");var e=this.target.prev();e.append(t.node);var n=this.file.renderChanged(e),r=n.id;this.$target.before("#"+r),this.cursorAt(this.$("#"+r).first().attr("id"),0)},create_image_at_end_of_run:function(){var t=new Wt(this.file);t.create.apply(t,arguments),this.target.after("<w:r/>");var e=this.target.next();e.append(t.node);var n=this.file.renderChanged(e),r=n.id;this.$target.after("#"+r),this.cursorAt(this.$("#"+r).first().attr("id"),0)},create_image_at_empty_run:function(){var t=new Wt(this.file);t.create.apply(t,arguments);var e=this.target;e.append(t.node);var n=this.file.renderChanged(e),r=n.id;this.$target.after("#"+r),this.cursorAt(this.$("#"+r).first().attr("id"),0)},create_image_at_empty_paragraph:function(){this.target.append("<w:r/>"),this.file.renderChanged(this.target),this.cursorAt(this.$target.children("run").attr("id"),0),this.create.apply(this,arguments)},create_row:function(t){var e=t.where,n=this.$target.closest("row");if(0!=n.length){var r=this.file.getNode(n.attr("id")),i=this.file.getNode(n.closest("table").attr("id")),a=i.first("w\\:tblGrid").find("w\\:gridCol"),o=new Gt(this.file);o.node=i;var l=new Array(a.length).fill(0).map((function(t,e){return o.template_tc(t)})),s=this.file.$("<w:tr>"+l.join("")+"</w:tr>");s["insert".concat(e[0].toUpperCase()).concat(e.substring(1))](r);var c=this.file.renderChanged(s);n[e]("#".concat(c.id)),this.selectWhole(c.id)}},create_column:function(t){var e=t.where,n=this.$target.closest("cell");if(0!=n.length){for(var r=n.closest("row"),i=r.closest("table"),a=r.find("cell").indexOf(n),o=this.file.getNode(i.attr("id")),l=o.first("w\\:tblGrid").find("w\\:gridCol"),s=l.length,c=l.toArray().reduce((function(t,e){return t+parseInt(e.attribs["w:w"])}),0),u=s/(s+1),h=0;h<s;h++){var f=l.eq(h),p=parseInt(parseInt(f.attr("w:w"))*u);f.attr("w:w",p),c-=p}l.eq(a)[e](l.eq(a).clone().attr("w:w",c));var d=o.find("w\\:tr"),w=new Gt(this.file);w.node=o;for(var v=0;v<d.length;v++)d.eq(v).find("w\\:tc").eq(a)[e](w.template_tc(c));this.file.renderChanged(o)}},create_section:function(t){var e=t.kind;this.enter();var n=this.$target.closest("paragraph"),r=this.$target.closest("section"),i=this.file.getNode(r.attr("id")),a=new Kt(this.file);a.node=this.file.getNode(n.attr("id"));var o=i.clone();o.appendTo(a.got("w:pPr")),e&&o.prepend('<w:type w:val="'.concat(e,'"/>'));var l=this.file.renderChanged(o),s=this.$("#".concat(l.id));r.after(s),s.append(n.nextAll()),s.prepend(n)},create_pagebreak:function(){this.enter();var t=this.$target.closest("paragraph").prev("paragraph"),e=this.file.getNode(t.attr("id")),n=this.file.$('<w:r><w:br w:type="page"/></w:r>').appendTo(e),r=this.file.renderChanged(n);t.append("#".concat(r.id))},create_columnbreak:function(){this.enter();var t=this.$target.closest("paragraph").prev("paragraph"),e=this.file.getNode(t.attr("id")),n=this.file.$('<w:r><w:br w:type="column"/></w:r>').appendTo(e),r=this.file.renderChanged(n);t.append("#".concat(r.id))}},ee={update_at_text:function(t){var e=this.target,n=e.closest("w\\:r"),r=e.nextAll("w\\:t"),i=e.prevAll("w\\:t"),a=!1,o=function(){a=!0;var t=n.clone();return t.children(":not(w\\:rPr)").remove(),t};r.length>0&&n.after(o().append(e.nextAll())),i.length>0&&n.before(o().append(e.prevAll())),a&&this.file.renderChanged(this.file.getNode(this.$target.parent().parent().attr("id")));var l=new Xt(this.file);l.node=this.target,l.update(t)},update_at_paragraph:function(t){var e=new Kt(this.file);e.node=this.target,e.update(t)},update_at_image:function(t){var e=new Wt(this.file);e.node=this.target,e.update(t)},update_at_table:function(t){var e=new Gt(this.file);e.node=this.target,e.update(t)},update_at_section:function(t){var e=new Qt(this.file);e.node=this.target,e.update(t)}},ne={},re={type_at_beginning_of_text_in_run:function(){this.type_at_text.apply(this,arguments)},type_at_empty_run:function(t){this.file.renderChanged(this.target.append("<w:t>".concat(t,"</w:t>"))),this.cursorAt(this.$target.children("text").attr("id"),t.length)},type_at_empty_paragraph:function(t){this.target.children(":not(".concat(this.PR,")")).remove(),this.$target.children().remove(),this.file.renderChanged(this.target.append("<w:r><w:t>".concat(t,"</w:t></w:r>"))),this.cursorAt(this.$target.find("text").attr("id"),t.length)},type_at_beginning_of_run:function(t){var e=this.target.closest("w\\:r"),n=e.clone();n.children(":not(w\\:rPr)").remove(),n.append("<w:t>".concat(t,"</w:t>")),e.before(n);var r=this.file.renderChanged(n);this.$target.closest("run").before("#".concat(r.id)),this.cursorAt(this.$("#".concat(r.id," text")).attr("id"),t.length)},type_at_beginning_of_up_to_run:function(){this.type_at_beginning_of_run.apply(this,arguments)},type_at_beginning_of_paragraph:function(t){this.file.renderChanged(this.target.afterOrPrepend("<w:r><w:t>".concat(t,"</w:t></w:r>"),"w\\:pPr")),this.cursorAt(this.$target.find("text").first().attr("id"),t.length)},type_at_end_of_run:function(t){this.file.renderChanged(this.target.append("<w:t>".concat(t,"</w:t>"))),this.cursorAt(this.$target.children("text").last().attr("id"),t.length)},type_at_end_of_paragraph:function(t){this.file.renderChanged(this.target.append("<w:r><w:t>".concat(t,"</w:t></w:r>"))),this.cursorAt(this.$target.find("text").last().attr("id"),t.length)}},ie={paragraphHasIndentSetting:function(){return this.target.closest(this.PARAGRAPH_).children(this.PR).find("w\\:ind").length>0},backspace_at_beginning_of_up_to_numbering_paragraph:function(){var t=this.target.closest("w\\:p"),e=t.children("w\\:pPr"),n=e.find("w\\:numPr");n.length>0?(n.remove(),this.file.renderChanged(t)):this.file.doc.officeDocument.styles('w\\:style[w\\:styleId="'.concat(e.find("w\\:pStyle").attr("w:val"),'"]')).basest(":has(w\\:numPr,w\\:ind)").length>0?(e.find("w\\:pStyle").remove(),this.file.renderChanged(t)):console.error("should not be here")},backspace_at_beginning_of_up_to_indent_paragraph:function(){var t=this.target.closest("w\\:p"),e=t.children("w\\:pPr").find("w\\:ind");parseInt(e.attr("w:hanging")||0)>0||parseInt(e.attr("w:firstLine")||0)>0?(e.attr("w:hanging","0"),e.attr("w:firstLine","0")):e.remove(),this.file.renderChanged(t)},backspace_at_end_of_image:function(){var t=this.$target.closest("run").attr("id");this.cursorAt(t,0,t,1,void 0,!1),this.remove()},backspace_at_empty_run:function(){var t=this.selection.start.id;try{this.backspace_at_empty.apply(this,arguments)}finally{this.file.getNode(t).remove(),this.$("#"+t).remove()}},backspace_at_beginning_of_up_to_run:function(){this.backspace_at_beginning.apply(this,arguments)}},ae={tab_at_beginning_of_up_to_paragraph:function(t){this.update_at_paragraph({id:this.$target.closest("paragraph").attr("id"),tab:t})},tab_at_text:function(){this.seperate_at_text_for_end(),this.seperate_up_to_run_at_end_of_text();var t=this.target.closest("w\\:r"),e=this.file.$("<w:r><w:tab/></w:r>");t.after(e);var n=this.file.renderChanged(e);this.$target.closest("run").after("#".concat(n.id)),this.cursorAt(n.id,1)}},oe={paste_run_at_text:function(){this.seperate_at_text_for_end(),this.seperate_up_to_run_at_end_of_text(),this.paste_run_at_end_of_run.apply(this,arguments)},paste_run_at_end_of_run:function(t,e){this.$target.closest("run").after(t),this.target.closest("w\\:r").after(e),this.cursorAtEnd(t.attr("id"))},paste_run_at_empty_paragraph:function(t,e){this.$target.append(t),this.target.append(e),this.cursorAtEnd(t.attr("id"))}},le={serialize_at_text:function(){var t=this.selection,e=t.start,n=t.end,r=this.$target.text(),i=this.file.getNode(this.$target.closest("run").attr("id")).clone();return i.find("w\\:t").remove(),i.append("<w:t>".concat(r.substring(e.at,n.at),"</w:t>")),this.file.serialize(i)},serialize_at_whole_text:function(){if(1==this.$target.parent().children().length)return this.extend("run"),this.emit("serialize",this.conds);var t=this.$target.text(),e=this.file.getNode(this.$target.closest("run").attr("id")).clone();return e.find("w\\:t").remove(),e.append("<w:t>".concat(t,"</w:t>")),this.file.serialize(e)},serialize_at_whole:function(){return this.file.serialize(this.$target.attr("id"))}},se={remove_column:function(){var t=this.$target.closest("cell");if(0!=t.length){var e=t.closest("row"),n=e.find("cell");if(1==n.length)return this.remove_table();for(var r=n.indexOf(t),i=this.file.getNode(t.closest("table").attr("id")),a=i.first("w\\:tblGrid").find("w\\:gridCol"),o=a.length,l=(a.toArray().reduce((function(t,e){return t+parseInt(e.attribs["w:w"])}),0),o/(o-1)),s=0;s<o;s++){var c=a.eq(s),u=parseInt(parseInt(c.attr("w:w"))*l);c.attr("w:w",u),u}a.eq(r).remove();for(var h=i.find("w\\:tr"),f=0;f<h.length;f++)h.eq(f).find("w\\:tc").eq(r).remove();this.file.renderChanged(i);var p=(n=e.find("cell")).eq(r).attr("id")||n.eq(r-1).attr("id");p&&this.cursorAt(p,0)}}},ce=function(t){function e(){var t;return h()(this,e),(t=w()(this,m()(e).apply(this,arguments))).debug=!0,t.PR="w\\:rPr,w\\:pPr,w\\:tblPr,w\\:sdtPr,w\\:tcPr,w\\:trPr",t.PARAGRAPH="w:p",t.TEXT="w:t",t.InlineContainers="w\\:r, w\\:sdt",Object.assign(rt()(t),Bt,te,ee,ne,re,ie,ae,oe,le,se),t}return y()(e,t),p()(e,[{key:"init",value:function(){var t=this.file.makeId(this.file.$("w\\:p").get(0));t&&(this.cursorAt(t,0),this.forward(),this.backward())}},{key:"create_first_paragraph",value:function(){var t=this.file.$("w\\:body").prepend("<w:p><w:r><w:t/></w:r></w:p>"),e=this.file.renderChanged(t.children().first());this.$().findFirst("section").prepend("#".concat(e.id)),this.cursorAt(e.id,0)}},{key:"clean",value:function(){var t=this;l()(m()(e.prototype),"clean",this).call(this,(function(){t.$target.closest("paragraph").find("run").filter((function(e){return 0==t.$(e).findFirst(t.cursorable).length})).each((function(e,n){t.$(n).remove(),t.file.getNode(n.get("id")).remove()}))}))}},{key:"cursorable",value:function(t){if(l()(m()(e.prototype),"cursorable",this).call(this,t))return!this.InlineContainers||(!this.file.getNode(t.get("id")).is(this.InlineContainers)||void 0)}},{key:"move_at_up_to_anchor",value:function(t){var e=t.dx,n=t.dy,r=this.$target.closest("anchor"),i=r.attr("id"),a=this.file.getNode(i);if(e&&this.content.updateIn([i,"props","x","offset"],(function(t){return t+e})),n&&this.content.updateIn([i,"props","y","offset"],(function(t){return t+n})),"0"==a.attr("simplePos")){var o=a.find("wp\\:positionH>wp\\:posOffset"),l=a.find("wp\\:positionV>wp\\:posOffset");e&&o.text(this.file.px2emu(r.attr("x.offset"))),n&&l.text(this.file.px2emu(r.attr("y.offset")))}else if("1"==a.attr("simplePos")){var s=a.find("wp\\:simplePos");e&&s.attr("x",this.file.px2emu(r.attr("x.offset"))),n&&s.attr("y",this.file.px2emu(r.attr("y.offset")))}}}]),e}(k.Input.Editable.EventHandler.xml);function ue(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function he(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ue(n,!0).forEach((function(e){x()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ue(n).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}n.d(e,"default",(function(){return pe}));var fe=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"parse",value:function(t){var e=t.data,n=c()(t,["data"]);return this.props=he({},n,{supportPagination:!0}),this.constructor.FileType.load(e)}},{key:"release",value:function(){this.doc.release()}},{key:"stream",value:function(t){var e=this.doc.serialize(t).generate(he({},t,{type:"nodebuffer",mimeType:this.doc.mime})),n=new P.Readable({objectMode:!0});return n.push(e),n}},{key:"style",value:function(t,e){var n=function(t,e){return t.reduce((function(t,n){return t[n]=e,t}),{})};return t.$(e).props(he({tidy_pPrDefault:function(t){return t.pPr}},n("keepNext,keepLines,contextualSpacing,cantSplit".split(","),(function(){return!0})),{tidy_outlineLvl:function(t){var e=t.val;return parseInt(e)}},n("w,h,space,trHeight".split(","),(function(e){return t.doc.dxa2Px(e)})),{titlePg:function(t){return"false"!=t["w:val"]},widowControl:function(t){return"0"!=t["w:val"]},cnfStyle:function(t){var e=t["w:val"];return parseInt(e,2)},ind:function(e){return function(t,e){var n=t.attribs;return Object.keys(n).reduce((function(t,r){return t[r.split(":").pop()]=e(n[r]),t}),{})}(e,(function(e){return t.doc.dxa2Px(e)}))}},n("jc,tblStyleColBandSize,tblStyleRowBandSize".split(","),(function(t){return t["w:val"]})),{tidy_rPrDefault:function(t){return t.rPr}},n("ascii,eastAsia,hAnsi,cs".split(",").map((function(t){return t+"Theme"})),(function(e){return t.theme.fontx(e)})),{},n("sz,szCs,kern".split(",").map((function(t){return"tidy_"+t})),(function(t){var e=t.val;return parseInt(e)/2})),{tidy_rFonts:function(t){return[t.ascii,t.eastAsia,t.hAnsi,t.cs].filter((function(t){return t})).join(",")},themeColor:function(e){return t.theme.colorx(e)},tidy_color:function(e){var n,r=e.themeColor,i=e.val,a=c()(e,["themeColor","val"]);return(n=t.doc).asColor.apply(n,[i||r].concat(a))}},n("beforeLines,before,afterLines,after".split(","),(function(e){return t.doc.dxa2Px(e)})),{tidy_spacing:function(e){var n=e.beforeAutospacing,r=e.beforeLines,i=e.before,a=e.afterAutospacing,o=e.afterLines,l=e.after,s=e.line,u=e.lineRule,h=e.val,f=c()(e,["beforeAutospacing","beforeLines","before","afterAutospacing","afterLines","after","line","lineRule","val"]);if(null!=h)return h;if(f.top=!n&&r||i,f.bottom=!a&&o||l,s)switch(u){case"atLeast":case"exact":f.line=t.doc.dxa2Px(s);break;default:f.line=100*parseInt(s)/240}return f}},n("basedOn,name,link".split(",").map((function(t){return"tidy_"+t})),(function(t){return t.val})),{names:{asciiTheme:"ascii",eastAsiaTheme:"eastAsia",hAnsiTheme:"hAnsi",themeShade:"shade",rFonts:"fonts",rPrDefault:"rPr",pPrDefault:"pPr",w:"width",h:"height"}}))}},{key:"render",value:function(t,e){var n=this,r=this,i=this.doc.constructor.OfficeDocument.identify.bind(this.doc.constructor.OfficeDocument),a=this.doc,o=new pt.Properties(a,1),l=a.officeDocument,s=(l.content,l.settings),u=new(function(){return function t(){h()(this,t)}}()),f=function(){return null},p=function(t){return function(n,i,l){var h=i.node,f=(i.key,i.type,c()(i,["node","key","type"]));switch(l=l.reduce((function(t,e){return Array.isArray(e)?t.splice.apply(t,[t.length,0].concat(e)):t.push(e),t}),[]),n){case"style":var p=null;if(f.id){var d=h.attribs["w:type"];switch(d){case"paragraph":p=new pt.Paragraph(h,u,o);break;case"character":p=new pt.Character(h,u,o);break;case"numbering":p=new pt.Numbering(h,u,o);break;case"table":p=new pt.Table(h,u,o)}"1"==h.attribs["w:default"]&&(u["*".concat(d)]=p)}else p=new pt.Default(h,u,o);return p?(u[p.id]=p,null):null;case"num":var v=new pt.Num(h,u,o);return u[v.id]=v,null;case"abstractNum":var m=new pt.AbstractNum(h,u,o);return u[m.id]=m,null;case"document":var g=s("w\\:evenAndOddHeaders").length>0;return t(e.Document,he({},o.select(h.children.filter((function(t){return"w:body"!=t.name}))),{evenAndOddHeaders:g,precision:1,styles:u}),l,h);case"section":var y=o.select(h.children),b=function(e,n){return h.children.filter((function(t){return t.name=="w:".concat(e,"Reference")})).reduce((function(i,o){var s=o.attribs["w:type"],c=o.attribs["r:id"],u=a.officeDocument.getRel(c).root().children().get(0);return function(t){if(1==t.children.length){var e=t.children[0];if(!e.children||0==e.children.length||1==e.children.length&&"w:p"==e.name&&"w:pPr"==e.children[0].name)return!0}return!1}(u)||(r.part=c,l.splice(0,0,t(n,{named:"".concat(e,".").concat(s),type:"".concat(e,".").concat(s)},u.children.map((function(t){return w(t)})),u)),delete r.part),i}),{})};return b("header",e.Header),b("footer",e.Footer),t(e.Section,y,l,h);case"tbl":var x=o.select([h.children.find((function(t){return"w:tblGrid"==t.name}))]).tblGrid,k=f.pr?new pt.Table.Direct(f.pr,u,o):u["*table"];return t(e.Table,{cols:x,style:k},l,h);case"tr":var P=f.pr?new pt.Table.Direct(f.pr,u,o):void 0;return t(e.Row,{style:P},l,h);case"tc":var _=f.pr?new pt.Table.Direct(f.pr,u,o):void 0;return t(e.Cell,{style:_},l,h);case"list":case"heading":case"p":f.pr;var O=c()(f,["pr"]),C=f.pr?new pt.Paragraph.Direct(f.pr,u,o):u["*paragraph"];return t(e.Paragraph,he({style:C},O),l,h);case"r":var j=f.pr?new pt.Character.Direct(f.pr,u,o):u["*character"];return t(e.Run,{style:j},l,h);case"t":return t(e.Text,{},l[0]||"",h);case"drawing.inline":return t(e.Container,{},l,h);case"drawing.anchor":var S=new pt.Anchor(h,u,o);return t(e.Anchor,S.flat(),l,h);case"picture":return t(e.Image,e.Image.asStyle(f),null,h);case"shape":var I=e.Shape.asStyle(f),A=I.textStyle,D=c()(I,["textStyle"]),T=new pt.Paragraph.Direct(void 0,u,o);return T.r=A,t(e.Shape,he({},D,{textStyle:T}),l,h);case"bookmarkStart":case"bookmarkEnd":return null;case"inline":case"block":return t(e.Container,{},l,h);default:return 1==l.length?l[0]:l}}},d=p(t),w=function(t){return a.officeDocument.renderNode(t,d,i)},v=a.render(d);return this.renderNode=function(t,e){return d=p(e),a.officeDocument.renderNode(n._unwrap(t),d,i)},this.refreshStyles=f,this.getFontList=function(){return Array.from(o.requireFonts)},v}},{key:"renderNode",value:function(t,e){}},{key:"getFontList",value:function(){}},{key:"refreshStyles",value:function(){}},{key:"_unwrap",value:function(t){return t&&"cheerio"in t&&t.get(0)||t}}],[{key:"support",value:function(t){if(0==arguments.length)return!0;var e=t.data,n=t.ext,r=t.name,i=void 0===r?"":r,a=t.mimeType,o=this.defaultProps;return n===o.ext||a===o.mimeType||i.endsWith("."+o.ext)||t instanceof this.FileType||e instanceof this.FileType}}]),e}(k.Input.Editable);x()(fe,"FileType",A),x()(fe,"defaultProps",{type:"docx",name:"Word Document",ext:"docx",mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}),x()(fe,"HOCs",Mt);var pe=function(t){function e(){return h()(this,e),w()(this,m()(e).apply(this,arguments))}return y()(e,t),p()(e,[{key:"makeId",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"w:document";if(!t)return"null";if((t=this._unwrap(t)).attribs.xxid)return t.attribs.xxid;var r=t.name.endsWith(n)?"root":"".concat(l()(m()(e.prototype),"makeId",this).apply(this,arguments),"{").concat(this.doc.$(t).part(),"}");return Object.defineProperty(t.attribs,"xxid",{enumerable:!1,configurable:!0,writable:!1,value:r}),r}},{key:"getNode",value:function(t){var e=t.split(/[\{\}]/g),n=i()(e,2),r=(n[0],n[1]),a=null;r?a=this.doc.getObjectPart(r)('[xxid="'.concat(t,'"]')):a=this.doc.officeDocument.content('[xxid="'.concat(t,'"]'));if(1!=a.length)throw new Error("can't find node[id=".concat(t,"]"));return a}},{key:"$",value:function(){var t;return(t=this.doc.officeDocument).content.apply(t,arguments)}},{key:"attach",value:function(t){return this.attacher.append(t).children()}},{key:"serialize",value:function(t){return"string"==typeof t?this.doc.officeDocument.content.xml(this.getNode(t)):this.doc.officeDocument.content.xml(t)}},{key:"px2dxa",value:function(t){return parseInt(72*t*20/96)}},{key:"px2cm",value:function(t){return Math.ceil(72*t/96*36e4/28.3464567)}},{key:"px2Pt",value:function(t){return 72*t/96}},{key:"dxa2Px",value:function(t){return this.pt2Px(parseInt(t)/20)}},{key:"emu2Px",value:function(t){return this.pt2Px(parseInt(t)/12700)}},{key:"pt2Px",value:function(t){return Math.ceil(96*t/72)}},{key:"cm2Px",value:function(t){return 28.3464567*parseFloat(t)/36e4*96/72}},{key:"cm2dxa",value:function(t){return parseInt(11900*parseFloat(t)/21.59)}},{key:"px2emu",value:function(t){return 12700*this.px2Pt(t)}},{key:"attacher",get:function(){return this._attacher||(this._attacher=this.doc.officeDocument.content("<w:_attacher>"),this._attacher.prependTo(this.doc.officeDocument.content("w\\:body"))),this._attacher}}]),e}(fe);x()(pe,"Reducer",ce)}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIm1lbW9pemUtb25lXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2UtZWRpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlY29tcG9zZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcImRvY3g0anNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJsb2Rhc2guZ2V0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhZGFibGUtc3RyZWFtXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZmV0Y2hhYmxlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibG9kYXNoLmludm9rZVwiIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvZG9jeC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvYmFzZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvZGVmYXVsdC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvY2hhcmFjdGVyLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL3N0eWxlcy9wYXJhZ3JhcGguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvc3R5bGVzL251bWJlcmluZy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvdGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvc3R5bGVzL251bWJlcmluZy9sZXZlbC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvbnVtYmVyaW5nL251bWJlci1mb3JtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvc3R5bGVzL251bWJlcmluZy9udW0uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvc3R5bGVzL251bWJlcmluZy9hYnN0cmFjdE51bS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvYW5jaG9yLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL3N0eWxlcy9wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL3N0eWxlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9zdHlsZXMvdGhlbWUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvc3R5bGVzL3NoYXBlLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL2RvbS9zaGFwZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9kb20vaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvZG9tL2hlYWRlci1mb290ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvZG9tL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL2RvbS9kb2N1bWVudC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9kb20vc2VjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9kb20vcGFyYWdyYXBoLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL2RvbS90ZXh0LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvcmVuZGVyL2RvbS9ydW4uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvZG9tL2NlbGwuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvZG9tL3Jvdy5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL3JlbmRlci9kb20vdGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9yZW5kZXIvZG9tL2FuY2hvci5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L3NlcGVyYXRlLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvZXZlbnQvZG9tL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9kb20vaW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9kb20vdGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9kb20vdGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L2RvbS9zZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvZXZlbnQvZG9tL251bWJlcmluZy5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L2RvbS9wYXJhZ3JhcGguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC91cGRhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9lbnRlci5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9iYWNrc3BhY2UuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC90YWIuanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvd2UtZWRpdC1pbnB1dC1kb2N4L3NyYy9ldmVudC9wYXN0ZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L3NlcmlhbGl6ZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L3JlbW92ZS5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LWlucHV0LWRvY3gvc3JjL2V2ZW50L2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtaW5wdXQtZG9jeC9zcmMvaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiRG9jdW1lbnQiLCJkYXRhIiwidHlwZSIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImFyZ3VtZW50cyIsInVybCIsInJldm9rZU9iamVjdFVSTCIsInBhcnQiLCJ0aGlzIiwicGFydHMiLCJjcmMzMiIsIl9kYXRhIiwiX3Nob3VsZFJlbGVhc2VkIiwiaGFzIiwic2V0IiwiZ2V0RGF0YVBhcnQiLCJvZmZpY2VEb2N1bWVudCIsImNvbnRlbnQiLCJzdGFydFRyYW5zYWN0aW9uIiwibnVtYmVyaW5nIiwic3R5bGVzIiwiY29tbWl0Iiwicm9sbGJhY2siLCJfX2NhY2hlZERhdGEiLCJGZXRjaGFibGUiLCJkb2N4NGpzIiwiaW5pdGlhbGl6ZSIsInBhcnNlWG1sIiwiYWZ0ZXJPclByZXBlbmQiLCJkb20iLCJzZWxlY3RvciIsInNlbGVjdGVkIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJhZnRlciIsInByZXBlbmQiLCJhcmdzIiwiYXNzaWduIiwidGhlbWUiLCJmb250eCIsInNwbGl0IiwiZmlyc3QiLCJzZWNvbmQiLCJIQW5zaSIsIkFzY2lpIiwiQmlkaSIsIkVhc3RBc2lhIiwiam9pbiIsImZvbnQiLCJhdHRyIiwibGFuZyIsInNldHRpbmdzIiwiY3MiLCJlYSIsImNvbG9yeCIsImNvbG9yIiwiYWRkTnVtYmVyaW5nUGFydCIsInRyYW5zYWN0aWZ5Q2hlZXJpbyIsImFkZCIsInJlcGxhY2UiLCJnZXRSZWxPYmplY3QiLCJPZmZpY2VEb2N1bWVudCIsIkdldGFibGUiLCJub2RlIiwicGF0aCIsImNhY2hlIiwidW5kZWZpbmVkIiwiX2dldEZyb21CYXNlZE9uIiwicGFyZW50IiwiaW52b2tlIiwiX2ludm9rZU9uQmFzZWRPbiIsImJhc2VkT24iLCJTdHlsZSIsImF0dHJpYnMiLCJpZCIsImZpbHRlciIsImEiLCJmb3JFYWNoIiwicG9wIiwiTWFwIiwidGFyZ2V0IiwibWFwIiwicHIiLCJmaW5kIiwicmVkdWNlIiwic3R5bGUiLCJzZWxlY3RWYWx1ZSIsIm5leHQiLCJjbG9uZWQiLCJjb25zdHJ1Y3RvciIsImZpbmRJbmRleCIsInB1c2giLCJzcGxpY2UiLCJfXyQxIiwiX2NvbnZlcnQiLCJCYXNlIiwiQ2hhcmFjdGVyIiwiaW5oZXJpdHMiLCJ0YXJnZXRzIiwicHJvcHMiLCJrIiwiUGFyYWdyYXBoIiwidmFsdWVzIiwibnVtIiwibnVtSWQiLCJpbHZsIiwibGV2ZWwiLCJudW1TdHlsZSIsImluZGVudCIsIm5leHRWYWx1ZSIsImZvcm1hdCIsIm51bUZtdCIsIk51bWJlcmluZyIsIlBSSU9SSVpFRCIsIkNORiIsIldpdGhCb3JkZXIiLCJ0YmwiLCJSb3dTdHlsZSIsImNvbmRpdGlvbnMiLCJpbmNsdWRlcyIsIkNlbGxTdHlsZSIsIkNvbFN0eWxlIiwiZWRnZXMiLCJCYW5kSFN0eWxlIiwiQmFuZFZTdHlsZSIsInR5cGVzIiwic2VDZWxsIiwic3dDZWxsIiwibmVDZWxsIiwibndDZWxsIiwibGFzdENvbCIsImZpcnN0Q29sIiwibGFzdFJvdyIsImZpcnN0Um93IiwiYmFuZDJIb3J6IiwiYmFuZDFIb3J6IiwiYmFuZDJWZXJ0IiwiYmFuZDFWZXJ0Iiwicm93IiwiY2VsbCIsInRyIiwidGMiLCJUYWJsZVN0eWxlIiwiY29uZGl0aW9uYWwiLCJBcnJheSIsImZyb20iLCJ0b1N0cmluZyIsInN1YnN0ciIsInNvcnQiLCJiIiwiaW5kZXhPZiIsIm1hcmdpbiIsInYiLCJib3JkZXIiLCJzeiIsImJhY2tncm91bmQiLCJmb3VuZCIsImNvbmRpdGlvbiIsImNvbmQiLCJMZXZlbCIsInBhcnNlSW50Iiwic3RhcnQiLCJkZWNpbWFsIiwibG93ZXJMZXR0ZXIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaGFyQ29kZUF0IiwidXBwZXJMZXR0ZXIiLCJsb3dlclJvbWFuIiwiUm9tYW4iLCJ0b0xvd2VyQ2FzZSIsInVwcGVyUm9tYW4iLCJOdW0iLCJsZXZlbHMiLCJTZXQiLCJzdGFydE92ZXJyaWRlIiwibHZsIiwiTnVtTGV2ZWwiLCJyZXNldCIsImx2bFBpY0J1bGxldElkIiwiRXJyb3IiLCJsdmxUZXh0IiwiTlVNRk1UIiwiY3VycmVudCIsImN1cnJlbnRWYWx1ZSIsIk1hdGgiLCJtYXgiLCJBYnN0cmFjdE51bSIsImRpc3RhbmNlIiwidG9EaXN0Iiwic2VsZWN0IiwicG9zaXRpb25IIiwicG9zaXRpb25WIiwid3JhcCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJEZWZhdWx0IiwiVGFibGUiLCJQcm9wZXJ0aWVzIiwiZG9jeCIsInByZWNpc2lvbiIsImlkeCIsImtpbmQiLCJsaW5lIiwiZmlsbCIsImJnRmlsbCIsImVmZmVjdCIsInJvb3QiLCJnZXRUaGVtZSIsInJTdHlsZSIsInBTdHlsZSIsInRibFN0eWxlIiwiX3ZhbCIsIndyYXBTcXVhcmUiLCJ3cmFwVGlnaHQiLCJ3cmFwVGhyb3VnaCIsIndyYXBUb3BBbmRCb3R0b20iLCJ2QWxpZ24iLCJ2ZXJ0QWxpZ24iLCJleHQiLCJleHRlbnQiLCJyZXF1aXJlRm9udHMiLCJlbXUiLCJwdDJQeCIsImR4YTJQeCIsIm5vZGVzIiwia2V5TWFwIiwia2V5cyIsImF0cnJpYnMiLCJjb2xzIiwic3BhY2UiLCJ0b0FycmF5IiwiY29sIiwidG9TcGFjaW5nIiwidG9Cb3JkZXIiLCJmb250cyIsImFzVG9nZ2xlIiwidG9Db2xvciIsInRjQm9yZGVycyIsImFzQ29sb3IiLCJiYXNlIiwib2Zmc2V0IiwiZW11MlB4IiwiYWxpZ24iLCJjeCIsImN5Iiwib2ZmIiwicm90Iiwicm90YXRlIiwiY2VpbCIsImZsaXBIIiwiZmxpcFYiLCJwcnN0IiwicHgiLCJsZW4iLCJyaWQiLCJnZXRSZWwiLCJmaWxsUmVjdCIsImJsaXAiLCJzdHJldGNoIiwic3JjUmVjdCIsInRpbGUiLCJwcnN0RGFzaCIsInciLCJ4eSIsInN1YnN0cmluZyIsIndyYXBUZXh0Iiwid3JhcFBvbHlnb24iLCJkdCIsImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsInByZSIsImRpc3QiLCJsaW5lUnVsZSIsImxpbmVIZWlnaHQiLCJ2YWwiLCJTaGFwZSIsImVuZHNXaXRoIiwieGZybSIsImN1c3RHZW9tIiwicHJzdEdlb20iLCJsbiIsInNvbGlkRmlsbCIsImJsaXBGaWxsIiwiQW5jaG9yIiwibWVtb2l6ZSIsImRpcmVjdCIsImNvbnRleHQiLCJpbmhlcml0IiwidGV4dFN0eWxlIiwiU2hhcGVTdHlsZSIsImZsYXQiLCJfcmF3IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiZGlyZWN0cyIsImRyRm4iLCJmbiIsImFuY2hvciIsImJvZHlQciIsIl9mbGF0Iiwib3V0bGluZSIsIm5vRmlsbCIsImhhbGYiLCJnb3QiLCJjdHIiLCJqdXN0IiwiVGV4dEJveFN0eWxlIiwicklucyIsInRJbnMiLCJsSW5zIiwiYklucyIsIkZyYW1lIiwiZGlzcGxheU5hbWUiLCJoZWFkZXJGb290ZXJXaWR0aCIsIm51bWJlciIsImNyZWF0ZVVudmlzaWJsZUNvbXBvbmVudCIsImxpc3QiLCJDb250ZW50UXVlcnkiLCJmcm9tQ29udGVudCIsImZpbmRGaXJzdCIsImhhc0luIiwiZ2V0SW4iLCJ0b0pTIiwibGV2ZWxDb3VudCIsInNsaWNlIiwiZGIiLCJsYWJlbCIsImVxdWFscyIsImV2ZW5BbmRPZGRIZWFkZXJzIiwibnVtYmVyaW5nQ29udGV4dCIsIldvcmREb2N1bWVudCIsInJlc2V0TnVtYmVyaW5nIiwiYm9vbCIsImZ1bmMiLCJwYWdlIiwiY29tcHV0ZWQiLCJpc0NvbnRpbnVvdXNMYXlvdXQiLCJwYWdlcyIsImNvbXBvc2VkIiwibGFzdCIsImNvbnRpbnVvdXMiLCJhcHBlbmRDb250aW51b3VzTGF5b3V0IiwiU2VjdGlvbiIsIkdyb3VwIiwiYXZhaWxhYmxlV2lkdGgiLCJzdGF0ZSIsInNoYWxsb3dFcXVhbCIsIlBhZ2UiLCJMYXlvdXQiLCJnZXRDb21wb3NlciIsInByZXYiLCJsYXlvdXQiLCJfbWFrZUNvbnRpbnVvdXNMYXlvdXQiLCJJIiwiZ2V0SGVhZGVyRm9vdGVyIiwiaGVhZGVyIiwiZm9vdGVyIiwieTAiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsImNsYXNzTmFtZSIsInkxIiwibWluIiwiYmFsYW5jZSIsIm1heEhlaWdodCIsInBnU3oiLCJwZ01hciIsInRpdGxlUGciLCJyZWR1Y2VSaWdodCIsImRvY3VtZW50Iiwic2VjdGlvbnMiLCJDaGlsZHJlbiIsIm5hbWVkIiwiaW5oZXJpdEhlYWRlckZvb3RlciIsIldvcmRTZWN0aW9uIiwiZ2V0Q3JlYXRlIiwiZ2V0Q29scyIsImNyZWF0ZUxheW91dCIsInNoYXBlIiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJsYXN0Q29tcG9zZWQiLCJjb250aW51b3VzTGF5b3V0cyIsImRlZmluZVByb3BlcnRpZXMiLCJjb21wb3NlZEhlaWdodCIsImZyYW1lIiwiY29sdW1ucyIsImNvbnRlbnRIZWlnaHQiLCJIIiwiaGFzTXVsdGlwbGVTZWN0aW9uQ29udGVudCIsInN0YXJ0c1dpdGgiLCJMYXllcnMiLCJMYXllciIsInoiLCJOdW1iZXIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiTUFYX1NBRkVfSU5URUdFUiIsInRoaXNTZWN0aW9uTGluZXMiLCJjcmVhdGVDb21wb3NlZDJQYXJlbnQiLCJibG9ja09mZnNldCIsImxheW91dHNDb250ZW50IiwiZnJhbWVDb250ZW50IiwiY2hlY2tTcGFjZSIsIl9sYXlvdXQiLCJzZWN0aW9uIiwiY2xvc2VzdCIsImxpbmVJbmRleCIsInBvc2l0aW9uaW5nIiwiZGVmYXVsdFN0eWxlIiwiZmxhdDRDaGFyYWN0ZXIiLCJoYW5naW5nIiwiZmlyc3RMaW5lIiwiY2xvbmUiLCJjaGlsZFN0eWxlIiwid2lkb3ciLCJvcnBoYW4iLCJzdHJpbmciLCJUZXh0IiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIlJ1biIsIkNvbnRhaW5lciIsIkNlbGwiLCJmbGF0NENlbGwiLCJSb3ciLCJmbGF0NFJvdyIsInRibE1hcmdpbiIsInF1ZXJ5IiwiYWN0aXZlRG9jU3RvcmUiLCJnZXRTdGF0ZSIsInBhcmVudHMiLCJmaXJzdENlbGwiLCJSZWFjdFF1ZXJ5IiwibmFtZWRTdHlsZSIsInJvd3MiLCJjZWxscyIsImoiLCJjbmZTdHlsZSIsImNlbGxDbmZTdHlsZSIsImNlbGxTdHlsZSIsIm1lcmdlIiwiZmxhdDRUYWJsZSIsInRibEluZCIsImdldEluZGVudCIsImdldENvbmRpdGlvbmFsQ2hpbGRyZW4iLCJJbWFnZSIsIlN1cGVyIiwiYXNTdHlsZSIsImhhc2giLCJjaGFuZ2VkIiwic3JjIiwiSGVhZGVyIiwiSGVhZGVyRm9vdGVyIiwiRm9vdGVyIiwiU3R5bGVzIiwic2VwZXJhdGVfdXBfdG9fcnVuX2F0X2VuZF9vZl90ZXh0IiwiY2xvbmVkUiIsIlBSIiwicmVtb3ZlIiwiYXBwZW5kIiwibmV4dEFsbCIsImZpbGUiLCJyZW5kZXJDaGFuZ2VkIiwiJHRhcmdldCIsIkVkaXRvciIsImRvYyIsIm5vZGVOYW1lIiwidGFnQ29udGVudCIsInRhZ1ByIiwiY29udGVudFNlbGVjdG9yIiwicHJTZWxlY3RvciIsInhtbCIsInRlbXBsYXRlIiwiJCIsInRyaW0iLCJhcHBseSIsImF0dGFjaCIsImNoYW5naW5nIiwicHJvcCIsImFkZEV4dGVybmFsSW1hZ2UiLCJhZGRJbWFnZSIsImV4dDAiLCJpbmxpbmUiLCJ1cGRhdGUiLCJweDJjbSIsImN4MCIsImV4dDEiLCJjeDEiLCJkZWdyZWUiLCJtYWtlIiwidGJsTG9vayIsInB4MmR4YSIsImVtcHR5IiwidHJIZWlnaHQiLCJncmlkQ29sIiwidGNXIiwiZGVsdGEiLCJlYWNoIiwidHJzIiwidGNzIiwiZXEiLCJlbFJvd3MiLCJ0ZW1wbGF0ZV90YyIsIm1ha2VTdHlsZVJlYWR5Iiwic3R5bGVOb2RlIiwiVEFCTEVfU1RZTEVfTm9ybWFsIiwiaW5zZXJ0QWZ0ZXIiLCJUQUJMRV9TVFlMRV9HcmlkIiwiYXBwZW5kVG8iLCJjb250YWluZXIiLCJ0ZXh0IiwiYXQiLCJmaXJzdEtlZXBJZCIsInIwIiwicjEiLCJyZW1vdmVBdHRyIiwic2l6ZSIsIl90b2dnbGUiLCJyZXBsYWNlV2l0aCIsInNoaWZ0S2V5Iiwid0NvbHMiLCJ3MSIsImNtMmR4YSIsIiRzeiIsImgiLCIkbWFyIiwiYWlkIiwibnVtUHIiLCJudW1JZExldmVsIiwiZ2V0TGV2ZWxOb2RlIiwiYU51bUlkIiwicHJldk51bWJlcmluZyIsIm5MZXZlbCIsImlzIiwiYU51bXMiLCJhTnVtIiwiVGVtcGxhdGUiLCJ0YWJzIiwiaXNGaXJzdE9mTGlzdCIsImluZHMiLCJmaXJzdEhhbmdpbmciLCJoZWFkaW5nIiwiZXhlYyIsImluZCIsImFicyIsIlNUWUxFX05vTGlzdCIsImNyZWF0ZV90YWJsZV9hdF9lbmRfb2ZfdXBfdG9fZG9jdW1lbnQiLCJjbG9uZWRQIiwiY3JlYXRlX3RhYmxlX2F0X2JlZ2lubmluZ19vZl9wYXJhZ3JhcGgiLCJlZGl0b3IiLCJiZWZvcmUiLCJjdXJzb3JBdCIsImNyZWF0ZV90YWJsZV9hdF9lbmRfb2ZfcGFyYWdyYXBoIiwiY3JlYXRlX2ltYWdlX2F0X3RleHQiLCJzZXBlcmF0ZV9hdF90ZXh0X2Zvcl9lbmQiLCJjcmVhdGVfaW1hZ2VfYXRfYmVnaW5uaW5nX29mX3VwX3RvX3J1biIsImNyZWF0ZV9pbWFnZV9hdF9lbmRfb2ZfdXBfdG9fcnVuIiwiY3JlYXRlX2ltYWdlX2F0X2JlZ2lubmluZ19vZl9ydW4iLCJjcmVhdGVfaW1hZ2VfYXRfZW5kX29mX3J1biIsImNyZWF0ZV9pbWFnZV9hdF9lbXB0eV9ydW4iLCJjcmVhdGVfaW1hZ2VfYXRfZW1wdHlfcGFyYWdyYXBoIiwiY3JlYXRlX3JvdyIsIndoZXJlIiwiJHJvdyIsImdldE5vZGUiLCJ0YWJsZSIsInRkcyIsInRvVXBwZXJDYXNlIiwic2VsZWN0V2hvbGUiLCJjcmVhdGVfY29sdW1uIiwiJGNlbGwiLCIkdGFibGUiLCJyYXRpbyIsImNyZWF0ZV9zZWN0aW9uIiwiZW50ZXIiLCIkcCIsIiRzZWN0aW9uIiwiY2xvbmVkU2VjdGlvbiIsIiRjbG9uZWRTZWN0aW9uIiwiY3JlYXRlX3BhZ2VicmVhayIsIiRyIiwiY3JlYXRlX2NvbHVtbmJyZWFrIiwidXBkYXRlX2F0X3RleHQiLCJwcmV2QWxsIiwic3RydWN0dXJlQ2hhbmdlZCIsImNsb25lUiIsInVwZGF0ZV9hdF9wYXJhZ3JhcGgiLCJ1cGRhdGVfYXRfaW1hZ2UiLCJ1cGRhdGVfYXRfdGFibGUiLCJ1cGRhdGVfYXRfc2VjdGlvbiIsInR5cGVfYXRfYmVnaW5uaW5nX29mX3RleHRfaW5fcnVuIiwidHlwZV9hdF90ZXh0IiwidHlwZV9hdF9lbXB0eV9ydW4iLCJ0eXBlX2F0X2VtcHR5X3BhcmFncmFwaCIsInR5cGVfYXRfYmVnaW5uaW5nX29mX3J1biIsInR5cGVfYXRfYmVnaW5uaW5nX29mX3VwX3RvX3J1biIsInR5cGVfYXRfYmVnaW5uaW5nX29mX3BhcmFncmFwaCIsInR5cGVfYXRfZW5kX29mX3J1biIsInR5cGVfYXRfZW5kX29mX3BhcmFncmFwaCIsInBhcmFncmFwaEhhc0luZGVudFNldHRpbmciLCJQQVJBR1JBUEhfIiwiYmFja3NwYWNlX2F0X2JlZ2lubmluZ19vZl91cF90b19udW1iZXJpbmdfcGFyYWdyYXBoIiwicFByIiwiYmFzZXN0IiwiY29uc29sZSIsImVycm9yIiwiYmFja3NwYWNlX2F0X2JlZ2lubmluZ19vZl91cF90b19pbmRlbnRfcGFyYWdyYXBoIiwiYmFja3NwYWNlX2F0X2VuZF9vZl9pbWFnZSIsInJJZCIsImJhY2tzcGFjZV9hdF9lbXB0eV9ydW4iLCJzZWxlY3Rpb24iLCJiYWNrc3BhY2VfYXRfZW1wdHkiLCJiYWNrc3BhY2VfYXRfYmVnaW5uaW5nX29mX3VwX3RvX3J1biIsImJhY2tzcGFjZV9hdF9iZWdpbm5pbmciLCJ0YWJfYXRfYmVnaW5uaW5nX29mX3VwX3RvX3BhcmFncmFwaCIsImUiLCJ0YWIiLCJ0YWJfYXRfdGV4dCIsInJUYWIiLCJwYXN0ZV9ydW5fYXRfdGV4dCIsInBhc3RlX3J1bl9hdF9lbmRfb2ZfcnVuIiwiJHBhc3RpbmciLCJwYXN0aW5nIiwiY3Vyc29yQXRFbmQiLCJwYXN0ZV9ydW5fYXRfZW1wdHlfcGFyYWdyYXBoIiwic2VyaWFsaXplX2F0X3RleHQiLCJlbmQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVfYXRfd2hvbGVfdGV4dCIsImV4dGVuZCIsImVtaXQiLCJjb25kcyIsInNlcmlhbGl6ZV9hdF93aG9sZSIsInJlbW92ZV9jb2x1bW4iLCIkY2VsbHMiLCJyZW1vdmVfdGFibGUiLCJBY3Rpb25zIiwiZGVidWciLCJQQVJBR1JBUEgiLCJURVhUIiwiSW5saW5lQ29udGFpbmVycyIsInNlcGVyYXRlIiwiYmFja3NwYWNlIiwicGFzdGUiLCJmaXJzdFBhcmFncmFwaElkIiwibWFrZUlkIiwiZm9yd2FyZCIsImJhY2t3YXJkIiwiJGJvZHkiLCJjdXJzb3JhYmxlIiwiZHgiLCJkeSIsIiRhbmNob3IiLCJ1cGRhdGVJbiIsIiR4IiwiJHkiLCJweDJlbXUiLCJzaW1wbGVQb3MiLCJJbnB1dCIsIkVkaXRhYmxlIiwiRXZlbnRIYW5kbGVyIiwiRG9jeFR5cGUiLCJzdXBwb3J0UGFnaW5hdGlvbiIsIkZpbGVUeXBlIiwibG9hZCIsInJlbGVhc2UiLCJvcHRpb24iLCJnZW5lcmF0ZSIsIm1pbWVUeXBlIiwibWltZSIsInN0cmVhbSIsIlJlYWRhYmxlIiwib2JqZWN0TW9kZSIsInNhbWUiLCJmeCIsInRpZHlfcFByRGVmYXVsdCIsInRpZHlfb3V0bGluZUx2bCIsIndpZG93Q29udHJvbCIsImVhY2hBdHRyaWIiLCJ0aWR5X3JQckRlZmF1bHQiLCJyUHIiLCJ0aWR5X3JGb250cyIsImFzY2lpIiwiZWFzdEFzaWEiLCJoQW5zaSIsInRoZW1lQ29sb3IiLCJ0aWR5X2NvbG9yIiwiZWZmZWN0cyIsInRpZHlfc3BhY2luZyIsImJlZm9yZUF1dG9zcGFjaW5nIiwiYmVmb3JlTGluZXMiLCJhZnRlckF1dG9zcGFjaW5nIiwiYWZ0ZXJMaW5lcyIsIm5hbWVzIiwiYXNjaWlUaGVtZSIsImVhc3RBc2lhVGhlbWUiLCJoQW5zaVRoZW1lIiwidGhlbWVTaGFkZSIsInJGb250cyIsInJQckRlZmF1bHQiLCJwUHJEZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImNvbXBvbmVudHMiLCJzZWxmIiwiaWRlbnRpZnkiLCJjcmVhdGVTdHlsZXNFbGVtZW50IiwiYnVpbGRGYWN0b3J5IiwibWVyZ2VkIiwiaXNBcnJheSIsImhmIiwiY2F0IiwiSEZUeXBlIiwiaGZzIiwiaXNFbXB0eSIsInJlbmRlck5vZGUiLCJ0YmxHcmlkIiwiRGlyZWN0IiwicFByb3BzIiwicHJTdHlsZSIsImJ1aWxkIiwicmVuZGVyZWQiLCJyZW5kZXIiLCJfdW53cmFwIiwicmVmcmVzaFN0eWxlcyIsImdldEZvbnRMaXN0IiwiZGVmYXVsdFByb3BzIiwiRG9jeCIsIkhPQ3MiLCJ4eGlkIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ1aWQiLCJnZXRPYmplY3RQYXJ0IiwiYXR0YWNoZXIiLCJwdCIsImNtIiwicGFyc2VGbG9hdCIsInB4MlB0IiwiX2F0dGFjaGVyIiwicHJlcGVuZFRvIiwiUmVkdWNlciJdLCJtYXBwaW5ncyI6IjJCQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVB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QU16cEIsSywrQkFoRGxCLE9BTElwRSxLQUFLOHRCLFlBQ1I5dEIsS0FBSzh0QixVQUFVOXRCLEtBQUs2YyxJQUFJcmMsZUFBZUMsUUFBUSxpQkFDL0NULEtBQUs4dEIsVUFBVUMsVUFBVS90QixLQUFLNmMsSUFBSXJjLGVBQWVDLFFBQVEsY0FHbkRULEtBQUs4dEIsYyxHQW5Ed0I3RSxJLElBQWpCRixHLFVBc0dMaUYiLCJmaWxlIjoiaW5wdXQtZG9jeC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAyMik7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtZW1vaXplLW9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVjb21wb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRvY3g0anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0FycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC5nZXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhZGFibGUtc3RyZWFtXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZldGNoYWJsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2guaW52b2tlXCIpOyIsImltcG9ydCBkb2N4NGpzIGZyb20gXCJkb2N4NGpzXCJcbmltcG9ydCBGZXRjaGFibGUgZnJvbSBcImZldGNoYWJsZVwiXG5pbXBvcnQge3RyYW5zYWN0aWZ5Q2hlZXJpb30gZnJvbSBcIndlLWVkaXRcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb2N1bWVudCBleHRlbmRzIGRvY3g0anN7XG5cdHN0YXRpYyBnZXQgVVJMKCl7XG5cdFx0aWYoIXRoaXMuX19jYWNoZWREYXRhKXtcblx0XHRcdHRoaXMuX19jYWNoZWREYXRhPW5ldyBGZXRjaGFibGUoXCJkb2N4LW1lbW9yeVwiKVxuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fX2NhY2hlZERhdGFcblx0fVxuXG5cdGNyZWF0ZU9iamVjdFVSTChkYXRhLHR5cGUpe1xuXHRcdHJldHVybiBEb2N1bWVudC5VUkwuY3JlYXRlT2JqZWN0VVJMKC4uLmFyZ3VtZW50cylcblx0fVxuXG5cdHJldm9rZU9iamVjdFVSTCh1cmwpe1xuXHRcdHJldHVybiBEb2N1bWVudC5VUkwucmV2b2tlT2JqZWN0VVJMKC4uLmFyZ3VtZW50cylcblx0fVxuXG5cdGdldERhdGFQYXJ0QXNVcmwobmFtZSx0eXBlPVwiKi8qXCIpe1xuXHRcdGxldCBwYXJ0PXRoaXMucGFydHNbbmFtZV1cblx0XHRsZXQgY3JjMzI9cGFydC5fZGF0YS5jcmMzMlxuXHRcdGlmKCF0aGlzLl9zaG91bGRSZWxlYXNlZC5oYXMoY3JjMzIpKXtcblx0XHRcdHRoaXMuX3Nob3VsZFJlbGVhc2VkLnNldChjcmMzMix0aGlzLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmdldERhdGFQYXJ0KG5hbWUpLHR5cGUpKVxuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fc2hvdWxkUmVsZWFzZWQuZ2V0KGNyYzMyKVxuXHR9XG5cblx0cmVsZWFzZSgpe1xuXHRcdGZvcihsZXQgWywgdXJsXSBvZiB0aGlzLl9zaG91bGRSZWxlYXNlZCl7XG5cdFx0XHR0aGlzLnJldm9rZU9iamVjdFVSTCh1cmwpXG5cdFx0fVxuXHR9XG5cblx0c3RhcnRUcmFuc2FjdGlvbigpe1xuXHRcdHRoaXMub2ZmaWNlRG9jdW1lbnQuY29udGVudC5zdGFydFRyYW5zYWN0aW9uKClcblx0XHR0aGlzLm9mZmljZURvY3VtZW50Lm51bWJlcmluZy5zdGFydFRyYW5zYWN0aW9uKClcblx0XHR0aGlzLm9mZmljZURvY3VtZW50LnN0eWxlcy5zdGFydFRyYW5zYWN0aW9uKClcblx0fVxuXG5cdGNvbW1pdCgpe1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb250ZW50OnRoaXMub2ZmaWNlRG9jdW1lbnQuY29udGVudC5jb21taXQoKSxcblx0XHRcdG51bWJlcmluZzp0aGlzLm9mZmljZURvY3VtZW50Lm51bWJlcmluZy5jb21taXQoKSxcblx0XHRcdHN0eWxlczp0aGlzLm9mZmljZURvY3VtZW50LnN0eWxlcy5jb21taXQoKVxuXHRcdH1cblx0fVxuXG5cdHJvbGxiYWNrKHtjb250ZW50LG51bWJlcmluZyxzdHlsZXN9PXt9KXtcblx0XHR0aGlzLm9mZmljZURvY3VtZW50LmNvbnRlbnQucm9sbGJhY2soY29udGVudClcblx0XHR0aGlzLm9mZmljZURvY3VtZW50Lm51bWJlcmluZy5yb2xsYmFjayhudW1iZXJpbmcpXG5cdFx0dGhpcy5vZmZpY2VEb2N1bWVudC5zdHlsZXMucm9sbGJhY2soc3R5bGVzKVxuXHR9XG5cblx0c3RhdGljIHBhcnNlWG1sPWZ1bmN0aW9uKCl7XG5cdFx0Y29uc3QgaW5pdGlhbGl6ZT1kb2N4NGpzLnBhcnNlWG1sKC4uLmFyZ3VtZW50cylcblx0XHRpbml0aWFsaXplLnByb3RvdHlwZS5hZnRlck9yUHJlcGVuZD1mdW5jdGlvbihkb20sc2VsZWN0b3Ipe1xuXHRcdFx0Y29uc3Qgc2VsZWN0ZWQ9dGhpcy5jaGlsZHJlbihzZWxlY3Rvcilcblx0XHRcdGlmKHNlbGVjdGVkLmxlbmd0aCl7XG5cdFx0XHRcdHNlbGVjdGVkLmFmdGVyKGRvbSlcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR0aGlzLnByZXBlbmQoZG9tKVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXNcblx0XHR9XG5cdFx0cmV0dXJuIGluaXRpYWxpemVcblx0fVxuXG5cdHN0YXRpYyBPZmZpY2VEb2N1bWVudD1jbGFzcyBfXyQxIGV4dGVuZHMgZG9jeDRqcy5PZmZpY2VEb2N1bWVudHtcblx0XHRfaW5pdCguLi5hcmdzKXtcblx0XHRcdHN1cGVyLl9pbml0KC4uLmFyZ3MpXG5cdFx0XHRjb25zdCBvZmZpY2VEb2N1bWVudD10aGlzXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMudGhlbWUse1xuXHRcdFx0XHRmb250eChuYW1lKXtcblx0XHRcdFx0XHRkZWJ1Z2dlclxuXHRcdFx0XHRcdHZhciBbZmlyc3QsLi4uc2Vjb25kXT1uYW1lLnNwbGl0KC8oPz1bQS1aXSkvZylcblx0XHRcdFx0XHRzZWNvbmQ9e0hBbnNpOidsYXRpbicsQXNjaWk6J2xhdGluJyxCaWRpOidjcycsRWFzdEFzaWE6J2VhJ31bc2Vjb25kLmpvaW4oXCJcIildXG5cdFx0XHRcdFx0Y29uc3QgZm9udD10aGlzKGBhXFxcXDpmb250U2NoZW1lPmFcXFxcOiR7Zmlyc3R9Rm9udD5hXFxcXDoke3NlY29uZH1gKS5hdHRyKFwidHlwZWZhY2VcIilcblx0XHRcdFx0XHRpZighZm9udCAmJiAoc2Vjb25kPT0nY3MnIHx8IHNlY29uZD09J2VhJykpe1xuXHRcdFx0XHRcdFx0Y29uc3QgbGFuZz1vZmZpY2VEb2N1bWVudC5zZXR0aW5ncyhcIndcXFxcOnRoZW1lRm9udExhbmdcIikuYXR0cihgdzoke3tjczonYmlkaScsZWE6J2Vhc3RBc2lhJ31bc2Vjb25kXX1gKVxuXHRcdFx0XHRcdFx0aWYobGFuZyl7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzKGBhXFxcXDpmb250U2NoZW1lPmFcXFxcOiR7Zmlyc3R9Rm9udD5hXFxcXDpmb250W3NjcmlwdD0ke3snemgtQ04nOidIYW5zJ31bbGFuZ119XWApLmF0dHIoXCJ0eXBlZmFjZVwiKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gZm9udFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xvcngobmFtZSl7XG5cdFx0XHRcdFx0aWYobmFtZT09J3BoQ2xyJylcblx0XHRcdFx0XHRcdHJldHVybiBuYW1lXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuY29sb3Iob2ZmaWNlRG9jdW1lbnQuc2V0dGluZ3MoXCJ3XFxcXDpjbHJTY2hlbWVNYXBwaW5nXCIpLmF0dHIoYHc6JHtuYW1lfWApfHxuYW1lKVxuXHRcdFx0XHR9LFxuXHRcdFx0fSlcblxuXHRcdFx0aWYoIXRoaXMubnVtYmVyaW5nKXtcblx0XHRcdFx0dGhpcy5hZGROdW1iZXJpbmdQYXJ0KClcblx0XHRcdH1cblxuXHRcdFx0dHJhbnNhY3RpZnlDaGVlcmlvKHRoaXMuY29udGVudClcblx0XHRcdHRyYW5zYWN0aWZ5Q2hlZXJpbyh0aGlzLm51bWJlcmluZylcblx0XHRcdHRyYW5zYWN0aWZ5Q2hlZXJpbyh0aGlzLnN0eWxlcylcblx0XHR9XG5cblx0XHRhZGROdW1iZXJpbmdQYXJ0KCl7XG5cdFx0XHRjb25zdCBySWQ9dGhpcy5hZGQoXG5cdFx0XHRcdFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9udW1iZXJpbmdcIixcblx0XHRcdFx0XCJudW1iZXJpbmcueG1sXCIsXG5cdFx0XHRcdGA8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiPz5cblx0XHRcdFx0PHc6bnVtYmVyaW5nIHhtbG5zOndwYz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3dvcmQvMjAxMC93b3JkcHJvY2Vzc2luZ0NhbnZhc1wiIHhtbG5zOmN4PVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvZHJhd2luZy8yMDE0L2NoYXJ0ZXhcIiB4bWxuczpjeDE9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9kcmF3aW5nLzIwMTUvOS84L2NoYXJ0ZXhcIiB4bWxuczpjeDI9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9kcmF3aW5nLzIwMTUvMTAvMjEvY2hhcnRleFwiIHhtbG5zOmN4Mz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2RyYXdpbmcvMjAxNi81LzkvY2hhcnRleFwiIHhtbG5zOmN4ND1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2RyYXdpbmcvMjAxNi81LzEwL2NoYXJ0ZXhcIiB4bWxuczpjeDU9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9kcmF3aW5nLzIwMTYvNS8xMS9jaGFydGV4XCIgeG1sbnM6Y3g2PVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvZHJhd2luZy8yMDE2LzUvMTIvY2hhcnRleFwiIHhtbG5zOmN4Nz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2RyYXdpbmcvMjAxNi81LzEzL2NoYXJ0ZXhcIiB4bWxuczpjeDg9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9kcmF3aW5nLzIwMTYvNS8xNC9jaGFydGV4XCIgeG1sbnM6bWM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNlwiIHhtbG5zOmFpbms9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9kcmF3aW5nLzIwMTYvaW5rXCIgeG1sbnM6YW0zZD1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2RyYXdpbmcvMjAxNy9tb2RlbDNkXCIgeG1sbnM6bz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZVwiIHhtbG5zOnI9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzXCIgeG1sbnM6bT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L21hdGhcIiB4bWxuczp2PVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWxcIiB4bWxuczp3cDE0PVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDEwL3dvcmRwcm9jZXNzaW5nRHJhd2luZ1wiIHhtbG5zOndwPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L3dvcmRwcm9jZXNzaW5nRHJhd2luZ1wiIHhtbG5zOncxMD1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmRcIiB4bWxuczp3PVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3dvcmRwcm9jZXNzaW5nbWwvMjAwNi9tYWluXCIgeG1sbnM6dzE0PVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDEwL3dvcmRtbFwiIHhtbG5zOncxNT1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3dvcmQvMjAxMi93b3JkbWxcIiB4bWxuczp3MTZjaWQ9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS93b3JkLzIwMTYvd29yZG1sL2NpZFwiIHhtbG5zOncxNnNlPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDE1L3dvcmRtbC9zeW1leFwiIHhtbG5zOndwZz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3dvcmQvMjAxMC93b3JkcHJvY2Vzc2luZ0dyb3VwXCIgeG1sbnM6d3BpPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDEwL3dvcmRwcm9jZXNzaW5nSW5rXCIgeG1sbnM6d25lPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDA2L3dvcmRtbFwiIHhtbG5zOndwcz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3dvcmQvMjAxMC93b3JkcHJvY2Vzc2luZ1NoYXBlXCIgbWM6SWdub3JhYmxlPVwidzE0IHcxNSB3MTZzZSB3MTZjaWQgd3AxNFwiPlxuXHRcdFx0XHQ8L3c6bnVtYmVyaW5nPmAucmVwbGFjZSgvPlxccysvZyxcIj5cIikucmVwbGFjZSgvXFxzKzwvZyxcIjxcIilcblx0XHRcdClcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwibnVtYmVyaW5nXCIse1xuXHRcdFx0XHRnZXQoKXtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRSZWxPYmplY3QoXCJudW1iZXJpbmcueG1sXCIpXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgZ2V0IGZyb20gXCJsb2Rhc2guZ2V0XCJcbmltcG9ydCBpbnZva2UgZnJvbSBcImxvZGFzaC5pbnZva2VcIlxuXG5cbmV4cG9ydCBjbGFzcyBHZXRhYmxle1xuXHRjb25zdHJ1Y3Rvcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKXtcblx0XHR0aGlzLnN0eWxlcz1zdHlsZXNcblx0fVxuXG5cdGdldChwYXRoKXtcblx0XHRpZih0aGlzLmNhY2hlICYmIHRoaXMuY2FjaGUuaGFzKHBhdGgpKVxuXHRcdFx0cmV0dXJuIHRoaXMuY2FjaGUuZ2V0KHBhdGgpXG5cblx0XHRsZXQgdmFsdWU9Z2V0KHRoaXMscGF0aClcblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpXG5cdFx0XHR2YWx1ZT10aGlzLl9nZXRGcm9tQmFzZWRPbiguLi5hcmd1bWVudHMpXG5cblx0XHR0aGlzLmNhY2hlICYmIHRoaXMuY2FjaGUuc2V0KHBhdGgsdmFsdWUpXG5cblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXG5cdF9nZXRGcm9tQmFzZWRPbihwYXRoKXtcblx0XHRjb25zdCBwYXJlbnQ9dGhpcy5wYXJlbnRcblx0XHRyZXR1cm4gcGFyZW50ID8gcGFyZW50LmdldCguLi5hcmd1bWVudHMpIDogdW5kZWZpbmVkXG5cdH1cblxuXHRpbnZva2UocGF0aCl7XG5cdFx0bGV0IHZhbHVlPWludm9rZSh0aGlzLC4uLmFyZ3VtZW50cylcblx0XHRpZih2YWx1ZT09dW5kZWZpbmVkKVxuXHRcdFx0dmFsdWU9dGhpcy5faW52b2tlT25CYXNlZE9uKC4uLmFyZ3VtZW50cylcblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXG5cdF9pbnZva2VPbkJhc2VkT24ocGF0aCl7XG5cdFx0Y29uc3QgcGFyZW50PXRoaXMucGFyZW50XG5cdFx0cmV0dXJuIHBhcmVudCA/IHBhcmVudC5pbnZva2UoLi4uYXJndW1lbnRzKSA6IHVuZGVmaW5lZFxuXHR9XG5cblx0Z2V0IHBhcmVudCgpe1xuXHRcdHJldHVybiB0aGlzLnN0eWxlc1t0aGlzLmJhc2VkT25dfHx0aGlzLmJhc2VkT258fHVuZGVmaW5lZFxuXHR9XG5cblx0dG9KU09OKCl7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZFxuXHR9XG59XG5cblxuY2xhc3MgTGlua2FibGUgZXh0ZW5kcyBHZXRhYmxle1xuXHRjb25zdHJ1Y3Rvcigpe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLm5leHQ9W11cblx0fVxuXG5cdF9nZXRGcm9tQmFzZWRPbihwYXRoKXtcblx0XHRsZXQgdmFsdWU9c3VwZXIuX2dldEZyb21CYXNlZE9uKC4uLmFyZ3VtZW50cylcblx0XHRpZih2YWx1ZT09dW5kZWZpbmVkKXtcblx0XHRcdHZhbHVlPXRoaXMubmV4dC5yZWR1Y2UoKHIsYSk9PihyPT11bmRlZmluZWQgPyBhLmdldCguLi5hcmd1bWVudHMpIDogciksdW5kZWZpbmVkKVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZVxuXHR9XG5cblx0X2ludm9rZU9uQmFzZWRPbihwYXRoKXtcblx0XHRsZXQgdmFsdWU9c3VwZXIuX2ludm9rZUZyb21CYXNlZE9uKC4uLmFyZ3VtZW50cylcblx0XHRpZih2YWx1ZT09dW5kZWZpbmVkKXtcblx0XHRcdHZhbHVlPXRoaXMubmV4dC5yZWR1Y2UoKHIsYSk9PihyPT11bmRlZmluZWQgPyBhLmludm9rZSguLi5hcmd1bWVudHMpIDogciksdW5kZWZpbmVkKVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZVxuXHR9XG5cblx0aW5oZXJpdCguLi5uZXh0KXtcblx0XHRpZihuZXh0Lmxlbmd0aD09MClcblx0XHRcdHJldHVybiB0aGlzXG5cdFx0bGV0IGNsb25lZD1PYmplY3QuY3JlYXRlKHRoaXMpXG5cdFx0Y2xvbmVkLm5leHQ9bmV4dFxuXHRcdHZhciBpPWNsb25lZC5uZXh0LmZpbmRJbmRleChhPT5hLmlkPT1cIipcIilcblx0XHRpZihpIT0tMSl7XG5cdFx0XHRjbG9uZWQubmV4dC5wdXNoKGNsb25lZC5uZXh0LnNwbGljZShpLDEpWzBdKVxuXHRcdH1cblx0XHRyZXR1cm4gY2xvbmVkXG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3R5bGUgZXh0ZW5kcyBMaW5rYWJsZXtcblx0Y29uc3RydWN0b3Iobm9kZT17YXR0cmliczp7fSxjaGlsZHJlbjpbXX0sIHN0eWxlcywgc2VsZWN0b3Ipe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLmlkPW5vZGUuYXR0cmlic1tcInc6c3R5bGVJZFwiXVxuXHRcdG5vZGUuY2hpbGRyZW4uZmlsdGVyKGE9PmEudHlwZSE9XCJ0ZXh0XCIpLmZvckVhY2goYT0+e1xuXHRcdFx0c3dpdGNoKGEubmFtZS5zcGxpdChcIjpcIikucG9wKCkpe1xuXHRcdFx0Y2FzZSBcIm5hbWVcIjpcblx0XHRcdFx0cmV0dXJuIHRoaXMubmFtZT1hLmF0dHJpYnNbXCJ3OnZhbFwiXVxuXHRcdFx0Y2FzZSBcInJTdHlsZVwiOlxuXHRcdFx0Y2FzZSBcInBTdHlsZVwiOlxuXHRcdFx0Y2FzZSBcInRibFN0eWxlXCI6XG5cdFx0XHRjYXNlIFwiYmFzZWRPblwiOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5iYXNlZE9uPWEuYXR0cmlic1tcInc6dmFsXCJdXG5cdFx0XHR9XG5cdFx0fSlcblx0XHRpZighdGhpcy5iYXNlZE9uKVxuXHRcdFx0Oy8vdGhpcy5iYXNlZE9uPVwiKlwiXG5cdFx0ZWxzZVxuXHRcdFx0dGhpcy5jYWNoZT1uZXcgTWFwKClcblx0fVxuXG5cdF9jb252ZXJ0KG5vZGU9e2F0dHJpYnM6e30sY2hpbGRyZW46W119LCB0YXJnZXQsIG1hcCwgc2VsZWN0b3Ipe1xuXHRcdGxldCBwcj10YXJnZXQgPyBub2RlLmNoaWxkcmVuLmZpbmQoYT0+YS5uYW1lPT10YXJnZXQpIDogbm9kZVxuXHRcdGlmKHByKXtcblx0XHRcdHJldHVybiBwci5jaGlsZHJlbi5yZWR1Y2UoKHN0eWxlLGEpPT57XG5cdFx0XHRcdGxldCBrZXk9bWFwW2EubmFtZV1cblx0XHRcdFx0aWYoa2V5KVxuXHRcdFx0XHRcdHN0eWxlW2tleV09c2VsZWN0b3Iuc2VsZWN0VmFsdWUoYSlcblx0XHRcdFx0cmV0dXJuIHN0eWxlXG5cdFx0XHR9LHt9KVxuXHRcdH1cblx0fVxuXHRcblx0Y2xvbmUoKXtcblx0XHRjb25zdCB7c3R5bGVzLCBuYW1lLCBiYXNlZE9uLCBpZCwgbmV4dCwgcCwgIHJ9PXRoaXNcblx0XHRjb25zdCBjbG9uZWQ9bmV3IHRoaXMuY29uc3RydWN0b3IodW5kZWZpbmVkLHN0eWxlcylcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbihjbG9uZWQse2Jhc2VkT24sIHAsIHIsIG5leHR9KVxuXHR9XG59XG4iLCJpbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgX18kMSBleHRlbmRzIEJhc2V7XG5cdGNvbnN0cnVjdG9yKG5vZGUsIHN0eWxlcywgc2VsZWN0b3Ipe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLmlkPScqJ1xuXHRcdHRoaXMuYmFzZWRPbj1udWxsXG5cdFx0dGhpcy5jYWNoZT1udWxsXG5cblx0XHR0aGlzLnI9dGhpcy5fY29udmVydChub2RlLmNoaWxkcmVuLmZpbmQoYT0+YS5uYW1lPT1cInc6clByRGVmYXVsdFwiKSwgXCJ3OnJQclwiLHtcblx0XHRcdFwidzpyRm9udHNcIjpcImZvbnRzXCIsXG5cdFx0XHRcInc6c3pcIjpcInNpemVcIixcblx0XHRcdFwidzpjb2xvclwiOlwiY29sb3JcIixcblx0XHRcdFwidzpiXCI6XCJib2xkXCIsXG5cdFx0XHRcInc6aVwiOlwiaXRhbGljXCIsXG5cdFx0XHRcInc6dmFuaXNoXCI6XCJ2YW5pc2hcIlxuXHRcdH0sIHNlbGVjdG9yKVxuXG5cdFx0dGhpcy5wPXRoaXMuX2NvbnZlcnQobm9kZS5jaGlsZHJlbi5maW5kKGE9PmEubmFtZT09XCJ3OnBQckRlZmF1bHRcIiksIFwidzpwUHJcIix7XG5cdFx0XHRcInc6c3BhY2luZ1wiOlwic3BhY2luZ1wiLFxuXHRcdFx0XCJ3OmluZGVudFwiOlwiaW5kZW50XCJcblx0XHR9LCBzZWxlY3Rvcilcblx0fVxufVxuIiwiaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZVwiXG5cbmNvbnN0IGF0dHJpYnM9e1xuXHRcInc6ckZvbnRzXCI6XCJmb250c1wiLFxuXHRcInc6c3pcIjpcInNpemVcIixcblx0XCJ3OmNvbG9yXCI6XCJjb2xvclwiLFxuXHRcInc6YlwiOlwiYm9sZFwiLFxuXHRcInc6aVwiOlwiaXRhbGljXCIsXG5cdFwidzp2YW5pc2hcIjpcInZhbmlzaFwiLFxuXHRcInc6aGlnaGxpZ2h0XCI6XCJoaWdobGlnaHRcIixcblx0XCJ3OmJkclwiOlwiYm9yZGVyXCIsXG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFyYWN0ZXIgZXh0ZW5kcyBCYXNle1xuXHRjb25zdHJ1Y3Rvcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKXtcblx0XHRzdXBlcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKVxuXHRcdHRoaXMucj10aGlzLl9jb252ZXJ0KG5vZGUsIFwidzpyUHJcIixhdHRyaWJzLCBzZWxlY3Rvcilcblx0fVxuXG5cdHN0YXRpYyBEaXJlY3Q9Y2xhc3MgX18kMSBleHRlbmRzIENoYXJhY3Rlcntcblx0XHRjb25zdHJ1Y3Rvcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKXtcblx0XHRcdHN1cGVyKG5vZGUsIHN0eWxlcywgc2VsZWN0b3IpXG5cdFx0XHR0aGlzLnI9dGhpcy5fY29udmVydChub2RlLCBudWxsLGF0dHJpYnMsIHNlbGVjdG9yKVxuXHRcdH1cblx0fVxuXG5cdGZsYXQoLi4uaW5oZXJpdHMpe1xuXHRcdGxldCB0YXJnZXRzPVt0aGlzLC4uLmluaGVyaXRzXVxuXHRcdHJldHVybiBcImZvbnRzLHNpemUsY29sb3IsaGlnaGxpZ2h0LGJvcmRlcix1bmRlcmxpbmUsYm9sZCxpdGFsaWMsdmFuaXNoLHN0cmlrZVwiXG5cdFx0XHQuc3BsaXQoXCIsXCIpXG5cdFx0XHQucmVkdWNlKChwcm9wcyxrKT0+e1xuXHRcdFx0XHR0YXJnZXRzLmZpbmQoYT0+KHByb3BzW2tdPWEuZ2V0KGByLiR7a31gKSkhPT11bmRlZmluZWQpXG5cdFx0XHRcdHJldHVybiBwcm9wc1xuXHRcdFx0fSx7fSlcblx0fVxufVxuIiwiaW1wb3J0IEJhc2UgZnJvbSBcIi4vY2hhcmFjdGVyXCJcblxuY29uc3QgYXR0cmlicz17XG5cdFwidzpzcGFjaW5nXCI6XCJzcGFjaW5nXCIsXG5cdFwidzppbmRcIjpcImluZGVudFwiLFxuXHRcInc6bnVtUHJcIjpcIm51bVwiLFxuXHRcInc6amNcIjpcImFsaWduXCIsXG5cdFwidzpvdXRsaW5lTHZsXCI6XCJoZWFkaW5nXCIsXG5cdFwidzp3aWRvd0NvbnRyb2xcIjpcIndpZG93XCIsXG5cdFwidzprZWVwTmV4dFwiOlwia2VlcFdpdGhOZXh0XCIsXG5cdFwidzprZWVwTGluZXNcIjpcImtlZXBMaW5lc1wiXG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhZ3JhcGggZXh0ZW5kcyBCYXNle1xuXHRjb25zdHJ1Y3Rvcihub2RlLHN0eWxlcyxzZWxlY3Rvcil7XG5cdFx0c3VwZXIobm9kZSwgc3R5bGVzLCBzZWxlY3Rvcilcblx0XHR0aGlzLnA9dGhpcy5fY29udmVydChub2RlLCBcInc6cFByXCIsYXR0cmlicywgc2VsZWN0b3IpXG5cdH1cblxuXHRzdGF0aWMgRGlyZWN0PWNsYXNzIF9fJDEgZXh0ZW5kcyBQYXJhZ3JhcGh7XG5cdFx0Y29uc3RydWN0b3Iobm9kZSxzdHlsZXMsc2VsZWN0b3Ipe1xuXHRcdFx0c3VwZXIobm9kZSwgc3R5bGVzLCBzZWxlY3Rvcilcblx0XHRcdHRoaXMucD10aGlzLl9jb252ZXJ0KG5vZGUsIG51bGwsYXR0cmlicywgc2VsZWN0b3IpXG5cdFx0fVxuXHR9XG5cblx0ZmxhdDRDaGFyYWN0ZXIoKXtcblx0XHRyZXR1cm4gc3VwZXIuZmxhdCguLi5hcmd1bWVudHMpXG5cdH1cblxuXHRmbGF0KC4uLmluaGVyaXRzKXtcblx0XHRsZXQgdGFyZ2V0cz1bdGhpcywuLi5pbmhlcml0c11cblx0XHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhhdHRyaWJzKVxuXHRcdFx0XHQucmVkdWNlKChwcm9wcywgayk9Pntcblx0XHRcdFx0XHRpZih0YXJnZXRzLmZpbmQoYT0+KHByb3BzW2tdPWEuZ2V0KGBwLiR7a31gKSkhPT11bmRlZmluZWQpKXtcblx0XHRcdFx0XHRcdGlmKGs9PT1cIm51bVwiKXtcblx0XHRcdFx0XHRcdFx0bGV0IHtudW1JZCxpbHZsOmxldmVsPTB9PXByb3BzLm51bVxuXHRcdFx0XHRcdFx0XHRsZXQgbnVtU3R5bGU9dGhpcy5zdHlsZXNbYF9udW1fJHtudW1JZH1gXVxuXHRcdFx0XHRcdFx0XHRwcm9wcy5pbmRlbnQ9e1xuXHRcdFx0XHRcdFx0XHRcdC4uLnByb3BzLmluZGVudCxcblx0XHRcdFx0XHRcdFx0XHQuLi5udW1TdHlsZS5nZXQoYCR7bGV2ZWx9LnAuaW5kZW50YClcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHByb3BzLm51bWJlcmluZz17XG5cdFx0XHRcdFx0XHRcdFx0bmV4dFZhbHVlOigpPT5udW1TdHlsZS5sZXZlbChsZXZlbCkubmV4dFZhbHVlKCksXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU6c3VwZXIuZmxhdChudW1TdHlsZS5nZXQoYCR7bGV2ZWx9YCksLi4uaW5oZXJpdHMpLFxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdDpudW1TdHlsZS5wYXJlbnRbbGV2ZWxdLm51bUZtdCxcblx0XHRcdFx0XHRcdFx0XHRudW1JZCxcblx0XHRcdFx0XHRcdFx0XHRsZXZlbCxcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBwcm9wcy5udW1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHByb3BzXG5cdFx0XHRcdH0se30pXG5cdH1cbn1cbiIsImltcG9ydCBQYXJhZ3JhcGggZnJvbSBcIi4uL3BhcmFncmFwaFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcmluZyBleHRlbmRzIFBhcmFncmFwaHtcblxufSIsImltcG9ydCBQYXJhZ3JhcGggZnJvbSBcIi4vcGFyYWdyYXBoXCJcbmltcG9ydCBnZXQgZnJvbSBcImxvZGFzaC5nZXRcIlxuXG4vKipcbiAqIGNvbmRpdGlvbmFsIGZvcm1hdHRpbmc6IGh0dHA6Ly9vZmZpY2VvcGVueG1sLmNvbS9XUHN0eWxlVGFibGVTdHlsZXNDb25kLnBocFxuICogVGhlIGNvbmRpdGlvbmFsIGZvcm1hdHMgYXJlIGFwcGxpZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjpcblx0Pldob2xlIHRhYmxlL3RhYmxlXG5cdD5CYW5kZWQgY29sdW1ucy9iYW5kMVZlcnQgLCBldmVuIGNvbHVtbiBiYW5kaW5nL2JhbmQyVmVydFxuXHQ+QmFuZGVkIHJvd3MvYmFuZDFIb3J6ICwgZXZlbiByb3cgYmFuZGluZy9iYW5kMkhvcnpcblx0PkZpcnN0IHJvdy9maXJzdFJvdyAsIGxhc3Qgcm93L2xhc3RSb3dcblx0PkZpcnN0IGNvbHVtbi9maXJzdENvbCwgbGFzdCBjb2x1bW4vbGFzdENvbFxuXHQ+VG9wIGxlZnQvbndDZWxsLCB0b3AgcmlnaHQvbmVDZWxsLCBib3R0b20gbGVmdC9zd0NlbGwsIGJvdHRvbSByaWdodC9zZUNlbGxcbiAqL1xuY29uc3QgUFJJT1JJWkVEPSdzZUNlbGwsc3dDZWxsLG5lQ2VsbCxud0NlbGwsbGFzdENvbCxmaXJzdENvbCxsYXN0Um93LGZpcnN0Um93LGJhbmQySG9yeixiYW5kMUhvcnosYmFuZDJWZXJ0LGJhbmQxVmVydCcuc3BsaXQoJywnKVxuY29uc3QgQ05GPSdmaXJzdFJvdyxsYXN0Um93LGZpcnN0Q29sLGxhc3RDb2wsYmFuZDFWZXJ0LGJhbmQyVmVydCxiYW5kMUhvcnosYmFuZDJIb3J6LG53Q2VsbCxuZUNlbGwsc3dDZWxsLHNlQ2VsbCcuc3BsaXQoXCIsXCIpXG5jbGFzcyBXaXRoQm9yZGVyIGV4dGVuZHMgUGFyYWdyYXBoe1xuXHRjb25zdHJ1Y3Rvcihub2RlLHN0eWxlcyxzZWxlY3Rvcil7XG5cdFx0c3VwZXIobm9kZSwgc3R5bGVzLCBzZWxlY3Rvcilcblx0XHR0aGlzLnRibD10aGlzLl9jb252ZXJ0KG5vZGUsXCJ3OnRjUHJcIix7XG5cdFx0XHRcInc6dGNNYXJnaW5cIjpcIm1hcmdpblwiLFxuXHRcdFx0XCJ3OnRjQm9yZGVyc1wiOlwiYm9yZGVyXCIsXG5cdFx0XHRcInc6c2hkXCI6XCJiYWNrZ3JvdW5kXCJcblx0XHR9LHNlbGVjdG9yKVxuXHR9XG5cblx0cmlnaHQoKXtcblx0XHRyZXR1cm4gdGhpcy5nZXQoJ3RibC5ib3JkZXIucmlnaHQnKVxuXHR9XG5cblx0bGVmdCgpe1xuXHRcdHJldHVybiB0aGlzLmdldCgndGJsLmJvcmRlci5sZWZ0Jylcblx0fVxuXG5cdHRvcCgpe1xuXHRcdHJldHVybiB0aGlzLmdldCgndGJsLmJvcmRlci50b3AnKVxuXHR9XG5cblx0Ym90dG9tKCl7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0KCd0YmwuYm9yZGVyLmJvdHRvbScpXG5cdH1cbn1cblxuY2xhc3MgUm93U3R5bGUgZXh0ZW5kcyBXaXRoQm9yZGVye1xuXHRyaWdodChjb25kaXRpb25zKXtcblx0XHRsZXQgdmFsdWVcblx0XHRpZihjb25kaXRpb25zLmluY2x1ZGVzKCdsYXN0Q29sJykpXG5cdFx0XHR2YWx1ZT1zdXBlci5yaWdodCguLi5hcmd1bWVudHMpXG5cdFx0ZWxzZVxuXHRcdFx0dmFsdWU9dGhpcy5nZXQoJ3RibC5ib3JkZXIuaW5zaWRlVicpXG5cblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXG5cdGxlZnQoY29uZGl0aW9ucyl7XG5cdFx0bGV0IHZhbHVlXG5cdFx0aWYoY29uZGl0aW9ucy5pbmNsdWRlcygnZmlyc3RDb2wnKSlcblx0XHRcdHZhbHVlPXN1cGVyLnJpZ2h0KC4uLmFyZ3VtZW50cylcblx0XHRlbHNlXG5cdFx0XHR2YWx1ZT10aGlzLmdldCgndGJsLmJvcmRlci5pbnNpZGVWJylcblxuXHRcdHJldHVybiB2YWx1ZVxuXHR9XG59XG5cbmNsYXNzIENlbGxTdHlsZSBleHRlbmRzIFdpdGhCb3JkZXJ7XG5cbn1cblxuY2xhc3MgQ29sU3R5bGUgZXh0ZW5kcyBXaXRoQm9yZGVye1xuXHR0b3AoY29uZGl0aW9ucyl7XG5cdFx0aWYoY29uZGl0aW9ucy5pbmNsdWRlcygnZmlyc3RSb3cnKSlcblx0XHRcdHJldHVybiBzdXBlci50b3AoLi4uYXJndW1lbnRzKVxuXHR9XG5cblx0Ym90dG9tKGNvbmRpdGlvbnMsZWRnZXMpe1xuXHRcdGlmKGNvbmRpdGlvbnMuaW5jbHVkZXMoJ2xhc3RSb3cnKSlcblx0XHRcdHJldHVybiBzdXBlci5ib3R0b20oLi4uYXJndW1lbnRzKVxuXHR9XG59XG5cblxuY2xhc3MgQmFuZEhTdHlsZSBleHRlbmRzIFJvd1N0eWxle1xuXG59XG5jbGFzcyBCYW5kVlN0eWxlIGV4dGVuZHMgQ29sU3R5bGV7XG5cbn1cblxuXG5sZXQgdHlwZXM9e31cbnR5cGVzLnNlQ2VsbD1DZWxsU3R5bGVcbnR5cGVzLnN3Q2VsbD1DZWxsU3R5bGVcbnR5cGVzLm5lQ2VsbD1DZWxsU3R5bGVcbnR5cGVzLm53Q2VsbD1DZWxsU3R5bGVcbnR5cGVzLmxhc3RDb2w9Q29sU3R5bGVcbnR5cGVzLmZpcnN0Q29sPUNvbFN0eWxlXG50eXBlcy5sYXN0Um93PVJvd1N0eWxlXG50eXBlcy5maXJzdFJvdz1Sb3dTdHlsZVxudHlwZXMuYmFuZDJIb3J6PUJhbmRIU3R5bGVcbnR5cGVzLmJhbmQxSG9yej1CYW5kSFN0eWxlXG50eXBlcy5iYW5kMlZlcnQ9QmFuZFZTdHlsZVxudHlwZXMuYmFuZDFWZXJ0PUJhbmRWU3R5bGVcbnR5cGVzLnJvdz1Sb3dTdHlsZVxudHlwZXMuY2VsbD1DZWxsU3R5bGVcblxuY29uc3QgYXR0cmlicz17XG5cdHRibDp7XG5cdFx0XCJ3OnRibEluZFwiOlwiaW5kZW50XCIsXG5cdFx0XCJ3OnRibENlbGxNYXJcIjpcIm1hcmdpblwiLFxuXHRcdFwidzp0YmxCb3JkZXJzXCI6XCJib3JkZXJcIixcblx0XHRcInc6dGJsV1wiOlwid2lkdGhcIixcblx0XHRcInc6c2hkXCI6XCJiYWNrZ3JvdW5kXCIsXG5cdFx0XCJ3OmpjXCI6XCJhbGlnblwiLFxuXHRcdFwidzp0YmxTdHlsZUNvbEJhbmRTaXplXCI6XCJjZWxsU3BhblwiLFxuXHRcdFwidzp0YmxTdHlsZVJvd0JhbmRTaXplXCI6XCJyb3dTcGFuXCIsXG5cdFx0XCJ3OnRibExvb2tcIjpcImNvbmRpdGlvbmFsXCIsXG5cdH0sXG5cblx0dHI6e1xuXHRcdFwidzp0YmxJbmRcIjpcImluZGVudFwiLFxuXHRcdFwidzp0YmxDZWxsTWFyXCI6XCJtYXJnaW5cIixcblx0XHRcInc6dGJsQm9yZGVyc1wiOlwiYm9yZGVyXCIsXG5cdFx0XCJ3OmNuZlN0eWxlXCI6XCJjb25kaXRpb25hbFwiLFxuXHRcdFwidzp0ckhlaWdodFwiOlwiaGVpZ2h0XCIsXG5cdFx0XCJ3OmNhbnRTcGxpdFwiOlwia2VlcExpbmVzXCIsXG5cdH0sXG5cblx0dGM6e1xuXHRcdFwidzp0YmxJbmRcIjpcImluZGVudFwiLFxuXHRcdFwidzp0YmxDZWxsTWFyXCI6XCJtYXJnaW5cIixcblx0XHRcInc6dGJsQm9yZGVyc1wiOlwiYm9yZGVyXCIsXG5cdFx0XCJ3OmNuZlN0eWxlXCI6XCJjb25kaXRpb25hbFwiLFxuXHRcdFwidzp2QWxpZ25cIjogXCJ2ZXJ0QWxpZ25cIixcblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVTdHlsZSBleHRlbmRzIFdpdGhCb3JkZXJ7XG5cdGNvbnN0cnVjdG9yKG5vZGUsc3R5bGVzLHNlbGVjdG9yKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cblx0XHR0aGlzLnRibD10aGlzLl9jb252ZXJ0KG5vZGUsXCJ3OnRibFByXCIsYXR0cmlicy50Ymwsc2VsZWN0b3IpXG5cblx0XHR0aGlzLnRjPXRoaXMuX2NvbnZlcnQobm9kZSxcInc6dGNQclwiLGF0dHJpYnMudGMsc2VsZWN0b3IpXG5cblx0XHR0aGlzLnRyPXRoaXMuX2NvbnZlcnQobm9kZSxcInc6dGJsUHJFeFwiLGF0dHJpYnMudHIsc2VsZWN0b3IpXG5cblx0XHRub2RlLmNoaWxkcmVuLmZpbHRlcihhPT5hLm5hbWU9PVwidzp0YmxTdHlsZVByXCIpLmZvckVhY2goYT0+e1xuXHRcdFx0bGV0IHR5cGU9YS5hdHRyaWJzW1widzp0eXBlXCJdXG5cdFx0XHR0aGlzW3R5cGVdPW5ldyB0eXBlc1t0eXBlXShhLHN0eWxlcyxzZWxlY3Rvcilcblx0XHR9KVxuXHR9XG5cblx0c3RhdGljIERpcmVjdD1jbGFzcyBfXyQxIGV4dGVuZHMgVGFibGVTdHlsZXtcblx0XHRjb25zdHJ1Y3Rvcihub2RlLHN0eWxlcyxzZWxlY3Rvcil7XG5cdFx0XHRzdXBlcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKVxuXHRcdFx0Y29uc3QgdHlwZT1ub2RlLm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpLnJlcGxhY2UoXCJQclwiLFwiXCIpXG5cdFx0XHR0aGlzW3R5cGVdPXRoaXMuX2NvbnZlcnQobm9kZSwgbnVsbCwgYXR0cmlic1t0eXBlXSxzZWxlY3Rvcilcblx0XHR9XG5cdH1cblxuXHRmbGF0NFRhYmxlKC4uLmluaGVyaXRzKXtcblx0XHRsZXQgdGFyZ2V0cz1bdGhpcywuLi5pbmhlcml0c11cblx0XHRyZXR1cm4gXCJpbmRlbnQsYmFja2dyb3VuZCx3aWR0aCxjb25kaXRpb25hbFwiLnNwbGl0KFwiLFwiKVxuXHRcdFx0LnJlZHVjZSgocHJvcHMsayk9Pntcblx0XHRcdFx0dGFyZ2V0cy5maW5kKGE9Pihwcm9wc1trXT1hLmdldChgdGJsLiR7a31gKSkhPT11bmRlZmluZWQpXG5cdFx0XHRcdHJldHVybiBwcm9wc1xuXHRcdFx0fSx7fSlcblx0fVxuXG5cdGZsYXQ0Um93KC4uLmluaGVyaXRzKXtcblx0XHRsZXQgdGFyZ2V0cz1bdGhpcywuLi5pbmhlcml0c11cblx0XHRyZXR1cm4gXCJoZWlnaHQsY2FudFNwbGl0LGtlZXBMaW5lcyxjb25kaXRpb25hbFwiLnNwbGl0KFwiLFwiKVxuXHRcdFx0LnJlZHVjZSgocHJvcHMsayk9Pntcblx0XHRcdFx0dGFyZ2V0cy5maW5kKGE9Pihwcm9wc1trXT1hLmdldChgdHIuJHtrfWApKSE9PXVuZGVmaW5lZClcblx0XHRcdFx0cmV0dXJuIHByb3BzXG5cdFx0XHR9LHt9KVxuXHR9XG5cblx0ZmxhdDRDZWxsKGNvbmRpdGlvbmFsLCBlZGdlcz1bXSl7XG5cdFx0Y29uc3QgY29uZGl0aW9ucz1BcnJheS5mcm9tKChcIjAwMDAwMDAwMDAwMFwiKyhjb25kaXRpb25hbD4+PjApLnRvU3RyaW5nKDIpKS5zdWJzdHIoLTEyKSlcblx0XHRcdFx0Lm1hcCgoYSxpKT0+YT09XCIxXCImJkNORltpXSkuZmlsdGVyKGE9PmEpXG5cdFx0XHRcdC5zb3J0KChhLGIpPT5QUklPUklaRUQuaW5kZXhPZihhKS1QUklPUklaRUQuaW5kZXhPZihiKSlcblxuXHRcdGxldCBtYXJnaW49XCJsZWZ0LHJpZ2h0LHRvcCxib3R0b21cIi5zcGxpdChcIixcIikucmVkdWNlKChtYXJnaW4sYSk9Pntcblx0XHRcdGxldCB2PXRoaXMuZ2V0KGBtYXJnaW4uJHthfWApXG5cdFx0XHRpZih2PT11bmRlZmluZWQpXG5cdFx0XHRcdHY9dGhpcy5nZXQoYHRibC5tYXJnaW4uJHthfWAsY29uZGl0aW9ucylcblx0XHRcdGlmKHYhPT11bmRlZmluZWQpXG5cdFx0XHRcdG1hcmdpblthXT12XG5cdFx0XHRyZXR1cm4gbWFyZ2luXG5cdFx0fSx7fSlcblxuXHRcdGxldCBib3JkZXI9XCJsZWZ0LHJpZ2h0LHRvcCxib3R0b21cIi5zcGxpdChcIixcIikucmVkdWNlKChib3JkZXIsYSk9Pntcblx0XHRcdGxldCB2PXRoaXMuZ2V0KGBib3JkZXIuJHthfWApXG5cdFx0XHRpZih2PT11bmRlZmluZWQpXG5cdFx0XHRcdHY9dGhpc1thXShjb25kaXRpb25zLGVkZ2VzKVxuXG5cdFx0XHRpZih2IT09dW5kZWZpbmVkKVxuXHRcdFx0XHRib3JkZXJbYV09dlxuXHRcdFx0ZWxzZVxuXHRcdFx0XHRib3JkZXJbYV09e3N6OjB9XG5cdFx0XHRyZXR1cm4gYm9yZGVyXG5cdFx0fSx7fSlcblxuXHRcdGxldCBwPVwic3BhY2luZyxpbmRlbnRcIi5zcGxpdChcIixcIikucmVkdWNlKChwLGspPT57XG5cdFx0XHRsZXQgdj10aGlzLmdldChgcC4ke2t9YCxjb25kaXRpb25zKVxuXHRcdFx0aWYodiE9PXVuZGVmaW5lZClcblx0XHRcdFx0cFtrXT12XG5cdFx0XHRyZXR1cm4gcFxuXHRcdH0se30pXG5cblx0XHRsZXQgcj1cImZvbnRzLHNpemUsY29sb3JcIi5zcGxpdChcIixcIikucmVkdWNlKChyLGspPT57XG5cdFx0XHRsZXQgdj10aGlzLmdldChgci4ke2t9YCxjb25kaXRpb25zKVxuXHRcdFx0aWYodiE9PXVuZGVmaW5lZClcblx0XHRcdFx0cltrXT12XG5cdFx0XHRyZXR1cm4gclxuXHRcdH0sXCJib2xkLGl0YWxpYyx2YW5pc2hcIi5zcGxpdChcIixcIikucmVkdWNlKChyLGspPT57XG5cdFx0XHRsZXQgdj10aGlzLmdldChgci4ke2t9YCxjb25kaXRpb25zKVxuXHRcdFx0aWYodiE9PXVuZGVmaW5lZClcblx0XHRcdFx0cltrXT0hIXZcblx0XHRcdHJldHVybiByXG5cdFx0fSx7fSkpXG5cblx0XHRsZXQgYmFja2dyb3VuZD10aGlzLmdldCgndGJsLmJhY2tncm91bmQnLGNvbmRpdGlvbnMpXG5cblx0XHRjb25zdCBjbGVhbj1hPT5PYmplY3Qua2V5cyhhKS5sZW5ndGg9PTAgPyB1bmRlZmluZWQgOiBhXG5cblx0XHRbbWFyZ2luLGJvcmRlcixwLHJdPVtjbGVhbihtYXJnaW4pLGNsZWFuKGJvcmRlciksY2xlYW4ocCksY2xlYW4ocildXG5cblx0XHRyZXR1cm4ge21hcmdpbixib3JkZXIsYmFja2dyb3VuZCxwLHJ9XG5cdH1cblxuXHRnZXQocGF0aCwgY29uZGl0aW9ucz1bXSl7XG5cdFx0bGV0IHZhbHVlPWNvbmRpdGlvbnMucmVkdWNlKChmb3VuZCwgY29uZGl0aW9uKT0+e1xuXHRcdFx0aWYoZm91bmQhPXVuZGVmaW5lZClcblx0XHRcdFx0cmV0dXJuIGZvdW5kXG5cdFx0XHRyZXR1cm4gc3VwZXIuZ2V0KGAke2NvbmRpdGlvbn0uJHtwYXRofWApXG5cdFx0fSx1bmRlZmluZWQpXG5cblx0XHRpZih2YWx1ZT09dW5kZWZpbmVkKVxuXHRcdFx0dmFsdWU9c3VwZXIuZ2V0KHBhdGgpXG5cblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXHQvKipcblx0ICogMS4gY29uZGl0aW9uYWwgZm9ybWF0dGluZ1xuXHQgKiAyLiB0YWJsZS50Y1ByXG5cdCAqIDMuIHRhYmxlLnRyUHI9dGJsUHJFeFxuXHQgKiA0LiB0YWJsZS50YmxQclxuXHQgKi9cblx0cmlnaHQoY29uZGl0aW9ucyxlZGdlcyl7XG5cdFx0bGV0IHZhbHVlPWNvbmRpdGlvbnMucmVkdWNlKChmb3VuZCwgY29uZCk9PnsvLzEuIGNvbmRpdGlvbmFsXG5cdFx0XHRpZihmb3VuZCE9dW5kZWZpbmVkKVxuXHRcdFx0XHRyZXR1cm4gZm91bmRcblx0XHRcdHJldHVybiB0aGlzLmludm9rZShgJHtjb25kfS5yaWdodGAsY29uZGl0aW9ucylcblx0XHR9LHVuZGVmaW5lZClcblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpXG5cdFx0XHR2YWx1ZT10aGlzLmdldCgndGMuYm9yZGVyLnJpZ2h0JykvLzIuIHRhYmxlLnRjUHJcblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpey8vMy50YWJsZS50clByXG5cdFx0XHRpZihjb25kaXRpb25zLmluY2x1ZGVzKCdsYXN0Q29sJykpXG5cdFx0XHRcdHZhbHVlPXRoaXMuZ2V0KCd0ci5ib3JkZXIucmlnaHQnKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndHIuYm9yZGVyLmluc2lkZVYnKVxuXHRcdH1cblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpey8vNC5cblx0XHRcdGlmKGNvbmRpdGlvbnMuaW5jbHVkZXMoJ2xhc3RDb2wnKXx8ZWRnZXMuaW5jbHVkZXMoXCJsYXN0Q29sXCIpKVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndGJsLmJvcmRlci5yaWdodCcpXG5cdFx0XHRlbHNlXG5cdFx0XHRcdHZhbHVlPXRoaXMuZ2V0KCd0YmwuYm9yZGVyLmluc2lkZVYnKVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZVxuXHR9XG5cblx0bGVmdChjb25kaXRpb25zLGVkZ2VzKXtcblx0XHRsZXQgdmFsdWU9Y29uZGl0aW9ucy5yZWR1Y2UoKGZvdW5kLCBjb25kKT0+ey8vMS4gY29uZGl0aW9uYWxcblx0XHRcdGlmKGZvdW5kIT11bmRlZmluZWQpXG5cdFx0XHRcdHJldHVybiBmb3VuZFxuXHRcdFx0cmV0dXJuIHRoaXMuaW52b2tlKGAke2NvbmR9LmxlZnRgLCBjb25kaXRpb25zKVxuXHRcdH0sdW5kZWZpbmVkKVxuXG5cdFx0aWYodmFsdWU9PXVuZGVmaW5lZClcblx0XHRcdHZhbHVlPXRoaXMuZ2V0KFwidGMuYm9yZGVyLmxlZnRcIikvLzIuIHRhYmxlLnRjUHJcblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpey8vMy50YWJsZS50clByXG5cdFx0XHRpZihjb25kaXRpb25zLmluY2x1ZGVzKCdmaXJzdENvbCcpKVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndHIuYm9yZGVyLmxlZnQnKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndHIuYm9yZGVyLmluc2lkZVYnKVxuXHRcdH1cblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpey8vNC5cblx0XHRcdGlmKGNvbmRpdGlvbnMuaW5jbHVkZXMoJ2ZpcnN0Q29sJyl8fGVkZ2VzLmluY2x1ZGVzKFwiZmlyc3RDb2xcIikpXG5cdFx0XHRcdHZhbHVlPXRoaXMuZ2V0KCd0YmwuYm9yZGVyLmxlZnQnKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndGJsLmJvcmRlci5pbnNpZGVWJylcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXG5cdHRvcChjb25kaXRpb25zLGVkZ2VzKXtcblx0XHRsZXQgdmFsdWU9Y29uZGl0aW9ucy5yZWR1Y2UoKGZvdW5kLCBjb25kKT0+e1xuXHRcdFx0aWYoZm91bmQhPXVuZGVmaW5lZClcblx0XHRcdFx0cmV0dXJuIGZvdW5kXG5cdFx0XHRyZXR1cm4gdGhpcy5pbnZva2UoYCR7Y29uZH0udG9wYCxjb25kaXRpb25zKVxuXHRcdH0sdW5kZWZpbmVkKVxuXG5cdFx0aWYodmFsdWU9PXVuZGVmaW5lZClcblx0XHRcdHZhbHVlPXRoaXMuZ2V0KFwidGMuYm9yZGVyLnRvcFwiKS8vMi4gdGFibGUudGNQclxuXG5cdFx0aWYodmFsdWU9PXVuZGVmaW5lZCl7Ly8zLnRhYmxlLnRyUHJcblx0XHRcdGlmKGNvbmRpdGlvbnMuaW5jbHVkZXMoJ2ZpcnN0Um93JykpXG5cdFx0XHRcdHZhbHVlPXRoaXMuZ2V0KCd0ci5ib3JkZXIudG9wJylcblx0XHRcdGVsc2Vcblx0XHRcdFx0dmFsdWU9dGhpcy5nZXQoJ3RyLmJvcmRlci5pbnNpZGVIJylcblx0XHR9XG5cblx0XHRpZih2YWx1ZT09dW5kZWZpbmVkKXsvLzQuXG5cdFx0XHRpZihjb25kaXRpb25zLmluY2x1ZGVzKCdmaXJzdFJvdycpfHxlZGdlcy5pbmNsdWRlcyhcImZpcnN0Um93XCIpKVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndGJsLmJvcmRlci50b3AnKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndGJsLmJvcmRlci5pbnNpZGVIJylcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWVcblx0fVxuXG5cdGJvdHRvbShjb25kaXRpb25zLCBlZGdlcyl7XG5cdFx0bGV0IHZhbHVlPWNvbmRpdGlvbnMucmVkdWNlKChmb3VuZCwgY29uZCk9Pntcblx0XHRcdGlmKGZvdW5kIT11bmRlZmluZWQpXG5cdFx0XHRcdHJldHVybiBmb3VuZFxuXHRcdFx0cmV0dXJuIHRoaXMuaW52b2tlKGAke2NvbmR9LmJvdHRvbWAsY29uZGl0aW9ucylcblx0XHR9LHVuZGVmaW5lZClcblxuXG5cdFx0aWYodmFsdWU9PXVuZGVmaW5lZClcblx0XHRcdHZhbHVlPXRoaXMuZ2V0KFwidGMuYm9yZGVyLnRvcFwiKS8vMi4gdGFibGUudGNQclxuXG5cdFx0aWYodmFsdWU9PXVuZGVmaW5lZCl7Ly8zLnRhYmxlLnRyUHJcblx0XHRcdGlmKGNvbmRpdGlvbnMuaW5jbHVkZXMoJ2xhc3RSb3cnKSlcblx0XHRcdFx0dmFsdWU9dGhpcy5nZXQoJ3RyLmJvcmRlci5ib3R0b20nKVxuXHRcdFx0ZWxzZVxuXHRcdFx0XHR2YWx1ZT10aGlzLmdldCgndHIuYm9yZGVyLmluc2lkZUgnKVxuXHRcdH1cblxuXHRcdGlmKHZhbHVlPT11bmRlZmluZWQpey8vNC5cblx0XHRcdGlmKGNvbmRpdGlvbnMuaW5jbHVkZXMoJ2xhc3RSb3cnKXx8ZWRnZXMuaW5jbHVkZXMoJ2xhc3RSb3cnKSlcblx0XHRcdFx0dmFsdWU9dGhpcy5nZXQoJ3RibC5ib3JkZXIuYm90dG9tJylcblx0XHRcdGVsc2Vcblx0XHRcdFx0dmFsdWU9dGhpcy5nZXQoJ3RibC5ib3JkZXIuaW5zaWRlSCcpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlXG5cdH1cbn1cbiIsImltcG9ydCBQYXJhZ3JhcGggZnJvbSBcIi4uL3BhcmFncmFwaFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExldmVsIGV4dGVuZHMgUGFyYWdyYXBoe1xuXHRjb25zdHJ1Y3Rvcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0bm9kZS5jaGlsZHJlbi5mb3JFYWNoKGE9Pntcblx0XHRcdHN3aXRjaChhLm5hbWUpe1xuXHRcdFx0Y2FzZSBcInc6cFByXCI6XG5cdFx0XHRjYXNlIFwidzpyUHJcIjpcblx0XHRcdFx0XG5cdFx0XHRicmVha1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bGV0IGtleT1hLm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpXG5cdFx0XHRcdHRoaXNba2V5XT1hLmF0dHJpYnNbXCJ3OnZhbFwiXVxuXHRcdFx0fVxuXHRcdH0pXG5cdFx0dGhpcy5sZXZlbD1wYXJzZUludChub2RlLmF0dHJpYnNbXCJ3OmlsdmxcIl0pXG5cdFx0dGhpcy5zdGFydD1wYXJzZUludCh0aGlzLnN0YXJ0KVxuXHR9XG59IiwiZXhwb3J0IGRlZmF1bHQge1xuXHRkZWNpbWFsKG4pe1xuXHRcdHJldHVybiBuXG5cdH0sXG5cblx0bG93ZXJMZXR0ZXIobil7XG5cdFx0cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoXCJhXCIuY2hhckNvZGVBdCgwKStuLTEpXG5cdH0sXG5cdFxuXHR1cHBlckxldHRlcihuKXtcblx0XHRyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcIkFcIi5jaGFyQ29kZUF0KDApK24tMSlcblx0fSxcblx0XG5cdGxvd2VyUm9tYW4obil7XG5cdFx0cmV0dXJuIFJvbWFuW25dLnRvTG93ZXJDYXNlKClcblx0fSxcblx0XG5cdHVwcGVyUm9tYW4obil7XG5cdFx0cmV0dXJuIFJvbWFuW25dXG5cdH1cbn1cblxuY29uc3QgUm9tYW49W1wiSVwiLFwiSUlcIixcIklJSVwiLFwiSVZcIixcIlZcIixcIlZJXCIsXCJWSUlcIixcIlZJSUlcIixcIklYXCJdIiwiaW1wb3J0IHtHZXRhYmxlfSBmcm9tIFwiLi4vYmFzZVwiXG5pbXBvcnQgTGV2ZWwgZnJvbSBcIi4vbGV2ZWxcIlxuaW1wb3J0IE5VTUZNVCBmcm9tIFwiLi9udW1iZXItZm9ybWF0XCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtIGV4dGVuZHMgR2V0YWJsZXtcblx0Y29uc3RydWN0b3Iobm9kZSwgc3R5bGVzLCBzZWxlY3Rvcil7XG5cdFx0c3VwZXIoLi4uYXJndW1lbnRzKVxuXHRcdHRoaXMuaWQ9YF9udW1fJHtub2RlLmF0dHJpYnNbXCJ3Om51bUlkXCJdfWBcblxuXHRcdGxldCBsZXZlbHM9bmV3IFNldCgpXG5cblx0XHRub2RlLmNoaWxkcmVuLmZvckVhY2goYT0+e1xuXHRcdFx0c3dpdGNoKGEubmFtZSl7XG5cdFx0XHRcdGNhc2UgXCJ3OmFic3RyYWN0TnVtSWRcIjpcblx0XHRcdFx0XHR0aGlzLmJhc2VkT249YF9hYnN0cmFjdE51bV8ke2EuYXR0cmlic1tcInc6dmFsXCJdfWBcblx0XHRcdFx0YnJlYWtcblx0XHRcdFx0Y2FzZSBcInc6bHZsT3ZlcnJpZGVcIjp7XG5cdFx0XHRcdFx0bGV0IGxldmVsPWEuYXR0cmlic1tcInc6aWx2bFwiXVxuXHRcdFx0XHRcdGxldCBzdGFydE92ZXJyaWRlPWEuY2hpbGRyZW4uZmluZChiPT5iLm5hbWU9PSd3OnN0YXJ0T3ZlcnJpZGUnKVxuXHRcdFx0XHRcdGxldCBsdmw9YS5jaGlsZHJlbi5maW5kKGI9PmIubmFtZT09XCJ3Omx2bFwiKXx8e25hbWU6XCJ3Omx2bFwiLGF0dHJpYnM6e1widzppbHZsXCI6bGV2ZWx9LGNoaWxkcmVuOltdfVxuXG5cdFx0XHRcdFx0aWYoc3RhcnRPdmVycmlkZSlcblx0XHRcdFx0XHRcdGx2bC5jaGlsZHJlbi5wdXNoKHtuYW1lOlwidzpzdGFydFwiLGF0dHJpYnM6e1widzp2YWxcIjpzdGFydE92ZXJyaWRlLmF0dHJpYnNbXCJ3OnZhbFwiXX19KVxuXG5cdFx0XHRcdFx0dGhpc1tsZXZlbF09bmV3IE51bUxldmVsKGx2bCxzdHlsZXMsc2VsZWN0b3IsdGhpcylcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSlcblxuXHRcdHRoaXMubGV2ZWw9bGV2ZWw9Pntcblx0XHRcdGxldmVscy5hZGQobGV2ZWwpXG5cdFx0XHRpZighdGhpc1tsZXZlbF0pXG5cdFx0XHRcdHRoaXNbbGV2ZWxdPW5ldyBOdW1MZXZlbCh7YXR0cmliczp7XCJ3OmlsdmxcIjpsZXZlbH0sY2hpbGRyZW46W119LHN0eWxlcyxzZWxlY3RvciwgdGhpcylcblxuXHRcdFx0cmV0dXJuIHRoaXNbbGV2ZWxdXG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNldD0oKT0+e1xuXHRcdFx0Zm9yKGxldCBpIG9mIGxldmVscyl7XG5cdFx0XHRcdHRoaXNbaV0ucmVzZXQoKVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuY2xhc3MgTnVtTGV2ZWwgZXh0ZW5kcyBMZXZlbHtcblx0Y3VycmVudD0wXG5cblx0Y29uc3RydWN0b3Iobm9kZSwgc3R5bGVzLCBzZWxlY3RvcixwYXJlbnQpe1xuXHRcdHN1cGVyKC4uLmFyZ3VtZW50cylcblx0XHR0aGlzLm51bT1wYXJlbnRcblx0fVxuXG5cdG5leHRWYWx1ZSgpe1xuXHRcdGlmKHRoaXMubHZsUGljQnVsbGV0SWQpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJwaWMgYnVsbGV0IG5vdCBzdXBwb3J0ZWQgeWV0IVwiKVxuXG5cdFx0Y29uc3Qge3N0YXJ0LG51bUZtdCxsdmxUZXh0fT1cInN0YXJ0LG51bUZtdCxsdmxUZXh0XCIuc3BsaXQoXCIsXCIpXG5cdFx0XHQucmVkdWNlKChwLGspPT57XG5cdFx0XHRcdHBba109dGhpc1trXXx8dGhpcy5udW0ucGFyZW50LmdldChgJHt0aGlzLmxldmVsfS4ke2t9YClcblx0XHRcdFx0cmV0dXJuIHBcblx0XHRcdH0se30pXG5cblxuXHRcdHJldHVybiBsdmxUZXh0LnJlcGxhY2UoLyUoXFxkKykvZywgKGEsbGV2ZWwpPT57XG5cdFx0XHRsZXZlbD1wYXJzZUludChsZXZlbCktMVxuXHRcdFx0aWYobGV2ZWw9PXRoaXMubGV2ZWwpe1xuXHRcdFx0XHRyZXR1cm4gKE5VTUZNVFtudW1GbXRdfHxOVU1GTVRbJ2RlY2ltYWwnXSkoc3RhcnQrdGhpcy5jdXJyZW50KyspXG5cdFx0XHR9ZWxzZVxuXHRcdFx0XHRyZXR1cm4gdGhpcy5udW0ubGV2ZWwobGV2ZWwpLmN1cnJlbnRWYWx1ZSgpXG5cdFx0fSlcblx0fVxuXG5cdGN1cnJlbnRWYWx1ZShpPXRoaXMuY3VycmVudC0xKXtcblx0XHRjb25zdCB7c3RhcnQsbnVtRm10LGx2bFRleHR9PVwic3RhcnQsbnVtRm10LGx2bFRleHRcIi5zcGxpdChcIixcIilcblx0XHRcdC5yZWR1Y2UoKHAsayk9Pntcblx0XHRcdFx0cFtrXT10aGlzW2tdfHx0aGlzLm51bS5wYXJlbnQuZ2V0KGAke3RoaXMubGV2ZWx9LiR7a31gKVxuXHRcdFx0XHRyZXR1cm4gcFxuXHRcdFx0fSx7fSlcblx0XHRyZXR1cm4gKE5VTUZNVFtudW1GbXRdfHxOVU1GTVRbJ2RlY2ltYWwnXSkoc3RhcnQrTWF0aC5tYXgoMCxpKSlcblx0fVxuXG5cdGxhYmVsKGxldmVscyl7XG5cdFx0Y29uc3Qge3N0YXJ0LG51bUZtdCxsdmxUZXh0fT1cInN0YXJ0LG51bUZtdCxsdmxUZXh0XCIuc3BsaXQoXCIsXCIpXG5cdFx0XHQucmVkdWNlKChwLGspPT57XG5cdFx0XHRcdHBba109dGhpc1trXXx8dGhpcy5udW0ucGFyZW50LmdldChgJHt0aGlzLmxldmVsfS4ke2t9YClcblx0XHRcdFx0cmV0dXJuIHBcblx0XHRcdH0se30pXG5cblxuXHRcdHJldHVybiBsdmxUZXh0LnJlcGxhY2UoLyUoXFxkKykvZywgKGEsbGV2ZWwpPT57XG5cdFx0XHRsZXZlbD1wYXJzZUludChsZXZlbCktMVxuXHRcdFx0cmV0dXJuIHRoaXMubnVtLmxldmVsKGxldmVsKS5jdXJyZW50VmFsdWUoKGxldmVscy5nZXQobGV2ZWwpfHwwKS0xKVxuXHRcdH0pXG5cdH1cblxuXHRyZXNldCgpe1xuXHRcdHRoaXMuY3VycmVudD0wXG5cdFx0dGhpcy5jb250ZW50PVtdXG5cdH1cbn1cbiIsImltcG9ydCB7R2V0YWJsZX0gZnJvbSBcIi4uL2Jhc2VcIlxuaW1wb3J0IExldmVsIGZyb20gXCIuL2xldmVsXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWJzdHJhY3ROdW0gZXh0ZW5kcyBHZXRhYmxle1xuXHRjb25zdHJ1Y3Rvcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dGhpcy5pZD1gX2Fic3RyYWN0TnVtXyR7bm9kZS5hdHRyaWJzW1widzphYnN0cmFjdE51bUlkXCJdfWBcblx0XHRcblx0XHRub2RlLmNoaWxkcmVuLmZpbHRlcihhPT5hLm5hbWU9PVwidzpsdmxcIikuZm9yRWFjaChsdmw9Pntcblx0XHRcdHRoaXNbbHZsLmF0dHJpYnNbXCJ3OmlsdmxcIl1dPW5ldyBMZXZlbChsdmwsc3R5bGVzLHNlbGVjdG9yLHRoaXMpXG5cdFx0fSlcblx0fVxufSIsImV4cG9ydCBkZWZhdWx0IGNsYXNze1xuICAgIGNvbnN0cnVjdG9yKG5vZGUsIHN0eWxlcywgc2VsZWN0b3Ipe1xuICAgICAgICBjb25zdCBmaW5kPW5hbWU9Pm5vZGUuY2hpbGRyZW4uZmluZChhPT5hLm5hbWU9PT1uYW1lKVxuXG4gICAgICAgIHRoaXMuZGlzdGFuY2U9c2VsZWN0b3IudG9EaXN0KG5vZGUpXG5cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLHNlbGVjdG9yLnNlbGVjdFZhbHVlKGZpbmQoXCJ3cDpleHRlbnRcIikpKS8vd2lkdGgsaGVpZ2h0XG5cbiAgICAgICAgc3dpdGNoKG5vZGUuYXR0cmlic1tcInNpbXBsZVBvc1wiXSl7Ly94LHlcbiAgICAgICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLHNlbGVjdG9yLnNlbGVjdFZhbHVlKGZpbmQoXCJ3cDpzaW1wbGVQb3NcIikpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwiMFwiOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsc2VsZWN0b3Iuc2VsZWN0KFtmaW5kKFwid3A6cG9zaXRpb25IXCIpLGZpbmQoXCJ3cDpwb3NpdGlvblZcIildLHtwb3NpdGlvbkg6XCJ4XCIsIHBvc2l0aW9uVjpcInlcIn0pKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHdyYXA9XCJUb3BBbmRCb3R0b20sU3F1YXJlLFRpZ2h0LFRocm91Z2hcIlxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAgICAgLnJlZHVjZSgod3JhcCxhKT0+d3JhcCB8fCBmaW5kKGB3cDp3cmFwJHthfWApLG51bGwpXG4gICAgICAgIGlmKHdyYXApe1xuICAgICAgICAgICAgdGhpcy53cmFwPXNlbGVjdG9yLnNlbGVjdFZhbHVlKHdyYXApXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmbGF0KCl7XG4gICAgICAgIGNvbnN0IHtkaXN0YW5jZSx4LHksd3JhcCx3aWR0aCxoZWlnaHR9PXRoaXNcbiAgICAgICAgcmV0dXJuIHtkaXN0YW5jZSx4LHksd3JhcCx3aWR0aCxoZWlnaHR9XG4gICAgfVxufVxuIiwiaW1wb3J0IGdldFRoZW1lIGZyb20gXCIuL3RoZW1lXCJcblxuZXhwb3J0IGNsYXNzIFByb3BlcnRpZXN7XG5cdGNvbnN0cnVjdG9yKGRvY3gscHJlY2lzaW9uPTEpe1xuXHRcdHRoaXMuZG9jeD1kb2N4XG5cdFx0dGhpcy50aGVtZT1nZXRUaGVtZShkb2N4KVxuXHRcdHRoaXMuclN0eWxlPXRoaXMucFN0eWxlPXRoaXMudGJsU3R5bGU9dGhpcy50eXBlPXRoaXMuX3ZhbFxuXHRcdHRoaXMud3JhcFNxdWFyZT10aGlzLndyYXBUaWdodD10aGlzLndyYXBUaHJvdWdoPXRoaXMud3JhcFRvcEFuZEJvdHRvbT10aGlzLndyYXBcblx0XHR0aGlzLnZBbGlnbj10aGlzLnZlcnRBbGlnblxuXHRcdHRoaXMuZXh0PXRoaXMuZXh0ZW50XG5cdFx0dGhpcy5yZXF1aXJlRm9udHM9bmV3IFNldCgpXG5cdFx0dGhpcy5wcmVjaXNpb249cHJlY2lzaW9uXG5cdH1cblxuXHRlbXUyUHgoZW11KXtcblx0XHRyZXR1cm4gcGFyc2VJbnQodGhpcy5kb2N4LnB0MlB4KHBhcnNlSW50KGVtdSkvMTI3MDApKnRoaXMucHJlY2lzaW9uKVxuXHR9XG5cblx0ZHhhMlB4KCl7XG5cdFx0cmV0dXJuIHBhcnNlSW50KHRoaXMuZG9jeC5keGEyUHgoLi4uYXJndW1lbnRzKSp0aGlzLnByZWNpc2lvbilcblx0fVxuXG5cdHB0MlB4KCl7XG5cdFx0cmV0dXJuIHBhcnNlSW50KHRoaXMuZG9jeC5wdDJQeCguLi5hcmd1bWVudHMpKnRoaXMucHJlY2lzaW9uKVxuXHR9XG5cblx0c2VsZWN0KG5vZGVzLCBrZXlNYXA9e30pe1xuXHRcdHJldHVybiBub2Rlcy5yZWR1Y2UoKHByb3BzLHgpPT57XG5cdFx0XHRsZXQgbmFtZT14Lm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpXG5cdFx0XHRpZih0aGlzW25hbWVdKVxuXHRcdFx0XHRwcm9wc1trZXlNYXBbeC5uYW1lXXx8a2V5TWFwW25hbWVdfHxuYW1lXT10aGlzW25hbWVdKHgpXG5cdFx0XHRyZXR1cm4gcHJvcHNcblx0XHR9LHt9KVxuXHR9XG5cblx0c2VsZWN0VmFsdWUoeCl7XG5cdFx0bGV0IG5hbWU9eC5uYW1lLnNwbGl0KFwiOlwiKS5wb3AoKVxuXHRcdGlmKHRoaXNbbmFtZV0pXG5cdFx0XHRyZXR1cm4gdGhpc1tuYW1lXSh4KVxuXHR9XG5cblx0cGdTeih4KXtcblx0XHRyZXR1cm57XG5cdFx0XHR3aWR0aDp0aGlzLmR4YTJQeCh4LmF0dHJpYnNbJ3c6dyddKSxcblx0XHRcdGhlaWdodDp0aGlzLmR4YTJQeCh4LmF0dHJpYnNbJ3c6aCddKVxuXHRcdH1cblx0fVxuXHRwZ01hcih4KXtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMoeC5hdHRyaWJzKS5yZWR1Y2UoKHZhbHVlLGEpPT57XG5cdFx0XHR2YWx1ZVthLnNwbGl0KCc6JykucG9wKCldPXRoaXMuZHhhMlB4KHguYXR0cmlic1thXSlcblx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdH0se30pXG5cdH1cblxuXHR0aXRsZVBnKHgpe1xuXHRcdHJldHVybiBhLmF0cnJpYnNbXCJ3OnZhbFwiXSE9PVwiZmFsc2VcIlxuXHR9XG5cblx0Y25mU3R5bGUoeCl7XG5cdFx0cmV0dXJuIHBhcnNlSW50KHguYXR0cmlic1tcInc6dmFsXCJdLDIpXG5cdH1cblxuXHRjb2xzKHgpe1xuXHRcdGxldCBjb2xzPXtudW06MX0sIHRcblx0XHRpZih0PXguYXR0cmlic1sndzpudW0nXSlcblx0XHRcdGNvbHMubnVtPXBhcnNlSW50KHguYXR0cmlic1sndzpudW0nXSlcblxuXHRcdGlmKHQ9eC5hdHRyaWJzWyd3OnNwYWNlJ10pXG5cdFx0XHRjb2xzLnNwYWNlPXRoaXMuZHhhMlB4KHguYXR0cmlic1sndzpzcGFjZSddKVxuXG5cdFx0bGV0IGRhdGE9dGhpcy5kb2N4Lm9mZmljZURvY3VtZW50LmNvbnRlbnQoeCkuZmluZChcIndcXFxcOmNvbFwiKS50b0FycmF5KClcblx0XHRcdC5tYXAoY29sPT4oe1xuXHRcdFx0XHR3aWR0aDp0aGlzLmR4YTJQeChjb2wuYXR0cmlic1sndzp3J10pLFxuXHRcdFx0XHRzcGFjZTp0aGlzLmR4YTJQeChjb2wuYXR0cmlic1sndzpzcGFjZSddKVxuXHRcdFx0fSkpXG5cdFx0aWYoZGF0YS5sZW5ndGgpXG5cdFx0XHRjb2xzLmRhdGE9ZGF0YVxuXG5cdFx0cmV0dXJuIGNvbHNcblx0fVxuXG5cdF92YWwoeCl7XG5cdFx0cmV0dXJuIHguYXR0cmlic1tcInc6dmFsXCJdXG5cdH1cblxuXHRqYyh4KXtcblx0XHRyZXR1cm4gdGhpcy5fdmFsKHgpXG5cdH1cblxuXHRpbmQoeCl7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHguYXR0cmlicylcblx0XHQucmVkdWNlKChwcm9wcyxhKT0+e1xuXHRcdFx0cHJvcHNbYS5zcGxpdChcIjpcIikucG9wKCldPXRoaXMuZHhhMlB4KHguYXR0cmlic1thXSlcblx0XHRcdHJldHVybiBwcm9wc1xuXHRcdH0se30pXG5cdH1cblx0c3BhY2luZyh4KXtcblx0XHRyZXR1cm4gdGhpcy50b1NwYWNpbmcoeClcblx0fVxuXG5cdHdpZG93Q29udHJvbCh4KXtcblx0XHRyZXR1cm4gdGhpcy5fdmFsKHgpIT09XCIwXCJcblx0fVxuXG5cdGtlZXBOZXh0KHgpe1xuXHRcdHJldHVybiB0cnVlXG5cdH1cblxuXHRrZWVwTGluZXMoeCl7XG5cdFx0cmV0dXJuIHRydWVcblx0fVxuXG5cdHBCZHIoeCl7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHguYXR0cmlicykucmVkdWNlKChwcm9wcyxhKT0+e1xuXHRcdFx0cHJvcHNbYS5zcGxpdChcIjpcIikucG9wKCldPXRoaXMudG9Cb3JkZXIoeFthXVswXSlcblx0XHRcdHJldHVybiBwcm9wc1xuXHRcdH0se30pXG5cdH1cblxuXHRyRm9udHMoeCl7XG5cdFx0bGV0IGZvbnRzPVtdLCB0XG5cdFx0aWYodD14LmF0dHJpYnNbJ3c6YXNjaWknXSlcblx0XHRcdGZvbnRzLnB1c2godClcblx0XHRlbHNlIGlmKHQ9eC5hdHRyaWJzWyd3OmFzY2lpVGhlbWUnXSlcblx0XHRcdGZvbnRzLnB1c2godGhpcy50aGVtZS5mb250KHQpKVxuXG5cdFx0aWYodD14LmF0dHJpYnNbJ3c6ZWFzdEFzaWEnXSlcblx0XHRcdGZvbnRzLnB1c2godClcblx0XHRlbHNlIGlmKHQ9eC5hdHRyaWJzWyd3OmVhc3RBc2lhVGhlbWUnXSlcblx0XHRcdGZvbnRzLnB1c2godGhpcy50aGVtZS5mb250KHQpKVxuXG5cdFx0aWYoZm9udHMubGVuZ3RoKXtcblx0XHRcdGZvbnRzPWZvbnRzLmpvaW4oXCIsXCIpXG5cdFx0XHRmb250cy5zcGxpdChcIixcIilcblx0XHRcdFx0LmZvckVhY2goYT0+dGhpcy5yZXF1aXJlRm9udHMuYWRkKGEpKVxuXHRcdFx0cmV0dXJuIGZvbnRzXG5cdFx0fVxuXHR9XG5cblx0bGFuZyh4KXtcblx0XHRyZXR1cm4gdGhpcy5fdmFsKHgpXG5cdH1cblxuXHR2ZXJ0QWxpZ24oeCl7XG5cdFx0cmV0dXJuIHRoaXMuX3ZhbCh4KVxuXHR9XG5cblx0c3ooeCl7XG5cdFx0cmV0dXJuIHRoaXMuX3ZhbCh4KS8yXG5cdH1cblxuXHRrZXJuKHgpe1xuXHRcdHJldHVybiB0aGlzLl92YWwoeCkvMlxuXHR9XG5cblx0dyh4KXtcblx0XHRyZXR1cm4gdGhpcy5fdmFsKHgpLzEwMC4wXG5cdH1cblxuXHRwb3NpdGlvbih4KXtcblx0XHRyZXR1cm4gdGhpcy5keGEyUHgodGhpcy5fdmFsKHgpKVxuXHR9XG5cblx0aSh4KXtcblx0XHRyZXR1cm4gdGhpcy5hc1RvZ2dsZSh4KVxuXHR9XG5cblx0c3RyaWtlKHgpe1xuXHRcdHJldHVybiB0aGlzLmFzVG9nZ2xlKHgpXG5cdH1cblxuXHR1KHgpe1xuXHRcdHJldHVybiB0aGlzLl92YWwoeClcblx0fVxuXG5cdHZhbmlzaCh4KXtcblx0XHRyZXR1cm4gdGhpcy5hc1RvZ2dsZSh4KVxuXHR9XG5cblx0c21hbGxDYXBzKHgpe1xuXHRcdHJldHVybiB0aGlzLmFzVG9nZ2xlKHgpXG5cdH1cblxuXHRiKHgpe1xuXHRcdHJldHVybiB0aGlzLmFzVG9nZ2xlKHgpXG5cdH1cblxuXHRiYWNrZ3JvdW5kKHgpe1xuXHRcdHJldHVybiB0aGlzLnRvQ29sb3IoeCwndzpjb2xvcicpXG5cdH1cblxuXHRoaWdobGlnaHQoeCl7XG5cdFx0cmV0dXJuIHRoaXMudG9Db2xvcih4KVxuXHR9XG5cblx0Y29sb3IoeCl7XG5cdFx0cmV0dXJuIHRoaXMudG9Db2xvcih4KVxuXHR9XG5cblx0YmRyKHgpe1xuXHRcdHJldHVybiB0aGlzLnRvQm9yZGVyKHgpXG5cdH1cblxuLyoqKioqKioqKioqKnRhYmxlKioqKioqKioqKioqKioqKioqKiovXG5cdHRibEdyaWQoeCl7XG5cdFx0cmV0dXJuIHguY2hpbGRyZW4ubWFwKGE9PnRoaXMuZHhhMlB4KGEuYXR0cmlic1tcInc6d1wiXSkpXG5cdH1cblxuXHR0Y0JvcmRlcnMoeCl7XG5cdFx0cmV0dXJuIHguY2hpbGRyZW4ucmVkdWNlKChwLGEpPT57XG5cdFx0XHRwW2EubmFtZS5zcGxpdChcIjpcIikucG9wKCldPXRoaXMudG9Cb3JkZXIoYSlcblx0XHRcdHJldHVybiBwXG5cdFx0fSx7fSlcblx0fVxuXG5cdHRibEJvcmRlcnMoeCl7XG5cdFx0cmV0dXJuIHRoaXMudGNCb3JkZXJzKHgpXG5cdH1cblxuXHR0YmxDZWxsTWFyKHgpe1xuXHRcdHJldHVybiB4LmNoaWxkcmVuLnJlZHVjZSgocCxhKT0+e1xuXHRcdFx0cFthLm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpXT10aGlzLmR4YTJQeChhLmF0dHJpYnNbXCJ3OndcIl0pXG5cdFx0XHRyZXR1cm4gcFxuXHRcdH0se30pXG5cdH1cblxuXHR0YmxMb29rKHgpe1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyh4LmF0dHJpYnMpLnJlZHVjZSgocHJvcHMsYSk9Pntcblx0XHRcdHByb3BzW2Euc3BsaXQoXCI6XCIpLnBvcCgpXT14LmF0dHJpYnNbYV1cblx0XHRcdHJldHVybiBwcm9wc1xuXHRcdH0se30pXG5cdH1cblxuXHR0YmxTdHlsZUNvbEJhbmRTaXplKHgpe1xuXHRcdHJldHVybiBwYXJzZUludCh0aGlzLl92YWwoeCkpXG5cdH1cblxuXHR0YmxTdHlsZVJvd0JhbmRTaXplKHgpe1xuXHRcdHJldHVybiBwYXJzZUludCh0aGlzLl92YWwoeCkpXG5cdH1cblxuXHR0YmxJbmQoeCl7XG5cdFx0cmV0dXJuIHRoaXMuZHhhMlB4KHguYXR0cmlic1tcInc6d1wiXSlcblx0fVxuXG5cdHRjVyh4KXtcblx0XHRyZXR1cm4gdGhpcy5keGEyUHgoeC5hdHRyaWJzWyd3OncnXSlcblx0fVxuXG5cdHNoZCh4KXtcblx0XHRyZXR1cm4gdGhpcy5kb2N4LmFzQ29sb3IoeC5hdHRyaWJzW1widzpmaWxsXCJdKVxuXHR9XG5cblx0dHJIZWlnaHQoeCl7XG5cdFx0cmV0dXJuIHRoaXMuZHhhMlB4KHguYXR0cmlic1sndzp2YWwnXSlcblx0fVxuXG5cdGNhbnRTcGxpdCh4KXtcblx0XHRyZXR1cm4gdHJ1ZVxuXHR9XG5cblx0Y25mU3R5bGUoeCl7XG5cdFx0cmV0dXJuIHRoaXMuX3ZhbCh4KVxuXHR9XG5cbi8qKioqKioqKioqKioqKmRyYXdpbmdNTCoqKioqKioqKioqKioqKioqKioqL1xuXHRwb3NpdGlvbkgoeCl7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGJhc2U6eC5hdHRyaWJzW1wicmVsYXRpdmVGcm9tXCJdLFxuXHRcdFx0Li4ueC5jaGlsZHJlbi5yZWR1Y2UoKHByb3BzLGEpPT57XG5cdFx0XHRcdHN3aXRjaChhLm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpKXtcblx0XHRcdFx0Y2FzZSBcInBvc09mZnNldFwiOlxuXHRcdFx0XHRcdHByb3BzLm9mZnNldD10aGlzLmVtdTJQeChhLmNoaWxkcmVuWzBdLmRhdGEpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRcdGNhc2UgXCJhbGlnblwiOlxuXHRcdFx0XHRcdHByb3BzLmFsaWduPWEuY2hpbGRyZW5bMF0uZGF0YVxuXHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBwcm9wc1xuXHRcdFx0fSx7fSlcblx0XHR9XG5cdH1cblxuXHRwb3NpdGlvblYoKXtcblx0XHRyZXR1cm4gdGhpcy5wb3NpdGlvbkgoLi4uYXJndW1lbnRzKVxuXHR9XG5cblx0c2ltcGxlUG9zKHgpe1xuXHRcdHJldHVybiB7XG5cdFx0XHR4Ontcblx0XHRcdFx0YmFzZTpcInBhZ2VcIixcblx0XHRcdFx0b2Zmc2V0OnRoaXMuZW11MlB4KHguYXR0cmlicy54KSxcblx0XHRcdH0sXG5cdFx0XHR5Ontcblx0XHRcdFx0YmFzZTpcInBhZ2VcIixcblx0XHRcdFx0b2Zmc2V0OnRoaXMuZW11MlB4KHguYXR0cmlicy55KVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRleHRlbnQoeCl7XG5cdFx0cmV0dXJuIHt3aWR0aDp0aGlzLmVtdTJQeCh4LmF0dHJpYnMuY3gpLGhlaWdodDp0aGlzLmVtdTJQeCh4LmF0dHJpYnMuY3kpfVxuXHR9XG5cblx0b2ZmKHgpe1xuXHRcdHJldHVybiB7eDp0aGlzLmVtdTJQeCh4LmF0dHJpYnMueCkseTp0aGlzLmVtdTJQeCh4LmF0dHJpYnMueSl9XG5cdH1cblxuXHR4ZnJtKHgpe1xuXHRcdGNvbnN0IHByb3BzPXRoaXMuc2VsZWN0KHguY2hpbGRyZW4se29mZjpcInBvc2l0aW9uXCIsZXh0Olwic2l6ZVwiLH0pXG5cdFx0aWYoeC5hdHRyaWJzLnJvdCl7XG5cdFx0XHRwcm9wcy5yb3RhdGU9TWF0aC5jZWlsKHBhcnNlSW50KHguYXR0cmlicy5yb3QpLzYwMDAwKVxuXHRcdH1cblx0XHRpZih4LmF0dHJpYnMuZmxpcEg9PT1cIjFcIil7XG5cdFx0XHRwcm9wcy5mbGlwSD10cnVlXG5cdFx0fVxuXHRcdGlmKHguYXR0cmlicy5mbGlwVj09PVwiMVwiKXtcblx0XHRcdHByb3BzLmZsaXBWPXRydWVcblx0XHR9XG5cdFx0cmV0dXJuIHByb3BzXG5cdH1cblxuXHRwcnN0R2VvbSh4KXtcblx0XHRyZXR1cm4geC5hdHRyaWJzLnByc3Rcblx0fVxuXG5cdGN1c3RHZW9tKHgpe1xuXHRcdGxldCBwYXRoPVtdXG5cdFx0bGV0IHB4PXg9PnRoaXMuZW11MlB4KHgpXG5cblx0XHRmb3IobGV0IGEsIGNoaWxkcmVuPXguY2hpbGRyZW4uZmluZChhPT5hLm5hbWU9PVwiYTpwYXRoTHN0XCIpLmNoaWxkcmVuWzBdLmNoaWxkcmVuLCBsZW49Y2hpbGRyZW4ubGVuZ3RoLGk9MDtpPGxlbjtpKyspe1xuXHRcdFx0YT1jaGlsZHJlbltpXVxuXHRcdFx0c3dpdGNoKGEubmFtZS5zcGxpdChcIjpcIikucG9wKCkpe1xuXHRcdFx0Y2FzZSAnbW92ZVRvJzpcblx0XHRcdFx0cGF0aC5wdXNoKCdNICcrcHgoYS5jaGlsZHJlblswXS5hdHRyaWJzLngpKycgJytweChhLmNoaWxkcmVuWzBdLmF0dHJpYnMueSkpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlICdsblRvJzpcblx0XHRcdFx0cGF0aC5wdXNoKCdMICcrcHgoYS5jaGlsZHJlblswXS5hdHRyaWJzLngpKycgJytweChhLmNoaWxkcmVuWzBdLmF0dHJpYnMueSkpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnY3ViaWNCZXpUbyc6XG5cdFx0XHRcdHBhdGgucHVzaCgnTCAnK3B4KGEuY2hpbGRyZW5bMF0uYXR0cigneCcpKSsnICcrcHgoYS5jaGlsZHJlblswXS5hdHRyKCd5JykpKVxuXHRcdFx0XHRwYXRoLnB1c2goJ1EgJytweChhLmNoaWxkcmVuWzFdLmF0dHIoJ3gnKSkrJyAnK3B4KGEuY2hpbGRyZW5bMV0uYXR0cigneScpKVxuXHRcdFx0XHRcdCsnICcrcHgoYS5jaGlsZHJlblsyXS5hdHRyKCd4JykpKycgJytweChhLmNoaWxkcmVuWzJdLmF0dHIoJ3knKSkpXG5cdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnYXJjVG8nOlxuXHRcdFx0XHRwYXRoLnB1c2goYEFgKVxuXG5cdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAnY2xvc2UnOlxuXHRcdFx0XHRwYXRoLnB1c2goJ1onKVxuXHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHBhdGguam9pbihcIiBcIilcblx0fVxuXG5cdHNvbGlkRmlsbCh4KXtcblx0XHRyZXR1cm4gdGhpcy50b0NvbG9yKHguY2hpbGRyZW5bMF0pXG5cdH1cblxuXHRibGlwKHgpe1xuXHRcdGxldCByaWQ9eC5hdHRyaWJzW1wicjplbWJlZFwiXVxuXHRcdHJldHVybiB7Li4ub2ZmaWNlRG9jdW1lbnQuZ2V0UmVsKHJpZCl9XG5cdH1cblxuXHRzdHJldGNoKHgpe1xuXHRcdHJldHVybiB0aGlzLmZpbGxSZWN0KHguY2hpbGRyZW5bMF0pXG5cdH1cblxuXHRmaWxsUmVjdCh4KXtcblx0XHRyZXR1cm4gXCJsZWZ0LHJpZ2h0LGJvdHRvbSx0b3BcIi5zcGxpdChcIixcIikucmVkdWNlKChmaWxsLGEpPT57XG5cdFx0XHRmaWxsW2FdPXBhcnNlSW50KHguYXR0cmlic1thWzBdXSkvMTAwMDAwXG5cdFx0XHRyZXR1cm4gZmlsbFxuXHRcdH0se30pXG5cdH1cblxuXHRzcmNSZWN0KHgpe1xuXHRcdHJldHVybiB0aGlzLmZpbGxSZWN0KHgpXG5cdH1cblxuXHR0aWxlKHgpe1xuXHRcdHJldHVybiB7Li4ueC5hdHRyaWJzfVxuXHR9XG5cblx0YmxpcEZpbGwoeCl7XG5cdFx0cmV0dXJuIHRoaXMuc2VsZWN0KHguY2hpbGRyZW4se1xuXHRcdFx0YmxpcDpcInNyY1wiLFxuXHRcdFx0c3RyZXRjaDpcInN0cmV0Y2hcIixcblx0XHRcdHNyY1JlY3Q6XCJwb3J0aW9uXCIsXG5cdFx0XHR0aWxlOlwidGlsZVwiXG5cdFx0fSlcblx0fVxuXG5cdGxuKHgpe1xuXHRcdGxldCBwcm9wcz10aGlzLnNlbGVjdCh4LmNoaWxkcmVuLHtwcnN0RGFzaDpcImRhc2hcIn0pXG5cdFx0cHJvcHMud2lkdGg9dGhpcy5lbXUyUHgoeC5hdHRyaWJzLncpXG5cdFx0cmV0dXJuIHByb3BzXG5cdH1cblxuXG5cdGJvZHlQcih4KXtcblx0XHRsZXQgcHJvcHM9e31cblx0XHRwcm9wcy5tYXJnaW49XCJib3R0b20sdG9wLHJpZ2h0LGxlZnRcIi5zcGxpdChcIixcIikucmVkdWNlKChtYXJnaW4sYSx0KT0+e1xuXHRcdFx0aWYodD14LmF0dHJpYnNbYCR7YVswXX1JbnNgXSlcblx0XHRcdFx0bWFyZ2luW2FdPXRoaXMuZW11MlB4KHQpXG5cdFx0XHRyZXR1cm4gbWFyZ2luXG5cdFx0fSx7fSlcblxuXHRcdHJldHVybiBwcm9wc1xuXHR9XG5cblx0d3JhcFBvbHlnb24oeCl7XG5cdFx0Y29uc3QgeHk9KHthdHRyaWJzOnt4LHl9fSk9Pih7eDp0aGlzLmVtdTJQeCh4KSx5OnRoaXMuZW11MlB4KHkpfSlcblx0XHRyZXR1cm4geC5jaGlsZHJlbi5tYXAoYT0+eHkoYSkpXG5cdH1cblxuXHR3cmFwKHgpe1xuXHRcdHZhciBwcm9wcz17XG5cdFx0XHRtb2RlOngubmFtZS5zdWJzdHJpbmcoXCJ3cDp3cmFwXCIubGVuZ3RoKSxcblx0XHRcdHdyYXBUZXh0OiB4LmF0dHJpYnMud3JhcFRleHQsXG5cdFx0XHRkaXN0YW5jZTogdGhpcy50b0Rpc3QoeCksXG5cdFx0XHQuLi50aGlzLnNlbGVjdCh4LmNoaWxkcmVuLHt3cmFwUG9seWdvbjpcInBvbHlnb25cIn0pXG5cdFx0fVxuXG5cdFx0aWYocHJvcHMubW9kZT09XCJTcXVhcmVcIiAmJiAhcHJvcHMuZGlzdGFuY2Upe1xuXHRcdFx0bGV0IGR0PXRoaXMuZW11MlB4KDM2MDAwKVxuXHRcdFx0cHJvcHMuZGlzdGFuY2U9e2xlZnQ6ZHQscmlnaHQ6ZHQsdG9wOmR0LGJvdHRvbTpkdH1cblx0XHR9XG5cdFx0cmV0dXJuIHByb3BzXG5cdH1cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG5cdG51bVByKHgpe1xuXHRcdHJldHVybiB4LmNoaWxkcmVuLnJlZHVjZSgocCxhKT0+e1xuXHRcdFx0cFthLm5hbWUuc3BsaXQoXCI6XCIpLnBvcCgpXT1hLmF0dHJpYnNbXCJ3OnZhbFwiXVxuXHRcdFx0cmV0dXJuIHBcblx0XHR9LHt9KVxuXHR9XG5cblx0b3V0bGluZUx2bCh4KXtcblx0XHRyZXR1cm4gcGFyc2VJbnQoeC5hdHRyaWJzWyd3OnZhbCddKVxuXHR9XG5cblx0YXNUb2dnbGUoeCl7XG5cdFx0aWYoeD09dW5kZWZpbmVkIHx8IHguYXR0cmlic1sndzp2YWwnXT09dW5kZWZpbmVkKXtcblx0XHRcdHJldHVybiAhIS0xXG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gISFwYXJzZUludCh0aGlzLl92YWwoeCkpXG5cdFx0fVxuXHR9XG5cblx0dG9EaXN0KHgscHJlPVwiZGlzdFwiKXtcblx0XHRjb25zdCBkaXN0PVwiUmlnaHQsTGVmdCxCb3R0b20sVG9wXCIuc3BsaXQoXCIsXCIpLnJlZHVjZSgoZGlzdCxhKT0+e1xuXHRcdFx0aWYoeC5hdHRyaWJzW2Ake3ByZX0ke2FbMF19YF0pe1xuXHQgICAgICAgICAgICBkaXN0W2EudG9Mb3dlckNhc2UoKV09dGhpcy5lbXUyUHgoeC5hdHRyaWJzW2Ake3ByZX0ke2FbMF19YF0pXG5cdFx0XHR9XG4gICAgICAgICAgICByZXR1cm4gZGlzdFxuICAgICAgICB9LHt9KVxuXG5cdFx0aWYoT2JqZWN0LmtleXMoZGlzdCkubGVuZ3RoPjApXG5cdFx0XHRyZXR1cm4gZGlzdFxuXHR9XG5cblxuXHR0b1NwYWNpbmcoeCl7XG5cdFx0bGV0IHByb3BzPXt9LCBsaW5lLCB0XG5cblx0XHRpZigheC5hdHRyaWJzWyd3OmJlZm9yZUF1dG9zcGFjaW5nJ10gJiYgKHQ9eC5hdHRyaWJzWyd3OmJlZm9yZUxpbmVzJ10pKVxuXHRcdFx0cHJvcHMudG9wPXRoaXMuZHhhMlB4KHQpXG5cdFx0ZWxzZSBpZih0PXguYXR0cmlic1sndzpiZWZvcmUnXSlcblx0XHRcdHByb3BzLnRvcD10aGlzLmR4YTJQeCh0KVxuXG5cdFx0aWYoIXguYXR0cmlic1sndzphZnRlckF1dG9zcGFjaW5nJ10gJiYgKHQ9eC5hdHRyaWJzWyd3OmFmdGVyTGluZXMnXSkpXG5cdFx0XHRwcm9wcy5ib3R0b209dGhpcy5keGEyUHgodClcblx0XHRlbHNlIGlmKHQ9eC5hdHRyaWJzWyd3OmFmdGVyJ10pXG5cdFx0XHRwcm9wcy5ib3R0b209dGhpcy5keGEyUHgodClcblxuXHRcdGlmKCEobGluZT14LmF0dHJpYnNbJ3c6bGluZSddKSlcblx0XHRcdHJldHVybiBwcm9wc1xuXG5cdFx0c3dpdGNoKHByb3BzLmxpbmVSdWxlPXguYXR0cmlic1sndzpsaW5lUnVsZSddKXtcblx0XHRjYXNlICdhdExlYXN0Jzpcblx0XHRjYXNlICdleGFjdCc6XG5cdFx0XHRwcm9wcy5saW5lSGVpZ2h0PXRoaXMuZHhhMlB4KGxpbmUpXG5cdFx0XHRicmVha1xuXHRcdGNhc2UgJ2F1dG8nOlxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRwcm9wcy5saW5lSGVpZ2h0PShwYXJzZUludChsaW5lKSoxMDAvMjQwKSsnJSdcblx0XHR9XG5cblx0XHRyZXR1cm4gcHJvcHNcblx0fVxuXG5cdHRvQm9yZGVyKHgpe1xuXHRcdGxldCBib3JkZXI9e30sIHRcblx0XHRib3JkZXIudmFsPXguYXR0cmlic1sndzp2YWwnXVxuXHRcdGlmKGJvcmRlci52YWw9PVwibmlsXCIpe1xuXHRcdFx0Ym9yZGVyLnN6PTBcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdGlmKHQ9eC5hdHRyaWJzWyd3OnN6J10pXG5cdFx0XHRib3JkZXIuc3o9dGhpcy5wdDJQeCh0LzgpXG5cblx0XHRpZih0PXguYXR0cmlic1sndzpjb2xvciddKVxuXHRcdFx0Ym9yZGVyLmNvbG9yPXRoaXMuZG9jeC5hc0NvbG9yKHQpXG5cdFx0ZWxzZSBpZih0PXguYXR0cmlic1sndzp0aGVtZUNvbG9yJ10pXG5cdFx0XHRib3JkZXIuY29sb3I9dGhpcy50aGVtZS5jb2xvcih0KVxuXG5cblx0XHRpZih0PXguYXR0cmlic1sndzpzcGFjZSddKVxuXHRcdFx0Ym9yZGVyLnNwYWNlPXBhcnNlSW50KHQpXG5cblxuXHRcdHJldHVybiBib3JkZXJcblx0fVxuXG5cdHRvQ29sb3IoeCl7XG5cdFx0cmV0dXJuIHRoaXMuZG9jeC5hc0NvbG9yKHguYXR0cmlic1sndzp2YWwnXXx8eC5hdHRyaWJzWyd3OmNvbG9yJ118fCB0aGlzLnRoZW1lLmNvbG9yKHguYXR0cmlic1sndzp0aGVtZUNvbG9yJ10pKVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb3BlcnRpZXNcbiIsImltcG9ydCBEZWZhdWx0IGZyb20gXCIuL2RlZmF1bHRcIlxuaW1wb3J0IENoYXJhY3RlciBmcm9tIFwiLi9jaGFyYWN0ZXJcIlxuaW1wb3J0IFBhcmFncmFwaCBmcm9tIFwiLi9wYXJhZ3JhcGhcIlxuaW1wb3J0IE51bWJlcmluZyBmcm9tIFwiLi9udW1iZXJpbmdcIlxuaW1wb3J0IFRhYmxlIGZyb20gXCIuL3RhYmxlXCJcbmltcG9ydCBOdW0gZnJvbSBcIi4vbnVtYmVyaW5nL251bVwiXG5pbXBvcnQgQWJzdHJhY3ROdW0gZnJvbSBcIi4vbnVtYmVyaW5nL2Fic3RyYWN0TnVtXCJcbmltcG9ydCBTaGFwZSBmcm9tIFwiLi9zaGFwZVwiXG5pbXBvcnQgQW5jaG9yIGZyb20gXCIuL2FuY2hvclwiXG5cbmltcG9ydCBQcm9wZXJ0aWVzIGZyb20gXCIuL3Byb3BlcnRpZXNcIlxuXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0RGVmYXVsdCwgQ2hhcmFjdGVyLCBQYXJhZ3JhcGgsIE51bSwgTnVtYmVyaW5nLCBUYWJsZSwgQWJzdHJhY3ROdW0sIFByb3BlcnRpZXMsIFNoYXBlLEFuY2hvclxufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGhlbWUoZG9jeCwgcHJvcHMpe1xuXHRPYmplY3QuYXNzaWduKGRvY3gub2ZmaWNlRG9jdW1lbnQudGhlbWUucHJvdG90eXBlLHtcblx0XHRmb250KG5hbWUpe1xuXHRcdFx0bGV0IFtmaXJzdCwuLi5zZWNvbmRdPW5hbWUuc3BsaXQoLyg/PVtBLVpdKS9nKVxuXHRcdFx0c2Vjb25kPXtIQW5zaTonbGF0aW4nLEFzY2lpOidsYXRpbicsQmlkaTonY3MnLEVhc3RBc2lhOidlYSd9W3NlY29uZC5qb2luKFwiXCIpXVxuXHRcdFx0bGV0IGZvbnQ9dGhpcy5maW5kKGBhXFxcXDpmb250U2NoZW1lPmFcXFxcOiR7Zmlyc3R9Rm9udD5hXFxcXDoke3NlY29uZH1gKS5hdHRyKFwidHlwZWZhY2VcIilcblx0XHRcdGlmKCFmb250ICYmIChzZWNvbmQ9PSdjcycgfHwgc2Vjb25kPT0nZWEnKSl7XG5cdFx0XHRcdGxldCBsYW5nPWRvY3gub2ZmaWNlRG9jdW1lbnQuc2V0dGluZ3MoXCJ3XFxcXDp0aGVtZUZvbnRMYW5nXCIpLmF0dHIoYHc6JHt7Y3M6J2JpZGknLGVhOidlYXN0QXNpYSd9W3NlY29uZF19YClcblx0XHRcdFx0aWYobGFuZylcblx0XHRcdFx0XHRmb250PXRoaXMuZmluZChgYVxcXFw6Zm9udFNjaGVtZT5hXFxcXDoke2ZpcnN0fUZvbnQ+YVxcXFw6Zm9udFtzY3JpcHQ9JHt7J3poLUNOJzonSGFucyd9W2xhbmddfV1gKS5hdHRyKFwidHlwZWZhY2VcIilcblx0XHRcdH1cblx0XHRcdHJldHVybiBmb250XG5cdFx0fSxcblx0XHRcblx0XHRjb2xvcihuYW1lKXtcblx0XHRcdGlmKG5hbWU9PSdwaENscicpXG5cdFx0XHRcdHJldHVybiBuYW1lXG5cdFx0XHRsZXQga2V5PWRvY3gub2ZmaWNlRG9jdW1lbnQuc2V0dGluZ3MoXCJ3XFxcXDpjbHJTY2hlbWVNYXBwaW5nXCIpLmF0dHIoYHc6JHtuYW1lfWApfHxuYW1lXG5cdFx0XHRsZXQgZm91bmQ9dGhpcy5maW5kKGBhXFxcXDpjbHJTY2hlbWU+YVxcXFw6JHtrZXl9YClcblx0XHRcdFxuXHRcdFx0bGV0IGNvbG9yPWZvdW5kLmZpbmQoXCJhXFxcXDpzcmdiQ2xyXCIpLmF0dHIoXCJ2YWxcIikgfHwgZm91bmQuZmluZChcImFcXFxcOnN5c0NsclwiKS5hdHRyKFwibGFzdENsclwiKSB8fCBcIjAwMDAwMFwiXG5cdFx0XHRyZXR1cm4gYCMke2NvbG9yfWBcblx0XHR9LFxuXHRcdFxuXHRcdGZvcm1hdCh0eXBlLGlkeCl7XG5cdFx0XHRsZXQga2luZD17bGluZTonbG4nLGZpbGw6J2ZpbGxTdHlsZUxzdCcsYmdGaWxsOidiZ0ZpbGxTdHlsZUxzdCcsZWZmZWN0OidlZmZlY3RTdHlsZScsZm9udDonZm9udFNjaGVtZSd9W3R5cGVdXG5cdFx0XHRyZXR1cm4gdGhpcy5maW5kKGBhXFxcXDpmbXRTY2hlbWUgYVxcXFw6JHtraW5kfTpudGgtY2hpbGQoJHtwYXJzZUludChpZHgpKzF9KWApXG5cdFx0fVxuXHR9KVxuXHRcblx0cmV0dXJuIGRvY3gub2ZmaWNlRG9jdW1lbnQudGhlbWUucm9vdCgpXG59IiwiZXhwb3J0IGRlZmF1bHQgY2xhc3Mge1xuXHRjb25zdHJ1Y3Rvcihub2RlLCBzdHlsZXMsIHNlbGVjdG9yKXtcblx0XHR0aGlzLnN0eWxlcz1zdHlsZXNcblx0XHRjb25zdCBwcj1ub2RlLmNoaWxkcmVuLmZpbmQoYT0+YS5uYW1lLmVuZHNXaXRoKFwiOnNwUHJcIikpXG5cblx0XHRpZihwcil7XG5cdFx0XHR0aGlzLnByb3BzPXNlbGVjdG9yLnNlbGVjdChwci5jaGlsZHJlbix7XG5cdFx0XHRcdHhmcm06IFwidHJhbnNmb3JtXCIsXG5cdFx0XHRcdGN1c3RHZW9tOlwicGF0aFwiLFxuXHRcdFx0XHRwcnN0R2VvbTpcInNoYXBlXCIsXG5cdFx0XHRcdGxuOlwib3V0bGluZVwiLFxuXHRcdFx0XHRzb2xpZEZpbGw6XCJmaWxsXCIsXG5cdFx0XHRcdGJsaXBGaWxsOlwiaW1hZ2VcIlxuXHRcdFx0fSlcblx0XHR9ZWxzZXtcblx0XHRcdHRoaXMucHJvcHM9e31cblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcblxuZXhwb3J0IGRlZmF1bHQgKHtTaGFwZX0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuICAgIHN0YXRpYyBkaXNwbGF5TmFtZT1cInNoYXBlXCJcbiAgICBzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB9XG5cbiAgICBzdGF0aWMgY2hpbGRDb250ZXh0VHlwZXM9e1xuICAgICAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB9XG5cbiAgICBjaGlsZFN0eWxlPW1lbW9pemUoKGRpcmVjdCxjb250ZXh0KT0+e1xuXHRcdHJldHVybiBkaXJlY3QgPyBkaXJlY3QuaW5oZXJpdChjb250ZXh0KSA6IGNvbnRleHRcblx0fSlcblxuICAgIGdldENoaWxkQ29udGV4dCgpe1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3R5bGU6dGhpcy5wcm9wcy50ZXh0U3R5bGU/dGhpcy5wcm9wcy50ZXh0U3R5bGUuaW5oZXJpdCh0aGlzLmNvbnRleHQuc3R5bGUpOnRoaXMuY29udGV4dC5zdHlsZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIHJldHVybiAoPFNoYXBlIHsuLi50aGlzLnByb3BzfS8+KVxuICAgIH1cblxuICAgIHN0YXRpYyBhc1N0eWxlKHByb3BzKXtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFNoYXBlU3R5bGUocHJvcHMpLmZsYXQoKSx7X3Jhdzpwcm9wc30pXG4gICAgfVxufVxuXG5cblxuY2xhc3MgU3R5bGV7XG4gICAgY29uc3RydWN0b3Ioc3R5bGUsa2V5cywuLi5kaXJlY3RzKXtcbiAgICAgICAgY29uc3QgZHJGbj1rPT5rXG4gICAgICAgIHRoaXMuZmxhdD0oKT0+T2JqZWN0LmtleXMoc3R5bGUpXG4gICAgICAgICAgICAucmVkdWNlKChwcm9wcywgayk9PntcbiAgICAgICAgICAgICAgICBjb25zdCBmbj10aGlzW2tdfHwoZGlyZWN0cy5pbmNsdWRlcyhrKSYmZHJGbilcbiAgICAgICAgICAgICAgICBpZihmbil7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2PWZuLmJpbmQodGhpcykoc3R5bGVba10scHJvcHMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICBpZih2IT11bmRlZmluZWQgJiYgdiE9cHJvcHMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZT1rZXlzW2tdfHxrXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1tuYW1lXT12XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgIH0se30pXG4gICAgfVxuXG4gICAgZ290KHByb3BzLGtleSl7XG4gICAgICAgIHJldHVybiBwcm9wc1trZXldfHwocHJvcHNba2V5XT17fSlcbiAgICB9XG59XG5cbmNsYXNzIFNoYXBlU3R5bGUgZXh0ZW5kcyBTdHlsZXtcbiAgICBjb25zdHJ1Y3RvcihzdHlsZSl7XG4gICAgICAgIHN1cGVyKHN0eWxlLHtcbiAgICAgICAgICAgIGFuY2hvcjpcInZlcnRBbGlnblwiLFxuICAgICAgICAgICAgbG46XCJvdXRsaW5lXCIsXG4gICAgICAgICAgICBib2R5UHI6XCJ0ZXh0U3R5bGVcIixcbiAgICAgICAgfSxcImdlb21ldHJ5XCIsXCJzb2xpZEZpbGxcIixcInJvdGF0ZVwiLCBcInRleHRTdHlsZVwiKVxuICAgICAgICBjb25zdCBfZmxhdD10aGlzLmZsYXQuYmluZCh0aGlzKVxuICAgICAgICB0aGlzLmZsYXQ9KCk9PntcbiAgICAgICAgICAgIGNvbnN0IHByb3BzPV9mbGF0KClcbiAgICAgICAgICAgIGlmKHByb3BzLm91dGxpbmUgJiYgcHJvcHMub3V0bGluZS5ub0ZpbGwpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHt3aWR0aD0wLGhhbGY9d2lkdGgvMn09cHJvcHMub3V0bGluZVxuICAgICAgICAgICAgICAgIGNvbnN0IHtsZWZ0PTAscmlnaHQ9MCxib3R0b209MCx0b3A9MH09dGhpcy5nb3QocHJvcHMsXCJtYXJnaW5cIilcbiAgICAgICAgICAgICAgICBwcm9wcy5tYXJnaW49e2xlZnQ6bGVmdCtoYWxmLHJpZ2h0OnJpZ2h0K2hhbGYsYm90dG9tOmJvdHRvbStoYWxmLHRvcDp0b3AraGFsZn1cbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHMub3V0bGluZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbmNob3Iodil7XG4gICAgICAgIHJldHVybiB7YjpcImJvdHRvbVwiLGN0cjpcIm1pZGRsZVwiLHQ6XCJ0b3BcIiwgZGlzdDpcImRpc3RyaWJ1dGVkXCIsanVzdDpcImp1c3RpZmllZFwifVt2XVxuICAgIH1cblxuICAgIHhmcm09KGEsIHByb3BzKT0+T2JqZWN0LmFzc2lnbihwcm9wcywgYSlcblxuICAgIGJsaXBGaWxsPSh7YmxpcCwgLi4ucHJvcHN9KT0+KHsuLi5ibGlwLCAuLi5wcm9wc30pXG5cbiAgICBsbih7dzp3aWR0aCwuLi5wcm9wc30pe1xuICAgICAgICByZXR1cm4ge3dpZHRoLC4uLnByb3BzfVxuICAgIH1cblxuICAgIGJvZHlQcihzdHlsZSwgcHJvcHMpe1xuXHRcdGNvbnN0IHttYXJnaW4sfT1uZXcgVGV4dEJveFN0eWxlKHN0eWxlKS5mbGF0KClcbiAgICAgICAgcHJvcHMubWFyZ2luPW1hcmdpblxuICAgIH1cblxuXHR0ZXh0U3R5bGUoc3R5bGUscHJvcHMpe1xuXHRcdE9iamVjdC5hc3NpZ24odGhpcy5nb3QocHJvcHMsXCJ0ZXh0U3R5bGVcIiksc3R5bGUpXG5cdH1cblxuXG59XG5cbmNsYXNzIFRleHRCb3hTdHlsZSBleHRlbmRzIFN0eWxle1xuICAgIGNvbnN0cnVjdG9yKHN0eWxlKXtcbiAgICAgICAgc3VwZXIoc3R5bGUse30pXG4gICAgICAgIGNvbnN0IG1hcmdpbj1rPT4oKHYscHJvcHMpPT57dGhpcy5nb3QocHJvcHMsXCJtYXJnaW5cIilba109dn0pXG4gICAgICAgIHRoaXMucklucz1tYXJnaW4oXCJyaWdodFwiKVxuICAgICAgICB0aGlzLnRJbnM9bWFyZ2luKFwidG9wXCIpXG4gICAgICAgIHRoaXMubElucz1tYXJnaW4oXCJsZWZ0XCIpXG4gICAgICAgIHRoaXMuYklucz1tYXJnaW4oXCJib3R0b21cIilcbiAgICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBTaGFwZSBmcm9tIFwiLi9zaGFwZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGRvbT0+e1xuICAgIGNvbnN0IFN1cGVyPVNoYXBlKGRvbSlcbiAgICByZXR1cm4gY2xhc3MgX18kMSBleHRlbmRzIFN1cGVye1xuICAgICAgICBzdGF0aWMgZGlzcGxheU5hbWU9XCJpbWFnZVwiXG5cbiAgICAgICAgc3RhdGljIGFzU3R5bGUoKXtcbiAgICAgICAgICAgIGNvbnN0IHtibGlwRmlsbDp7dXJsfT17fSwgd2lkdGgsaGVpZ2h0LGlkLGhhc2gsY2hhbmdlZCxjaGlsZHJlbiwuLi5vdXRsaW5lfT1TdXBlci5hc1N0eWxlKC4uLmFyZ3VtZW50cylcbiAgICAgICAgICAgIHJldHVybiB7c3JjOnVybCx3aWR0aCxoZWlnaHQsIG91dGxpbmU6ey4uLm91dGxpbmUsIHdpZHRoLGhlaWdodH19XG4gICAgICAgIH1cblxuICAgICAgICByZW5kZXIoKXtcbiAgICAgICAgICAgIHJldHVybiAoPGRvbS5JbWFnZSB7Li4udGhpcy5wcm9wc30vPilcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCBSZWFjdCx7Q29tcG9uZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5cbmV4cG9ydCBkZWZhdWx0ICh7RnJhbWV9LGRpc3BsYXlOYW1lPVwiaGVhZGVyRm9vdGVyXCIpPT5jbGFzcyBIZWFkZXJGb290ZXIgZXh0ZW5kcyBDb21wb25lbnR7XG4gICAgc3RhdGljIGRpc3BsYXlOYW1lPWRpc3BsYXlOYW1lXG4gICAgXG4gICAgc3RhdGljIGNvbnRleHRUeXBlcz17XG4gICAgICAgIGhlYWRlckZvb3RlcldpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG4gICAgfVxuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIHJldHVybiA8RnJhbWUgey4uLnRoaXMucHJvcHN9IHdpZHRoPXt0aGlzLmNvbnRleHQuaGVhZGVyRm9vdGVyV2lkdGh9Lz5cbiAgICB9XG59IiwiaW1wb3J0IHtQdXJlQ29tcG9uZW50IGFzIENvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEb2N1bWVudCBmcm9tIFwiLi9kb2N1bWVudFwiXG5pbXBvcnQgU2VjdGlvbiBmcm9tIFwiLi9zZWN0aW9uXCJcblxuaW1wb3J0IFBhcmFncmFwaCBmcm9tIFwiLi9wYXJhZ3JhcGhcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4vdGV4dFwiXG5pbXBvcnQgUnVuIGZyb20gXCIuL3J1blwiXG5cbmltcG9ydCBUYWJsZSBmcm9tIFwiLi90YWJsZVwiXG5pbXBvcnQgUm93IGZyb20gXCIuL3Jvd1wiXG5pbXBvcnQgQ2VsbCBmcm9tIFwiLi9jZWxsXCJcbmltcG9ydCBJbWFnZSBmcm9tIFwiLi9pbWFnZVwiXG5pbXBvcnQgU2hhcGUgZnJvbSBcIi4vc2hhcGVcIlxuaW1wb3J0IEFuY2hvciBmcm9tIFwiLi9hbmNob3JcIlxuaW1wb3J0IEhlYWRlckZvb3RlciBmcm9tIFwiLi9oZWFkZXItZm9vdGVyXCJcblxuY29uc3QgY3JlYXRlVW52aXNpYmxlQ29tcG9uZW50PXR5cGU9Pntcblx0cmV0dXJuIGNsYXNzIF9fJDEgZXh0ZW5kcyBDb21wb25lbnR7XG5cdFx0c3RhdGljIGRpc3BsYXlOYW1lPWAke3R5cGV9YFxuXHRcdHJlbmRlcigpe1xuXHRcdFx0cmV0dXJuIG51bGxcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuXHREb2N1bWVudCxcblx0U2VjdGlvbixcblx0UGFyYWdyYXBoLFxuXHRUZXh0LFxuXHRSdW4sXG5cdENlbGwsXG5cdFJvdyxcblx0VGFibGUsXG5cdEltYWdlLFxuXHRTaGFwZSxcblx0QW5jaG9yLFxuXHRIZWFkZXI6KC4uLmFyZ3MpPT5IZWFkZXJGb290ZXIoLi4uYXJncywgXCJoZWFkZXJcIiksXG5cdEZvb3RlcjooLi4uYXJncyk9PkhlYWRlckZvb3RlciguLi5hcmdzLCBcImZvb3RlclwiKSxcblx0U3R5bGVzOigpPT5jcmVhdGVVbnZpc2libGVDb21wb25lbnQoXCJzdHlsZXNcIiksXG5cdFN0eWxlOigpPT5jcmVhdGVVbnZpc2libGVDb21wb25lbnQoXCJzdHlsZVwiKSxcbn1cbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCxDaGlsZHJlbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcbmltcG9ydCB7Q29udGVudFF1ZXJ5fSBmcm9tIFwid2UtZWRpdFwiXG5cbmV4cG9ydCBkZWZhdWx0ICh7RG9jdW1lbnR9KT0+Y2xhc3MgX18kMSBleHRlbmRzIENvbXBvbmVudHtcblx0c3RhdGljIGRpc3BsYXlOYW1lPVwiZG9jdW1lbnRcIlxuXG5cdHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcz17XG5cdFx0c3R5bGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRcdGV2ZW5BbmRPZGRIZWFkZXJzOiBQcm9wVHlwZXMuYm9vbCxcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblx0XHRudW1iZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuXHR9XG5cblx0Z2V0IHN0eWxlcygpe1xuXHRcdHJldHVybiB0aGlzLnByb3BzLnN0eWxlc1xuXHR9XG5cblx0Z2V0Q2hpbGRDb250ZXh0KCl7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHN0eWxlczp0aGlzLnN0eWxlcyxcblx0XHRcdGV2ZW5BbmRPZGRIZWFkZXJzOiAhIXRoaXMucHJvcHMuZXZlbkFuZE9kZEhlYWRlcnMsXG5cdFx0XHRzdHlsZTogdGhpcy5zdHlsZXNbJyonXSxcblx0XHRcdG51bWJlcmluZzogaWQ9PnRoaXMubnVtYmVyaW5nQ29udGV4dCh0aGlzLnByb3BzLmNvbnRlbnQpLm51bWJlcmluZyhpZClcblx0XHR9XG5cdH1cblxuXHRyZXNldE51bWJlcmluZygpe1xuXHRcdGNvbnN0IHN0eWxlcz10aGlzLnN0eWxlc1xuXHRcdC8vcmVzZXQgZm9yIG51bWJlcmluZ1xuXHRcdE9iamVjdC5rZXlzKHN0eWxlcylcblx0XHRcdC5mb3JFYWNoKChrLHQpPT4odD1zdHlsZXNba10pJiYgdC5yZXNldCAmJiB0LnJlc2V0KCkpXG5cdH1cblxuXHRudW1iZXJpbmdDb250ZXh0PW1lbW9pemUoY29udGVudD0+e1xuXHRcdHZhciBsaXN0PW51bGxcblx0XHRjb25zdCBzdHlsZXM9dGhpcy5zdHlsZXNcblx0XHRyZXR1cm4ge1xuXHRcdFx0bnVtYmVyaW5nKGlkKXtcblx0XHRcdFx0aWYoIWxpc3Qpe1xuXHRcdFx0XHRcdGxpc3Q9e31cblx0XHRcdFx0XHRDb250ZW50UXVlcnlcblx0XHRcdFx0XHRcdC5mcm9tQ29udGVudChjb250ZW50KVxuXHRcdFx0XHRcdFx0LmZpbmRGaXJzdChhPT57XG5cdFx0XHRcdFx0XHRcdGlmKGEuZ2V0KCd0eXBlJyk9PVwicGFyYWdyYXBoXCIpe1xuXHRcdFx0XHRcdFx0XHRcdGlmKGEuaGFzSW4oW1wicHJvcHNcIixcIm51bUlkXCJdKSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBudW1JZD1hLmdldEluKFtcInByb3BzXCIsXCJudW1JZFwiXSlcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGxldmVsPWEuZ2V0SW4oW1wicHJvcHNcIixcImxldmVsXCJdKVxuXHRcdFx0XHRcdFx0XHRcdFx0OyhsaXN0W251bUlkXT1saXN0W251bUlkXXx8W10pLnB1c2goW2EuZ2V0KFwiaWRcIiksbGV2ZWxdKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCB7bnVtSWQsbGV2ZWx9PWNvbnRlbnQuZ2V0SW4oW2lkLFwicHJvcHNcIl0pLnRvSlMoKVxuXHRcdFx0XHRjb25zdCBpPWxpc3RbbnVtSWRdLmZpbmRJbmRleChhPT5hWzBdPT1pZClcblxuXHRcdFx0XHRjb25zdCBsZXZlbENvdW50PWxpc3RbbnVtSWRdLnNsaWNlKDAsaSsxKS5yZWR1Y2UoKGRiLFtpZCxsZXZlbF0pPT57XG5cdFx0XHRcdFx0ZGIuc2V0KGxldmVsLChkYi5nZXQobGV2ZWwpfHwwKSsxKVxuXHRcdFx0XHRcdHJldHVybiBkYlxuXHRcdFx0XHR9LG5ldyBNYXAoKSlcblxuXHRcdFx0XHRyZXR1cm4gc3R5bGVzW2BfbnVtXyR7bnVtSWR9YF0ubGV2ZWwobGV2ZWwpLmxhYmVsKGxldmVsQ291bnQpXG5cdFx0XHR9XG5cdFx0fVxuXHR9LChhLGIpPT5hLmVxdWFscyhiKSlcblxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCBXb3JkRG9jdW1lbnQ9dGhpcy5jb25zdHJ1Y3Rvci5Eb2N1bWVudChEb2N1bWVudClcblx0XHRjb25zdCB7ZXZlbkFuZE9kZEhlYWRlcnMsLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHR0aGlzLnJlc2V0TnVtYmVyaW5nKClcblx0XHRyZXR1cm4gPFdvcmREb2N1bWVudCB7Li4ucHJvcHN9Lz5cblx0fVxuXG5cdHN0YXRpYyBEb2N1bWVudD1tZW1vaXplKERvY3VtZW50PT5jbGFzcyBXb3JkRG9jdW1lbnQgZXh0ZW5kcyBEb2N1bWVudHtcblx0XHRhcHBlbmRDb21wb3NlZChwYWdlKXtcblx0XHRcdGlmKHBhZ2UuY29tcHV0ZWQuaXNDb250aW51b3VzTGF5b3V0KXtcblx0XHRcdFx0Y29uc3QgcGFnZXM9dGhpcy5jb21wdXRlZC5jb21wb3NlZFxuXHRcdFx0XHRjb25zdCBsYXN0PXBhZ2VzW3BhZ2VzLmxlbmd0aC0xXVxuXHRcdFx0XHRpZihsYXN0ICYmIGxhc3QuY29udGludW91cyl7XG5cdFx0XHRcdFx0bGFzdC5hcHBlbmRDb250aW51b3VzTGF5b3V0KHBhZ2UpXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFxuXHRcdFx0fVxuXHRcdFx0c3VwZXIuYXBwZW5kQ29tcG9zZWQocGFnZSlcblx0XHR9XG5cdH0pXG59XG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsQ2hpbGRyZW59IGZyb20gXCJyZWFjdFwiXG5cbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcbmltcG9ydCB7c2hhbGxvd0VxdWFsfSBmcm9tIFwicmVjb21wb3NlXCJcblxuLyoqXG4gKiBXb3JkIENvbnRpbnVvdXMgc2VjdGlvbiBpcyBzcGVjaWFsIGFzIGJhbGFuY2VhYmxlIHNlY3Rpb24sIFxuICogYW5kIGlzIGFibGUgdG8gYmUgYXBwZW5kZWQgdG8gbGFzdCBjb250aW51b3VzIHNlY3Rpb24sIHdoaWNoIGJyZWFrcyB0aGUgbGF3IG9mOlxuICogZWFjaCBwYWdlIGZyYW1lIG9ubHkgaW5jbHVkZXMgY29udGVudCBmcm9tIHNpbmdsZSBzZWN0aW9uXG4gKiBcbiAqIHRoZXJlIGFyZSB0d28gd2F5cyB0byByZXNvbHZlOlxuICogMS4gUGFnZVtjb250aW51b3VzIHNlY3Rpb24gZnJhbWUsIC4uLl0sIHdoaWNoIGlzIGEgZnJhbWUgbWFuYWdlciwgZWFjaCBmcmFtZSBpcyBhIG11bHRpcGxlIGNvbHNcbiAqICoqIGVhY2ggc2VjdGlvbiBob2xkIGl0cyBvd24gZnJhbWUgYXMgc2VjdGlvbiBsYXlvdXRcbiAqICoqKiogY2FjaGUgd29ya3MgZ29vZCBvbiBzZWN0aW9uIGxldmVsLCBidXQgXG4gKiAqKiBpbm5lciBmcmFtZSBiYWxhbmNlIGl0c2VsZlxuICogKiogZG9jdW1lbnQgbXVzdCBiZSBjdXN0b21pemVkIHRvIGFjY2VwdCBzZWN0aW9uIGxheW91dFxuICogXG4gKiAyLiBwYWdlW2NvbnRpbnVvdXMgc2VjdGlvbiBjb2xzLCAuLi5dLCB3aGljaCBpcyBhIG11bHRpcGxlIGNvbHMgZnJhbWVcbiAqICoqIFxuICogXG4gKi9cbmV4cG9ydCBkZWZhdWx0ICh7U2VjdGlvbixHcm91cH0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgZGlzcGxheU5hbWU9XCJzZWN0aW9uXCJcblx0c3RhdGljIHByb3BUeXBlcz17XG5cdFx0Y29sczogUHJvcFR5cGVzLnNoYXBlKHtcblx0XHRcdG51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuXHRcdFx0c3BhY2U6IFByb3BUeXBlcy5udW1iZXIsXG5cdFx0XHRkYXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUoe1xuXHRcdFx0XHR3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcblx0XHRcdFx0c3BhY2U6IFByb3BUeXBlcy5udW1iZXJcblx0XHRcdH0pKVxuXHRcdH0pLFxuXHRcdHRpdGxlUGc6UHJvcFR5cGVzLmJvb2xcblx0fVxuXG5cdHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuXHRcdGNvbHM6e1xuXHRcdFx0bnVtOjFcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRldmVuQW5kT2RkSGVhZGVyczogUHJvcFR5cGVzLmJvb2xcblx0fVxuXG5cdHN0YXRpYyBjaGlsZENvbnRleHRUeXBlcz17XG5cdFx0aGVhZGVyRm9vdGVyV2lkdGg6IFByb3BUeXBlcy5udW1iZXJcblx0fVxuXG5cdGdldENoaWxkQ29udGV4dCgpe1xuXHRcdGNvbnN0IHtwZ1N6Ont3aWR0aH0sICBwZ01hcjp7bGVmdD0wLHJpZ2h0PTB9PXt9fT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIHtcblx0XHRcdGhlYWRlckZvb3RlcldpZHRoOndpZHRoLWxlZnQtcmlnaHRcblx0XHR9XG5cdH1cblxuXHRnZXRDb2xzPW1lbW9pemUoKHdpZHRoLHtsZWZ0PTAscmlnaHQ9MH0se251bT0xLCBzcGFjZT0wLCBkYXRhfSk9Pntcblx0XHRjb25zdCBhdmFpbGFibGVXaWR0aD13aWR0aC1sZWZ0LXJpZ2h0XG5cdFx0cmV0dXJuIChkYXRhID8gZGF0YSA6IG5ldyBBcnJheShudW0pXG5cdFx0XHQuZmlsbCh7d2lkdGg6KGF2YWlsYWJsZVdpZHRoLShudW0tMSkqc3BhY2UpL251bSxzcGFjZX0pKVxuXHRcdFx0LnJlZHVjZSgoc3RhdGUse3dpZHRoLHNwYWNlfSk9Pntcblx0XHRcdFx0c3RhdGUuY29scy5wdXNoKHt4OnN0YXRlLngsIHdpZHRofSlcblx0XHRcdFx0c3RhdGUueCs9KHNwYWNlK3dpZHRoKVxuXHRcdFx0XHRyZXR1cm4gc3RhdGVcblx0XHRcdH0se3g6bGVmdCxjb2xzOltdfSkuY29sc1xuXHR9LCBzaGFsbG93RXF1YWwpXG5cblx0Z2V0SGVhZGVyRm9vdGVyKHtJLGl9LGNvbnRleHQpe1xuXHRcdGNvbnN0IHtjb250ZXh0OntldmVuQW5kT2RkSGVhZGVyc30scHJvcHM6e3RpdGxlUGc9dHJ1ZSxpZH19PXRoaXNcblx0XHRjb25zdCBpbmhlcml0SGVhZGVyRm9vdGVyPXR5cGU9Pntcblx0XHRcdGNvbnN0IGRvY3VtZW50PWNvbnRleHQuZ2V0Q29tcG9zZXIoXCJyb290XCIpXG5cdFx0XHRjb25zdCBzZWN0aW9ucz1DaGlsZHJlbi50b0FycmF5KGRvY3VtZW50LnByb3BzLmNoaWxkcmVuKVxuXHRcdFx0XHQuZmlsdGVyKGE9PmEudHlwZS5kaXNwbGF5TmFtZT09XCJzZWN0aW9uXCIpXG5cdFx0XHRcdC5tYXAoYT0+YS5wcm9wcy5pZClcblx0XHRcdHJldHVybiBzZWN0aW9ucy5zbGljZSgwLHNlY3Rpb25zLmluZGV4T2YoaWQpKzEpXG5cdFx0XHRcdC5yZWR1Y2VSaWdodCgoZm91bmQsaWQpPT5mb3VuZHx8Y29udGV4dC5nZXRDb21wb3NlcihpZCkubmFtZWQodHlwZSksbnVsbClcblx0XHR9XG5cdFx0Y29uc3QgZ2V0PXR5cGU9Plt0aXRsZVBnJiYoST09MCA/IFwiZmlyc3RcIiA6ZmFsc2UpLGV2ZW5BbmRPZGRIZWFkZXJzJiYoaSUyPT0wID8gXCJldmVuXCIgOiBcIm9kZFwiKSwnZGVmYXVsdCddXG5cdFx0XHQuZmlsdGVyKGE9PiEhYSlcblx0XHRcdC5yZWR1Y2VSaWdodCgoZm91bmQsYSk9PmZvdW5kIHx8IGluaGVyaXRIZWFkZXJGb290ZXIoYCR7dHlwZX0uJHthfWApLG51bGwpXG5cblx0XHRyZXR1cm4ge2hlYWRlcjogZ2V0KFwiaGVhZGVyXCIpLCBmb290ZXI6Z2V0KFwiZm9vdGVyXCIpfVxuXHR9XG5cblx0Z2V0Q3JlYXRlPW1lbW9pemUoKHdpZHRoLGhlaWdodCxtYXJnaW4sY29scyx0eXBlKT0+e1xuXHRcdHJldHVybiAocHJvcHMsY29udGV4dCk9Pntcblx0XHRcdGNvbnN0IFdvcmRTZWN0aW9uPXRoaXMuY29uc3RydWN0b3IuU2VjdGlvbihTZWN0aW9uKVxuXHRcdFx0Y29uc3QgUGFnZT1Xb3JkU2VjdGlvbi5MYXlvdXRcblx0XHRcdGNvbnN0IGNvbnRpbnVvdXM9dHlwZT09XCJjb250aW51b3VzXCJcblx0XHRcdGlmKGNvbnRpbnVvdXMgJiYgcHJvcHMuaT09MCl7XG5cdFx0XHRcdGNvbnN0IHBhZ2VzPWNvbnRleHQuZ2V0Q29tcG9zZXIoXCJyb290XCIpLmNvbXB1dGVkLmNvbXBvc2VkXG5cdFx0XHRcdGNvbnN0IHByZXY9cGFnZXNbcGFnZXMubGVuZ3RoLTFdXG5cdFx0XHRcdGlmKHByZXYgJiYgcHJldi5jb250aW51b3VzKXtcblx0XHRcdFx0XHRjb25zdCBsYXlvdXQ9cHJldi5fbWFrZUNvbnRpbnVvdXNMYXlvdXQoey4uLnByb3BzLG1hcmdpbix3aWR0aCxoZWlnaHQsSTp1bmRlZmluZWQsY29scyx9LGNvbnRleHQpXG5cdFx0XHRcdFx0aWYobGF5b3V0KXtcblx0XHRcdFx0XHRcdHJldHVybiBsYXlvdXRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dmFyIHtoZWFkZXIsZm9vdGVyfT10aGlzLmdldEhlYWRlckZvb3Rlcihwcm9wcyxjb250ZXh0KVxuXHRcdFx0XG5cdFx0XHR2YXIgeTA9bWFyZ2luLnRvcFxuXHRcdFx0aWYoaGVhZGVyKXtcblx0XHRcdFx0aGVhZGVyPVJlYWN0LmNsb25lRWxlbWVudChoZWFkZXIse3g6bWFyZ2luLmxlZnQseTptYXJnaW4uaGVhZGVyLCBjbGFzc05hbWU6XCJoZWFkZXJcIn0pXG5cdFx0XHRcdHkwPU1hdGgubWF4KHkwLCBtYXJnaW4uaGVhZGVyK2hlYWRlci5wcm9wcy5oZWlnaHQpXG5cdFx0XHR9XG5cblx0XHRcdHZhciB5MT1oZWlnaHQtbWFyZ2luLmJvdHRvbVxuXHRcdFx0aWYoZm9vdGVyKXtcblx0XHRcdFx0bGV0IHk9aGVpZ2h0LW1hcmdpbi5mb290ZXItZm9vdGVyLnByb3BzLmhlaWdodFxuXHRcdFx0XHRmb290ZXI9UmVhY3QuY2xvbmVFbGVtZW50KGZvb3Rlcix7eDptYXJnaW4ubGVmdCx5LCBjbGFzc05hbWU6XCJmb290ZXJcIn0pXG5cdFx0XHRcdHkxPU1hdGgubWluKHksIHkxKVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbmV3IFBhZ2Uoe1xuXHRcdFx0XHRjb250aW51b3VzLFxuXHRcdFx0XHRiYWxhbmNlOmNvbnRpbnVvdXMsXG5cdFx0XHRcdGhlYWRlcixmb290ZXIsXG5cdFx0XHRcdHdpZHRoLGhlaWdodCxtYXJnaW4sXG5cdFx0XHRcdGNvbHM6Y29scy5tYXAoYT0+KHsuLi5hLCB5OnkwLCBtYXhIZWlnaHQ6eTEteTB9KSksXG5cdFx0XHRcdC4uLnByb3BzXG5cdFx0XHR9LGNvbnRleHQpXG5cdFx0fVxuXHR9LHNoYWxsb3dFcXVhbClcblxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCBXb3JkU2VjdGlvbj10aGlzLmNvbnN0cnVjdG9yLlNlY3Rpb24oU2VjdGlvbilcblx0XHRjb25zdCB7cGdTejp7d2lkdGgsaGVpZ2h0fSwgIHBnTWFyLCBjb2xzLCB0eXBlLC4uLnByb3BzfT10aGlzLnByb3BzXG5cdFx0Y29uc3QgY3JlYXRlPXRoaXMuZ2V0Q3JlYXRlKHdpZHRoLGhlaWdodCxwZ01hcix0aGlzLmdldENvbHMod2lkdGgscGdNYXIsY29scyksdHlwZSlcblxuXHRcdHJldHVybig8V29yZFNlY3Rpb24gY3JlYXRlTGF5b3V0PXtjcmVhdGV9IHsuLi5wcm9wc30vPilcblx0fVxuXG5cdHN0YXRpYyBTZWN0aW9uPW1lbW9pemUoU2VjdGlvbj0+e1xuXHRcdGlmKCFTZWN0aW9uLkxheW91dClcblx0XHRcdHJldHVybiBTZWN0aW9uXG5cblx0XHRyZXR1cm4gY2xhc3MgV29yZFNlY3Rpb24gZXh0ZW5kcyBTZWN0aW9ue1xuXHRcdFx0Y2FuY2VsVW51c2FibGVMYXN0Q29tcG9zZWQoLi4uYXJncyl7XG5cdFx0XHRcdGNvbnN0IGxhc3Q9dGhpcy5jb21wdXRlZC5sYXN0Q29tcG9zZWRbdGhpcy5jb21wdXRlZC5sYXN0Q29tcG9zZWQubGVuZ3RoLTFdXG5cdFx0XHRcdGlmKGxhc3Qpe1xuXHRcdFx0XHRcdC8vY29udGludW91cyBsYXlvdXQgc2hvdWxkIGFsd2F5cyBiZSByZS1hcHBlbmRlZFxuXHRcdFx0XHRcdGxhc3QuY29udGludW91c0xheW91dHM9W11cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2FuY2VsVW51c2FibGVMYXN0Q29tcG9zZWQoLi4uYXJncylcblx0XHRcdH1cblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBjb21wb3NlZCtjb250aW51b3VzTGF5b3V0c1xuXHRcdFx0ICogY3JlYXRlQ29tcG9zZWQyUGFyZW50IG11c3QgYmUgY3VzdG9taXplZCBmb3IgcmVhY3QtcG9pc2l0aW9uaW5nIGZvciBmcmFtZSB0cmVlXG5cdFx0XHQgKi9cblx0XHRcdHN0YXRpYyBMYXlvdXQ9Y2xhc3MgUGFnZSBleHRlbmRzIFNlY3Rpb24uTGF5b3V0e1xuXHRcdFx0XHRkZWZpbmVQcm9wZXJ0aWVzKCl7XG5cdFx0XHRcdFx0c3VwZXIuZGVmaW5lUHJvcGVydGllcygpXG5cdFx0XHRcdFx0dGhpcy5jb21wdXRlZC5jb250aW51b3VzTGF5b3V0cz1bXVxuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse1xuXHRcdFx0XHRcdFx0Y29udGludW91c0xheW91dHM6e1xuXHRcdFx0XHRcdFx0XHRnZXQoKXtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jb21wdXRlZC5jb250aW51b3VzTGF5b3V0c1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRzZXQodil7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jb21wdXRlZC5jb250aW51b3VzTGF5b3V0cz12XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjb250aW51b3VzOntcblx0XHRcdFx0XHRcdFx0Z2V0KCl7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucHJvcHMuY29udGludW91c1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Y29tcG9zZWRIZWlnaHQ6e1xuXHRcdFx0XHRcdFx0XHRnZXQoKXtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBoZWlnaHQ9ZnJhbWU9Pk1hdGgubWF4KC4uLmZyYW1lLmNvbHVtbnMubWFwKGE9PmEuY29udGVudEhlaWdodCkpXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY29tcHV0ZWQuY29udGludW91c0xheW91dHMucmVkdWNlKChILGEpPT5IK2hlaWdodChhKSxoZWlnaHQodGhpcykpXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Z2V0IGhhc011bHRpcGxlU2VjdGlvbkNvbnRlbnQoKXtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jb250aW51b3VzTGF5b3V0cy5sZW5ndGg+MFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y3JlYXRlQ29tcG9zZWQyUGFyZW50KCl7XG5cdFx0XHRcdFx0Y29uc3Qge2hlYWRlcixmb290ZXJ9PXRoaXMucHJvcHNcblx0XHRcdFx0XHRjb25zdCBjb250ZW50PXN1cGVyLmNyZWF0ZUNvbXBvc2VkMlBhcmVudCgpXG5cdFx0XHRcdFx0Y29uc3QgcHJvcHM9ey4uLmNvbnRlbnQucHJvcHN9XG5cdFx0XHRcdFx0aWYodGhpcy5oYXNNdWx0aXBsZVNlY3Rpb25Db250ZW50KXtcblx0XHRcdFx0XHRcdC8vIGVhY2ggc2VjdGlvbiB3cmFwIGl0c2VsZiBjb250ZW50IGFscmVhZHksIHNvIHBhZ2UgZnJhbWUgaXMgbm90IGZvciBzcGVjaWZpYyBzZWN0aW9uXG5cdFx0XHRcdFx0XHRPYmplY3Qua2V5cyhwcm9wcykuZmlsdGVyKGs9Pmsuc3RhcnRzV2l0aChcImRhdGEtXCIpKS5mb3JFYWNoKGs9PnByb3BzW2tdPXVuZGVmaW5lZClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0cmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjb250ZW50LHByb3BzLFxuXHRcdFx0XHRcdFx0PEdyb3VwLkxheWVycz5cblx0XHRcdFx0XHRcdFx0e1tcblx0XHRcdFx0XHRcdFx0XHQ8R3JvdXAuTGF5ZXIga2V5PVwiaGVhZGVyZm9vdGVyXCIgej17TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJ9ID5cblx0XHRcdFx0XHRcdFx0XHRcdHtoZWFkZXJ9e2Zvb3Rlcn1cblx0XHRcdFx0XHRcdFx0XHQ8L0dyb3VwLkxheWVyPixcblx0XHRcdFx0XHRcdFx0XHQ8R3JvdXAuTGF5ZXIga2V5PVwiY29udGVudFwiIHo9e051bWJlci5NQVhfU0FGRV9JTlRFR0VSfT5cblx0XHRcdFx0XHRcdFx0XHRcdHtjb250ZW50LnByb3BzLmNoaWxkcmVufVxuXHRcdFx0XHRcdFx0XHRcdDwvR3JvdXAuTGF5ZXI+XG5cdFx0XHRcdFx0XHRcdF19XG5cdFx0XHRcdFx0XHQ8L0dyb3VwLkxheWVycz5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRwb3NpdGlvbkxpbmVzKC4uLmFyZ3MpIHtcblx0XHRcdFx0XHRpZighdGhpcy5oYXNNdWx0aXBsZVNlY3Rpb25Db250ZW50KVxuXHRcdFx0XHRcdFx0cmV0dXJuIHN1cGVyLnBvc2l0aW9uTGluZXMoLi4uYXJncylcblxuXHRcdFx0XHRcdC8vIGVhY2ggc2VjdGlvbiB3cmFwIGl0c2VsZiBjb250ZW50IHRvIGNvbXByb21pc2UgcG9zaXRpb25pbmdcblxuXHRcdFx0XHRcdHZhciB0aGlzU2VjdGlvbkxpbmVzPU9iamVjdC5hc3NpZ24oXG5cdFx0XHRcdFx0XHR0aGlzLl9tYWtlQ29udGludW91c0xheW91dCh0aGlzLnByb3BzLHRoaXMuY29udGV4dCwgZmFsc2UpLFxuXHRcdFx0XHRcdFx0e2NvbXB1dGVkOntcblx0XHRcdFx0XHRcdFx0Li4udGhpcy5jb21wdXRlZCxcblx0XHRcdFx0XHRcdFx0Y29sdW1uczp0aGlzLmNvbHVtbnMubWFwKGE9Pih7Li4uYSx5OnVuZGVmaW5lZH0pKSxcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0KS5jcmVhdGVDb21wb3NlZDJQYXJlbnQoKVxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHRoaXNTZWN0aW9uTGluZXM9UmVhY3QuY2xvbmVFbGVtZW50KHRoaXNTZWN0aW9uTGluZXMse2tleTpcImNvbnRlbnRcIix5OnRoaXMuY29sc1swXS55fSlcblx0XHRcdFx0XHR2YXIgeT1NYXRoLm1heCguLi50aGlzLmNvbHVtbnMubWFwKGE9PmEuYmxvY2tPZmZzZXQpKVxuXHRcdFx0XHRcdHZhciBoZWlnaHQ9TWF0aC5tYXgoLi4udGhpcy5jb2x1bW5zLm1hcCgoe2NvbnRlbnRIZWlnaHQsaGVpZ2h0PWNvbnRlbnRIZWlnaHR9KT0+aGVpZ2h0KSlcblx0XHRcdFx0XHRjb25zdCBsYXlvdXRzQ29udGVudD10aGlzLmNvbnRpbnVvdXNMYXlvdXRzLm1hcCgoZnJhbWUsaSk9Pntcblx0XHRcdFx0XHRcdGNvbnN0IGZyYW1lQ29udGVudD1SZWFjdC5jbG9uZUVsZW1lbnQoZnJhbWUuY3JlYXRlQ29tcG9zZWQyUGFyZW50KCkse3ksa2V5Oml9KVxuXHRcdFx0XHRcdFx0eSs9ZnJhbWVDb250ZW50LnByb3BzLmhlaWdodFxuXHRcdFx0XHRcdFx0aGVpZ2h0Kz1mcmFtZUNvbnRlbnQucHJvcHMuaGVpZ2h0XG5cdFx0XHRcdFx0XHRyZXR1cm4gZnJhbWVDb250ZW50XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0PEdyb3VwIGhlaWdodD17aGVpZ2h0fT5cblx0XHRcdFx0XHRcdFx0e1t0aGlzU2VjdGlvbkxpbmVzLC4uLmxheW91dHNDb250ZW50XX1cblx0XHRcdFx0XHRcdDwvR3JvdXA+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0X21ha2VDb250aW51b3VzTGF5b3V0KHttYXJnaW4sd2lkdGgsaGVpZ2h0LGNvbHMsLi4ucHJvcHN9LGNvbnRleHQsIGNoZWNrU3BhY2U9dHJ1ZSl7XG5cdFx0XHRcdFx0dmFyIHtjb2xzOlt7bWF4SGVpZ2h0fV0sIGNvbXBvc2VkSGVpZ2h0fT10aGlzXG5cdFx0XHRcdFx0aWYoY2hlY2tTcGFjZSAmJiAobWF4SGVpZ2h0LT1jb21wb3NlZEhlaWdodCk8PTEpXG5cdFx0XHRcdFx0XHRyZXR1cm4gXG5cdFx0XHRcdFx0Y29uc3Qge2xlZnQ9MCxyaWdodD0wfT1tYXJnaW5cblx0XHRcdFx0XHRjb25zdCBsYXlvdXQ9bmV3IFNlY3Rpb24uTGF5b3V0KHtcblx0XHRcdFx0XHRcdC4uLnByb3BzLFxuXHRcdFx0XHRcdFx0STp1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRjb2xzOmNvbHMubWFwKGE9Pih7Li4uYSxtYXhIZWlnaHQseTp1bmRlZmluZWR9KSksXG5cdFx0XHRcdFx0XHRiYWxhbmNlOnRydWUsXG5cdFx0XHRcdFx0XHR3aWR0aDp3aWR0aC1sZWZ0LXJpZ2h0LFxuXHRcdFx0XHRcdFx0aGVpZ2h0OnVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdF9sYXlvdXQ6e3dpZHRoLGhlaWdodCxjb2xzLG1hcmdpbn0sLy9mb3IgbGF5b3V0T2Zcblx0XHRcdFx0XHR9LHsuLi5jb250ZXh0LGZyYW1lOnRoaXN9KVxuXHRcdFx0XHRcdGxheW91dC5jb21wdXRlZC5pc0NvbnRpbnVvdXNMYXlvdXQ9dHJ1ZVxuXHRcdFx0XHRcdHJldHVybiBsYXlvdXRcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGFwcGVuZENvbnRpbnVvdXNMYXlvdXQobGF5b3V0KXtcblx0XHRcdFx0XHR0aGlzLmNvbnRpbnVvdXNMYXlvdXRzLnB1c2gobGF5b3V0KVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGF5b3V0T2Yoe2lkfSl7XG5cdFx0XHRcdFx0Y29uc3Qgc2VjdGlvbj10aGlzLmNvbnRleHQuZ2V0Q29tcG9zZXIoaWQpLmNsb3Nlc3QoXCJzZWN0aW9uXCIpXG5cdFx0XHRcdFx0aWYoc2VjdGlvbi5wcm9wcy5pZD09dGhpcy5wcm9wcy5pZClcblx0XHRcdFx0XHRcdHJldHVybiBzdXBlci5sYXlvdXRPZigpXG5cdFx0XHRcdFx0Y29uc3Qge21hcmdpbjp7bGVmdCxyaWdodH0sIC4uLmxheW91dH09c2VjdGlvbi5jb21wdXRlZC5jb21wb3NlZFswXS5wcm9wcy5fbGF5b3V0XG5cdFx0XHRcdFx0cmV0dXJuIHsuLi5sYXlvdXQsIG1hcmdpbjp7Li4udGhpcy5wcm9wcy5tYXJnaW4sIGxlZnQscmlnaHR9fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29sdW1uSW5kZXhPZihsaW5lSW5kZXgscG9zaXRpb25pbmcpe1xuXHRcdFx0XHRcdHJldHVybiBzdXBlci5jb2x1bW5JbmRleE9mKGxpbmVJbmRleClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSlcbn0iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcblxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcbmltcG9ydCB7c2hhbGxvd0VxdWFsfSBmcm9tIFwicmVjb21wb3NlXCJcblxuZXhwb3J0IGRlZmF1bHQgKHtQYXJhZ3JhcGh9KT0+Y2xhc3MgX18kMSBleHRlbmRzIENvbXBvbmVudHtcblx0c3RhdGljIGRpc3BsYXlOYW1lPVwicGFyYWdyYXBoXCJcblx0c3RhdGljIHByb3BUeXBlcz17XG5cdFx0c3R5bGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblx0XHRudW1JZDogUHJvcFR5cGVzLnN0cmluZyxcblx0XHRsZXZlbDogUHJvcFR5cGVzLm51bWJlcixcblx0XHRvdXRsaW5lOiBQcm9wVHlwZXMubnVtYmVyLFxuXHR9XG5cblx0c3RhdGljIGNvbnRleHRUeXBlcz17XG5cdFx0c3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cdH1cblxuXHRzdGF0aWMgY2hpbGRDb250ZXh0VHlwZXM9e1xuXHRcdHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0XG5cdH1cblxuXHRzdHlsZT1tZW1vaXplKChkaXJlY3QsY29udGV4dCk9Pntcblx0XHRjb25zdCBkZWZhdWx0U3R5bGU9ZGlyZWN0LmZsYXQ0Q2hhcmFjdGVyKGNvbnRleHQpXG5cdFx0Y29uc3Qgc3R5bGU9ZGlyZWN0LmZsYXQoY29udGV4dClcblx0XHRpZihzdHlsZS5pbmRlbnQpe1xuXHRcdFx0aWYoc3R5bGUuaW5kZW50Lmhhbmdpbmcpe1xuXHRcdFx0XHRzdHlsZS5pbmRlbnQuZmlyc3RMaW5lPS1zdHlsZS5pbmRlbnQuaGFuZ2luZ1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmKHN0eWxlLm51bWJlcmluZyl7XG5cdFx0XHRsZXQge25leHRWYWx1ZSwgc3R5bGU6cHJvcHMsZm9ybWF0fT1zdHlsZS5udW1iZXJpbmdcblx0XHRcdHN0eWxlLm51bWJlcmluZz17XG5cdFx0XHRcdHN0eWxlOnsuLi5wcm9wcywgLi4uZGVmYXVsdFN0eWxlfSxcblx0XHRcdFx0bGFiZWw6bmV4dFZhbHVlKCksXG5cdFx0XHRcdGZvcm1hdFxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB7c3R5bGUsZGVmYXVsdFN0eWxlfVxuXHR9LHNoYWxsb3dFcXVhbClcblxuXHRjaGlsZFN0eWxlPW1lbW9pemUoKGRpcmVjdCxjb250ZXh0KT0+e1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKGRpcmVjdC5jbG9uZSgpLHtyOnt9fSkuaW5oZXJpdChjb250ZXh0KVxuXHR9LHNoYWxsb3dFcXVhbClcblxuXHRnZXRDaGlsZENvbnRleHQoKXtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c3R5bGU6dGhpcy5jaGlsZFN0eWxlKHRoaXMucHJvcHMuc3R5bGUsIHRoaXMuY29udGV4dC5zdHlsZSlcblx0XHR9XG5cdH1cblxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7c3R5bGU6JDEsIC4uLnByb3BzfT10aGlzLnByb3BzXG5cdFx0Y29uc3Qge3N0eWxlOnt3aWRvdyxvcnBoYW49d2lkb3csIC4uLnN0eWxlfSwgZGVmYXVsdFN0eWxlfT10aGlzLnN0eWxlKHRoaXMucHJvcHMuc3R5bGUsdGhpcy5jb250ZXh0LnN0eWxlKVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8UGFyYWdyYXBoXG5cdFx0XHRcdHsuLi5zdHlsZX1cblx0XHRcdFx0ey4uLnByb3BzfVxuXHRcdFx0XHR7Li4ue3dpZG93LG9ycGhhbixkZWZhdWx0U3R5bGV9fVxuXHRcdFx0XHQvPlxuXHRcdClcblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5cblxuZXhwb3J0IGRlZmF1bHQgKHtUZXh0fSk9PmNsYXNzIF9fJDEgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRpYyBkaXNwbGF5TmFtZT1cInRleHRcIlxuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRyOiBQcm9wVHlwZXMub2JqZWN0XG5cdH1cblx0Y29uc3RydWN0b3IoKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dGhpcy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHRoaXMucHJvcHMsdGhpcy5jb250ZXh0KVxuXHR9XG5cblx0Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0LGNvbnRleHQpe1xuXHRcdHRoaXMuc3R5bGU9ey4uLmNvbnRleHQuciwuLi5uZXh0fVxuXHR9XG5cblx0cmVuZGVyKCl7XG5cdFx0cmV0dXJuIDxUZXh0IHsuLi50aGlzLnN0eWxlfS8+XG5cdH1cbn1cbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcblxuXG5leHBvcnQgZGVmYXVsdCAoe0NvbnRhaW5lcn0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgZGlzcGxheU5hbWU9XCJydW5cIlxuXHRzdGF0aWMgcHJvcFR5cGVzPXtcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG5cdH1cblxuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuXHR9XG5cblx0c3R5bGU9KGRpcmVjdCwgY29udGV4dCk9PmRpcmVjdC5mbGF0KGNvbnRleHQpXG5cblx0cmVuZGVyKCl7XG5cdFx0dmFyIHtzdHlsZSwgLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRzdHlsZT10aGlzLnN0eWxlKHN0eWxlLCB0aGlzLmNvbnRleHQuc3R5bGUpXG5cdFx0cmV0dXJuIChcblx0XHRcdDxDb250YWluZXIgey4uLnByb3BzfSB0eXBlPXt0aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lfT5cblx0XHRcdHtcblx0XHRcdFx0UmVhY3QuQ2hpbGRyZW4ubWFwKHRoaXMucHJvcHMuY2hpbGRyZW4sYT0+e1xuXHRcdFx0XHRcdGlmKGEudHlwZS5kaXNwbGF5TmFtZT09XCJ0ZXh0XCIpe1xuXHRcdFx0XHRcdFx0cmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChhLHN0eWxlKVxuXHRcdFx0XHRcdH1lbHNlXG5cdFx0XHRcdFx0XHRyZXR1cm4gYVxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdFx0PC9Db250YWluZXI+XG5cdFx0KVxuXHR9XG59XG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5cbmltcG9ydCB7UGFyYWdyYXBoLENoYXJhY3Rlcn0gZnJvbSBcIi4uL3N0eWxlc1wiXG5cblxuZXhwb3J0IGRlZmF1bHQgKHtDZWxsfSk9PmNsYXNzIF9fJDEgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRpYyBkaXNwbGF5TmFtZT1cImNlbGxcIlxuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuXHR9XG5cblx0c3RhdGljIGNoaWxkQ29udGV4dFR5cGVzPXtcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuXHR9XG5cblx0Y2hpbGRTdHlsZT1tZW1vaXplKChkaXJlY3QsY29udGV4dCk9Pntcblx0XHRyZXR1cm4gZGlyZWN0ID8gZGlyZWN0LmluaGVyaXQoY29udGV4dCkgOiBjb250ZXh0XG5cdH0pXG5cblx0Z2V0Q2hpbGRDb250ZXh0KCl7XG5cdFx0cmV0dXJuIHtzdHlsZTp0aGlzLmNoaWxkU3R5bGUodGhpcy5wcm9wcy5zdHlsZSwgdGhpcy5jb250ZXh0LnN0eWxlKX1cblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtzdHlsZTokMSwuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdGNvbnN0IGNoaWxkU3R5bGU9dGhpcy5jaGlsZFN0eWxlKHRoaXMucHJvcHMuc3R5bGUsIHRoaXMuY29udGV4dC5zdHlsZSlcblx0XHRjb25zdCBjb25kaXRpb25hbD1jaGlsZFN0eWxlLmdldChcInRjLmNvbmRpdGlvbmFsXCIpfGNoaWxkU3R5bGUuZ2V0KFwidHIuY29uZGl0aW9uYWxcIilcblx0XHRjb25zdCBlZGdlcz1bXVxuXHRcdGNvbnN0IHN0eWxlPWNoaWxkU3R5bGUuZmxhdDRDZWxsKGNvbmRpdGlvbmFsLGVkZ2VzKVxuXHRcdHJldHVybiA8Q2VsbCB7Li4uey4uLnByb3BzLC4uLnN0eWxlfX0vPlxuXHR9XG59XG4iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5pbXBvcnQge1BhcmFncmFwaCxDaGFyYWN0ZXJ9IGZyb20gXCIuLi9zdHlsZXNcIlxuXG5cbmV4cG9ydCBkZWZhdWx0ICh7Um93fSk9PmNsYXNzIF9fJDEgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRpYyBkaXNwbGF5TmFtZT1cInJvd1wiXG5cdHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuXHRcdHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRcdGNvbHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpXG5cdH1cblxuXHRzdGF0aWMgY2hpbGRDb250ZXh0VHlwZXM9e1xuXHRcdHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0XG5cdH1cblx0Y2hpbGRTdHlsZT1tZW1vaXplKChkaXJlY3QsY29udGV4dCk9Pntcblx0XHRyZXR1cm4gZGlyZWN0ID8gZGlyZWN0LmluaGVyaXQoY29udGV4dCkgOiBjb250ZXh0XG5cdH0pXG5cblx0Z2V0Q2hpbGRDb250ZXh0KCl7XG5cdFx0cmV0dXJuIHtzdHlsZTp0aGlzLmNoaWxkU3R5bGUodGhpcy5wcm9wcy5zdHlsZSwgdGhpcy5jb250ZXh0LnN0eWxlKX1cblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtzdHlsZTokMSwuLi5wcm9wc309dGhpcy5wcm9wc1xuXHRcdGNvbnN0IGNoaWxkU3R5bGU9dGhpcy5jaGlsZFN0eWxlKHRoaXMucHJvcHMuc3R5bGUsIHRoaXMuY29udGV4dC5zdHlsZSlcblx0XHRjb25zdCBzdHlsZT1jaGlsZFN0eWxlLmZsYXQ0Um93KClcblx0XHRjb25zdCBjb2xzPXRoaXMuY29udGV4dC5jb2xzLnJlZHVjZSgoc3RhdGUsdyk9Pntcblx0XHRcdHN0YXRlLmNvbHMucHVzaCh7eDpzdGF0ZS54LHdpZHRoOnd9KVxuXHRcdFx0c3RhdGUueCs9d1xuXHRcdFx0cmV0dXJuIHN0YXRlXG5cdFx0fSx7eDowLGNvbHM6W119KS5jb2xzXG5cdFx0Y29uc3Qgd2lkdGg9Y29scy5zbGljZSgtMSkucmVkdWNlKCh3LGEpPT5hLngrYS53aWR0aCwwKVxuXHRcdHJldHVybiA8Um93IHsuLi57Li4ucHJvcHMsLi4uc3R5bGUsIGNvbHMsd2lkdGh9fS8+XG5cdH1cbn1cbiIsImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCxGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtSZWFjdFF1ZXJ5LENvbnRlbnRRdWVyeX0gZnJvbSBcIndlLWVkaXRcIlxuaW1wb3J0IG1lbW9pemUgZnJvbSBcIm1lbW9pemUtb25lXCJcblxuXG5leHBvcnQgZGVmYXVsdCAoe1RhYmxlLENvbnRhaW5lcn0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgZGlzcGxheU5hbWU9XCJ0YWJsZVwiXG5cdHN0YXRpYyBuYW1lZFN0eWxlPVwiKnRhYmxlXCJcblxuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblx0XHRzdHlsZXM6IFByb3BUeXBlcy5vYmplY3QsXG5cdFx0YWN0aXZlRG9jU3RvcmU6IFByb3BUeXBlcy5vYmplY3QsXG5cdH1cblxuXHRzdGF0aWMgY2hpbGRDb250ZXh0VHlwZXM9e1xuXHRcdHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRcdGNvbHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpXG5cdH1cblxuXHRjaGlsZFN0eWxlPW1lbW9pemUoKGRpcmVjdCxjb250ZXh0KT0+e1xuXHRcdHJldHVybiBkaXJlY3QgPyBkaXJlY3QuaW5oZXJpdChjb250ZXh0KSA6IGNvbnRleHRcblx0fSlcblxuXHRnZXRDaGlsZENvbnRleHQoKXtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c3R5bGU6IHRoaXMuY2hpbGRTdHlsZSh0aGlzLnByb3BzLnN0eWxlLCB0aGlzLmNvbnRleHQuc3R5bGUpLFxuXHRcdFx0Y29sczp0aGlzLnByb3BzLmNvbHNcblx0XHR9XG5cdH1cblxuXHRjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzMSh7Y2hpbGRyZW4sLi4uZGlyZWN0fSx7c3R5bGVzfSl7XG5cdFx0bGV0IHN0eWxlPXN0eWxlc1tkaXJlY3QubmFtZWRTdHlsZXx8dGhpcy5jb25zdHJ1Y3Rvci5uYW1lZFN0eWxlXVxuXG5cdFx0bGV0IHRibFN0eWxlPVwiaW5kZW50XCIuc3BsaXQoXCIsXCIpXG5cdFx0XHQucmVkdWNlKChvLGtleSx0KT0+e1xuXHRcdFx0XHRpZihkaXJlY3Rba2V5XT09dW5kZWZpbmVkICYmICh0PXN0eWxlLmdldChgdGJsLiR7a2V5fWApKSE9dW5kZWZpbmVkKVxuXHRcdFx0XHRcdG9ba2V5XT10XG5cdFx0XHRcdHJldHVybiBvXG5cdFx0XHR9LHt9KVxuXG5cdFx0Y29uc3QgZWRnZXM9KGksaik9Pntcblx0XHRcdGxldCByPVtdXG5cdFx0XHRpZihpPT0wKVxuXHRcdFx0XHRyLnB1c2goXCJmaXJzdFJvd1wiKVxuXHRcdFx0aWYoaT09Y2hpbGRyZW4ubGVuZ3RoLTEpXG5cdFx0XHRcdHIucHVzaChcImxhc3RSb3dcIilcblxuXHRcdFx0aWYoaj09MClcblx0XHRcdFx0ci5wdXNoKFwiZmlyc3RDb2xcIilcblxuXHRcdFx0aWYoaj09ZGlyZWN0LmNvbHMubGVuZ3RoLTEpXG5cdFx0XHRcdHIucHVzaChcImxhc3RDb2xcIilcblx0XHRcdHJldHVybiByXG5cdFx0fVxuXG5cdFx0bGV0IHJvd3M9Y2hpbGRyZW4ubWFwKChyb3csaSk9Pntcblx0XHRcdGxldCBjZWxscz1yb3cucHJvcHMuY2hpbGRyZW4ubWFwKChjZWxsLGopPT57XG5cdFx0XHRcdGxldCB7Y25mU3R5bGU6Y2VsbENuZlN0eWxlPTB9PWNlbGwucHJvcHN8fHt9XG5cdFx0XHRcdGxldCB7Y25mU3R5bGU6cm93Q25mU3R5bGU9MH09cm93LnByb3BzfHx7fVxuXHRcdFx0XHRsZXQgY25mU3R5bGU9cm93Q25mU3R5bGV8Y2VsbENuZlN0eWxlXG5cblx0XHRcdFx0bGV0IGNlbGxTdHlsZT1zdHlsZS5tZXJnZSh7Li4uY2VsbC5wcm9wcyxjbmZTdHlsZX0sZWRnZXMoaSxqKSlcblx0XHRcdFx0cmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjZWxsLHsuLi5jZWxsU3R5bGUsY25mU3R5bGU6dW5kZWZpbmVkfSlcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KHJvdyxudWxsLGNlbGxzKVxuXHRcdH0pXG5cblx0XHR0aGlzLnN0eWxlPXsuLi50YmxTdHlsZSwgLi4uZGlyZWN0LCBjaGlsZHJlbjpyb3dzfVxuXHR9XG5cblx0Z2V0SW5kZW50PW1lbW9pemUoKGluZGVudD0wLCB0YmxNYXJnaW4sIGNoaWxkcmVuKT0+e1xuXHRcdGNvbnN0IHF1ZXJ5PW5ldyBDb250ZW50UXVlcnkodGhpcy5jb250ZXh0LmFjdGl2ZURvY1N0b3JlLmdldFN0YXRlKCksYCMke3RoaXMucHJvcHMuaWR9YClcblx0XHRpZihxdWVyeS5wYXJlbnRzKFwidGFibGVcIikubGVuZ3RoPjApe1xuXHRcdFx0cmV0dXJuIGluZGVudFxuXHRcdH1cblx0XHRjb25zdCBmaXJzdENlbGw9bmV3IFJlYWN0UXVlcnkoPEZyYWdtZW50PntjaGlsZHJlbn08L0ZyYWdtZW50PikuZmluZEZpcnN0KFwiY2VsbFwiKVxuXHRcdGNvbnN0IHtyaWdodD0wfT1maXJzdENlbGwuYXR0cihcIm1hcmdpblwiKXx8dGJsTWFyZ2lufHx7fVxuXHRcdHJldHVybiBpbmRlbnQtcmlnaHRcblx0fSlcblxuXHRnZXRDb25kaXRpb25hbENoaWxkcmVuPW1lbW9pemUoKGNvbmRpdGlvbixjaGlsZHJlbik9Pntcblx0XHRyZXR1cm4gY2hpbGRyZW5cblx0fSlcblxuXHRyZW5kZXIoKXtcblx0XHR2YXIge2NvbHMsd2lkdGg9Y29scy5yZWR1Y2UoKHcsYSk9PncrYSwwKSxjaGlsZHJlbiwgc3R5bGU6JDEsIC4uLnByb3BzfT10aGlzLnByb3BzXG5cdFx0Y29uc3QgY2hpbGRTdHlsZT10aGlzLmNoaWxkU3R5bGUodGhpcy5wcm9wcy5zdHlsZSwgdGhpcy5jb250ZXh0LnN0eWxlKVxuXHRcdGNvbnN0IHtpbmRlbnQ6dGJsSW5kLC4uLnN0eWxlfT1jaGlsZFN0eWxlLmZsYXQ0VGFibGUoKVxuXHRcdGNvbnN0IGluZGVudD10aGlzLmdldEluZGVudCh0YmxJbmQsY2hpbGRTdHlsZS5nZXQoXCJ0YmwubWFyZ2luXCIpLCBjaGlsZHJlbilcblxuXHRcdGNvbnN0IGNvbmRpdGlvbj10aGlzLnByb3BzLnN0eWxlLmdldChcImNvbmRpdGlvbmFsXCIpXG5cdFx0aWYodW5kZWZpbmVkIT1jb25kaXRpb24pe1xuXHRcdFx0Y2hpbGRyZW49dGhpcy5nZXRDb25kaXRpb25hbENoaWxkcmVuKGNvbmRpdGlvbixjaGlsZHJlbilcblx0XHR9XG5cdFx0cmV0dXJuIDxUYWJsZSB7Li4uey4uLnByb3BzLC4uLnN0eWxlLGluZGVudCx3aWR0aCxjb2xzLCBjaGlsZHJlbn19Lz5cblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0LHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5leHBvcnQgZGVmYXVsdCAoe0FuY2hvcn0pPT5jbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgZGlzcGxheU5hbWU9XCJhbmNob3JcIlxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7ZGlzdGFuY2UsIHdyYXAsIHgsIHksLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRjb25zdCBtYXJnaW49KChhLGIpPT57XG4gICAgICAgICAgICByZXR1cm4gXCJsZWZ0LHJpZ2h0LHRvcCxib3R0b21cIi5zcGxpdChcIixcIilcbiAgICAgICAgICAgICAgICAucmVkdWNlKChvLGspPT57XG4gICAgICAgICAgICAgICAgICAgIG9ba109TWF0aC5tYXgoYVtrXXx8MCxiW2tdfHwwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb1xuICAgICAgICAgICAgICAgIH0se30pXG4gICAgICAgIH0pKGRpc3RhbmNlfHx7fSwgd3JhcCAmJiB3cmFwLmRpc3RhbmNlfHx7fSk7XG5cbiAgICAgICAgc3dpdGNoKHguYmFzZSl7XG4gICAgICAgIGNhc2UgXCJsZWZ0TWFyZ2luXCI6XG4gICAgICAgICAgICB4LmJhc2U9XCJtYXJnaW5cIlxuICAgICAgICAgICAgeC5hbGlnbj1cImxlZnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcInJpZ2h0TWFyZ2luXCI6XG4gICAgICAgICAgICB4LmJhc2U9XCJtYXJnaW5cIlxuICAgICAgICAgICAgeC5hbGlnbj1cInJpZ2h0XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2goeS5iYXNlKXtcbiAgICAgICAgY2FzZSBcInRvcE1hcmdpblwiOlxuICAgICAgICAgICAgeS5iYXNlPVwibWFyZ2luXCJcbiAgICAgICAgICAgIHkuYWxpZ249XCJ0b3BcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcImJvdHRvbU1hcmdpblwiOlxuICAgICAgICAgICAgeS5iYXNlPVwibWFyZ2luXCJcbiAgICAgICAgICAgIHkuYWxpZ249XCJib3R0b21cIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXHRcdFxuXHRcdHJldHVybiA8QW5jaG9yIHsuLi5wcm9wc30gey4uLnttYXJnaW4sd3JhcCx4LHl9fS8+XG5cdH1cbn0iLCJleHBvcnQgZGVmYXVsdCB7XG4gICAgc2VwZXJhdGVfdXBfdG9fcnVuX2F0X2VuZF9vZl90ZXh0KCl7XG4gICAgICAgIGNvbnN0IHRhcmdldD10aGlzLnRhcmdldFxuICAgICAgICBjb25zdCByPXRhcmdldC5jbG9zZXN0KCd3XFxcXDpyJylcbiAgICAgICAgY29uc3QgY2xvbmVkUj1yLmNsb25lKClcbiAgICAgICAgY2xvbmVkUi5jaGlsZHJlbihgOm5vdCgke3RoaXMuUFJ9KWApLnJlbW92ZSgpXG4gICAgICAgIGNsb25lZFIuYXBwZW5kKHRhcmdldC5uZXh0QWxsKCkpXG4gICAgICAgIHIuYWZ0ZXIoY2xvbmVkUilcblxuICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChyKVxuICAgICAgICBjb25zdCBhPXRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKGNsb25lZFIpXG4gICAgICAgIHRoaXMuJHRhcmdldC5jbG9zZXN0KFwicnVuXCIpLmFmdGVyKGAjJHthLmlkfWApXG4gICAgfSxcbn0iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0b3J7XG4gICAgY29uc3RydWN0b3IoZmlsZSl7XG4gICAgICAgIHRoaXMuZmlsZT1maWxlXG4gICAgfVxuXG4gICAgJCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlLmRvYy5vZmZpY2VEb2N1bWVudC5jb250ZW50KC4uLmFyZ3VtZW50cylcbiAgICB9XG5cblx0Ly9maW5kIHByLCBpZiBubyxjcmVhdGUgaXRcblx0Z290KG5vZGVOYW1lLHRhZ0NvbnRlbnQsIHRhZ1ByKXtcblx0XHRsZXQgY29udGVudFNlbGVjdG9yPXRhZ0NvbnRlbnQucmVwbGFjZShcIjpcIiwgXCJcXFxcOlwiKVxuXHRcdGxldCBwclNlbGVjdG9yPXRhZ1ByLnJlcGxhY2UoXCI6XCIsIFwiXFxcXDpcIilcblxuXHRcdGxldCBjb250ZW50PXRoaXMubm9kZS5jbG9zZXN0KGNvbnRlbnRTZWxlY3Rvcilcblx0XHRsZXQgcHI9Y29udGVudC5jaGlsZHJlbihwclNlbGVjdG9yKVxuXHRcdGlmKHByLmxlbmd0aD09MCl7XG5cdFx0XHRjb250ZW50LnByZXBlbmQoYDwke3RhZ1ByfS8+YClcblx0XHRcdHByPWNvbnRlbnQuY2hpbGRyZW4ocHJTZWxlY3Rvcilcblx0XHR9XG5cblx0XHRsZXQgc2VsZWN0b3I9bm9kZU5hbWUucmVwbGFjZShcIjpcIiwgXCJcXFxcOlwiKVxuXHRcdGxldCB0YXJnZXQ9cHIuY2hpbGRyZW4oc2VsZWN0b3IpXG5cdFx0aWYodGFyZ2V0Lmxlbmd0aD09MCl7XG5cdFx0XHRwci5hcHBlbmQoYDwke25vZGVOYW1lfS8+YClcblx0XHRcdHRhcmdldD1wci5jaGlsZHJlbihzZWxlY3Rvcilcblx0XHR9XG5cdFx0cmV0dXJuIHRhcmdldFxuXHR9XG5cblx0dHJpbSh4bWwpe1xuXHRcdHJldHVybiB4bWwucmVwbGFjZSgvPlxccysvZyxcIj5cIikucmVwbGFjZSgvXFxzKzwvZyxcIjxcIilcblx0fVxuXG4gICAgY3JlYXRlKHByb3BzKXtcbiAgICAgICAgY29uc3QgY29udGVudD10aGlzLnRlbXBsYXRlKHByb3BzKVxuICAgICAgICBjb25zdCAkPXRoaXMuZmlsZS5kb2MuY29uc3RydWN0b3IucGFyc2VYbWwodGhpcy50cmltKGNvbnRlbnQpKVxuICAgICAgICB0aGlzLm5vZGU9JC5yb290KCkuY2hpbGRyZW4oKS5maXJzdCgpXG4gICAgICAgIHRoaXMuYXBwbHkocHJvcHMpXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGUuYXR0YWNoKHRoaXMubm9kZSlcbiAgICB9XG5cbiAgICB1cGRhdGUoY2hhbmdpbmcpe1xuICAgICAgICB0aGlzLmFwcGx5KGNoYW5naW5nKVxuICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCh0aGlzLm5vZGUpXG4gICAgfVxuXG4gICAgYXBwbHkoY2hhbmdpbmcpe1xuICAgICAgICBPYmplY3Qua2V5cyhjaGFuZ2luZylcbiAgICAgICAgICAgIC5mb3JFYWNoKGs9PntcbiAgICAgICAgICAgICAgICBpZih0aGlzW2tdKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trXShjaGFuZ2luZ1trXSwgY2hhbmdpbmcpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZVxuICAgIH1cblxuICAgIHRlbXBsYXRlKHByb3BzKXtcbiAgICAgICAgcmV0dXJuIGBgXG4gICAgfVxufVxuIiwiaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZVwiXG5cbmV4cG9ydCBjbGFzcyBJbWFnZSBleHRlbmRzIEJhc2V7XG4gICAgYXBwbHkoe2RhdGEsIC4uLnByb3BzfSl7XG4gICAgICAgIGlmKHRoaXMubm9kZS5wcm9wKCduYW1lJykhPT0ncGljOnBpYycpe1xuICAgICAgICAgICAgdGhpcy5ub2RlPXRoaXMubm9kZS5maW5kKFwicGljXFxcXDpwaWNcIilcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGRhdGEpe1xuICAgICAgICAgICAgaWYodHlwZW9mKGRhdGEpPT0nc3RyaW5nJyl7Ly9maWxlIG5hbWVcbiAgICAgICAgICAgICAgICBwcm9wcy5yaWQ9dGhpcy5maWxlLmRvYy5vZmZpY2VEb2N1bWVudC5hZGRFeHRlcm5hbEltYWdlKGRhdGEpXG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBwcm9wcy5yaWQ9dGhpcy5maWxlLmRvYy5vZmZpY2VEb2N1bWVudC5hZGRJbWFnZShkYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIuYXBwbHkocHJvcHMpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5jbG9zZXN0KFwid1xcXFw6ZHJhd2luZ1wiKVxuICAgIH1cblxuICAgIHNpemUoe3dpZHRoLGhlaWdodH0pe1xuICAgICAgICBsZXQgZXh0MD10aGlzLm5vZGUuZmluZChcImFcXFxcOnhmcm0+YVxcXFw6ZXh0XCIpXG4gICAgICAgIGxldCBpbmxpbmU9dGhpcy5ub2RlLmNsb3Nlc3QoXCJ3cFxcXFw6aW5saW5lXCIpXG5cbiAgICAgICAgY29uc3QgdXBkYXRlPSh4LHRhcmdldCk9PntcbiAgICAgICAgICAgIGlmKHgpe1xuICAgICAgICAgICAgICAgIGxldCBjeD10aGlzLmZpbGUucHgyY20oeClcbiAgICAgICAgICAgICAgICBsZXQgY3gwPXBhcnNlSW50KGV4dDAuYXR0cih0YXJnZXQpKVxuICAgICAgICAgICAgICAgIGV4dDAuYXR0cih0YXJnZXQsY3gpXG5cbiAgICAgICAgICAgICAgICBpZihpbmxpbmUubGVuZ3RoKXtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV4dDE9aW5saW5lLmNoaWxkcmVuKFwid3BcXFxcOmV4dGVudFwiKVxuICAgICAgICAgICAgICAgICAgICBsZXQgY3gxPXBhcnNlSW50KGV4dDEuYXR0cih0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICBleHQxLmF0dHIodGFyZ2V0LGN4K2N4MS1jeDApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlKHdpZHRoLFwiY3hcIilcbiAgICAgICAgdXBkYXRlKGhlaWdodCxcImN5XCIpXG4gICAgfVxuXG5cdHJvdGF0ZShkZWdyZWUpe1xuXHRcdGNvbnN0IHJvdD1wYXJzZUludChkZWdyZWUqNjAwMDApXG5cdFx0Y29uc3QgeGZybT10aGlzLm5vZGUuZmluZChcImFcXFxcOnhmcm1cIilcblxuXHRcdHhmcm0uYXR0cihcInJvdFwiLHJvdClcblx0fVxuXG4gICAgZWZmZWN0RXh0ZW50KHByb3BzKXtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBvZmZzZXQocHJvcHMpe1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJpZChyaWQpe1xuICAgICAgICB0aGlzLm5vZGUuZmluZChcImFcXFxcOmJsaXBcIikuYXR0cihcInI6ZW1iZWRcIixyaWQpXG4gICAgfVxuXG4gICAgbmFtZShuYW1lLCB7cmlkfSl7XG4gICAgICAgIHRoaXMubm9kZVxuICAgICAgICAgICAgLmZpbmQoXCJwaWNcXFxcOmNOdlByXCIpXG4gICAgICAgICAgICAuYXR0cihcIm5hbWVcIiwgbmFtZSlcbiAgICAgICAgdGhpcy5ub2RlXG4gICAgICAgICAgICAuY2xvc2VzdChcIndwXFxcXDppbmxpbmVcIilcbiAgICAgICAgICAgIC5maW5kKFwid3BcXFxcOmRvY1ByXCIpXG4gICAgICAgICAgICAuYXR0cihcImlkXCIsIHJpZClcbiAgICAgICAgICAgIC5hdHRyKFwibmFtZVwiLCBuYW1lKVxuICAgIH1cblxuICAgIHRlbXBsYXRlKHByb3BzKXtcbiAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgPHc6ZHJhd2luZz5cbiAgICAgICAgICA8d3A6aW5saW5lIGRpc3RUPVwiMFwiIGRpc3RCPVwiMFwiIGRpc3RMPVwiMFwiIGRpc3RSPVwiMFwiPlxuICAgICAgICAgICAgPHdwOmV4dGVudCBjeD1cIjE2MzYyOTVcIiBjeT1cIjkyMDQxNlwiLz5cbiAgICAgICAgICAgIDx3cDplZmZlY3RFeHRlbnQgbD1cIjBcIiB0PVwiMFwiIHI9XCIwXCIgYj1cIjBcIi8+XG4gICAgICAgICAgICA8d3A6ZG9jUHIvPlxuICAgICAgICAgICAgPHdwOmNOdkdyYXBoaWNGcmFtZVByPlxuICAgICAgICAgICAgICA8YTpncmFwaGljRnJhbWVMb2NrcyB4bWxuczphPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW5cIiBub0NoYW5nZUFzcGVjdD1cIjFcIi8+XG4gICAgICAgICAgICA8L3dwOmNOdkdyYXBoaWNGcmFtZVByPlxuICAgICAgICAgICAgPGE6Z3JhcGhpYyB4bWxuczphPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW5cIj5cbiAgICAgICAgICAgICAgPGE6Z3JhcGhpY0RhdGEgdXJpPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L3BpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICA8cGljOnBpYyB4bWxuczpwaWM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvcGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgPHBpYzpudlBpY1ByPlxuICAgICAgICAgICAgICAgICAgICA8cGljOmNOdlByLz5cbiAgICAgICAgICAgICAgICAgICAgPHBpYzpjTnZQaWNQci8+XG4gICAgICAgICAgICAgICAgICA8L3BpYzpudlBpY1ByPlxuICAgICAgICAgICAgICAgICAgPHBpYzpibGlwRmlsbD5cbiAgICAgICAgICAgICAgICAgICAgPGE6YmxpcCByOmVtYmVkPVwicklkOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPGE6c3RyZXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICA8YTpmaWxsUmVjdC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYTpzdHJldGNoPlxuICAgICAgICAgICAgICAgICAgPC9waWM6YmxpcEZpbGw+XG4gICAgICAgICAgICAgICAgICA8cGljOnNwUHI+XG4gICAgICAgICAgICAgICAgICAgIDxhOnhmcm0+XG4gICAgICAgICAgICAgICAgICAgICAgPGE6b2ZmIHg9XCIwXCIgeT1cIjBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPGE6ZXh0IGN4PVwiMTYzNjI5NVwiIGN5PVwiOTIwNDE2XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2E6eGZybT5cbiAgICAgICAgICAgICAgICAgICAgPGE6cHJzdEdlb20gcHJzdD1cInJlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YTphdkxzdC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYTpwcnN0R2VvbT5cbiAgICAgICAgICAgICAgICAgIDwvcGljOnNwUHI+XG4gICAgICAgICAgICAgICAgPC9waWM6cGljPlxuICAgICAgICAgICAgICA8L2E6Z3JhcGhpY0RhdGE+XG4gICAgICAgICAgICA8L2E6Z3JhcGhpYz5cbiAgICAgICAgICA8L3dwOmlubGluZT5cbiAgICAgICAgPC93OmRyYXdpbmc+XG4gICAgICAgIGBcbiAgICB9XG59XG4iLCJpbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlXCJcblxuLy97dHlwZTpcImVudGl0eS9DUkVBVEVcIiwgcGF5bG9hZDp7dHlwZTpcInRhYmxlXCIsIHJvd3M6MywgY29sczozfX1cbmV4cG9ydCBjbGFzcyBUYWJsZSBleHRlbmRzIEJhc2V7XG4gICAgYXBwbHkoe3Jvd3MsIGNvbHMsIC4uLnByb3BzfSwgJCl7XG4gICAgICAgIGlmKHJvd3Mpe1xuXHRcdFx0dGhpcy5tYWtlKHJvd3MsIGNvbHMpXG5cdFx0fVxuICAgICAgICByZXR1cm4gc3VwZXIuYXBwbHkocHJvcHMpXG4gICAgfVxuXG4gICAgc3R5bGUoe25hbWVkU3R5bGV9KXtcbiAgICAgICAgcmV0dXJuIG5hbWVkU3R5bGVcbiAgICB9XG5cbiAgICB0YmxMb29rKHt0YmxMb29rfSl7XG4gICAgICAgIGlmKCF0YmxMb29rKVxuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cblx0Y29scyhjb2xzKXtcblx0XHRjb2xzPWNvbHMubWFwKHc9PnRoaXMuZmlsZS5weDJkeGEodykpXG5cdFx0dGhpcy5ub2RlLmZpbmQoXCJ3XFxcXDp0YmxHcmlkXCIpLmVtcHR5KClcbiAgICAgICAgICAgIC5hcHBlbmQoY29scy5tYXAodz0+YDx3OmdyaWRDb2wgdzp3PVwiJHt3fVwiLz5gKS5qb2luKFwiXCIpKVxuXHR9XG5cblx0aGVpZ2h0KHt2YWx1ZTpoZWlnaHQsIHJvdywgY2VsbH0pe1xuICAgICAgICBsZXQgdHI9dGhpcy5ub2RlLmZpbmQoYFt4eGlkPVwiJHtyb3d9XCJdYClcbiAgICAgICAgbGV0IHByPXRyLmZpbmQoXCJ3XFxcXDp0clByXCIpXG4gICAgICAgIGlmKHByLmxlbmd0aD09MCl7XG4gICAgICAgICAgICB0ci5wcmVwZW5kKFwiPHc6dHJQci8+XCIpXG4gICAgICAgICAgICBwcj10ci5maW5kKFwid1xcXFw6dHJQclwiKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRySGVpZ2h0PXByLmZpbmQoXCJ3XFxcXDp0ckhlaWdodFwiKVxuICAgICAgICBpZih0ckhlaWdodC5sZW5ndGg9PTApe1xuICAgICAgICAgICAgcHIuYXBwZW5kKFwiPHc6dHJIZWlnaHQvPlwiKVxuICAgICAgICAgICAgdHJIZWlnaHQ9cHIuZmluZChcIndcXFxcOnRySGVpZ2h0XCIpXG4gICAgICAgIH1cblxuXHRcdGhlaWdodD10aGlzLmZpbGUucHgyZHhhKGhlaWdodClcblxuICAgICAgICB0ckhlaWdodC5hdHRyKFwidzp2YWxcIixoZWlnaHQpXG5cdH1cblxuXHR3aWR0aCh7dmFsdWU6d2lkdGgsIHJvdywgY2VsbCxpfSl7XG4gICAgICAgIGlmKHdpZHRoPD0wKXtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIC8vY2hhbmdlIGNvbCB3aWR0aFxuICAgICAgICBjb25zdCBncmlkQ29sPXRoaXMubm9kZS5maW5kKFwid1xcXFw6dGJsR3JpZFwiKS5maXJzdCgpLmZpbmQoXCJ3XFxcXDpncmlkQ29sXCIpXG4gICAgICAgIGNvbnN0IGNvbHM9Z3JpZENvbC5tYXAoKGosYSk9PnBhcnNlSW50KGEuYXR0cmlic1tcInc6d1wiXSkpLnRvQXJyYXkoKVxuXG4gICAgICAgIGNvbnN0IHRyPXRoaXMubm9kZS5maW5kKGBbeHhpZD1cIiR7cm93fVwiXWApXG5cdFx0Y29uc3QgdGM9dHIuZmluZChgW3h4aWQ9XCIke2NlbGx9XCJdYClcblx0XHRjb25zdCB0Y1c9dGMuZmluZChcIndcXFxcOnRjUHI+d1xcXFw6dGNXXCIpXG5cdFx0d2lkdGg9dGhpcy5maWxlLnB4MmR4YSh3aWR0aClcblx0XHRjb25zdCBkZWx0YT13aWR0aC1wYXJzZUludCh0Y1cuYXR0cihcInc6d1wiKXx8Y29sc1tpXSlcblxuICAgICAgICBpZihjb2xzLmxlbmd0aD5pKzEpe1xuICAgICAgICAgICAgaWYoY29sc1tpKzFdLWRlbHRhPjApe1xuICAgICAgICAgICAgICAgIGNvbHNbaSsxXT1jb2xzW2krMV0tZGVsdGFcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbHNbaV09d2lkdGhcbiAgICAgICAgZ3JpZENvbC5lYWNoKChqLGNvbCk9PntcbiAgICAgICAgICAgIGNvbC5hdHRyaWJzW1widzp3XCJdPWNvbHNbal1cbiAgICAgICAgfSlcblxuXHRcdC8vY2hhbmdlIGVhY2ggcm93J3Mge2l9dGggY29sJ3Mgd2lkdGhcblx0XHRjb25zdCB0cnM9dGhpcy5ub2RlLmZpbmQoXCJ3XFxcXDp0clwiKVxuICAgICAgICB0cnMudG9BcnJheSgpLmZvckVhY2goKGEsaik9Pntcblx0XHRcdGxldCB0Y3M9dHJzLmVxKGopLmZpbmQoYHdcXFxcOnRjYClcbiAgICAgICAgICAgIHRjcy5lcShpKS5maW5kKFwid1xcXFw6dGNQcj53XFxcXDp0Y1dcIikuYXR0cihcInc6d1wiLGNvbHNbaV0pXG4gICAgICAgICAgICBpZihjb2xzLmxlbmd0aD5pKzEpe1xuICAgICAgICAgICAgICAgIHRjcy5lcShpKzEpLmZpbmQoXCJ3XFxcXDp0Y1ByPndcXFxcOnRjV1wiKS5hdHRyKFwidzp3XCIsY29sc1tpKzFdKVxuICAgICAgICAgICAgfVxuXHRcdH0pXG5cdH1cblxuICAgIG1ha2Uocm93cyxjb2xzKXtcblx0XHRjb2xzPWNvbHMubWFwKHc9PnRoaXMuZmlsZS5weDJkeGEodykpXG5cdFx0dGhpcy5ub2RlLmZpbmQoXCJ3XFxcXDp0YmxHcmlkXCIpLmVtcHR5KClcbiAgICAgICAgICAgIC5hcHBlbmQoY29scy5tYXAodz0+YDx3OmdyaWRDb2wgdzp3PVwiJHt3fVwiLz5gKS5qb2luKFwiXCIpKVxuXG4gICAgICAgIGxldCBlbFJvd3M9bmV3IEFycmF5KHJvd3MpLmZpbGwoMClcbiAgICAgICAgICAgICAgICAubWFwKGE9PntcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPHc6dHI+XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xzLm1hcCh3PT50aGlzLnRlbXBsYXRlX3RjKHcpKS5qb2luKFwiXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI8L3c6dHI+XCJcbiAgICAgICAgICAgICAgICAgICAgXS5qb2luKFwiXCIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICB0aGlzLm5vZGUuYXBwZW5kKHRoaXMudHJpbShlbFJvd3Muam9pbihcIlwiKSkpXG5cbiAgICAgICAgdGhpcy5tYWtlU3R5bGVSZWFkeSgpXG4gICAgfVxuXG4gICAgbWFrZVN0eWxlUmVhZHkoKXtcbiAgICAgICAgY29uc3QgJD10aGlzLmZpbGUuZG9jLm9mZmljZURvY3VtZW50LnN0eWxlc1xuXHRcdGlmKCQoJ3dcXFxcOnN0eWxlW3dcXFxcOnN0eWxlSWQ9XCJUYWJsZU5vcm1hbFwiXScpLmxlbmd0aD09MCl7XG4gICAgICAgICAgICBjb25zdCBzdHlsZU5vZGU9JCh0aGlzLnRyaW0oVEFCTEVfU1RZTEVfTm9ybWFsKSkuaW5zZXJ0QWZ0ZXIoJChgd1xcXFw6c3R5bGVbd1xcXFw6ZGVmYXVsdD1cIjFcIl1gKS5sYXN0KCkpXG4gICAgICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChzdHlsZU5vZGUpXG4gICAgICAgIH1cblxuICAgICAgICBpZigkKGB3XFxcXDpzdHlsZVt3XFxcXDpzdHlsZUlkPVwiVGFibGVHcmlkXCJdYCkubGVuZ3RoPT0wKXtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlTm9kZT0kKHRoaXMudHJpbShUQUJMRV9TVFlMRV9HcmlkKSkuYXBwZW5kVG8oJChgd1xcXFw6c3R5bGVzYCkpXG4gICAgICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChzdHlsZU5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZW1wbGF0ZV90Yyh3KXtcbiAgICAgICAgcmV0dXJuIGA8dzp0Yz4ke3chPXVuZGVmaW5lZCA/IGA8dzp0Y1ByPjx3OnRjVyB3Onc9XCIke3d9XCIgdzp0eXBlPVwiZHhhXCIvPjwvdzp0Y1ByPmAgOiBcIlwifTx3OnA+PHc6cj48dzp0Pjwvdzp0PjwvdzpyPjwvdzpwPjwvdzp0Yz5gXG4gICAgfVxuXG4gICAgdGVtcGxhdGUocHJvcHMpe1xuICAgICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPHc6dGJsPlxuICAgICAgICAgICAgICAgIDx3OnRibFByPlxuICAgICAgICAgICAgICAgICAgICA8dzp0YmxTdHlsZSB3OnZhbD1cIlRhYmxlR3JpZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPHc6dGJsVyB3Onc9XCIwXCIgdzp0eXBlPVwiYXV0b1wiLz5cbiAgICAgICAgICAgICAgICAgICAgPHc6dGJsTG9vayB3OnZhbD1cIjA0QTBcIiB3Om5vVkJhbmQ9XCIxXCIgdzpub0hCYW5kPVwiMFwiIHc6bGFzdENvbHVtbj1cIjBcIiB3OmZpcnN0Q29sdW1uPVwiMVwiIHc6bGFzdFJvdz1cIjBcIiB3OmZpcnN0Um93PVwiMVwiLz5cbiAgICAgICAgICAgICAgICA8L3c6dGJsUHI+XG4gICAgICAgICAgICAgICAgPHc6dGJsR3JpZD5cbiAgICAgICAgICAgICAgICA8L3c6dGJsR3JpZD5cbiAgICAgICAgICAgIDwvdzp0Ymw+XG4gICAgICAgIGBcbiAgICB9XG59XG5cbmNvbnN0IFRBQkxFX1NUWUxFX05vcm1hbD1gXG4gICAgPHc6c3R5bGUgdzp0eXBlPVwidGFibGVcIiB3OmRlZmF1bHQ9XCIxXCIgdzpzdHlsZUlkPVwiVGFibGVOb3JtYWxcIj5cbiAgICAgICAgPHc6bmFtZSB3OnZhbD1cIk5vcm1hbCBUYWJsZVwiLz5cbiAgICAgICAgPHc6dWlQcmlvcml0eSB3OnZhbD1cIjk5XCIvPlxuICAgICAgICA8dzpzZW1pSGlkZGVuLz5cbiAgICAgICAgPHc6dW5oaWRlV2hlblVzZWQvPlxuICAgICAgICA8dzp0YmxQcj5cbiAgICAgICAgICAgIDx3OnRibEluZCB3Onc9XCIwXCIgdzp0eXBlPVwiZHhhXCIvPlxuICAgICAgICAgICAgPHc6dGJsQ2VsbE1hcj5cbiAgICAgICAgICAgICAgICA8dzp0b3Agdzp3PVwiMFwiIHc6dHlwZT1cImR4YVwiLz5cbiAgICAgICAgICAgICAgICA8dzpsZWZ0IHc6dz1cIjEwOFwiIHc6dHlwZT1cImR4YVwiLz5cbiAgICAgICAgICAgICAgICA8dzpib3R0b20gdzp3PVwiMFwiIHc6dHlwZT1cImR4YVwiLz5cbiAgICAgICAgICAgICAgICA8dzpyaWdodCB3Onc9XCIxMDhcIiB3OnR5cGU9XCJkeGFcIi8+XG4gICAgICAgICAgICA8L3c6dGJsQ2VsbE1hcj5cbiAgICAgICAgPC93OnRibFByPlxuICAgIDwvdzpzdHlsZT5cbmBcblxuY29uc3QgVEFCTEVfU1RZTEVfR3JpZD1gXG4gICAgPHc6c3R5bGUgdzp0eXBlPVwidGFibGVcIiB3OnN0eWxlSWQ9XCJUYWJsZUdyaWRcIj5cbiAgICAgICAgPHc6bmFtZSB3OnZhbD1cIlRhYmxlIEdyaWRcIi8+XG4gICAgICAgIDx3OmJhc2VkT24gdzp2YWw9XCJUYWJsZU5vcm1hbFwiLz5cbiAgICAgICAgPHc6dWlQcmlvcml0eSB3OnZhbD1cIjM5XCIvPlxuICAgICAgICA8dzpyc2lkIHc6dmFsPVwiMDAwMTY0RTBcIi8+XG4gICAgICAgIDx3OnRibFByPlxuICAgICAgICAgICAgPHc6dGJsQm9yZGVycz5cbiAgICAgICAgICAgICAgICA8dzp0b3Agdzp2YWw9XCJzaW5nbGVcIiB3OnN6PVwiNFwiIHc6c3BhY2U9XCIwXCIgdzpjb2xvcj1cImF1dG9cIi8+XG4gICAgICAgICAgICAgICAgPHc6bGVmdCB3OnZhbD1cInNpbmdsZVwiIHc6c3o9XCI0XCIgdzpzcGFjZT1cIjBcIiB3OmNvbG9yPVwiYXV0b1wiLz5cbiAgICAgICAgICAgICAgICA8dzpib3R0b20gdzp2YWw9XCJzaW5nbGVcIiB3OnN6PVwiNFwiIHc6c3BhY2U9XCIwXCIgdzpjb2xvcj1cImF1dG9cIi8+XG4gICAgICAgICAgICAgICAgPHc6cmlnaHQgdzp2YWw9XCJzaW5nbGVcIiB3OnN6PVwiNFwiIHc6c3BhY2U9XCIwXCIgdzpjb2xvcj1cImF1dG9cIi8+XG4gICAgICAgICAgICAgICAgPHc6aW5zaWRlSCB3OnZhbD1cInNpbmdsZVwiIHc6c3o9XCI0XCIgdzpzcGFjZT1cIjBcIiB3OmNvbG9yPVwiYXV0b1wiLz5cbiAgICAgICAgICAgICAgICA8dzppbnNpZGVWIHc6dmFsPVwic2luZ2xlXCIgdzpzej1cIjRcIiB3OnNwYWNlPVwiMFwiIHc6Y29sb3I9XCJhdXRvXCIvPlxuICAgICAgICAgICAgPC93OnRibEJvcmRlcnM+XG4gICAgICAgIDwvdzp0YmxQcj5cbiAgICA8L3c6c3R5bGU+XG5gXG4iLCJpbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlXCJcblxuZXhwb3J0IGNsYXNzIFRleHQgZXh0ZW5kcyBCYXNle1xuXHR0ZW1wbGF0ZSgpe1xuXHRcdHJldHVybiBgPHc6dD48L3c6dD5gXG5cdH1cblxuXHR1cGRhdGUoY2hhbmdpbmcpe1xuXHRcdHRoaXMuYXBwbHkoY2hhbmdpbmcpXG5cdFx0Y29uc3QgY29udGFpbmVyPXRoaXMubm9kZS5wYXJlbnQoKS5jbG9zZXN0KCdbeHhpZF0nKVxuXHRcdGlmKGNvbnRhaW5lci5sZW5ndGgpe1xuXHQgICAgICAgIHRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKGNvbnRhaW5lcilcblx0XHR9ZWxzZXtcblx0XHRcdC8vaW4gcHJvY2Vzc1xuXHRcdH1cblx0fVxuXG5cdGNoaWxkcmVuKHRleHQpe1xuXHRcdHRoaXMubm9kZS50ZXh0KHRleHQpXG5cdFx0aWYodGV4dC5zdGFydHNXaXRoKFwiIFwiKSB8fCB0ZXh0LmVuZHNXaXRoKFwiIFwiKSl7XG5cdFx0XHR0aGlzLm5vZGUuYXR0cihcInhtbDpzcGFjZVwiLFwicHJlc2VydmVcIilcblx0XHR9XG5cdH1cblxuXHRnb3Qobm9kZU5hbWUpe1xuXHRcdHJldHVybiBzdXBlci5nb3Qobm9kZU5hbWUsXCJ3OnJcIiwgXCJ3OnJQclwiKVxuXHR9XG5cblx0c3BsaXQoYXQsZmlyc3RLZWVwSWQ9dHJ1ZSl7XG5cdFx0Y29uc3QgdGV4dD10aGlzLm5vZGUudGV4dCgpXG5cdFx0YXQ9YXQ8MCA/IHRleHQubGVuZ3RoK2F0IDogYXRcblx0XHRpZihhdD49dGV4dC5sZW5ndGggfHwgYXQ9PTApe1xuXHRcdFx0cmV0dXJuIFt7aWQ6dGhpcy5ub2RlLmF0dHIoJ3h4aWQnKSxhdDphdH0se2lkOnRoaXMubm9kZS5hdHRyKCd4eGlkJyksYXQ6YXR9XVxuXHRcdH1cblx0XHR0aGlzLm5vZGUudGV4dCh0ZXh0LnN1YnN0cmluZygwLGF0KSlcblx0XHRjb25zdCByMD10aGlzLm5vZGUuY2xvc2VzdChcIndcXFxcOnJcIilcblx0XHR2YXIgcjE9cjAuY2xvbmUoKVxuXHRcdHIxLmZpbmQoXCJ3XFxcXDp0XCIpLnJlbW92ZSgpXG5cdFx0cjE9cjEuYXBwZW5kKHRoaXMubm9kZS5jbG9uZSgpLnRleHQodGV4dC5zdWJzdHJpbmcoYXQpKSkuaW5zZXJ0QWZ0ZXIocjApXG5cdFx0Oygocik9Pntcblx0XHRcdHIucmVtb3ZlQXR0cigneHhpZCcpXG5cdFx0XHRyLmZpbmQoJ1t4eGlkXScpLnJlbW92ZUF0dHIoJ3h4aWQnKVxuXHRcdH0pKGZpcnN0S2VlcElkID8gcjEgOiByMCk7XG5cblx0XHR0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChyMC5wYXJlbnQoKS5jbG9zZXN0KGBbeHhpZF1gKSlcblx0XHRyZXR1cm4gW3tpZDp0aGlzLm5vZGUuYXR0cigneHhpZCcpLGF0OmF0fSx7aWQ6cjEuZmluZChcIndcXFxcOnRcIikuYXR0cigneHhpZCcpLCBhdDowfV1cblx0fVxuXG5cdHJlbW92ZSgpe1xuXHRcdHRoaXMubm9kZS5yZW1vdmUoKVxuXHR9XG5cblx0Zm9udHMoZm9udHMpe1xuXHRcdHRoaXMuZ290KFwidzpyRm9udHNcIikuYXR0cihcInc6YXNjaWlcIixmb250cylcblx0fVxuXG5cdHNpemUoc2l6ZSl7XG5cdFx0dGhpcy5nb3QoXCJ3OnN6XCIpLmF0dHIoXCJ3OnZhbFwiLHBhcnNlSW50KHNpemUpKjIpXG5cdFx0dGhpcy5nb3QoXCJ3OnN6Q3NcIikuYXR0cihcInc6dmFsXCIscGFyc2VJbnQoc2l6ZSkqMilcblx0fVxuXG5cdGJvbGQoYil7XG5cdFx0dGhpcy5fdG9nZ2xlKFwidzpiXCIsYilcblx0fVxuXG5cdGl0YWxpYyhiKXtcblx0XHR0aGlzLl90b2dnbGUoXCJ3OmlcIixiKVxuXHR9XG5cblx0dmFuaXNoKGIpe1xuXHRcdHRoaXMuX3RvZ2dsZShcInc6dmFuaXNoXCIsYilcblx0fVxuXG5cdGNvbG9yKGNvbG9yLGEsIGF0dHI9XCJ3OmNvbG9yXCIpe1xuXHRcdGxldCBub2RlPXRoaXMuZ290KGF0dHIpXG5cdFx0aWYoY29sb3Ipe1xuXHRcdFx0bm9kZS5hdHRyKFwidzp2YWxcIiwgY29sb3IpXG5cdFx0fWVsc2V7XG5cdFx0XHRub2RlLnJlbW92ZSgpXG5cdFx0fVxuXHR9XG5cblx0aGlnaGxpZ2h0KGNvbG9yLGEpe1xuXHRcdHRoaXMuY29sb3IoY29sb3IsYSxcInc6aGlnaGxpZ2h0XCIpXG5cdH1cblxuXHRib3JkZXIoKXtcblx0XHRsZXQgbm9kZT10aGlzLmdvdChcInc6YmRyXCIpXG5cdFx0aWYoIW5vZGUuYXR0cihcInc6dmFsXCIpKXtcblx0XHRcdG5vZGUucmVwbGFjZVdpdGgoYDx3OmJkciB3OnZhbD1cInNpbmdsZVwiIHc6c3o9XCI0XCIgdzpzcGFjZT1cIjBcIiB3OmNvbG9yPVwiYXV0b1wiLz5gKVxuXHRcdH1lbHNle1xuXHRcdFx0bm9kZS5yZW1vdmUoKVxuXHRcdH1cblx0fVxuXG5cdHVuZGVybGluZSh0eXBlKXtcblx0XHRsZXQgbm9kZT10aGlzLmdvdChcInc6dVwiKVxuXHRcdGlmKHR5cGUpe1xuXHRcdFx0bm9kZS5hdHRyKFwidzp2YWxcIix0eXBlKVxuXHRcdH1lbHNle1xuXHRcdFx0bm9kZS5yZW1vdmUoKVxuXHRcdH1cblx0fVxuXG5cdHN0cmlrZShiKXtcblx0XHR0aGlzLl90b2dnbGUoXCJ3OnN0cmlrZVwiLGIpXG5cdH1cblxuXHR0YWIoe3NoaWZ0S2V5LGF0PTB9KXtcblxuXHR9XG5cblx0X3RvZ2dsZShrLGIpe1xuXHRcdGxldCBub2RlPXRoaXMuZ290KGspXG5cdFx0aWYoYil7XG5cdFx0XHRub2RlLmF0dHIoXCJ3OnZhbFwiLFwiMVwiKVxuXHRcdH1lbHNle1xuXHRcdFx0bm9kZS5yZW1vdmUoKVxuXHRcdH1cblx0fVxuXG5cdF9jbGVhcigpe1xuXHRcdGxldCByPXRoaXMubm9kZS5jbG9zZXN0KFwid1xcXFw6clwiKVxuXHRcdGxldCByUHI9ci5jaGlsZHJlbihcIndcXFxcOnJQclwiKVxuXHRcdHJQci5yZW1vdmUoKVxuXHR9XG59XG4iLCJpbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlXCJcblxuZXhwb3J0IGNsYXNzIFNlY3Rpb24gZXh0ZW5kcyBCYXNle1xuXHRnb3Qobm9kZU5hbWUpe1xuXHRcdHJldHVybiB0aGlzLm5vZGUuY2hpbGRyZW4obm9kZU5hbWUucmVwbGFjZShcIjpcIiwgXCJcXFxcOlwiKSlcblx0fVxuXG5cdGNvbHMoY29scyl7XG5cdFx0aWYoY29scy5sZW5ndGg+MSAmJiBuZXcgU2V0KGNvbHMpLnNpemU9PTEpe1xuXHRcdFx0Y29scz1bY29scy5sZW5ndGhdXG5cdFx0fVxuXG5cdFx0aWYoY29scy5sZW5ndGg9PTEgJiYgY29sc1swXT09MSl7XG5cdFx0XHRjb2xzPVtdXG5cdFx0fVxuXG5cdFx0Y29uc3Qgd0NvbHM9dGhpcy5nb3QoXCJ3OmNvbHNcIilcblx0XHRjb25zdCBzcGFjZT03MjBcblx0XHRzd2l0Y2goY29scy5sZW5ndGgpe1xuXHRcdGNhc2UgMDpcblx0XHRcdHdDb2xzLnJlbW92ZUF0dHIoJ3c6bnVtJykucmVtb3ZlQXR0cigndzplcXVhbFdpZHRoJykuY2hpbGRyZW4oKS5yZW1vdmUoKVxuXHRcdGJyZWFrXHRcblx0XHRjYXNlIDE6XG5cdFx0XHR3Q29scy5hdHRyKCd3Om51bScsY29sc1swXSkuYXR0cigndzpzcGFjZScsc3BhY2UpLmNoaWxkcmVuKCkucmVtb3ZlKClcblx0XHRicmVha1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR3Q29scy5lbXB0eSgpXG5cdFx0XHR3Q29scy5hdHRyKCd3OmVxdWFsV2lkdGgnLFwiMFwiKVxuXHRcdFx0d0NvbHMuYXR0cigndzpudW0nLGNvbHMubGVuZ3RoKVxuXHRcdFx0Y29uc3Qgdz1wYXJzZUludCh0aGlzLm5vZGUuY2hpbGRyZW4oXCJ3XFxcXDpwZ1N6XCIpLmF0dHIoJ3c6dycpKVxuXHRcdFx0Y29uc3Qge1widzpsZWZ0XCI6bCwgXCJ3OnJpZ2h0XCI6ciwgbGVmdD1wYXJzZUludChsKSwgcmlnaHQ9cGFyc2VJbnQocil9PXRoaXMubm9kZS5jaGlsZHJlbihcIndcXFxcOnBnTWFyXCIpWzBdLmF0dHJpYnNcblx0XHRcdGNvbnN0IHcxPSh3LXJpZ2h0LWxlZnQtKGNvbHMubGVuZ3RoLTEpKjcyMCkvY29scy5yZWR1Y2UoKG4saSk9Pm4raSwwKVxuXHRcdFx0d0NvbHMuYXBwZW5kKGNvbHMubWFwKGk9PmA8dzpjb2wgdzp3PVwiJHtwYXJzZUludCh3MSppKX1cIiB3OnNwYWNlPVwiJHtzcGFjZX1cIi8+YCkpXG5cdFx0XHR3Q29scy5jaGlsZHJlbigpLmxhc3QoKS5yZW1vdmVBdHRyKFwidzpzcGFjZVwiKVxuXHRcdGJyZWFrXG5cdFx0fVxuXHR9XG5cblx0c2l6ZSh7d2lkdGgsaGVpZ2h0fSl7XG5cdFx0dGhpcy5nb3QoXCJ3OnBnU3pcIikuYXR0cigndzp3Jyx0aGlzLmZpbGUuY20yZHhhKHdpZHRoKSkuYXR0cigndzpoJyx0aGlzLmZpbGUuY20yZHhhKGhlaWdodCkpXG5cdH1cblxuXHRtYXJnaW4oW3RvcCxyaWdodD10b3AsYm90dG9tPXRvcCxsZWZ0PXJpZ2h0XSl7XG5cdFx0dGhpcy5nb3QoXCJ3OnBnTWFyXCIpXG5cdFx0XHQuYXR0cigndzp0b3AnLHRoaXMuZmlsZS5jbTJkeGEodG9wKSlcblx0XHRcdC5hdHRyKCd3OnJpZ2h0Jyx0aGlzLmZpbGUuY20yZHhhKHJpZ2h0KSlcblx0XHRcdC5hdHRyKCd3OmJvdHRvbScsdGhpcy5maWxlLmNtMmR4YShib3R0b20pKVxuXHRcdFx0LmF0dHIoJ3c6bGVmdCcsdGhpcy5maWxlLmNtMmR4YShsZWZ0KSlcblx0fVxuXG5cdG9yaWVudGF0aW9uKG8pe1xuXHRcdGNvbnN0ICRzej10aGlzLmdvdChcInc6cGdTelwiKVxuXHRcdGNvbnN0IHtcInc6d1wiOncsIFwidzpoXCI6aH09JHN6WzBdLmF0dHJpYnNcblx0XHRpZigocGFyc2VJbnQodyk8cGFyc2VJbnQoaCkgJiYgbz09XCJsYW5kc2NhcGVcIil8fChwYXJzZUludCh3KT5wYXJzZUludChoKSAmJiBvPT1cInBvcnRyYWl0XCIpKXtcblx0XHRcdGlmKG89PVwicG9ydHJhaXRcIil7XG5cdFx0XHRcdCRzei5yZW1vdmVBdHRyKFwidzpvcmllbnRcIilcblx0XHRcdH1lbHNle1xuXHRcdFx0XHQkc3ouYXR0cihcInc6b3JpZW50XCIsbylcblx0XHRcdH1cblx0XHRcdCRzei5hdHRyKFwidzpoXCIsdykuYXR0cihcInc6d1wiLGgpXG5cdFx0XHRjb25zdCAkbWFyPXRoaXMuZ290KFwidzpwZ01hclwiKVxuXHRcdFx0Y29uc3Qge1widzp0b3BcIjp0LFwidzpib3R0b21cIjpiLFwidzpsZWZ0XCI6bCxcInc6cmlnaHRcIjpyfT0kbWFyWzBdLmF0dHJpYnNcblx0XHRcdCRtYXIuYXR0cihcInc6dG9wXCIscikuYXR0cihcInc6cmlnaHRcIixiKS5hdHRyKFwidzpib3R0b21cIixsKS5hdHRyKFwidzpsZWZ0XCIsdClcblx0XHR9XG5cdH1cblxuXHR0ZW1wbGF0ZShwcm9wcyl7XG5cdFx0cmV0dXJuIGBcblx0XHQ8dzpwPlxuXHRcdFx0PHc6cFByPlxuXHRcdFx0XHQ8dzpzZWN0UHIgdzpyc2lkUj1cIjAwMkMxNDMwXCI+XG5cdFx0XHRcdFx0PHc6cGdTeiB3Onc9XCIxMjI0MFwiIHc6aD1cIjE1ODQwXCIvPlxuXHRcdFx0XHRcdDx3OnBnTWFyIHc6dG9wPVwiMTQ0MFwiIHc6cmlnaHQ9XCIxNDQwXCIgdzpib3R0b209XCIxNDQwXCIgdzpsZWZ0PVwiMTQ0MFwiIHc6aGVhZGVyPVwiNzA4XCIgdzpmb290ZXI9XCI3MDhcIiB3Omd1dHRlcj1cIjBcIi8+XG5cdFx0XHRcdFx0PHc6Y29scyB3OnNwYWNlPVwiNzA4XCIvPlxuXHRcdFx0XHRcdDx3OmRvY0dyaWQgdzpsaW5lUGl0Y2g9XCIzNjBcIi8+XG5cdFx0XHRcdDwvdzpzZWN0UHI+XG5cdFx0XHQ8L3c6cFByPlxuXHRcdDwvdzpwPlxuXHRcdGBcblx0fVxufSIsImltcG9ydCBTdHlsZSBmcm9tIFwiLi4vLi4vcmVuZGVyL3N0eWxlcy9udW1iZXJpbmdcIlxuZXhwb3J0IGRlZmF1bHQgY2xhc3N7XG4gICAgc3RhdGljIFRlbXBsYXRlPShpZCxhaWQpPT5gXG4gICAgICAgIDx3Om51bSB3Om51bUlkPVwiJHtpZH1cIj5cbiAgICAgICAgICA8dzphYnN0cmFjdE51bUlkIHc6dmFsPVwiJHthaWR9XCIvPlxuICAgICAgICA8L3c6bnVtPlxuICAgIGBcbiAgICBzdGF0aWMgTnVtZXJpYz1pZD0+YFxuICAgICAgICA8dzphYnN0cmFjdE51bSB3OmFic3RyYWN0TnVtSWQ9XCIke2lkfVwiIHcxNTpyZXN0YXJ0TnVtYmVyaW5nQWZ0ZXJCcmVhaz1cIjBcIj5cbiAgICAgICAgICA8dzpuc2lkIHc6dmFsPVwiNEVCNzdERTRcIi8+XG4gICAgICAgICAgPHc6bXVsdGlMZXZlbFR5cGUgdzp2YWw9XCJoeWJyaWRNdWx0aWxldmVsXCIvPlxuICAgICAgICAgIDx3OnRtcGwgdzp2YWw9XCJERTlFRDFFOFwiLz5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiMFwiIHc6dHBsYz1cIjgyNTBDMzY0XCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJkZWNpbWFsXCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIiUxLlwiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwibGVmdFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjcyMFwiIHc6aGFuZ2luZz1cIjM2MFwiLz5cbiAgICAgICAgICAgIDwvdzpwUHI+XG4gICAgICAgICAgPC93Omx2bD5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiMVwiIHc6dHBsYz1cIjA0MDkwMDE5XCIgdzp0ZW50YXRpdmU9XCIxXCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJsb3dlckxldHRlclwiLz5cbiAgICAgICAgICAgIDx3Omx2bFRleHQgdzp2YWw9XCIlMi5cIi8+XG4gICAgICAgICAgICA8dzpsdmxKYyB3OnZhbD1cImxlZnRcIi8+XG4gICAgICAgICAgICA8dzpwUHI+XG4gICAgICAgICAgICAgIDx3OmluZCB3OmxlZnQ9XCIxNDQwXCIgdzpoYW5naW5nPVwiMzYwXCIvPlxuICAgICAgICAgICAgPC93OnBQcj5cbiAgICAgICAgICA8L3c6bHZsPlxuICAgICAgICAgIDx3Omx2bCB3Omlsdmw9XCIyXCIgdzp0cGxjPVwiMDQwOTAwMUJcIiB3OnRlbnRhdGl2ZT1cIjFcIj5cbiAgICAgICAgICAgIDx3OnN0YXJ0IHc6dmFsPVwiMVwiLz5cbiAgICAgICAgICAgIDx3Om51bUZtdCB3OnZhbD1cImxvd2VyUm9tYW5cIi8+XG4gICAgICAgICAgICA8dzpsdmxUZXh0IHc6dmFsPVwiJTMuXCIvPlxuICAgICAgICAgICAgPHc6bHZsSmMgdzp2YWw9XCJyaWdodFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjIxNjBcIiB3Omhhbmdpbmc9XCIxODBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgIDwvdzpsdmw+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjNcIiB3OnRwbGM9XCIwNDA5MDAwRlwiIHc6dGVudGF0aXZlPVwiMVwiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwiZGVjaW1hbFwiLz5cbiAgICAgICAgICAgIDx3Omx2bFRleHQgdzp2YWw9XCIlNC5cIi8+XG4gICAgICAgICAgICA8dzpsdmxKYyB3OnZhbD1cImxlZnRcIi8+XG4gICAgICAgICAgICA8dzpwUHI+XG4gICAgICAgICAgICAgIDx3OmluZCB3OmxlZnQ9XCIyODgwXCIgdzpoYW5naW5nPVwiMzYwXCIvPlxuICAgICAgICAgICAgPC93OnBQcj5cbiAgICAgICAgICA8L3c6bHZsPlxuICAgICAgICAgIDx3Omx2bCB3Omlsdmw9XCI0XCIgdzp0cGxjPVwiMDQwOTAwMTlcIiB3OnRlbnRhdGl2ZT1cIjFcIj5cbiAgICAgICAgICAgIDx3OnN0YXJ0IHc6dmFsPVwiMVwiLz5cbiAgICAgICAgICAgIDx3Om51bUZtdCB3OnZhbD1cImxvd2VyTGV0dGVyXCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIiU1LlwiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwibGVmdFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjM2MDBcIiB3Omhhbmdpbmc9XCIzNjBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgIDwvdzpsdmw+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjVcIiB3OnRwbGM9XCIwNDA5MDAxQlwiIHc6dGVudGF0aXZlPVwiMVwiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwibG93ZXJSb21hblwiLz5cbiAgICAgICAgICAgIDx3Omx2bFRleHQgdzp2YWw9XCIlNi5cIi8+XG4gICAgICAgICAgICA8dzpsdmxKYyB3OnZhbD1cInJpZ2h0XCIvPlxuICAgICAgICAgICAgPHc6cFByPlxuICAgICAgICAgICAgICA8dzppbmQgdzpsZWZ0PVwiNDMyMFwiIHc6aGFuZ2luZz1cIjE4MFwiLz5cbiAgICAgICAgICAgIDwvdzpwUHI+XG4gICAgICAgICAgPC93Omx2bD5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiNlwiIHc6dHBsYz1cIjA0MDkwMDBGXCIgdzp0ZW50YXRpdmU9XCIxXCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJkZWNpbWFsXCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIiU3LlwiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwibGVmdFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjUwNDBcIiB3Omhhbmdpbmc9XCIzNjBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgIDwvdzpsdmw+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjdcIiB3OnRwbGM9XCIwNDA5MDAxOVwiIHc6dGVudGF0aXZlPVwiMVwiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwibG93ZXJMZXR0ZXJcIi8+XG4gICAgICAgICAgICA8dzpsdmxUZXh0IHc6dmFsPVwiJTguXCIvPlxuICAgICAgICAgICAgPHc6bHZsSmMgdzp2YWw9XCJsZWZ0XCIvPlxuICAgICAgICAgICAgPHc6cFByPlxuICAgICAgICAgICAgICA8dzppbmQgdzpsZWZ0PVwiNTc2MFwiIHc6aGFuZ2luZz1cIjM2MFwiLz5cbiAgICAgICAgICAgIDwvdzpwUHI+XG4gICAgICAgICAgPC93Omx2bD5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiOFwiIHc6dHBsYz1cIjA0MDkwMDFCXCIgdzp0ZW50YXRpdmU9XCIxXCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJsb3dlclJvbWFuXCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIiU5LlwiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwicmlnaHRcIi8+XG4gICAgICAgICAgICA8dzpwUHI+XG4gICAgICAgICAgICAgIDx3OmluZCB3OmxlZnQ9XCI2NDgwXCIgdzpoYW5naW5nPVwiMTgwXCIvPlxuICAgICAgICAgICAgPC93OnBQcj5cbiAgICAgICAgICA8L3c6bHZsPlxuICAgICAgICA8L3c6YWJzdHJhY3ROdW0+XG4gICAgYFxuICAgIHN0YXRpYyBCdWxsZXQ9aWQ9PmBcbiAgICAgICAgPHc6YWJzdHJhY3ROdW0gdzphYnN0cmFjdE51bUlkPVwiJHtpZH1cIiB3MTU6cmVzdGFydE51bWJlcmluZ0FmdGVyQnJlYWs9XCIwXCI+XG4gICAgICAgICAgPHc6bnNpZCB3OnZhbD1cIjc1MDA0RkI1XCIvPlxuICAgICAgICAgIDx3Om11bHRpTGV2ZWxUeXBlIHc6dmFsPVwiaHlicmlkTXVsdGlsZXZlbFwiLz5cbiAgICAgICAgICA8dzp0bXBsIHc6dmFsPVwiNzYwQzIwRTRcIi8+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjBcIiB3OnRwbGM9XCIwNDA5MDAwM1wiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwiYnVsbGV0XCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIm9cIi8+XG4gICAgICAgICAgICA8dzpsdmxKYyB3OnZhbD1cImxlZnRcIi8+XG4gICAgICAgICAgICA8dzpwUHI+XG4gICAgICAgICAgICAgIDx3OmluZCB3OmxlZnQ9XCI3MjBcIiB3Omhhbmdpbmc9XCIzNjBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgICAgPHc6clByPlxuICAgICAgICAgICAgICA8dzpyRm9udHMgdzphc2NpaT1cIkNvdXJpZXIgTmV3XCIgdzpoQW5zaT1cIkNvdXJpZXIgTmV3XCIgdzpjcz1cIkNvdXJpZXIgTmV3XCIgdzpoaW50PVwiZGVmYXVsdFwiLz5cbiAgICAgICAgICAgIDwvdzpyUHI+XG4gICAgICAgICAgPC93Omx2bD5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiMVwiIHc6dHBsYz1cIjA0MDkwMDAzXCIgdzp0ZW50YXRpdmU9XCIxXCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJidWxsZXRcIi8+XG4gICAgICAgICAgICA8dzpsdmxUZXh0IHc6dmFsPVwib1wiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwibGVmdFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjE0NDBcIiB3Omhhbmdpbmc9XCIzNjBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgICAgPHc6clByPlxuICAgICAgICAgICAgICA8dzpyRm9udHMgdzphc2NpaT1cIkNvdXJpZXIgTmV3XCIgdzpoQW5zaT1cIkNvdXJpZXIgTmV3XCIgdzpjcz1cIkNvdXJpZXIgTmV3XCIgdzpoaW50PVwiZGVmYXVsdFwiLz5cbiAgICAgICAgICAgIDwvdzpyUHI+XG4gICAgICAgICAgPC93Omx2bD5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiMlwiIHc6dHBsYz1cIjA0MDkwMDA1XCIgdzp0ZW50YXRpdmU9XCIxXCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJidWxsZXRcIi8+XG4gICAgICAgICAgICA8dzpsdmxUZXh0IHc6dmFsPVwi74KnXCIvPlxuICAgICAgICAgICAgPHc6bHZsSmMgdzp2YWw9XCJsZWZ0XCIvPlxuICAgICAgICAgICAgPHc6cFByPlxuICAgICAgICAgICAgICA8dzppbmQgdzpsZWZ0PVwiMjE2MFwiIHc6aGFuZ2luZz1cIjM2MFwiLz5cbiAgICAgICAgICAgIDwvdzpwUHI+XG4gICAgICAgICAgICA8dzpyUHI+XG4gICAgICAgICAgICAgIDx3OnJGb250cyB3OmFzY2lpPVwiV2luZ2RpbmdzXCIgdzpoQW5zaT1cIldpbmdkaW5nc1wiIHc6aGludD1cImRlZmF1bHRcIi8+XG4gICAgICAgICAgICA8L3c6clByPlxuICAgICAgICAgIDwvdzpsdmw+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjNcIiB3OnRwbGM9XCIwNDA5MDAwMVwiIHc6dGVudGF0aXZlPVwiMVwiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwiYnVsbGV0XCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIu+Ct1wiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwibGVmdFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjI4ODBcIiB3Omhhbmdpbmc9XCIzNjBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgICAgPHc6clByPlxuICAgICAgICAgICAgICA8dzpyRm9udHMgdzphc2NpaT1cIlN5bWJvbFwiIHc6aEFuc2k9XCJTeW1ib2xcIiB3OmhpbnQ9XCJkZWZhdWx0XCIvPlxuICAgICAgICAgICAgPC93OnJQcj5cbiAgICAgICAgICA8L3c6bHZsPlxuICAgICAgICAgIDx3Omx2bCB3Omlsdmw9XCI0XCIgdzp0cGxjPVwiMDQwOTAwMDNcIiB3OnRlbnRhdGl2ZT1cIjFcIj5cbiAgICAgICAgICAgIDx3OnN0YXJ0IHc6dmFsPVwiMVwiLz5cbiAgICAgICAgICAgIDx3Om51bUZtdCB3OnZhbD1cImJ1bGxldFwiLz5cbiAgICAgICAgICAgIDx3Omx2bFRleHQgdzp2YWw9XCJvXCIvPlxuICAgICAgICAgICAgPHc6bHZsSmMgdzp2YWw9XCJsZWZ0XCIvPlxuICAgICAgICAgICAgPHc6cFByPlxuICAgICAgICAgICAgICA8dzppbmQgdzpsZWZ0PVwiMzYwMFwiIHc6aGFuZ2luZz1cIjM2MFwiLz5cbiAgICAgICAgICAgIDwvdzpwUHI+XG4gICAgICAgICAgICA8dzpyUHI+XG4gICAgICAgICAgICAgIDx3OnJGb250cyB3OmFzY2lpPVwiQ291cmllciBOZXdcIiB3OmhBbnNpPVwiQ291cmllciBOZXdcIiB3OmNzPVwiQ291cmllciBOZXdcIiB3OmhpbnQ9XCJkZWZhdWx0XCIvPlxuICAgICAgICAgICAgPC93OnJQcj5cbiAgICAgICAgICA8L3c6bHZsPlxuICAgICAgICAgIDx3Omx2bCB3Omlsdmw9XCI1XCIgdzp0cGxjPVwiMDQwOTAwMDVcIiB3OnRlbnRhdGl2ZT1cIjFcIj5cbiAgICAgICAgICAgIDx3OnN0YXJ0IHc6dmFsPVwiMVwiLz5cbiAgICAgICAgICAgIDx3Om51bUZtdCB3OnZhbD1cImJ1bGxldFwiLz5cbiAgICAgICAgICAgIDx3Omx2bFRleHQgdzp2YWw9XCLvgqdcIi8+XG4gICAgICAgICAgICA8dzpsdmxKYyB3OnZhbD1cImxlZnRcIi8+XG4gICAgICAgICAgICA8dzpwUHI+XG4gICAgICAgICAgICAgIDx3OmluZCB3OmxlZnQ9XCI0MzIwXCIgdzpoYW5naW5nPVwiMzYwXCIvPlxuICAgICAgICAgICAgPC93OnBQcj5cbiAgICAgICAgICAgIDx3OnJQcj5cbiAgICAgICAgICAgICAgPHc6ckZvbnRzIHc6YXNjaWk9XCJXaW5nZGluZ3NcIiB3OmhBbnNpPVwiV2luZ2RpbmdzXCIgdzpoaW50PVwiZGVmYXVsdFwiLz5cbiAgICAgICAgICAgIDwvdzpyUHI+XG4gICAgICAgICAgPC93Omx2bD5cbiAgICAgICAgICA8dzpsdmwgdzppbHZsPVwiNlwiIHc6dHBsYz1cIjA0MDkwMDAxXCIgdzp0ZW50YXRpdmU9XCIxXCI+XG4gICAgICAgICAgICA8dzpzdGFydCB3OnZhbD1cIjFcIi8+XG4gICAgICAgICAgICA8dzpudW1GbXQgdzp2YWw9XCJidWxsZXRcIi8+XG4gICAgICAgICAgICA8dzpsdmxUZXh0IHc6dmFsPVwi74K3XCIvPlxuICAgICAgICAgICAgPHc6bHZsSmMgdzp2YWw9XCJsZWZ0XCIvPlxuICAgICAgICAgICAgPHc6cFByPlxuICAgICAgICAgICAgICA8dzppbmQgdzpsZWZ0PVwiNTA0MFwiIHc6aGFuZ2luZz1cIjM2MFwiLz5cbiAgICAgICAgICAgIDwvdzpwUHI+XG4gICAgICAgICAgICA8dzpyUHI+XG4gICAgICAgICAgICAgIDx3OnJGb250cyB3OmFzY2lpPVwiU3ltYm9sXCIgdzpoQW5zaT1cIlN5bWJvbFwiIHc6aGludD1cImRlZmF1bHRcIi8+XG4gICAgICAgICAgICA8L3c6clByPlxuICAgICAgICAgIDwvdzpsdmw+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjdcIiB3OnRwbGM9XCIwNDA5MDAwM1wiIHc6dGVudGF0aXZlPVwiMVwiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwiYnVsbGV0XCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIm9cIi8+XG4gICAgICAgICAgICA8dzpsdmxKYyB3OnZhbD1cImxlZnRcIi8+XG4gICAgICAgICAgICA8dzpwUHI+XG4gICAgICAgICAgICAgIDx3OmluZCB3OmxlZnQ9XCI1NzYwXCIgdzpoYW5naW5nPVwiMzYwXCIvPlxuICAgICAgICAgICAgPC93OnBQcj5cbiAgICAgICAgICAgIDx3OnJQcj5cbiAgICAgICAgICAgICAgPHc6ckZvbnRzIHc6YXNjaWk9XCJDb3VyaWVyIE5ld1wiIHc6aEFuc2k9XCJDb3VyaWVyIE5ld1wiIHc6Y3M9XCJDb3VyaWVyIE5ld1wiIHc6aGludD1cImRlZmF1bHRcIi8+XG4gICAgICAgICAgICA8L3c6clByPlxuICAgICAgICAgIDwvdzpsdmw+XG4gICAgICAgICAgPHc6bHZsIHc6aWx2bD1cIjhcIiB3OnRwbGM9XCIwNDA5MDAwNVwiIHc6dGVudGF0aXZlPVwiMVwiPlxuICAgICAgICAgICAgPHc6c3RhcnQgdzp2YWw9XCIxXCIvPlxuICAgICAgICAgICAgPHc6bnVtRm10IHc6dmFsPVwiYnVsbGV0XCIvPlxuICAgICAgICAgICAgPHc6bHZsVGV4dCB3OnZhbD1cIu+Cp1wiLz5cbiAgICAgICAgICAgIDx3Omx2bEpjIHc6dmFsPVwibGVmdFwiLz5cbiAgICAgICAgICAgIDx3OnBQcj5cbiAgICAgICAgICAgICAgPHc6aW5kIHc6bGVmdD1cIjY0ODBcIiB3Omhhbmdpbmc9XCIzNjBcIi8+XG4gICAgICAgICAgICA8L3c6cFByPlxuICAgICAgICAgICAgPHc6clByPlxuICAgICAgICAgICAgICA8dzpyRm9udHMgdzphc2NpaT1cIldpbmdkaW5nc1wiIHc6aEFuc2k9XCJXaW5nZGluZ3NcIiB3OmhpbnQ9XCJkZWZhdWx0XCIvPlxuICAgICAgICAgICAgPC93OnJQcj5cbiAgICAgICAgICA8L3c6bHZsPlxuICAgICAgICA8L3c6YWJzdHJhY3ROdW0+XG4gICAgYFxufVxuIiwiaW1wb3J0IEVkaXRvciBmcm9tIFwiLi9iYXNlXCJcbmltcG9ydCBOdW1iZXJpbmcgZnJvbSBcIi4vbnVtYmVyaW5nXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYWdyYXBoIGV4dGVuZHMgRWRpdG9ye1xuXHRnb3Qobm9kZU5hbWUpe1xuXHRcdHJldHVybiBzdXBlci5nb3Qobm9kZU5hbWUsIFwidzpwXCIsIFwidzpwUHJcIilcblx0fVxuXG5cdGFsaWduKHR5cGUpe1xuXHRcdHRoaXMuZ290KFwidzpqY1wiKS5hdHRyKFwidzp2YWxcIix0eXBlKVxuXHR9XG5cblx0bnVtYmVyaW5nKHByb3BzKXtcblx0XHRjb25zdCBudW1Qcj10aGlzLmdvdChcInc6bnVtUHJcIilcblx0XHRpZighcHJvcHMpe1xuXHRcdFx0bnVtUHIucmVtb3ZlKClcblx0XHR9ZWxzZXtcblx0XHRcdGlmKCF0aGlzLmZpbGUuZG9jLm9mZmljZURvY3VtZW50Lm51bWJlcmluZyl7XG5cdFx0XHRcdHRoaXMuZmlsZS5kb2Mub2ZmaWNlRG9jdW1lbnQuYWRkTnVtYmVyaW5nUGFydCgpXG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHRoaXMubWFrZVN0eWxlUmVhZHkoKVxuXG5cdFx0XHRjb25zdCAkPXRoaXMuZmlsZS5kb2Mub2ZmaWNlRG9jdW1lbnQubnVtYmVyaW5nXG5cblx0XHRcdGNvbnN0IG51bUlkTGV2ZWw9bnVtUHI9Pih7XG5cdFx0XHRcdG51bUlkOm51bVByLmNoaWxkcmVuKFwid1xcXFw6bnVtSWRcIikuYXR0cihcInc6dmFsXCIpLFxuXHRcdFx0XHRsZXZlbDpwYXJzZUludChudW1Qci5jaGlsZHJlbihcIndcXFxcOmlsdmxcIikuYXR0cihcInc6dmFsXCIpfHwwKSxcblx0XHRcdH0pXG5cblx0XHRcdGNvbnN0IGdldExldmVsTm9kZT0obnVtSWQsbGV2ZWwsYU51bUlkPSQoYHdcXFxcOm51bVt3XFxcXDpudW1JZD1cIiR7bnVtSWR9XCJdPndcXFxcOmFic3RyYWN0TnVtSWRgKS5hdHRyKFwidzp2YWxcIikpPT5cblx0XHRcdFx0JChgd1xcXFw6YWJzdHJhY3ROdW1bd1xcXFw6YWJzdHJhY3ROdW1JZD1cIiR7YU51bUlkfVwiXT53XFxcXDpsdmxbd1xcXFw6aWx2bD1cIiR7bGV2ZWx9XCJdYClcblxuXHRcdFx0Y29uc3QgaXNMaXN0PW51bVByLmNoaWxkcmVuKFwid1xcXFw6bnVtSWRcIikubGVuZ3RoPjBcblx0XHRcdGlmKCFpc0xpc3Qpe1xuXHRcdFx0XHRjb25zdCBwcmV2TnVtYmVyaW5nPXRoaXMubm9kZS5wcmV2KGB3XFxcXDpwOmhhcyh3XFxcXDpudW1Qcj53XFxcXDpudW1JZClgKVxuXHRcdFx0XHRpZihwcmV2TnVtYmVyaW5nLmxlbmd0aD09MSl7XG5cdFx0XHRcdFx0Y29uc3QgcHJldj1udW1JZExldmVsKHByZXZOdW1iZXJpbmcuY2hpbGRyZW4oXCJ3XFxcXDpwUHJcIikuY2hpbGRyZW4oXCJ3XFxcXDpudW1QclwiKSlcblx0XHRcdFx0XHRjb25zdCBjYW5Gb2xsb3dQcmV2PSgoe3R5cGUsdGV4dH0se251bUlkLGxldmVsfSk9Pntcblx0XHRcdFx0XHRcdGNvbnN0IG5MZXZlbD1nZXRMZXZlbE5vZGUobnVtSWQsbGV2ZWwpXG5cdFx0XHRcdFx0XHRpZihuTGV2ZWwuaXMoYDpoYXMod1xcXFw6bnVtRm10W3dcXFxcOnZhbD1cIiR7dHlwZX1cIl0pYCkpe1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGV4dCA/IG5MZXZlbC5pcyhgOmhhcyh3XFxcXDpsdmxUZXh0W3dcXFxcOnZhbD1cIiR7dGV4dH1cIl0pYCkgOiB0cnVlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdFx0XHR9KShwcm9wcyxwcmV2KTtcblxuXHRcdFx0XHRcdGlmKGNhbkZvbGxvd1ByZXYpe1xuXHRcdFx0XHRcdFx0bnVtUHIuYXBwZW5kKGA8dzppbHZsIHc6dmFsPVwiJHtwcmV2LmxldmVsfVwiLz5gKVxuXHRcdFx0XHRcdFx0bnVtUHIuYXBwZW5kKGA8dzpudW1JZCB3OnZhbD1cIiR7cHJldi5udW1JZH1cIi8+YClcblx0XHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0Ly9jcmVhdGVOdW1iZXJpbmcocHJvcHMpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHQvL2NyZWF0ZU51bWJlcmluZyhwcm9wcylcblx0XHRcdFx0fVxuXHRcdFx0XHR7Ly9jcmVhdGVOdW1iZXJpbmcocHJvcHMpXG5cdFx0XHRcdFx0Y29uc3QgYU51bXM9JChcIndcXFxcOmFic3RyYWN0TnVtXCIpXG5cdFx0XHRcdFx0Y29uc3QgYU51bUlkPU1hdGgubWF4KC0xLC4uLihhTnVtcy5tYXAoKGksYSk9PnBhcnNlSW50KGEuYXR0cmlic1tcInc6YWJzdHJhY3ROdW1JZFwiXSkpLmdldCgpKSkrMVxuXHRcdFx0XHRcdGNvbnN0IGFOdW09JCh0aGlzLnRyaW0oTnVtYmVyaW5nW3Byb3BzLnR5cGU9PVwiYnVsbGV0XCIgPyBcIkJ1bGxldFwiIDogXCJOdW1lcmljXCJdKGFOdW1JZCkpKVxuXHRcdFx0XHRcdGlmKGFOdW1zLmxlbmd0aD4wKXtcblx0XHRcdFx0XHRcdGFOdW0uaW5zZXJ0QWZ0ZXIoYU51bXMubGFzdCgpKVxuXHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0YU51bS5hcHBlbmRUbygkKFwid1xcXFw6bnVtYmVyaW5nXCIpKVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGxldmVsPTBcblx0XHRcdFx0XHRjb25zdCBudW1JZD1NYXRoLm1heCgtMSwuLi4oJChcIndcXFxcOm51bVwiKS5tYXAoKGksYSk9PnBhcnNlSW50KGEuYXR0cmlic1tcInc6bnVtSWRcIl0pKS5nZXQoKSkpKzFcblx0XHRcdFx0XHRjb25zdCBudW09JCh0aGlzLnRyaW0oTnVtYmVyaW5nLlRlbXBsYXRlKG51bUlkLCBhTnVtSWQpKSkuYXBwZW5kVG8oJChcIndcXFxcOm51bWJlcmluZ1wiKSlcblxuXHRcdFx0XHRcdG51bVByLmFwcGVuZChgPHc6aWx2bCB3OnZhbD1cIiR7bGV2ZWx9XCIvPmApXG5cdFx0XHRcdFx0bnVtUHIuYXBwZW5kKGA8dzpudW1JZCB3OnZhbD1cIiR7bnVtSWR9XCIvPmApXG5cdFx0XHRcdFx0dGhpcy5maWxlLnJlbmRlckNoYW5nZWQoJChgd1xcXFw6bnVtW3dcXFxcOm51bUlkPVwiJHtudW1JZH1cIl1gKSlcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvL2FwcGx5Q2hhbmdlVG9BYnN0cmFjdE51bWJlcmluZ0xldmVsKHByb3BzLCBhTnVtSWQsIGxldmVsKVxuXHRcdFx0Oygoe3R5cGUsdGV4dCxzdGFydCxpbmRlbnQsaGFuZ2luZyxmb250LHRhYnN9LHtudW1JZCxsZXZlbH0sbkxldmVsPWdldExldmVsTm9kZShudW1JZCwgbGV2ZWwpKT0+e1xuXHRcdFx0XHRpZih0eXBlIT11bmRlZmluZWQpXG5cdFx0XHRcdFx0bkxldmVsLmZpbmQoXCJ3XFxcXDpudW1GbXRcIikuYXR0cihcInc6dmFsXCIsdHlwZSlcblx0XHRcdFx0aWYodGV4dCE9dW5kZWZpbmVkKVxuXHRcdFx0XHRcdG5MZXZlbC5maW5kKFwid1xcXFw6bHZsVGV4dFwiKS5hdHRyKFwidzp2YWxcIix0ZXh0KVxuXHRcdFx0XHRpZihzdGFydCE9dW5kZWZpbmVkKVxuXHRcdFx0XHRcdG5MZXZlbC5maW5kKFwid1xcXFw6c3RhcnRcIikuYXR0cihcInc6dmFsXCIsc3RhcnQpXG5cdFx0XHRcdGlmKGluZGVudCE9dW5kZWZpbmVkKVxuXHRcdFx0XHRcdG5MZXZlbC5maW5kKFwid1xcXFw6cFByPndcXFxcOmluZFwiKS5hdHRyKFwidzpsZWZ0XCIsaW5kZW50KVxuXHRcdFx0XHRpZihoYW5naW5nIT11bmRlZmluZWQpXG5cdFx0XHRcdFx0bkxldmVsLmZpbmQoXCJ3XFxcXDpwUHI+d1xcXFw6aW5kXCIpLmF0dHIoXCJ3OmhhbmdpbmdcIixoYW5naW5nKVxuXHRcdFx0XHRpZihmb250IT11bmRlZmluZWQpXG5cdFx0XHRcdFx0bkxldmVsLmZpbmQoXCJ3XFxcXDpyUHI+d1xcXFw6ckZvbnRzXCIpLmF0dHIoXCJ3OmFzY2lpXCIsZm9udCkuYXR0cihcInc6aEFuc2lcIixmb250KVxuXG5cdFx0XHRcdHRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKCQoYHdcXFxcOmFic3RyYWN0TnVtW3dcXFxcOmFic3RyYWN0TnVtSWQ9XCIke25MZXZlbC5jbG9zZXN0KFwid1xcXFw6YWJzdHJhY3ROdW1cIikuYXR0cihcInc6YWJzdHJhY3ROdW1JZFwiKX1cIl1gKSlcblx0XHRcdH0pKHByb3BzLG51bUlkTGV2ZWwobnVtUHIpKVxuXHRcdH1cblx0fVxuXG5cdG51bURlbW90ZSgpe1xuXHRcdGNvbnN0IG51bVByPXRoaXMuZ290KFwidzpudW1QclwiKVxuXHRcdGNvbnN0IG51bUlkPW51bVByLmNoaWxkcmVuKFwid1xcXFw6bnVtSWRcIikuYXR0cihcInc6dmFsXCIpXG5cdFx0Y29uc3QgaXNGaXJzdE9mTGlzdD0hdGhpcy5ub2RlLnByZXYoKS5pcyhgd1xcXFw6cDpoYXMod1xcXFw6bnVtUHI+d1xcXFw6bnVtSWRbd1xcXFw6dmFsPVwiJHtudW1JZH1cIl0pYClcblx0XHRjb25zdCAkPXRoaXMuZmlsZS5kb2Mub2ZmaWNlRG9jdW1lbnQubnVtYmVyaW5nXG5cdFx0Y29uc3QgYU51bUlkPSQoYHdcXFxcOm51bVt3XFxcXDpudW1JZD1cIiR7bnVtSWR9XCJdPndcXFxcOmFic3RyYWN0TnVtSWRgKS5hdHRyKFwidzp2YWxcIilcblx0XHRjb25zdCBhTnVtPSQoYHdcXFxcOmFic3RyYWN0TnVtW3dcXFxcOmFic3RyYWN0TnVtSWQ9XCIke2FOdW1JZH1cIl1gKVxuXHRcdGNvbnN0IGxldmVscz1hTnVtLmZpbmQoYHdcXFxcOmx2bGApXG5cblx0XHRpZihpc0ZpcnN0T2ZMaXN0KXsvL2NoYW5nZSBpbmRlbnRcblx0XHRcdGNvbnN0IGxlbj1sZXZlbHMubGVuZ3RoXG5cdFx0XHRuZXcgQXJyYXkobGV2ZWxzLmxlbmd0aC0xKS5maWxsKDApXG5cdFx0XHRcdC5mb3JFYWNoKChhLGkpPT5sZXZlbHMuZXEoaSkuZmluZChcIndcXFxcOmluZFwiKS5yZXBsYWNlV2l0aChsZXZlbHMuZXEoaSsxKS5maW5kKFwid1xcXFw6aW5kXCIpLmNsb25lKCkpKVxuXHRcdFx0Y29uc3QgbGFzdD1sZXZlbHMuZXEobGVuLTEpLmZpbmQoXCJ3XFxcXDppbmRcIilcblx0XHRcdGxhc3QuYXR0cihcInc6bGVmdFwiLFN0cmluZyhwYXJzZUludChsYXN0LmF0dHIoXCJ3OmxlZnRcIikpKzIqcGFyc2VJbnQobGFzdC5hdHRyKFwidzpoYW5naW5nXCIpKSkpXG5cdFx0XHR0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChhTnVtKVxuXHRcdH1lbHNle1xuXHRcdFx0Y29uc3QgbkxldmVsPW51bVByLmNoaWxkcmVuKFwid1xcXFw6aWx2bFwiKVxuXHRcdFx0Y29uc3QgbGV2ZWw9cGFyc2VJbnQobkxldmVsLmF0dHIoXCJ3OnZhbFwiKSlcblx0XHRcdGlmKGxldmVsPDgpe1xuXHRcdFx0XHRuTGV2ZWwuYXR0cihcInc6dmFsXCIsU3RyaW5nKGxldmVsKzEpKVxuXHRcdFx0fVxuXG5cdFx0XHRpZihsZXZlbHMubGVuZ3RoLTE8bGV2ZWwrMSl7XG5cdFx0XHRcdGNvbnN0IHR5cGU9bGV2ZWxzLmVxKDApLmZpbmQoXCJ3XFxcXDpudW1GbXRcIikuYXR0cihcInc6dmFsXCIpXG5cdFx0XHRcdCQodGhpcy50cmltKE51bWJlcmluZ1t0eXBlPT1cImJ1bGxldFwiID8gXCJCdWxsZXRcIiA6IFwiTnVtZXJpY1wiXShhTnVtSWQpKSlcblx0XHRcdFx0XHQuZmluZCgnd1xcXFw6bHZsJylcblx0XHRcdFx0XHQuc2xpY2UobGV2ZWwrMSlcblx0XHRcdFx0XHQuaW5zZXJ0QWZ0ZXIobGV2ZWxzLmxhc3QoKSlcblx0XHRcdFx0YU51bS5maW5kKFwid1xcXFw6bXVsdGlMZXZlbFR5cGVcIikuYXR0cihcInc6dmFsXCIsXCJoeWJyaWRNdWx0aWxldmVsXCIpXG5cdFx0XHRcdHRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKGFOdW0pXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0bnVtUHJvbW90ZSgpe1xuXHRcdGNvbnN0IG51bVByPXRoaXMuZ290KFwidzpudW1QclwiKVxuXHRcdGNvbnN0IG51bUlkPW51bVByLmNoaWxkcmVuKFwid1xcXFw6bnVtSWRcIikuYXR0cihcInc6dmFsXCIpXG5cdFx0Y29uc3QgaXNGaXJzdE9mTGlzdD0hdGhpcy5ub2RlLnByZXYoKS5pcyhgd1xcXFw6cDpoYXMod1xcXFw6bnVtUHI+d1xcXFw6bnVtSWRbd1xcXFw6dmFsPVwiJHtudW1JZH1cIl0pYClcblx0XHRpZihpc0ZpcnN0T2ZMaXN0KXsvL2NoYW5nZSBpbmRlbnRcblx0XHRcdGNvbnN0ICQ9dGhpcy5maWxlLmRvYy5vZmZpY2VEb2N1bWVudC5udW1iZXJpbmdcblx0XHRcdGNvbnN0IGFOdW1JZD0kKGB3XFxcXDpudW1bd1xcXFw6bnVtSWQ9XCIke251bUlkfVwiXT53XFxcXDphYnN0cmFjdE51bUlkYCkuYXR0cihcInc6dmFsXCIpXG5cdFx0XHRjb25zdCBhTnVtPSQoYHdcXFxcOmFic3RyYWN0TnVtW3dcXFxcOmFic3RyYWN0TnVtSWQ9XCIke2FOdW1JZH1cIl1gKVxuXHRcdFx0Y29uc3QgaW5kcz1hTnVtLmZpbmQoYHdcXFxcOmx2bCB3XFxcXDppbmRgKVxuXHRcdFx0Y29uc3QgZmlyc3Q9aW5kcy5lcSgwKVxuXHRcdFx0Y29uc3QgZmlyc3RIYW5naW5nPXBhcnNlSW50KGZpcnN0LmF0dHIoXCJ3OmhhbmdpbmdcIikpXG5cdFx0XHRpZihwYXJzZUludChmaXJzdC5hdHRyKFwidzpsZWZ0XCIpKSE9Zmlyc3RIYW5naW5nKXtcblx0XHRcdFx0aW5kcy5lYWNoKChpLGEpPT57XG5cdFx0XHRcdFx0YS5hdHRyaWJzW1widzpsZWZ0XCJdPVN0cmluZyhwYXJzZUludChhLmF0dHJpYnNbXCJ3OmxlZnRcIl0pLWZpcnN0SGFuZ2luZylcblx0XHRcdFx0fSlcblx0XHRcdFx0Zmlyc3QuYXR0cihcInc6bGVmdFwiLFN0cmluZyhmaXJzdEhhbmdpbmcpKVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5maWxlLnJlbmRlckNoYW5nZWQoYU51bSlcblx0XHR9ZWxzZXtcblx0XHRcdGNvbnN0IG5MZXZlbD1udW1Qci5jaGlsZHJlbihcIndcXFxcOmlsdmxcIilcblx0XHRcdGNvbnN0IGxldmVsPXBhcnNlSW50KG5MZXZlbC5hdHRyKFwidzp2YWxcIikpXG5cdFx0XHRpZihsZXZlbD4wKXtcblx0XHRcdFx0bkxldmVsLmF0dHIoXCJ3OnZhbFwiLFN0cmluZyhsZXZlbC0xKSlcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0YWIoe3NoaWZ0S2V5fSl7XG5cdFx0aWYodGhpcy5ub2RlLmlzKFwiOmhhcyh3XFxcXDpudW1QcilcIikpe1xuXHRcdFx0dGhpc1tgbnVtJHtzaGlmdEtleSA/IFwiUHJvXCIgOlwiRGVcIn1tb3RlYF0oKVxuXHRcdH1lbHNle1xuXHRcdFx0Y29uc3QgaGVhZGluZz1wYXJzZUludCgoL15IZWFkaW5nKFxcZCkkLy5leGVjKHRoaXMubm9kZS5maW5kKGB3XFxcXDpwU3R5bGVgKS5hdHRyKFwidzp2YWxcIikpfHxbXSlbMV0pfHwwXG5cdFx0XHRpZihoZWFkaW5nKXtcblx0XHRcdFx0aWYoIXNoaWZ0S2V5ICYmIGhlYWRpbmc8OSl7XG5cdFx0XHRcdFx0dGhpcy5ub2RlLmZpbmQoYHdcXFxcOnBTdHlsZWApLmF0dHIoXCJ3OnZhbFwiLGBIZWFkaW5nJHtoZWFkaW5nKzF9YClcblx0XHRcdFx0fWVsc2UgaWYoc2hpZnRLZXkgJiYgaGVhZGluZz4xKXtcblx0XHRcdFx0XHR0aGlzLm5vZGUuZmluZChgd1xcXFw6cFN0eWxlYCkuYXR0cihcInc6dmFsXCIsYEhlYWRpbmcke2hlYWRpbmctMX1gKVxuXHRcdFx0XHR9XG5cdFx0XHR9ZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGluZD10aGlzLmdvdChcInc6aW5kXCIpXG5cdFx0XHRcdGNvbnN0IGxlZnQ9cGFyc2VJbnQoaW5kLmF0dHIoXCJ3OmxlZnRcIikpfHwwXG5cdFx0XHRcdGluZC5hdHRyKFwidzpsZWZ0XCIsU3RyaW5nKHNoaWZ0S2V5ID8gTWF0aC5tYXgoMCxsZWZ0LTM2MCkgOiBsZWZ0KzM2MCkpXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aW5kZW50KHtsZWZ0LHJpZ2h0LGZpcnN0TGluZX0pe1xuXHRcdGxldCBub2RlPXRoaXMuZ290KFwidzppbmRcIilcblxuXHRcdGlmKGxlZnQhPXVuZGVmaW5lZClcblx0XHRcdG5vZGUuYXR0cihcInc6bGVmdFwiLHRoaXMuZmlsZS5weDJkeGEobGVmdCl8fG51bGwpXG5cblx0XHRpZihyaWdodCE9dW5kZWZpbmVkKVxuXHRcdFx0bm9kZS5hdHRyKFwidzpyaWdodFwiLHRoaXMuZmlsZS5weDJkeGEocmlnaHQpfHxudWxsKVxuXG5cdFx0aWYoZmlyc3RMaW5lIT11bmRlZmluZWQpe1xuXHRcdFx0aWYoZmlyc3RMaW5lPjApe1xuXHRcdFx0XHRub2RlLmF0dHIoXCJ3OmZpcnN0TGluZVwiLHRoaXMuZmlsZS5weDJkeGEoTWF0aC5hYnMoZmlyc3RMaW5lKSl8fG51bGwpXG5cdFx0XHRcdG5vZGUuYXR0cihcInc6aGFuZ2luZ1wiLG51bGwpXG5cdFx0XHR9ZWxzZSBpZihmaXJzdExpbmU8MCl7XG5cdFx0XHRcdG5vZGUuYXR0cihcInc6aGFuZ2luZ1wiLHRoaXMuZmlsZS5weDJkeGEoTWF0aC5hYnMoZmlyc3RMaW5lKSl8fG51bGwpXG5cdFx0XHRcdG5vZGUuYXR0cihcInc6Zmlyc3RMaW5lXCIsbnVsbClcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdG1ha2VTdHlsZVJlYWR5KCl7XG4gICAgICAgIGNvbnN0ICQ9dGhpcy5maWxlLmRvYy5vZmZpY2VEb2N1bWVudC5zdHlsZXNcblx0XHRpZigkKCd3XFxcXDpzdHlsZVt3XFxcXDpzdHlsZUlkPVwiTm9MaXN0XCJdJykubGVuZ3RoPT0wKXtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlTm9kZT0kKHRoaXMudHJpbShTVFlMRV9Ob0xpc3QpKS5pbnNlcnRBZnRlcigkKGB3XFxcXDpzdHlsZVt3XFxcXDpkZWZhdWx0PVwiMVwiXWApLmxhc3QoKSlcbiAgICAgICAgICAgIHRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKHN0eWxlTm9kZSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgU1RZTEVfTm9MaXN0PWBcblx0PHc6c3R5bGUgdzp0eXBlPVwibnVtYmVyaW5nXCIgdzpkZWZhdWx0PVwiMVwiIHc6c3R5bGVJZD1cIk5vTGlzdFwiPlxuICAgICAgICA8dzpuYW1lIHc6dmFsPVwiTm8gTGlzdFwiLz5cbiAgICAgICAgPHc6dWlQcmlvcml0eSB3OnZhbD1cIjk5XCIvPlxuICAgICAgICA8dzpzZW1pSGlkZGVuLz5cbiAgICAgICAgPHc6dW5oaWRlV2hlblVzZWQvPlxuXHQ8L3c6c3R5bGU+XG5gIiwiaW1wb3J0IHtJbWFnZSxTZWN0aW9uLFBhcmFncmFwaCxUYWJsZX0gZnJvbSBcIi4vZG9tXCJcblxuZXhwb3J0IGRlZmF1bHR7XG4gICAgY3JlYXRlX3RhYmxlX2F0X2VuZF9vZl91cF90b19kb2N1bWVudCgpe1xuICAgICAgICBjb25zdCBwPXRoaXMudGFyZ2V0LmNsb3Nlc3QoXCJ3XFxcXDpwXCIpXG4gICAgICAgIGNvbnN0IGNsb25lZFA9cC5jbG9uZSgpXG4gICAgICAgIGNsb25lZFAuY2hpbGRyZW4oYDpub3QoJHt0aGlzLlBSfSlgKS5yZW1vdmUoKVxuICAgICAgICBjbG9uZWRQLmFwcGVuZChgPHc6cj48dzp0Lz48L3c6cj5gKVxuICAgICAgICBwLmFmdGVyKGNsb25lZFApXG4gICAgICAgIGNvbnN0IGE9dGhpcy5maWxlLnJlbmRlckNoYW5nZWQoY2xvbmVkUClcbiAgICAgICAgdGhpcy4kdGFyZ2V0LmNsb3Nlc3QoXCJwYXJhZ3JhcGhcIikuYWZ0ZXIoJyMnK2EuaWQpXG4gICAgICAgIHRoaXMuY3JlYXRlKC4uLmFyZ3VtZW50cylcbiAgICB9LFxuXG4gICAgY3JlYXRlX3RhYmxlX2F0X2JlZ2lubmluZ19vZl9wYXJhZ3JhcGgoKXtcbiAgICAgICAgY29uc3QgZWRpdG9yPW5ldyBUYWJsZSh0aGlzLmZpbGUpXG4gICAgICAgIGVkaXRvci5jcmVhdGUoLi4uYXJndW1lbnRzKVxuICAgICAgICB0aGlzLnRhcmdldC5iZWZvcmUoZWRpdG9yLm5vZGUpXG4gICAgICAgIGNvbnN0IHtpZH09dGhpcy5maWxlLnJlbmRlckNoYW5nZWQoZWRpdG9yLm5vZGUpXG4gICAgICAgIHRoaXMuJHRhcmdldC5iZWZvcmUoJyMnK2lkKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJCgnIycraWQpLmZpcnN0KFwidGV4dFwiKS5hdHRyKCdpZCcpLDApXG4gICAgfSxcblxuICAgIGNyZWF0ZV90YWJsZV9hdF9lbmRfb2ZfcGFyYWdyYXBoKCl7XG4gICAgICAgIGNvbnN0IGVkaXRvcj1uZXcgVGFibGUodGhpcy5maWxlKVxuICAgICAgICBlZGl0b3IuY3JlYXRlKC4uLmFyZ3VtZW50cylcbiAgICAgICAgdGhpcy50YXJnZXQuYWZ0ZXIoZWRpdG9yLm5vZGUpXG4gICAgICAgIGNvbnN0IHtpZH09dGhpcy5maWxlLnJlbmRlckNoYW5nZWQoZWRpdG9yLm5vZGUpXG4gICAgICAgIHRoaXMuJHRhcmdldC5hZnRlcignIycraWQpXG4gICAgICAgIHRoaXMuY3Vyc29yQXQodGhpcy4kKCcjJytpZCkuZmlyc3QoXCJ0ZXh0XCIpLmF0dHIoJ2lkJyksMClcbiAgICB9LFxuXG4gICAgXG4gICAgY3JlYXRlX2ltYWdlX2F0X3RleHQoKXtcbiAgICAgICAgLy9zcGxpdCB0ZXh0IHRvIHJ1blxuICAgICAgICB0aGlzLnNlcGVyYXRlX2F0X3RleHRfZm9yX2VuZCgpXG4gICAgICAgIHRoaXMuc2VwZXJhdGVfdXBfdG9fcnVuX2F0X2VuZF9vZl90ZXh0KClcbiAgICAgICAgdGhpcy5jdXJzb3JBdCh0aGlzLiR0YXJnZXQucGFyZW50KCkuYXR0cignaWQnKSwxKVxuICAgICAgICB0aGlzLmNyZWF0ZSguLi5hcmd1bWVudHMpXG4gICAgfSxcblxuICAgIGNyZWF0ZV9pbWFnZV9hdF9iZWdpbm5pbmdfb2ZfdXBfdG9fcnVuKCl7XG4gICAgICAgIHRoaXMuY3Vyc29yQXQodGhpcy4kdGFyZ2V0LmNsb3Nlc3QoJ3J1bicpLmF0dHIoJ2lkJyksMClcbiAgICAgICAgdGhpcy5jcmVhdGUoLi4uYXJndW1lbnRzKVxuICAgIH0sXG5cbiAgICBjcmVhdGVfaW1hZ2VfYXRfZW5kX29mX3VwX3RvX3J1bigpe1xuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJHRhcmdldC5jbG9zZXN0KCdydW4nKS5hdHRyKCdpZCcpLDEpXG4gICAgICAgIHRoaXMuY3JlYXRlKC4uLmFyZ3VtZW50cylcbiAgICB9LFxuXG4gICAgY3JlYXRlX2ltYWdlX2F0X2JlZ2lubmluZ19vZl9ydW4oKXtcbiAgICAgICAgY29uc3QgZWRpdG9yPW5ldyBJbWFnZSh0aGlzLmZpbGUpXG4gICAgICAgIGVkaXRvci5jcmVhdGUoLi4uYXJndW1lbnRzKVxuICAgICAgICB0aGlzLnRhcmdldC5iZWZvcmUoYDx3OnIvPmApXG4gICAgICAgIGNvbnN0IHI9dGhpcy50YXJnZXQucHJldigpXG4gICAgICAgIHIuYXBwZW5kKGVkaXRvci5ub2RlKVxuICAgICAgICBjb25zdCB7aWR9PXRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKHIpXG4gICAgICAgIHRoaXMuJHRhcmdldC5iZWZvcmUoJyMnK2lkKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJCgnIycraWQpLmZpcnN0KCkuYXR0cignaWQnKSwwKVxuICAgIH0sXG5cbiAgICBjcmVhdGVfaW1hZ2VfYXRfZW5kX29mX3J1bigpe1xuICAgICAgICBjb25zdCBlZGl0b3I9bmV3IEltYWdlKHRoaXMuZmlsZSlcbiAgICAgICAgZWRpdG9yLmNyZWF0ZSguLi5hcmd1bWVudHMpXG4gICAgICAgIHRoaXMudGFyZ2V0LmFmdGVyKGA8dzpyLz5gKVxuICAgICAgICBjb25zdCByPXRoaXMudGFyZ2V0Lm5leHQoKVxuICAgICAgICByLmFwcGVuZChlZGl0b3Iubm9kZSlcbiAgICAgICAgY29uc3Qge2lkfT10aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChyKVxuICAgICAgICB0aGlzLiR0YXJnZXQuYWZ0ZXIoJyMnK2lkKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJCgnIycraWQpLmZpcnN0KCkuYXR0cignaWQnKSwwKVxuICAgIH0sXG5cbiAgICBjcmVhdGVfaW1hZ2VfYXRfZW1wdHlfcnVuKCl7XG4gICAgICAgIGNvbnN0IGVkaXRvcj1uZXcgSW1hZ2UodGhpcy5maWxlKVxuICAgICAgICBlZGl0b3IuY3JlYXRlKC4uLmFyZ3VtZW50cylcbiAgICAgICAgY29uc3Qgcj10aGlzLnRhcmdldFxuICAgICAgICByLmFwcGVuZChlZGl0b3Iubm9kZSlcbiAgICAgICAgY29uc3Qge2lkfT10aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChyKVxuICAgICAgICB0aGlzLiR0YXJnZXQuYWZ0ZXIoJyMnK2lkKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJCgnIycraWQpLmZpcnN0KCkuYXR0cignaWQnKSwwKVxuICAgIH0sXG5cbiAgICBjcmVhdGVfaW1hZ2VfYXRfZW1wdHlfcGFyYWdyYXBoKCl7XG4gICAgICAgIHRoaXMudGFyZ2V0LmFwcGVuZChgPHc6ci8+YClcbiAgICAgICAgdGhpcy5maWxlLnJlbmRlckNoYW5nZWQodGhpcy50YXJnZXQpXG4gICAgICAgIHRoaXMuY3Vyc29yQXQodGhpcy4kdGFyZ2V0LmNoaWxkcmVuKFwicnVuXCIpLmF0dHIoJ2lkJyksMClcbiAgICAgICAgdGhpcy5jcmVhdGUoLi4uYXJndW1lbnRzKVxuICAgIH0sXG5cbiAgICBjcmVhdGVfcm93KHt3aGVyZX0pe1xuICAgICAgICBjb25zdCAkcm93PXRoaXMuJHRhcmdldC5jbG9zZXN0KFwicm93XCIpXG4gICAgICAgIGlmKCRyb3cubGVuZ3RoPT0wKVxuICAgICAgICAgICAgcmV0dXJuIFxuXG4gICAgICAgIGNvbnN0IHJvdz10aGlzLmZpbGUuZ2V0Tm9kZSgkcm93LmF0dHIoJ2lkJykpXG4gICAgICAgIGNvbnN0IHRhYmxlPXRoaXMuZmlsZS5nZXROb2RlKCRyb3cuY2xvc2VzdCgndGFibGUnKS5hdHRyKCdpZCcpKVxuICAgICAgICBjb25zdCBjb2xzPXRhYmxlLmZpcnN0KFwid1xcXFw6dGJsR3JpZFwiKS5maW5kKFwid1xcXFw6Z3JpZENvbFwiKVxuICAgICAgICBjb25zdCBlZGl0b3I9bmV3IFRhYmxlKHRoaXMuZmlsZSlcbiAgICAgICAgZWRpdG9yLm5vZGU9dGFibGVcbiAgICAgICAgY29uc3QgdGRzPW5ldyBBcnJheShjb2xzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKHcsaSk9PmVkaXRvci50ZW1wbGF0ZV90Yyh3KSlcbiAgICAgICAgY29uc3QgdHI9dGhpcy5maWxlLiQoXCI8dzp0cj5cIit0ZHMuam9pbihcIlwiKStcIjwvdzp0cj5cIilcbiAgICAgICAgdHJbYGluc2VydCR7d2hlcmVbMF0udG9VcHBlckNhc2UoKX0ke3doZXJlLnN1YnN0cmluZygxKX1gXShyb3cpXG4gICAgICAgIGNvbnN0IGE9dGhpcy5maWxlLnJlbmRlckNoYW5nZWQodHIpXG4gICAgICAgICRyb3dbd2hlcmVdKGAjJHthLmlkfWApXG4gICAgICAgIHRoaXMuc2VsZWN0V2hvbGUoYS5pZClcbiAgICB9LFxuXG4gICAgY3JlYXRlX2NvbHVtbih7d2hlcmV9KXtcbiAgICAgICAgY29uc3QgJGNlbGw9dGhpcy4kdGFyZ2V0LmNsb3Nlc3QoXCJjZWxsXCIpXG4gICAgICAgIGlmKCRjZWxsLmxlbmd0aD09MClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICBcbiAgICAgICAgY29uc3QgJHJvdz0kY2VsbC5jbG9zZXN0KCdyb3cnKVxuICAgICAgICBjb25zdCAkdGFibGU9JHJvdy5jbG9zZXN0KCd0YWJsZScpXG5cbiAgICAgICAgY29uc3QgYXQ9JHJvdy5maW5kKFwiY2VsbFwiKS5pbmRleE9mKCRjZWxsKVxuICAgICAgICBjb25zdCB0YWJsZT10aGlzLmZpbGUuZ2V0Tm9kZSgkdGFibGUuYXR0cignaWQnKSlcblxuXHRcdGNvbnN0IGdyaWQ9dGFibGUuZmlyc3QoXCJ3XFxcXDp0YmxHcmlkXCIpXG5cdFx0Y29uc3QgY29scz1ncmlkLmZpbmQoXCJ3XFxcXDpncmlkQ29sXCIpXG5cdFx0Y29uc3QgbGVuPWNvbHMubGVuZ3RoXG5cdFx0bGV0IHdpZHRoPWNvbHMudG9BcnJheSgpLnJlZHVjZSgodyxhKT0+dytwYXJzZUludChhLmF0dHJpYnNbXCJ3OndcIl0pLDApXG5cdFx0Y29uc3QgcmF0aW89bGVuLyhsZW4rMSlcblx0XHRmb3IobGV0IGk9MDtpPGxlbjtpKyspe1xuXHRcdFx0Y29uc3QgY29sPWNvbHMuZXEoaSlcblx0XHRcdGNvbnN0IHc9cGFyc2VJbnQocGFyc2VJbnQoY29sLmF0dHIoXCJ3OndcIikpKnJhdGlvKVxuXHRcdFx0Y29sLmF0dHIoXCJ3OndcIix3KVxuXHRcdFx0d2lkdGgtPXdcblx0XHR9XG5cblx0XHRjb2xzLmVxKGF0KVt3aGVyZV0oY29scy5lcShhdCkuY2xvbmUoKS5hdHRyKFwidzp3XCIsd2lkdGgpKVxuXG4gICAgICAgIGNvbnN0IHJvd3M9dGFibGUuZmluZChcIndcXFxcOnRyXCIpXG4gICAgICAgIGNvbnN0IGVkaXRvcj1uZXcgVGFibGUodGhpcy5maWxlKVxuICAgICAgICBlZGl0b3Iubm9kZT10YWJsZVxuXHRcdGZvcihsZXQgaT0wO2k8cm93cy5sZW5ndGg7aSsrKXtcbiAgICAgICAgICAgIHJvd3MuZXEoaSlcblx0XHRcdFx0LmZpbmQoXCJ3XFxcXDp0Y1wiKVxuICAgICAgICAgICAgICAgIC5lcShhdClbd2hlcmVdKGVkaXRvci50ZW1wbGF0ZV90Yyh3aWR0aCkpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlLnJlbmRlckNoYW5nZWQodGFibGUpXG4gICAgfSxcblxuICAgIGNyZWF0ZV9zZWN0aW9uKHtraW5kfSl7XG4gICAgICAgIHRoaXMuZW50ZXIoKVxuXG4gICAgICAgIGNvbnN0ICRwPXRoaXMuJHRhcmdldC5jbG9zZXN0KCdwYXJhZ3JhcGgnKVxuICAgICAgICBjb25zdCAkc2VjdGlvbj10aGlzLiR0YXJnZXQuY2xvc2VzdCgnc2VjdGlvbicpXG4gICAgICAgIGNvbnN0IHNlY3Rpb249dGhpcy5maWxlLmdldE5vZGUoJHNlY3Rpb24uYXR0cignaWQnKSlcbiAgICAgICAgY29uc3QgZWRpdG9yPW5ldyBQYXJhZ3JhcGgodGhpcy5maWxlKVxuICAgICAgICBlZGl0b3Iubm9kZT10aGlzLmZpbGUuZ2V0Tm9kZSgkcC5hdHRyKCdpZCcpKVxuICAgICAgICBjb25zdCBjbG9uZWRTZWN0aW9uPXNlY3Rpb24uY2xvbmUoKVxuICAgICAgICBjbG9uZWRTZWN0aW9uLmFwcGVuZFRvKGVkaXRvci5nb3QoXCJ3OnBQclwiKSlcbiAgICAgICAgaWYoa2luZCl7XG4gICAgICAgICAgICBjbG9uZWRTZWN0aW9uLnByZXBlbmQoYDx3OnR5cGUgdzp2YWw9XCIke2tpbmR9XCIvPmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYT10aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChjbG9uZWRTZWN0aW9uKVxuICAgICAgICBjb25zdCAkY2xvbmVkU2VjdGlvbj10aGlzLiQoYCMke2EuaWR9YClcbiAgICAgICAgJHNlY3Rpb24uYWZ0ZXIoJGNsb25lZFNlY3Rpb24pXG4gICAgICAgICRjbG9uZWRTZWN0aW9uLmFwcGVuZCgkcC5uZXh0QWxsKCkpXG4gICAgICAgICRjbG9uZWRTZWN0aW9uLnByZXBlbmQoJHApXG4gICAgfSxcblxuICAgIGNyZWF0ZV9wYWdlYnJlYWsoKXtcbiAgICAgICAgdGhpcy5lbnRlcigpXG4gICAgICAgIGNvbnN0ICRwPXRoaXMuJHRhcmdldC5jbG9zZXN0KCdwYXJhZ3JhcGgnKS5wcmV2KCdwYXJhZ3JhcGgnKVxuICAgICAgICBjb25zdCBwPXRoaXMuZmlsZS5nZXROb2RlKCRwLmF0dHIoJ2lkJykpXG4gICAgICAgIGNvbnN0ICRyPXRoaXMuZmlsZS4kKGA8dzpyPjx3OmJyIHc6dHlwZT1cInBhZ2VcIi8+PC93OnI+YCkuYXBwZW5kVG8ocClcbiAgICAgICAgY29uc3QgYT10aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCgkcilcbiAgICAgICAgJHAuYXBwZW5kKGAjJHthLmlkfWApXG4gICAgfSxcblxuICAgIGNyZWF0ZV9jb2x1bW5icmVhaygpe1xuICAgICAgICB0aGlzLmVudGVyKClcbiAgICAgICAgY29uc3QgJHA9dGhpcy4kdGFyZ2V0LmNsb3Nlc3QoJ3BhcmFncmFwaCcpLnByZXYoJ3BhcmFncmFwaCcpXG4gICAgICAgIGNvbnN0IHA9dGhpcy5maWxlLmdldE5vZGUoJHAuYXR0cignaWQnKSlcbiAgICAgICAgY29uc3QgJHI9dGhpcy5maWxlLiQoYDx3OnI+PHc6YnIgdzp0eXBlPVwiY29sdW1uXCIvPjwvdzpyPmApLmFwcGVuZFRvKHApXG4gICAgICAgIGNvbnN0IGE9dGhpcy5maWxlLnJlbmRlckNoYW5nZWQoJHIpXG4gICAgICAgICRwLmFwcGVuZChgIyR7YS5pZH1gKVxuICAgIH0sXG4gICAgXG59IiwiaW1wb3J0IHtUZXh0LFBhcmFncmFwaCxJbWFnZSxTZWN0aW9uLFRhYmxlfSBmcm9tIFwiLi9kb21cIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgdXBkYXRlX2F0X3RleHQocHJvcHMpe1xuICAgICAgICBjb25zdCB0YXJnZXQ9dGhpcy50YXJnZXRcbiAgICAgICAgY29uc3Qgcj10YXJnZXQuY2xvc2VzdChcIndcXFxcOnJcIilcbiAgICAgICAgY29uc3QgbmV4dD10YXJnZXQubmV4dEFsbChcIndcXFxcOnRcIilcbiAgICAgICAgY29uc3QgcHJldj10YXJnZXQucHJldkFsbChcIndcXFxcOnRcIilcbiAgICAgICAgdmFyIHN0cnVjdHVyZUNoYW5nZWQ9ZmFsc2VcbiAgICAgICAgY29uc3QgY2xvbmVSPSgpPT57XG4gICAgICAgICAgICBzdHJ1Y3R1cmVDaGFuZ2VkPXRydWVcbiAgICAgICAgICAgIGNvbnN0IGNsb25lZFI9ci5jbG9uZSgpXG4gICAgICAgICAgICBjbG9uZWRSLmNoaWxkcmVuKFwiOm5vdCh3XFxcXDpyUHIpXCIpLnJlbW92ZSgpXG4gICAgICAgICAgICByZXR1cm4gY2xvbmVkUlxuICAgICAgICB9XG5cbiAgICAgICAgaWYobmV4dC5sZW5ndGg+MCl7XG4gICAgICAgICAgICByLmFmdGVyKGNsb25lUigpLmFwcGVuZCh0YXJnZXQubmV4dEFsbCgpKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHByZXYubGVuZ3RoPjApe1xuICAgICAgICAgICAgci5iZWZvcmUoY2xvbmVSKCkuYXBwZW5kKHRhcmdldC5wcmV2QWxsKCkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYoc3RydWN0dXJlQ2hhbmdlZCl7XG4gICAgICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCh0aGlzLmZpbGUuZ2V0Tm9kZSh0aGlzLiR0YXJnZXQucGFyZW50KCkucGFyZW50KCkuYXR0cignaWQnKSkpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlZGl0b3I9bmV3IFRleHQodGhpcy5maWxlKVxuICAgICAgICBlZGl0b3Iubm9kZT10aGlzLnRhcmdldFxuICAgICAgICBlZGl0b3IudXBkYXRlKHByb3BzKVxuICAgIH0sXG5cbiAgICB1cGRhdGVfYXRfcGFyYWdyYXBoKHByb3BzKXtcbiAgICAgICAgY29uc3QgZWRpdG9yPW5ldyBQYXJhZ3JhcGgodGhpcy5maWxlKVxuICAgICAgICBlZGl0b3Iubm9kZT10aGlzLnRhcmdldFxuICAgICAgICBlZGl0b3IudXBkYXRlKHByb3BzKVxuICAgIH0sXG5cbiAgICB1cGRhdGVfYXRfaW1hZ2UocHJvcHMpe1xuICAgICAgICBjb25zdCBlZGl0b3I9bmV3IEltYWdlKHRoaXMuZmlsZSlcbiAgICAgICAgZWRpdG9yLm5vZGU9dGhpcy50YXJnZXRcbiAgICAgICAgZWRpdG9yLnVwZGF0ZShwcm9wcylcbiAgICB9LFxuXG4gICAgdXBkYXRlX2F0X3RhYmxlKHByb3BzKXtcbiAgICAgICAgY29uc3QgZWRpdG9yPW5ldyBUYWJsZSh0aGlzLmZpbGUpXG4gICAgICAgIGVkaXRvci5ub2RlPXRoaXMudGFyZ2V0XG4gICAgICAgIGVkaXRvci51cGRhdGUocHJvcHMpXG4gICAgfSxcblxuICAgIHVwZGF0ZV9hdF9zZWN0aW9uKHByb3BzKXtcbiAgICAgICAgY29uc3QgZWRpdG9yPW5ldyBTZWN0aW9uKHRoaXMuZmlsZSlcbiAgICAgICAgZWRpdG9yLm5vZGU9dGhpcy50YXJnZXRcbiAgICAgICAgZWRpdG9yLnVwZGF0ZShwcm9wcylcbiAgICB9LFxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICAgIFxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICAgIHR5cGVfYXRfYmVnaW5uaW5nX29mX3RleHRfaW5fcnVuKCl7XG4gICAgICAgIHRoaXMudHlwZV9hdF90ZXh0KC4uLmFyZ3VtZW50cylcbiAgICB9LFxuXG4gICAgdHlwZV9hdF9lbXB0eV9ydW4oZGF0YSl7XG4gICAgICAgIHRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKHRoaXMudGFyZ2V0LmFwcGVuZChgPHc6dD4ke2RhdGF9PC93OnQ+YCkpXG4gICAgICAgIHRoaXMuY3Vyc29yQXQodGhpcy4kdGFyZ2V0LmNoaWxkcmVuKFwidGV4dFwiKS5hdHRyKFwiaWRcIiksZGF0YS5sZW5ndGgpXG4gICAgfSxcblxuICAgIHR5cGVfYXRfZW1wdHlfcGFyYWdyYXBoKGRhdGEpe1xuICAgICAgICB0aGlzLnRhcmdldC5jaGlsZHJlbihgOm5vdCgke3RoaXMuUFJ9KWApLnJlbW92ZSgpXG4gICAgICAgIHRoaXMuJHRhcmdldC5jaGlsZHJlbigpLnJlbW92ZSgpXG4gICAgICAgIHRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKHRoaXMudGFyZ2V0LmFwcGVuZChgPHc6cj48dzp0PiR7ZGF0YX08L3c6dD48L3c6cj5gKSlcbiAgICAgICAgdGhpcy5jdXJzb3JBdCh0aGlzLiR0YXJnZXQuZmluZChcInRleHRcIikuYXR0cihcImlkXCIpLGRhdGEubGVuZ3RoKVxuICAgIH0sXG5cbiAgICAvL2Nsb25lIHJ1biB0byBob2xkIGRhdGFcbiAgICB0eXBlX2F0X2JlZ2lubmluZ19vZl9ydW4oZGF0YSl7XG4gICAgICAgIGNvbnN0IHRhcmdldD10aGlzLnRhcmdldFxuICAgICAgICBjb25zdCByPXRhcmdldC5jbG9zZXN0KFwid1xcXFw6clwiKVxuICAgICAgICBjb25zdCBjbG9uZWRSPXIuY2xvbmUoKVxuICAgICAgICBjbG9uZWRSLmNoaWxkcmVuKFwiOm5vdCh3XFxcXDpyUHIpXCIpLnJlbW92ZSgpXG4gICAgICAgIGNsb25lZFIuYXBwZW5kKGA8dzp0PiR7ZGF0YX08L3c6dD5gKVxuICAgICAgICByLmJlZm9yZShjbG9uZWRSKVxuICAgICAgICBjb25zdCBhPXRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKGNsb25lZFIpXG4gICAgICAgIGNvbnN0ICRyPXRoaXMuJHRhcmdldC5jbG9zZXN0KFwicnVuXCIpXG4gICAgICAgICRyLmJlZm9yZShgIyR7YS5pZH1gKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJChgIyR7YS5pZH0gdGV4dGApLmF0dHIoXCJpZFwiKSxkYXRhLmxlbmd0aClcbiAgICB9LFxuXG4gICAgLy9jbG9uZSBydW4gdG8gaG9sZCBkYXRhXG4gICAgdHlwZV9hdF9iZWdpbm5pbmdfb2ZfdXBfdG9fcnVuKCl7XG4gICAgICAgIHRoaXMudHlwZV9hdF9iZWdpbm5pbmdfb2ZfcnVuKC4uLmFyZ3VtZW50cylcbiAgICB9LFxuXG4gICAgdHlwZV9hdF9iZWdpbm5pbmdfb2ZfcGFyYWdyYXBoKGRhdGEpe1xuICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCh0aGlzLnRhcmdldC5hZnRlck9yUHJlcGVuZChgPHc6cj48dzp0PiR7ZGF0YX08L3c6dD48L3c6cj5gLFwid1xcXFw6cFByXCIpKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJHRhcmdldC5maW5kKFwidGV4dFwiKS5maXJzdCgpLmF0dHIoXCJpZFwiKSxkYXRhLmxlbmd0aClcbiAgICB9LFxuXG4gICAgdHlwZV9hdF9lbmRfb2ZfcnVuKGRhdGEpe1xuICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCh0aGlzLnRhcmdldC5hcHBlbmQoYDx3OnQ+JHtkYXRhfTwvdzp0PmApKVxuICAgICAgICB0aGlzLmN1cnNvckF0KHRoaXMuJHRhcmdldC5jaGlsZHJlbihcInRleHRcIikubGFzdCgpLmF0dHIoXCJpZFwiKSxkYXRhLmxlbmd0aClcbiAgICB9LFxuXG4gICAgdHlwZV9hdF9lbmRfb2ZfcGFyYWdyYXBoKGRhdGEpe1xuICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCh0aGlzLnRhcmdldC5hcHBlbmQoYDx3OnI+PHc6dD4ke2RhdGF9PC93OnQ+PC93OnI+YCkpXG4gICAgICAgIHRoaXMuY3Vyc29yQXQodGhpcy4kdGFyZ2V0LmZpbmQoXCJ0ZXh0XCIpLmxhc3QoKS5hdHRyKFwiaWRcIiksZGF0YS5sZW5ndGgpXG4gICAgfSxcbn1cbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgICBwYXJhZ3JhcGhIYXNJbmRlbnRTZXR0aW5nKCl7XG4gICAgICAgIHJldHVybiB0aGlzLnRhcmdldC5jbG9zZXN0KHRoaXMuUEFSQUdSQVBIXykuY2hpbGRyZW4odGhpcy5QUikuZmluZChcIndcXFxcOmluZFwiKS5sZW5ndGg+MFxuICAgIH0sXG5cbiAgICBiYWNrc3BhY2VfYXRfYmVnaW5uaW5nX29mX3VwX3RvX251bWJlcmluZ19wYXJhZ3JhcGgoKXtcbiAgICAgICAgY29uc3QgcD10aGlzLnRhcmdldC5jbG9zZXN0KGB3XFxcXDpwYClcbiAgICAgICAgY29uc3QgcFByPXAuY2hpbGRyZW4oXCJ3XFxcXDpwUHJcIikgIFxuICAgICAgICBjb25zdCBudW1Qcj1wUHIuZmluZChcIndcXFxcOm51bVByXCIpXG4gICAgICAgIGlmKG51bVByLmxlbmd0aD4wKXtcbiAgICAgICAgICAgIG51bVByLnJlbW92ZSgpXG4gICAgICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChwKVxuICAgICAgICB9ZWxzZSBpZih0aGlzLmZpbGUuZG9jLm9mZmljZURvY3VtZW50XG4gICAgICAgICAgICAuc3R5bGVzKGB3XFxcXDpzdHlsZVt3XFxcXDpzdHlsZUlkPVwiJHtwUHIuZmluZCgnd1xcXFw6cFN0eWxlJykuYXR0cihcInc6dmFsXCIpfVwiXWApXG4gICAgICAgICAgICAuYmFzZXN0KFwiOmhhcyh3XFxcXDpudW1Qcix3XFxcXDppbmQpXCIpXG4gICAgICAgICAgICAubGVuZ3RoPjApe1xuICAgICAgICAgICAgcFByLmZpbmQoJ3dcXFxcOnBTdHlsZScpLnJlbW92ZSgpXG4gICAgICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZChwKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3Nob3VsZCBub3QgYmUgaGVyZScpXG4gICAgICAgIH0gICAgXG4gICAgfSxcblxuICAgIGJhY2tzcGFjZV9hdF9iZWdpbm5pbmdfb2ZfdXBfdG9faW5kZW50X3BhcmFncmFwaCgpe1xuICAgICAgICBjb25zdCBwPXRoaXMudGFyZ2V0LmNsb3Nlc3QoYHdcXFxcOnBgKVxuICAgICAgICBjb25zdCBpbmQ9cC5jaGlsZHJlbihcIndcXFxcOnBQclwiKS5maW5kKFwid1xcXFw6aW5kXCIpICBcbiAgICAgICAgaWYocGFyc2VJbnQoaW5kLmF0dHIoXCJ3OmhhbmdpbmdcIil8fDApPjAgfHwgXG4gICAgICAgICAgICBwYXJzZUludChpbmQuYXR0cihcInc6Zmlyc3RMaW5lXCIpfHwwKT4wKXtcbiAgICAgICAgICAgIGluZC5hdHRyKFwidzpoYW5naW5nXCIsXCIwXCIpXG4gICAgICAgICAgICBpbmQuYXR0cihcInc6Zmlyc3RMaW5lXCIsXCIwXCIpXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgaW5kLnJlbW92ZSgpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlLnJlbmRlckNoYW5nZWQocClcbiAgICB9LFxuXG4gICAgYmFja3NwYWNlX2F0X2VuZF9vZl9pbWFnZSgpe1xuICAgICAgICBjb25zdCBySWQ9dGhpcy4kdGFyZ2V0LmNsb3Nlc3QoJ3J1bicpLmF0dHIoJ2lkJylcbiAgICAgICAgdGhpcy5jdXJzb3JBdChySWQsMCwgcklkLDEsIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAgIHRoaXMucmVtb3ZlKCkgICBcbiAgICB9LFxuXG4gICAgYmFja3NwYWNlX2F0X2VtcHR5X3J1bigpe1xuICAgICAgICBjb25zdCB7aWR9PXRoaXMuc2VsZWN0aW9uLnN0YXJ0XG4gICAgICAgIHRyeXtcbiAgICAgICAgICAgIHRoaXMuYmFja3NwYWNlX2F0X2VtcHR5KC4uLmFyZ3VtZW50cylcbiAgICAgICAgfWZpbmFsbHl7XG4gICAgICAgICAgICB0aGlzLmZpbGUuZ2V0Tm9kZShpZCkucmVtb3ZlKClcbiAgICAgICAgICAgIHRoaXMuJCgnIycraWQpLnJlbW92ZSgpXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGJhY2tzcGFjZV9hdF9iZWdpbm5pbmdfb2ZfdXBfdG9fcnVuKCl7XG4gICAgICAgIHRoaXMuYmFja3NwYWNlX2F0X2JlZ2lubmluZyguLi5hcmd1bWVudHMpXG4gICAgfSwgICAgICAgXG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gICAgdGFiX2F0X2JlZ2lubmluZ19vZl91cF90b19wYXJhZ3JhcGgoZSl7XG4gICAgICAgIHRoaXMudXBkYXRlX2F0X3BhcmFncmFwaCh7aWQ6dGhpcy4kdGFyZ2V0LmNsb3Nlc3QoXCJwYXJhZ3JhcGhcIikuYXR0cignaWQnKSx0YWI6ZX0pXG4gICAgfSxcblxuICAgIHRhYl9hdF90ZXh0KCl7XG4gICAgICAgIHRoaXMuc2VwZXJhdGVfYXRfdGV4dF9mb3JfZW5kKClcbiAgICAgICAgdGhpcy5zZXBlcmF0ZV91cF90b19ydW5fYXRfZW5kX29mX3RleHQoKVxuICAgICAgICBjb25zdCByPXRoaXMudGFyZ2V0LmNsb3Nlc3QoJ3dcXFxcOnInKVxuICAgICAgICBjb25zdCByVGFiPXRoaXMuZmlsZS4kKGA8dzpyPjx3OnRhYi8+PC93OnI+YClcbiAgICAgICAgci5hZnRlcihyVGFiKVxuICAgICAgICBjb25zdCBhPXRoaXMuZmlsZS5yZW5kZXJDaGFuZ2VkKHJUYWIpXG4gICAgICAgIHRoaXMuJHRhcmdldC5jbG9zZXN0KCdydW4nKS5hZnRlcihgIyR7YS5pZH1gKVxuICAgICAgICB0aGlzLmN1cnNvckF0KGEuaWQsMSlcbiAgICB9LFxufSIsImV4cG9ydCBkZWZhdWx0IHtcbiAgICBwYXN0ZV9ydW5fYXRfdGV4dCgpe1xuICAgICAgICB0aGlzLnNlcGVyYXRlX2F0X3RleHRfZm9yX2VuZCgpXG4gICAgICAgIHRoaXMuc2VwZXJhdGVfdXBfdG9fcnVuX2F0X2VuZF9vZl90ZXh0KClcbiAgICAgICAgdGhpcy5wYXN0ZV9ydW5fYXRfZW5kX29mX3J1biguLi5hcmd1bWVudHMpXG4gICAgfSxcblxuICAgIHBhc3RlX3J1bl9hdF9lbmRfb2ZfcnVuKCRwYXN0aW5nLHBhc3Rpbmcpe1xuICAgICAgICB0aGlzLiR0YXJnZXQuY2xvc2VzdChcInJ1blwiKS5hZnRlcigkcGFzdGluZylcbiAgICAgICAgdGhpcy50YXJnZXQuY2xvc2VzdChcIndcXFxcOnJcIikuYWZ0ZXIocGFzdGluZylcbiAgICAgICAgdGhpcy5jdXJzb3JBdEVuZCgkcGFzdGluZy5hdHRyKCdpZCcpKVxuICAgIH0sXG5cbiAgICBwYXN0ZV9ydW5fYXRfZW1wdHlfcGFyYWdyYXBoKCRwYXN0aW5nLHBhc3Rpbmcpe1xuICAgICAgICB0aGlzLiR0YXJnZXQuYXBwZW5kKCRwYXN0aW5nKVxuICAgICAgICB0aGlzLnRhcmdldC5hcHBlbmQocGFzdGluZylcbiAgICAgICAgdGhpcy5jdXJzb3JBdEVuZCgkcGFzdGluZy5hdHRyKCdpZCcpKVxuICAgIH1cbn0iLCJleHBvcnQgZGVmYXVsdCB7XG4gICAgc2VyaWFsaXplX2F0X3RleHQoKXtcbiAgICAgICAgY29uc3Qge3N0YXJ0LGVuZH09dGhpcy5zZWxlY3Rpb25cbiAgICAgICAgY29uc3QgdGV4dD10aGlzLiR0YXJnZXQudGV4dCgpXG4gICAgICAgIGNvbnN0IGNsb25lZD10aGlzLmZpbGUuZ2V0Tm9kZSh0aGlzLiR0YXJnZXQuY2xvc2VzdChcInJ1blwiKS5hdHRyKCdpZCcpKS5jbG9uZSgpXG4gICAgICAgIGNsb25lZC5maW5kKFwid1xcXFw6dFwiKS5yZW1vdmUoKVxuICAgICAgICBjbG9uZWQuYXBwZW5kKGA8dzp0PiR7dGV4dC5zdWJzdHJpbmcoc3RhcnQuYXQsIGVuZC5hdCl9PC93OnQ+YClcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS5zZXJpYWxpemUoY2xvbmVkKVxuICAgIH0sXG5cbiAgICBzZXJpYWxpemVfYXRfd2hvbGVfdGV4dCgpe1xuICAgICAgICBpZih0aGlzLiR0YXJnZXQucGFyZW50KCkuY2hpbGRyZW4oKS5sZW5ndGg9PTEpe1xuICAgICAgICAgICAgdGhpcy5leHRlbmQoXCJydW5cIilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVtaXQoXCJzZXJpYWxpemVcIiwgdGhpcy5jb25kcylcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0PXRoaXMuJHRhcmdldC50ZXh0KClcbiAgICAgICAgY29uc3QgY2xvbmVkPXRoaXMuZmlsZS5nZXROb2RlKHRoaXMuJHRhcmdldC5jbG9zZXN0KFwicnVuXCIpLmF0dHIoJ2lkJykpLmNsb25lKClcbiAgICAgICAgY2xvbmVkLmZpbmQoXCJ3XFxcXDp0XCIpLnJlbW92ZSgpXG4gICAgICAgIGNsb25lZC5hcHBlbmQoYDx3OnQ+JHt0ZXh0fTwvdzp0PmApXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGUuc2VyaWFsaXplKGNsb25lZClcbiAgICB9LFxuXG4gICAgc2VyaWFsaXplX2F0X3dob2xlKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGUuc2VyaWFsaXplKHRoaXMuJHRhcmdldC5hdHRyKCdpZCcpKVxuICAgIH1cbn0iLCJpbXBvcnQge1RhYmxlfSBmcm9tIFwiLi9kb21cIlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHJlbW92ZV9jb2x1bW4oKXtcbiAgICAgICAgY29uc3QgJGNlbGw9dGhpcy4kdGFyZ2V0LmNsb3Nlc3QoXCJjZWxsXCIpXG4gICAgICAgIGlmKCRjZWxsLmxlbmd0aD09MClcbiAgICAgICAgICAgIHJldHVyblxuXG4gICAgICAgIGNvbnN0ICRyb3c9JGNlbGwuY2xvc2VzdCgncm93JylcbiAgICAgICAgdmFyICRjZWxscz0kcm93LmZpbmQoXCJjZWxsXCIpXG4gICAgICAgIGlmKCRjZWxscy5sZW5ndGg9PTEpe1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlX3RhYmxlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF0PSRjZWxscy5pbmRleE9mKCRjZWxsKVxuICAgICAgICBjb25zdCB0YWJsZT10aGlzLmZpbGUuZ2V0Tm9kZSgkY2VsbC5jbG9zZXN0KCd0YWJsZScpLmF0dHIoJ2lkJykpXG4gICAgICAgIGNvbnN0IGdyaWQ9dGFibGUuZmlyc3QoXCJ3XFxcXDp0YmxHcmlkXCIpXG4gICAgICAgIGNvbnN0IGNvbHM9Z3JpZC5maW5kKFwid1xcXFw6Z3JpZENvbFwiKVxuICAgICAgICBjb25zdCBsZW49Y29scy5sZW5ndGhcbiAgICAgICAgdmFyIHdpZHRoPWNvbHMudG9BcnJheSgpLnJlZHVjZSgodyxhKT0+dytwYXJzZUludChhLmF0dHJpYnNbXCJ3OndcIl0pLDApXG4gICAgICAgIGNvbnN0IHJhdGlvPWxlbi8obGVuLTEpXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGVuO2krKyl7XG4gICAgICAgICAgICBjb25zdCBjb2w9Y29scy5lcShpKVxuICAgICAgICAgICAgY29uc3Qgdz1wYXJzZUludChwYXJzZUludChjb2wuYXR0cihcInc6d1wiKSkqcmF0aW8pXG4gICAgICAgICAgICBjb2wuYXR0cihcInc6d1wiLHcpXG4gICAgICAgICAgICB3aWR0aC09d1xuICAgICAgICB9XG5cbiAgICAgICAgY29scy5lcShhdCkucmVtb3ZlKClcblxuICAgICAgICBjb25zdCByb3dzPXRhYmxlLmZpbmQoXCJ3XFxcXDp0clwiKVxuICAgICAgICBmb3IobGV0IGk9MDtpPHJvd3MubGVuZ3RoO2krKyl7XG4gICAgICAgICAgICByb3dzLmVxKGkpXG4gICAgICAgICAgICAgICAgLmZpbmQoXCJ3XFxcXDp0Y1wiKVxuICAgICAgICAgICAgICAgIC5lcShhdCkucmVtb3ZlKClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCh0YWJsZSlcbiAgICAgICAgJGNlbGxzPSRyb3cuZmluZChcImNlbGxcIilcbiAgICAgICAgY29uc3QgaWQ9JGNlbGxzLmVxKGF0KS5hdHRyKCdpZCcpfHwkY2VsbHMuZXEoYXQtMSkuYXR0cignaWQnKVxuICAgICAgICBpZihpZCl7XG4gICAgICAgICAgICB0aGlzLmN1cnNvckF0KGlkLDApXG4gICAgICAgIH1cbiAgICB9LFxufSIsImltcG9ydCB7SW5wdXR9IGZyb20gXCJ3ZS1lZGl0XCJcblxuaW1wb3J0IHNlcGVyYXRlIGZyb20gXCIuL3NlcGVyYXRlXCJcbmltcG9ydCBjcmVhdGUgZnJvbSBcIi4vY3JlYXRlXCJcbmltcG9ydCB1cGRhdGUgZnJvbSBcIi4vdXBkYXRlXCJcbmltcG9ydCBlbnRlciBmcm9tIFwiLi9lbnRlclwiXG5pbXBvcnQgdHlwZSBmcm9tIFwiLi90eXBlXCJcbmltcG9ydCBiYWNrc3BhY2UgZnJvbSBcIi4vYmFja3NwYWNlXCJcbmltcG9ydCB0YWIgZnJvbSBcIi4vdGFiXCJcbmltcG9ydCBwYXN0ZSBmcm9tIFwiLi9wYXN0ZVwiXG5pbXBvcnQgc2VyaWFsaXplIGZyb20gXCIuL3NlcmlhbGl6ZVwiXG5pbXBvcnQgcmVtb3ZlIGZyb20gXCIuL3JlbW92ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFjdGlvbnMgZXh0ZW5kcyBJbnB1dC5FZGl0YWJsZS5FdmVudEhhbmRsZXIueG1se1xuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cylcbiAgICAgICAgdGhpcy5kZWJ1Zz10cnVlXG4gICAgICAgIHRoaXMuUFI9XCJ3XFxcXDpyUHIsd1xcXFw6cFByLHdcXFxcOnRibFByLHdcXFxcOnNkdFByLHdcXFxcOnRjUHIsd1xcXFw6dHJQclwiXG4gICAgICAgIHRoaXMuUEFSQUdSQVBIPVwidzpwXCJcbiAgICAgICAgdGhpcy5URVhUPVwidzp0XCJcbiAgICAgICAgdGhpcy5JbmxpbmVDb250YWluZXJzPVwid1xcXFw6ciwgd1xcXFw6c2R0XCJcbiAgICAgICAgXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcyxzZXBlcmF0ZSxjcmVhdGUsdXBkYXRlLGVudGVyLHR5cGUsYmFja3NwYWNlLHRhYixwYXN0ZSxzZXJpYWxpemUscmVtb3ZlKVxuICAgIH1cblxuICAgIGluaXQoKXtcbiAgICAgICAgLy9zZXQgc3RhcnQgb2YgZmlyc3QgcGFyYWdyYXBoIGluIGNvbnRlbnQgYXMgc2VsZWN0aW9uXG4gICAgICAgIGNvbnN0IGZpcnN0UGFyYWdyYXBoSWQ9dGhpcy5maWxlLm1ha2VJZCh0aGlzLmZpbGUuJCgnd1xcXFw6cCcpLmdldCgwKSlcbiAgICAgICAgaWYoZmlyc3RQYXJhZ3JhcGhJZCl7XG4gICAgICAgICAgICB0aGlzLmN1cnNvckF0KGZpcnN0UGFyYWdyYXBoSWQsMClcbiAgICAgICAgICAgIHRoaXMuZm9yd2FyZCgpXG4gICAgICAgICAgICB0aGlzLmJhY2t3YXJkKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZV9maXJzdF9wYXJhZ3JhcGgoKXtcbiAgICAgICAgY29uc3QgJGJvZHk9dGhpcy5maWxlLiQoJ3dcXFxcOmJvZHknKS5wcmVwZW5kKGA8dzpwPjx3OnI+PHc6dC8+PC93OnI+PC93OnA+YClcbiAgICAgICAgY29uc3QgYT10aGlzLmZpbGUucmVuZGVyQ2hhbmdlZCgkYm9keS5jaGlsZHJlbigpLmZpcnN0KCkpXG4gICAgICAgIHRoaXMuJCgpLmZpbmRGaXJzdCgnc2VjdGlvbicpLnByZXBlbmQoYCMke2EuaWR9YClcbiAgICAgICAgdGhpcy5jdXJzb3JBdChhLmlkLDApXG4gICAgfVxuXG4gICAgY2xlYW4oKXtcbiAgICAgICAgc3VwZXIuY2xlYW4oKCk9PntcbiAgICAgICAgICAgIHRoaXMuJHRhcmdldC5jbG9zZXN0KCdwYXJhZ3JhcGgnKVxuICAgICAgICAgICAgICAgIC5maW5kKFwicnVuXCIpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihhPT50aGlzLiQoYSkuZmluZEZpcnN0KHRoaXMuY3Vyc29yYWJsZSkubGVuZ3RoPT0wKVxuICAgICAgICAgICAgICAgIC5lYWNoKChpLGEpPT57XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJChhKS5yZW1vdmUoKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGUuZ2V0Tm9kZShhLmdldCgnaWQnKSkucmVtb3ZlKClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGN1cnNvcmFibGUobil7XG4gICAgICAgIGlmKHN1cGVyLmN1cnNvcmFibGUobikpe1xuICAgICAgICAgICAgaWYodGhpcy5JbmxpbmVDb250YWluZXJzKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmlsZS5nZXROb2RlKG4uZ2V0KCdpZCcpKS5pcyh0aGlzLklubGluZUNvbnRhaW5lcnMpfHx1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlX2F0X3VwX3RvX2FuY2hvcih7ZHgsZHl9KXtcbiAgICAgICAgY29uc3QgJGFuY2hvcj10aGlzLiR0YXJnZXQuY2xvc2VzdCgnYW5jaG9yJylcbiAgICAgICAgY29uc3QgaWQ9JGFuY2hvci5hdHRyKCdpZCcpXG4gICAgICAgIGNvbnN0IGFuY2hvcj10aGlzLmZpbGUuZ2V0Tm9kZShpZClcbiAgICAgICAgXG4gICAgICAgIGR4ICYmIHRoaXMuY29udGVudC51cGRhdGVJbihbaWQsXCJwcm9wc1wiLFwieFwiLFwib2Zmc2V0XCJdLCBhPT5hK2R4KVxuICAgICAgICBkeSAmJiB0aGlzLmNvbnRlbnQudXBkYXRlSW4oW2lkLFwicHJvcHNcIixcInlcIixcIm9mZnNldFwiXSwgYT0+YStkeSlcbiAgICAgICAgXG4gICAgICAgIGlmKGFuY2hvci5hdHRyKFwic2ltcGxlUG9zXCIpPT1cIjBcIil7XG4gICAgICAgICAgICBjb25zdCAkeD1hbmNob3IuZmluZChcIndwXFxcXDpwb3NpdGlvbkg+d3BcXFxcOnBvc09mZnNldFwiKVxuICAgICAgICAgICAgY29uc3QgJHk9YW5jaG9yLmZpbmQoXCJ3cFxcXFw6cG9zaXRpb25WPndwXFxcXDpwb3NPZmZzZXRcIilcbiAgICAgICAgICAgIGR4ICYmICR4LnRleHQodGhpcy5maWxlLnB4MmVtdSgkYW5jaG9yLmF0dHIoXCJ4Lm9mZnNldFwiKSkpXG4gICAgICAgICAgICBkeSAmJiAkeS50ZXh0KHRoaXMuZmlsZS5weDJlbXUoJGFuY2hvci5hdHRyKFwieS5vZmZzZXRcIikpKVxuICAgICAgICB9ZWxzZSBpZihhbmNob3IuYXR0cihcInNpbXBsZVBvc1wiKT09XCIxXCIpe1xuICAgICAgICAgICAgY29uc3Qgc2ltcGxlUG9zPWFuY2hvci5maW5kKFwid3BcXFxcOnNpbXBsZVBvc1wiKVxuICAgICAgICAgICAgZHggJiYgc2ltcGxlUG9zLmF0dHIoJ3gnLCB0aGlzLmZpbGUucHgyZW11KCRhbmNob3IuYXR0cihcIngub2Zmc2V0XCIpKSlcbiAgICAgICAgICAgIGR5ICYmIHNpbXBsZVBvcy5hdHRyKCd5JywgdGhpcy5maWxlLnB4MmVtdSgkYW5jaG9yLmF0dHIoXCJ5Lm9mZnNldFwiKSkpXG4gICAgICAgIH1cbiAgICB9XG59IiwiXG5pbXBvcnQge0lucHV0fSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwicmVhZGFibGUtc3RyZWFtXCJcblxuaW1wb3J0IERvY3ggZnJvbSBcIi4vZG9jeFwiXG5pbXBvcnQgU3R5bGUgZnJvbSBcIi4vcmVuZGVyL3N0eWxlc1wiXG5pbXBvcnQgSE9DcyBmcm9tIFwiLi9yZW5kZXIvZG9tXCJcbmltcG9ydCBSZWR1Y2VyIGZyb20gXCIuL2V2ZW50XCJcblxuY2xhc3MgRG9jeFR5cGUgZXh0ZW5kcyBJbnB1dC5FZGl0YWJsZXtcblx0c3RhdGljIEZpbGVUeXBlPURvY3hcblx0c3RhdGljIHN1cHBvcnQoZmlsZSl7XG5cdFx0aWYoYXJndW1lbnRzLmxlbmd0aD09MCl7Ly9mb3IgaW5zdGFsbGVyXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdH1cblxuXHRcdGNvbnN0IHtkYXRhLCBleHQsbmFtZT1cIlwiLG1pbWVUeXBlfT1maWxlXG5cdFx0Y29uc3QgZGVmYXVsdFByb3BzPXRoaXMuZGVmYXVsdFByb3BzXG4gICAgICAgIHJldHVybiBleHQ9PT1kZWZhdWx0UHJvcHMuZXh0IFxuICAgICAgICAgICAgfHwgbWltZVR5cGU9PT1kZWZhdWx0UHJvcHMubWltZVR5cGUgXG4gICAgICAgICAgICB8fCBuYW1lLmVuZHNXaXRoKFwiLlwiK2RlZmF1bHRQcm9wcy5leHQpXG4gICAgICAgICAgICB8fCAoZmlsZSBpbnN0YW5jZW9mIHRoaXMuRmlsZVR5cGUpXG4gICAgICAgICAgICB8fCAoZGF0YSBpbnN0YW5jZW9mIHRoaXMuRmlsZVR5cGUpXG5cdH1cblxuXHRzdGF0aWMgZGVmYXVsdFByb3BzPXtcblx0XHR0eXBlOiBcImRvY3hcIixcblx0XHRuYW1lOiBcIldvcmQgRG9jdW1lbnRcIixcblx0XHRleHQ6IFwiZG9jeFwiLFxuXHRcdG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCJcblx0fVxuXG5cdHN0YXRpYyBIT0NzPUhPQ3NcblxuXHRwYXJzZSh7ZGF0YSwgLi4ucHJvcHN9KXtcblx0XHR0aGlzLnByb3BzPXsuLi5wcm9wcyxzdXBwb3J0UGFnaW5hdGlvbjp0cnVlfVxuXHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLkZpbGVUeXBlLmxvYWQoZGF0YSlcblx0fVxuXG5cdHJlbGVhc2UoKXtcblx0XHR0aGlzLmRvYy5yZWxlYXNlKClcblx0fVxuXG5cdHN0cmVhbShvcHRpb24pe1xuXHRcdGNvbnN0IGRhdGE9dGhpcy5kb2Muc2VyaWFsaXplKG9wdGlvbilcblx0XHRcdC5nZW5lcmF0ZSh7XG5cdFx0XHRcdC4uLm9wdGlvbixcblx0XHRcdFx0dHlwZTpcIm5vZGVidWZmZXJcIixcblx0XHRcdFx0bWltZVR5cGU6dGhpcy5kb2MubWltZSxcblx0XHRcdH0pXG5cdFx0Y29uc3Qgc3RyZWFtPW5ldyBSZWFkYWJsZSh7b2JqZWN0TW9kZTogdHJ1ZX0pXG5cdFx0c3RyZWFtLnB1c2goZGF0YSlcblx0XHRyZXR1cm4gc3RyZWFtXG5cdH1cblxuXHRzdHlsZShvZmZpY2VEb2N1bWVudCwgbm9kZSl7XG5cdFx0Y29uc3Qgc2FtZT0oa2V5cyxmeCk9PmtleXMucmVkdWNlKChwcm9wcyxrKT0+KHByb3BzW2tdPWZ4LHByb3BzKSx7fSlcblx0XHRjb25zdCBlYWNoQXR0cmliPSh7YXR0cmlic30sZngpPT5PYmplY3Qua2V5cyhhdHRyaWJzKS5yZWR1Y2UoKHByb3BzLGEpPT57XG5cdFx0XHRwcm9wc1thLnNwbGl0KFwiOlwiKS5wb3AoKV09ZngoYXR0cmlic1thXSlcblx0XHRcdHJldHVybiBwcm9wc1xuXHRcdH0se30pXG5cblx0XHRyZXR1cm4gb2ZmaWNlRG9jdW1lbnQuJChub2RlKS5wcm9wcyh7XG5cdFx0XHR0aWR5X3BQckRlZmF1bHQ6KHtwUHJ9KT0+cFByLFxuXHRcdFx0Li4uc2FtZShcImtlZXBOZXh0LGtlZXBMaW5lcyxjb250ZXh0dWFsU3BhY2luZyxjYW50U3BsaXRcIi5zcGxpdChcIixcIiksKCk9PnRydWUpLFxuXHRcdFx0dGlkeV9vdXRsaW5lTHZsOih7dmFsfSk9PnBhcnNlSW50KHZhbCksXG5cdFx0XHQuLi5zYW1lKFwidyxoLHNwYWNlLHRySGVpZ2h0XCIuc3BsaXQoXCIsXCIpLHY9Pm9mZmljZURvY3VtZW50LmRvYy5keGEyUHgodikpLFxuXHRcdFx0dGl0bGVQZzooe1widzp2YWxcIjp2YWx9KT0+dmFsIT1cImZhbHNlXCIsXG5cdFx0XHR3aWRvd0NvbnRyb2w6KHtcInc6dmFsXCI6dmFsfSk9PnZhbCE9XCIwXCIsXG5cdFx0XHRjbmZTdHlsZTooe1widzp2YWxcIjp2YWx9KT0+cGFyc2VJbnQodmFsLDIpLFxuXHRcdFx0aW5kOng9PmVhY2hBdHRyaWIoeCxhPT5vZmZpY2VEb2N1bWVudC5kb2MuZHhhMlB4KGEpKSxcblx0XHRcdC8vLi4uc2FtZShcInRibEluZCx0Y1csbGVmdCxyaWdodCx0b3AsYm90dG9tXCIuc3BsaXQoXCIsXCIpLCh7XCJ3OndcIjp2YWx9KT0+b2ZmaWNlRG9jdW1lbnQuZG9jLmR4YTJQeCh2YWwpKSxcblxuXHRcdFx0Li4uc2FtZShcImpjLHRibFN0eWxlQ29sQmFuZFNpemUsdGJsU3R5bGVSb3dCYW5kU2l6ZVwiLnNwbGl0KFwiLFwiKSwoe1widzp2YWxcIjp2YWx9KT0+dmFsKSxcblxuXHRcdFx0dGlkeV9yUHJEZWZhdWx0Oih7clByfSk9PnJQcixcblx0XHRcdC4uLnNhbWUoXCJhc2NpaSxlYXN0QXNpYSxoQW5zaSxjc1wiLnNwbGl0KFwiLFwiKS5tYXAoYT0+YSsnVGhlbWUnKSx2PT5vZmZpY2VEb2N1bWVudC50aGVtZS5mb250eCh2KSksXG5cdFx0XHQuLi5zYW1lKFwic3osc3pDcyxrZXJuXCIuc3BsaXQoXCIsXCIpLm1hcChhPT4ndGlkeV8nK2EpLCh7dmFsfSk9PnBhcnNlSW50KHZhbCkvMiksXG5cdFx0XHR0aWR5X3JGb250czooe2FzY2lpLGVhc3RBc2lhLGhBbnNpLGNzfSk9Plthc2NpaSxlYXN0QXNpYSxoQW5zaSxjc10uZmlsdGVyKGE9PmEpLmpvaW4oXCIsXCIpLFxuXG5cdFx0XHQvL3RoZW1lU2hhZGU6dj0+b2ZmaWNlRG9jdW1lbnQudGhlbWUuXG5cdFx0XHR0aGVtZUNvbG9yOnY9Pm9mZmljZURvY3VtZW50LnRoZW1lLmNvbG9yeCh2KSxcblx0XHRcdHRpZHlfY29sb3I6KHt0aGVtZUNvbG9yLHZhbCwuLi5lZmZlY3RzfSk9Pm9mZmljZURvY3VtZW50LmRvYy5hc0NvbG9yKHZhbHx8dGhlbWVDb2xvciwuLi5lZmZlY3RzKSxcblxuXG5cdFx0XHQuLi5zYW1lKFwiYmVmb3JlTGluZXMsYmVmb3JlLGFmdGVyTGluZXMsYWZ0ZXJcIi5zcGxpdChcIixcIiksdj0+b2ZmaWNlRG9jdW1lbnQuZG9jLmR4YTJQeCh2KSksXG5cdFx0XHR0aWR5X3NwYWNpbmc6KHtiZWZvcmVBdXRvc3BhY2luZyxiZWZvcmVMaW5lcyxiZWZvcmUsYWZ0ZXJBdXRvc3BhY2luZyxhZnRlckxpbmVzLGFmdGVyLGxpbmUsbGluZVJ1bGUsdmFsLC4uLnByb3BzfSk9Pntcblx0XHRcdFx0aWYodmFsIT11bmRlZmluZWQpe1xuXHRcdFx0XHRcdHJldHVybiB2YWxcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHByb3BzLnRvcD0hYmVmb3JlQXV0b3NwYWNpbmcmJmJlZm9yZUxpbmVzfHxiZWZvcmVcblx0XHRcdFx0cHJvcHMuYm90dG9tPSFhZnRlckF1dG9zcGFjaW5nJiZhZnRlckxpbmVzfHxhZnRlclxuXG5cdFx0XHRcdGlmKGxpbmUpe1xuXHRcdFx0XHRcdHN3aXRjaCAobGluZVJ1bGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2F0TGVhc3QnOlxuXHRcdFx0XHRcdFx0Y2FzZSAnZXhhY3QnOlxuXHRcdFx0XHRcdFx0XHRwcm9wcy5saW5lPW9mZmljZURvY3VtZW50LmRvYy5keGEyUHgobGluZSlcblx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHByb3BzLmxpbmU9cGFyc2VJbnQobGluZSkqMTAwLzI0MC4wXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBwcm9wc1xuXHRcdFx0fSxcblx0XHRcdC4uLnNhbWUoXCJiYXNlZE9uLG5hbWUsbGlua1wiLnNwbGl0KFwiLFwiKS5tYXAoYT0+J3RpZHlfJythKSwoe3ZhbH0pPT52YWwpLFxuXG5cdFx0XHRuYW1lczp7XG5cdFx0XHRcdGFzY2lpVGhlbWU6XCJhc2NpaVwiLFxuXHRcdFx0XHRlYXN0QXNpYVRoZW1lOlwiZWFzdEFzaWFcIixcblx0XHRcdFx0aEFuc2lUaGVtZTonaEFuc2knLFxuXHRcdFx0XHR0aGVtZVNoYWRlOidzaGFkZScsXG5cdFx0XHRcdHJGb250czpcImZvbnRzXCIsXG5cdFx0XHRcdHJQckRlZmF1bHQ6XCJyUHJcIixcblx0XHRcdFx0cFByRGVmYXVsdDpcInBQclwiLFxuXHRcdFx0XHR3Olwid2lkdGhcIixcblx0XHRcdFx0aDpcImhlaWdodFwiLFxuXHRcdFx0fSxcblx0XHR9KVxuXHR9XG5cblx0cmVuZGVyKGNyZWF0ZUVsZW1lbnQsY29tcG9uZW50cyl7XG5cdFx0Y29uc3Qgc2VsZj10aGlzXG5cdFx0Y29uc3QgaWRlbnRpZnk9dGhpcy5kb2MuY29uc3RydWN0b3IuT2ZmaWNlRG9jdW1lbnQuaWRlbnRpZnkuYmluZCh0aGlzLmRvYy5jb25zdHJ1Y3Rvci5PZmZpY2VEb2N1bWVudClcblxuXHRcdGNvbnN0IHByZWNpc2lvbj0xXG5cdFx0Y29uc3QgZG9jeD10aGlzLmRvY1xuXHRcdGNvbnN0IHNlbGVjdG9yPW5ldyBTdHlsZS5Qcm9wZXJ0aWVzKGRvY3gscHJlY2lzaW9uKVxuXHRcdGNvbnN0IG9mZmljZURvY3VtZW50PWRvY3gub2ZmaWNlRG9jdW1lbnRcblx0XHRjb25zdCAkPW9mZmljZURvY3VtZW50LmNvbnRlbnRcblx0XHRjb25zdCBzZXR0aW5ncz1vZmZpY2VEb2N1bWVudC5zZXR0aW5nc1xuXG5cdFx0Y29uc3Qgc3R5bGVzPW5ldyAoY2xhc3N7fSkoKTsvL2tlZXAgYXMgcmF3IG9iamVjdCBpbiBzdGF0ZVxuXG5cdFx0Y29uc3QgY3JlYXRlU3R5bGVzRWxlbWVudD0oKT0+e1xuXHRcdFx0cmV0dXJuIG51bGxcblx0XHRcdGNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdGNvbXBvbmVudHMuU3R5bGVzLFxuXHRcdFx0XHR7c3R5bGVzLCB1cGRhdGVkQXQ6IERhdGUubm93KCl9LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR7aWQ6XCJzdHlsZXNcIn1cblx0XHRcdClcblx0XHR9XG5cblx0XHRjb25zdCBidWlsZEZhY3Rvcnk9Y3JlYXRlRWxlbWVudD0+KHR5cGUse25vZGUsa2V5Ol8xLHR5cGU6XzIsIC4uLnByb3BzfSxjaGlsZHJlbik9Pntcblx0XHRcdGNoaWxkcmVuPWNoaWxkcmVuLnJlZHVjZSgobWVyZ2VkLGEpPT57XG5cdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkoYSkpXG5cdFx0XHRcdFx0bWVyZ2VkLnNwbGljZShtZXJnZWQubGVuZ3RoLDAsIC4uLmEpXG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRtZXJnZWQucHVzaChhKVxuXHRcdFx0XHRyZXR1cm4gbWVyZ2VkXG5cdFx0XHR9LFtdKVxuXG5cdFx0XHRzd2l0Y2godHlwZSl7XG5cdFx0XHRjYXNlIFwic3R5bGVcIjp7XG5cdFx0XHRcdGxldCBzdHlsZT1udWxsXG5cdFx0XHRcdGlmKCFwcm9wcy5pZCl7XG5cdFx0XHRcdFx0c3R5bGU9bmV3IFN0eWxlLkRlZmF1bHQobm9kZSwgc3R5bGVzLHNlbGVjdG9yKVxuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRsZXQgdHlwZT1ub2RlLmF0dHJpYnNbXCJ3OnR5cGVcIl1cblx0XHRcdFx0XHRzd2l0Y2godHlwZSl7XG5cdFx0XHRcdFx0Y2FzZSBcInBhcmFncmFwaFwiOlxuXHRcdFx0XHRcdFx0c3R5bGU9bmV3IFN0eWxlLlBhcmFncmFwaChub2RlLHN0eWxlcyxzZWxlY3Rvcilcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGNhc2UgXCJjaGFyYWN0ZXJcIjpcblx0XHRcdFx0XHRcdHN0eWxlPW5ldyBTdHlsZS5DaGFyYWN0ZXIobm9kZSxzdHlsZXMsc2VsZWN0b3IpXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRjYXNlIFwibnVtYmVyaW5nXCI6XG5cdFx0XHRcdFx0XHRzdHlsZT1uZXcgU3R5bGUuTnVtYmVyaW5nKG5vZGUsc3R5bGVzLHNlbGVjdG9yKVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Y2FzZSBcInRhYmxlXCI6XG5cdFx0XHRcdFx0XHRzdHlsZT1uZXcgU3R5bGUuVGFibGUobm9kZSxzdHlsZXMsc2VsZWN0b3IpXG5cdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZihub2RlLmF0dHJpYnNbXCJ3OmRlZmF1bHRcIl09PVwiMVwiKVxuXHRcdFx0XHRcdFx0c3R5bGVzW2AqJHt0eXBlfWBdPXN0eWxlXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoc3R5bGUpe1xuXHRcdFx0XHRcdHN0eWxlc1tzdHlsZS5pZF09c3R5bGVcblx0XHRcdFx0XHRyZXR1cm4gY3JlYXRlU3R5bGVzRWxlbWVudCgpXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG51bGxcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJudW1cIjp7XG5cdFx0XHRcdGxldCBzdHlsZT1uZXcgU3R5bGUuTnVtKG5vZGUsc3R5bGVzLHNlbGVjdG9yKVxuXHRcdFx0XHRzdHlsZXNbc3R5bGUuaWRdPXN0eWxlXG5cdFx0XHRcdHJldHVybiBjcmVhdGVTdHlsZXNFbGVtZW50KClcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJhYnN0cmFjdE51bVwiOntcblx0XHRcdFx0bGV0IHN0eWxlPW5ldyBTdHlsZS5BYnN0cmFjdE51bShub2RlLHN0eWxlcyxzZWxlY3Rvcilcblx0XHRcdFx0c3R5bGVzW3N0eWxlLmlkXT1zdHlsZVxuXHRcdFx0XHRyZXR1cm4gY3JlYXRlU3R5bGVzRWxlbWVudCgpXG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiZG9jdW1lbnRcIjp7XG5cdFx0XHRcdGxldCBldmVuQW5kT2RkSGVhZGVycz1zZXR0aW5ncyhcIndcXFxcOmV2ZW5BbmRPZGRIZWFkZXJzXCIpLmxlbmd0aD4wXG5cdFx0XHRcdHJldHVybiBjcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdGNvbXBvbmVudHMuRG9jdW1lbnQsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Li4uc2VsZWN0b3Iuc2VsZWN0KG5vZGUuY2hpbGRyZW4uZmlsdGVyKGE9PmEubmFtZSE9XCJ3OmJvZHlcIikpLFxuXHRcdFx0XHRcdFx0ZXZlbkFuZE9kZEhlYWRlcnMsXG5cdFx0XHRcdFx0XHRwcmVjaXNpb24sXG5cdFx0XHRcdFx0XHRzdHlsZXMsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjaGlsZHJlbixcblx0XHRcdFx0XHRub2RlXG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJzZWN0aW9uXCI6e1xuXHRcdFx0XHRsZXQgc3R5bGU9c2VsZWN0b3Iuc2VsZWN0KG5vZGUuY2hpbGRyZW4pXG5cdFx0XHRcdGNvbnN0IGlzRW1wdHk9YT0+e1xuXHRcdFx0XHRcdGlmKGEuY2hpbGRyZW4ubGVuZ3RoPT0xKXtcblx0XHRcdFx0XHRcdGNvbnN0IHA9YS5jaGlsZHJlblswXVxuXHRcdFx0XHRcdFx0aWYoIXAuY2hpbGRyZW5cblx0XHRcdFx0XHRcdFx0fHwgcC5jaGlsZHJlbi5sZW5ndGg9PTBcblx0XHRcdFx0XHRcdFx0fHwgKHAuY2hpbGRyZW4ubGVuZ3RoPT0xICYmIHAubmFtZT09XCJ3OnBcIiAmJiBwLmNoaWxkcmVuWzBdLm5hbWU9PVwidzpwUHJcIikpe1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGhmPShjYXQsSEZUeXBlKT0+bm9kZS5jaGlsZHJlbi5maWx0ZXIoYT0+YS5uYW1lPT1gdzoke2NhdH1SZWZlcmVuY2VgKVxuXHRcdFx0XHRcdC5yZWR1Y2UoKGhmcywgYSk9Pntcblx0XHRcdFx0XHRcdGxldCB0eXBlPWEuYXR0cmlic1tcInc6dHlwZVwiXVxuXHRcdFx0XHRcdFx0bGV0IHJJZD1hLmF0dHJpYnNbXCJyOmlkXCJdXG5cdFx0XHRcdFx0XHRsZXQgcm9vdD1kb2N4Lm9mZmljZURvY3VtZW50LmdldFJlbChySWQpLnJvb3QoKS5jaGlsZHJlbigpLmdldCgwKVxuXHRcdFx0XHRcdFx0aWYoIWlzRW1wdHkocm9vdCkpe1xuXHRcdFx0XHRcdFx0XHRzZWxmLnBhcnQ9cklkXG5cblx0XHRcdFx0XHRcdFx0Y2hpbGRyZW4uc3BsaWNlKDAsMCxcblx0XHRcdFx0XHRcdFx0XHRjcmVhdGVFbGVtZW50KEhGVHlwZSx7bmFtZWQ6YCR7Y2F0fS4ke3R5cGV9YCx0eXBlOmAke2NhdH0uJHt0eXBlfWB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0cm9vdC5jaGlsZHJlbi5tYXAoYT0+cmVuZGVyTm9kZShhKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRyb290XG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpXG5cblx0XHRcdFx0XHRcdFx0ZGVsZXRlIHNlbGYucGFydFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIGhmc1xuXHRcdFx0XHRcdH0se30pXG5cblx0XHRcdFx0aGYoXCJoZWFkZXJcIixjb21wb25lbnRzLkhlYWRlcilcblx0XHRcdFx0aGYoXCJmb290ZXJcIixjb21wb25lbnRzLkZvb3RlcilcblxuXHRcdFx0XHRyZXR1cm4gY3JlYXRlRWxlbWVudChjb21wb25lbnRzLlNlY3Rpb24sc3R5bGUsY2hpbGRyZW4sbm9kZSlcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJ0YmxcIjp7XG5cdFx0XHRcdGxldCBjb2xzPXNlbGVjdG9yLnNlbGVjdChbbm9kZS5jaGlsZHJlbi5maW5kKGE9PmEubmFtZT09XCJ3OnRibEdyaWRcIildKS50YmxHcmlkXG5cdFx0XHRcdGxldCBzdHlsZT0hcHJvcHMucHIgPyBzdHlsZXNbJyp0YWJsZSddIDogbmV3IFN0eWxlLlRhYmxlLkRpcmVjdChwcm9wcy5wcixzdHlsZXMsc2VsZWN0b3IpXG5cdFx0XHRcdHJldHVybiBjcmVhdGVFbGVtZW50KGNvbXBvbmVudHMuVGFibGUse2NvbHMsc3R5bGV9LGNoaWxkcmVuLG5vZGUpXG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwidHJcIjp7XG5cdFx0XHRcdGxldCBzdHlsZT0hcHJvcHMucHIgPyB1bmRlZmluZWQgOiBuZXcgU3R5bGUuVGFibGUuRGlyZWN0KHByb3BzLnByLHN0eWxlcyxzZWxlY3Rvcilcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50cy5Sb3cse3N0eWxlfSxjaGlsZHJlbixub2RlKVxuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcInRjXCI6e1xuXHRcdFx0XHRsZXQgc3R5bGU9IXByb3BzLnByID8gdW5kZWZpbmVkIDogbmV3IFN0eWxlLlRhYmxlLkRpcmVjdChwcm9wcy5wcixzdHlsZXMsc2VsZWN0b3IpXG5cdFx0XHRcdHJldHVybiBjcmVhdGVFbGVtZW50KGNvbXBvbmVudHMuQ2VsbCx7c3R5bGV9LGNoaWxkcmVuLG5vZGUpXG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwibGlzdFwiOlxuXHRcdFx0Y2FzZSBcImhlYWRpbmdcIjpcblx0XHRcdGNhc2UgXCJwXCI6e1xuXHRcdFx0XHRjb25zdCB7cHIsIC4uLnBQcm9wc309cHJvcHNcblx0XHRcdFx0bGV0IHN0eWxlPSAhcHJvcHMucHIgPyBzdHlsZXNbJypwYXJhZ3JhcGgnXSA6IG5ldyBTdHlsZS5QYXJhZ3JhcGguRGlyZWN0KHByb3BzLnByLHN0eWxlcyxzZWxlY3Rvcik7XG5cdFx0XHRcdHJldHVybiBjcmVhdGVFbGVtZW50KGNvbXBvbmVudHMuUGFyYWdyYXBoLHtzdHlsZSwuLi5wUHJvcHN9LGNoaWxkcmVuLG5vZGUpXG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiclwiOntcblx0XHRcdFx0bGV0IHN0eWxlPSAhcHJvcHMucHIgPyBzdHlsZXNbJypjaGFyYWN0ZXInXSA6IG5ldyBTdHlsZS5DaGFyYWN0ZXIuRGlyZWN0KHByb3BzLnByLCAgc3R5bGVzLCBzZWxlY3Rvcilcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50cy5SdW4se3N0eWxlfSxjaGlsZHJlbixub2RlKVxuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcInRcIjpcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50cy5UZXh0LHt9LGNoaWxkcmVuWzBdfHxcIlwiLG5vZGUpXG5cblx0XHRcdGNhc2UgXCJkcmF3aW5nLmlubGluZVwiOntcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50cy5Db250YWluZXIse30sY2hpbGRyZW4sbm9kZSlcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJkcmF3aW5nLmFuY2hvclwiOntcblx0XHRcdFx0Y29uc3Qgc3R5bGU9bmV3IFN0eWxlLkFuY2hvcihub2RlLHN0eWxlcyxzZWxlY3Rvcilcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50cy5BbmNob3Isc3R5bGUuZmxhdCgpLGNoaWxkcmVuLG5vZGUpXG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwicGljdHVyZVwiOlxuXHRcdFx0XHRyZXR1cm4gY3JlYXRlRWxlbWVudChjb21wb25lbnRzLkltYWdlLGNvbXBvbmVudHMuSW1hZ2UuYXNTdHlsZShwcm9wcyksbnVsbCxub2RlKVxuXHRcdFx0Y2FzZSBcInNoYXBlXCI6e1xuXHRcdFx0XHRjb25zdCB7dGV4dFN0eWxlLCAuLi5zdHlsZX09Y29tcG9uZW50cy5TaGFwZS5hc1N0eWxlKHByb3BzKVxuXHRcdFx0XHRjb25zdCBwclN0eWxlPW5ldyBTdHlsZS5QYXJhZ3JhcGguRGlyZWN0KHVuZGVmaW5lZCxzdHlsZXMsc2VsZWN0b3IpXG5cdFx0XHRcdHByU3R5bGUucj10ZXh0U3R5bGVcblx0XHRcdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50cy5TaGFwZSx7Li4uc3R5bGUsIHRleHRTdHlsZTpwclN0eWxlfSxjaGlsZHJlbixub2RlKVxuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcImJvb2ttYXJrU3RhcnRcIjpcblx0XHRcdGNhc2UgXCJib29rbWFya0VuZFwiOlxuXHRcdFx0XHRyZXR1cm4gbnVsbFxuXHRcdFx0Y2FzZSBcImlubGluZVwiOlxuXHRcdFx0Y2FzZSBcImJsb2NrXCI6XG5cdFx0XHRcdHJldHVybiBjcmVhdGVFbGVtZW50KGNvbXBvbmVudHMuQ29udGFpbmVyLHt9LGNoaWxkcmVuLG5vZGUpXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZihjaGlsZHJlbi5sZW5ndGg9PTEpXG5cdFx0XHRcdFx0cmV0dXJuIGNoaWxkcmVuWzBdXG5cdFx0XHRcdHJldHVybiBjaGlsZHJlblxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBidWlsZD1idWlsZEZhY3RvcnkoY3JlYXRlRWxlbWVudClcblx0XHRsZXQgcmVuZGVyTm9kZT1ub2RlPT5kb2N4Lm9mZmljZURvY3VtZW50LnJlbmRlck5vZGUobm9kZSxidWlsZCxpZGVudGlmeSlcblxuXHRcdGxldCByZW5kZXJlZD1kb2N4LnJlbmRlcihidWlsZClcblxuXG5cdFx0Ly9pbXBsZW1lbnQgbG9hZGVyLnJlbmRlckNoYW5nZWROb2RlXG5cdFx0dGhpcy5yZW5kZXJOb2RlPShub2RlLGNyZWF0ZUVsZW1lbnQpPT57XG5cdFx0XHRidWlsZD1idWlsZEZhY3RvcnkoY3JlYXRlRWxlbWVudClcblx0XHRcdHJldHVybiBkb2N4Lm9mZmljZURvY3VtZW50LnJlbmRlck5vZGUodGhpcy5fdW53cmFwKG5vZGUpLGJ1aWxkLGlkZW50aWZ5KVxuXHRcdH1cblxuXHRcdHRoaXMucmVmcmVzaFN0eWxlcz1jcmVhdGVTdHlsZXNFbGVtZW50XG5cblx0XHR0aGlzLmdldEZvbnRMaXN0PSgpPT5BcnJheS5mcm9tKHNlbGVjdG9yLnJlcXVpcmVGb250cylcblxuXHRcdHJldHVybiByZW5kZXJlZFxuXHR9XG5cblx0cmVuZGVyTm9kZShub2RlLCBjcmVhdGVFbGVtZW50KXtcblx0XHQvL2luamVjdGVkIGltcGxlbWVudGF0aW9uIGJ5IHJlbmRlclxuXHR9XG5cblx0Z2V0Rm9udExpc3QoKXtcblx0XHQvL2luamVjdGVkIGltcGxlbWVudGF0aW9uIGJ5IHJlbmRlclxuXHR9XG5cbiAgICByZWZyZXNoU3R5bGVzKCl7XG4gICAgICAgIC8vaW5qZWN0ZWQgaW1wbGVtZW50YXRpb24gYnkgcmVuZGVyXG4gICAgfVxuXG5cdF91bndyYXAobil7XG5cdFx0cmV0dXJuIG4gJiYgKFwiY2hlZXJpb1wiIGluIG4pICYmIG4uZ2V0KDApIHx8IG5cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0YWJsZSBleHRlbmRzIERvY3hUeXBle1xuICAgIG1ha2VJZChub2RlLCByb290PVwidzpkb2N1bWVudFwiKXtcbiAgICAgICAgaWYoIW5vZGUpe1xuICAgICAgICAgICAgcmV0dXJuIFwibnVsbFwiXG5cdFx0fVxuICAgICAgICBcbiAgICAgICBub2RlPXRoaXMuX3Vud3JhcChub2RlKVxuXG5cdFx0aWYobm9kZS5hdHRyaWJzLnh4aWQpe1xuXHRcdFx0cmV0dXJuIG5vZGUuYXR0cmlicy54eGlkXG5cdFx0fVxuXG4gICAgICAgIGNvbnN0IGlkPW5vZGUubmFtZS5lbmRzV2l0aChyb290KSA/IFwicm9vdFwiIDogYCR7c3VwZXIubWFrZUlkKC4uLmFyZ3VtZW50cyl9eyR7dGhpcy5kb2MuJChub2RlKS5wYXJ0KCl9fWBcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9kZS5hdHRyaWJzLFwieHhpZFwiLHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBpZFxuICAgIH1cblxuICAgIGdldE5vZGUodWlkKXtcblx0XHRjb25zdCBbaWQscGFydF09dWlkLnNwbGl0KC9bXFx7XFx9XS9nKVxuXHRcdGxldCBub2RlPW51bGxcblxuXHRcdGlmKCFwYXJ0KVxuXHRcdFx0bm9kZT10aGlzLmRvYy5vZmZpY2VEb2N1bWVudC5jb250ZW50KGBbeHhpZD1cIiR7dWlkfVwiXWApXG5cdFx0ZWxzZXtcbiAgICAgICAgICAgIGNvbnN0ICQ9dGhpcy5kb2MuZ2V0T2JqZWN0UGFydChwYXJ0KVxuICAgICAgICAgICAgbm9kZT0kKGBbeHhpZD1cIiR7dWlkfVwiXWApXG4gICAgICAgIH1cblxuXHRcdGlmKG5vZGUubGVuZ3RoIT0xKXtcblx0XHRcdGRlYnVnZ2VyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYGNhbid0IGZpbmQgbm9kZVtpZD0ke3VpZH1dYClcblx0XHR9XG5cdFx0cmV0dXJuIG5vZGVcblx0fVxuXG5cdCQoKXtcblx0XHRyZXR1cm4gdGhpcy5kb2Mub2ZmaWNlRG9jdW1lbnQuY29udGVudCguLi5hcmd1bWVudHMpXG5cdH1cblxuXHRnZXQgYXR0YWNoZXIoKXtcblx0XHRpZighdGhpcy5fYXR0YWNoZXIpe1xuXHRcdFx0dGhpcy5fYXR0YWNoZXI9dGhpcy5kb2Mub2ZmaWNlRG9jdW1lbnQuY29udGVudChcIjx3Ol9hdHRhY2hlclxcPlwiKVxuXHRcdFx0dGhpcy5fYXR0YWNoZXIucHJlcGVuZFRvKHRoaXMuZG9jLm9mZmljZURvY3VtZW50LmNvbnRlbnQoXCJ3XFxcXDpib2R5XCIpKVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9hdHRhY2hlclxuXHR9XG5cblx0YXR0YWNoKHhtbCl7XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZXIuYXBwZW5kKHhtbCkuY2hpbGRyZW4oKVxuXHR9XG5cblx0c2VyaWFsaXplKGlkKXtcblx0XHRpZih0eXBlb2YoaWQpPT1cInN0cmluZ1wiKXtcblx0XHRcdHJldHVybiB0aGlzLmRvYy5vZmZpY2VEb2N1bWVudC5jb250ZW50LnhtbCh0aGlzLmdldE5vZGUoaWQpKVxuXHRcdH1lbHNle1xuXHRcdFx0cmV0dXJuIHRoaXMuZG9jLm9mZmljZURvY3VtZW50LmNvbnRlbnQueG1sKGlkKVxuXHRcdH1cblx0fVxuXG4gICAgcHgyZHhhKHcpe1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodyo3MioyMC85NilcbiAgICB9XG5cblx0cHgyY20ocHgpe1xuXHRcdHJldHVybiBNYXRoLmNlaWwocHgqNzIvOTYqMzYwMDAwLzI4LjM0NjQ1NjcpXG5cdH1cblxuXHRweDJQdChweCl7XG5cdFx0cmV0dXJuIHB4KjcyLzk2XG5cdH1cblxuXHRkeGEyUHgoYSl7XG5cdFx0cmV0dXJuIHRoaXMucHQyUHgocGFyc2VJbnQoYSkvMjAuMClcblx0fVxuXG5cdGVtdTJQeChhKXtcblx0XHRyZXR1cm4gdGhpcy5wdDJQeChwYXJzZUludChhKS8xMjcwMClcblx0fVxuXG5cdHB0MlB4KHB0KXtcblx0XHRyZXR1cm4gTWF0aC5jZWlsKHB0Kjk2LzcyKVxuXHR9XG5cblx0Y20yUHgoY20pe1xuXHRcdHJldHVybiBwYXJzZUZsb2F0KGNtKSoyOC4zNDY0NTY3LzM2MDAwMCo5Ni83MlxuXHR9XG5cblx0Y20yZHhhKHcpe1xuXHRcdHJldHVybiBwYXJzZUludChwYXJzZUZsb2F0KHcpKjExOTAwLzIxLjU5KVxuXHR9XG5cblx0cHgyZW11KGEpe1xuXHRcdHJldHVybiB0aGlzLnB4MlB0KGEpKjEyNzAwXG5cdH1cblxuXHRzdGF0aWMgUmVkdWNlcj1SZWR1Y2VyXG59XG5cbmNvbnN0IGRlZmluZUlkPSh0YXJnZXQsaWQpPT5PYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LFwieHhpZFwiLHtcblx0ZW51bWVyYWJsZTogZmFsc2UsXG5cdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0d3JpdGFibGU6IGZhbHNlLFxuXHR2YWx1ZTogaWRcbn0pIl0sInNvdXJjZVJvb3QiOiIifQ==
\No newline at end of file