react-bootstrap-table-ng-toolkit 5.19.1 → 5.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactBootstrapTableNgToolkit=t(require("react")):e.ReactBootstrapTableNgToolkit=t(e.React)}(self,e=>(()=>{var t={213(e,t,o){var r,a,s;a=[],void 0===(s="function"==typeof(r=function(){"use strict";function t(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function r(e,t,o){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){i(r.response,t,o)},r.onerror=function(){console.error("could not download file")},r.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var n="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof o.g&&o.g.global===o.g?o.g:void 0,l=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=n.saveAs||("object"!=typeof window||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(e,t,o){var l=n.URL||n.webkitURL,i=document.createElement("a");t=t||e.name||"download",i.download=t,i.rel="noopener","string"==typeof e?(i.href=e,i.origin===location.origin?s(i):a(i.href)?r(e,t,o):s(i,i.target="_blank")):(i.href=l.createObjectURL(e),setTimeout(function(){l.revokeObjectURL(i.href)},4e4),setTimeout(function(){s(i)},0))}:"msSaveOrOpenBlob"in navigator?function(e,o,n){if(o=o||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,n),o);else if(a(e))r(e,o,n);else{var l=document.createElement("a");l.href=e,l.target="_blank",setTimeout(function(){s(l)})}}:function(e,t,o,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,o);var s="application/octet-stream"===e.type,i=/constructor/i.test(n.HTMLElement)||n.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&i||l)&&"undefined"!=typeof FileReader){var c=new FileReader;c.onloadend=function(){var e=c.result;e=u?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},c.readAsDataURL(e)}else{var d=n.URL||n.webkitURL,p=d.createObjectURL(e);a?a.location=p:location.href=p,a=null,setTimeout(function(){d.revokeObjectURL(p)},4e4)}});n.saveAs=i.saveAs=i,e.exports=i})?r.apply(t,a):r)||(e.exports=s)},633(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(499)),n=r(o(880)),l=a.default.createContext({searchProps:{searchText:"",onSearch:e=>{},onClear:()=>{}},csvProps:{onExport:()=>{}},columnToggleProps:{columns:[],toggles:[],onColumnToggle:e=>{}},baseProps:{keyField:void 0,columns:[],data:[],bootstrap4:void 0,bootstrap5:void 0}});class i extends((0,n.default)(a.default.Component)){static defaultProps={search:!1,exportCSV:!1,bootstrap4:!1,bootstrap5:!1};_;state;constructor(e){super(e);const t={columnToggle:{},searchText:"object"==typeof e.search&&e.search.defaultSearch||""};this._=null,this.onClear=this.onClear.bind(this),this.onSearch=this.onSearch.bind(this),this.onColumnToggle=this.onColumnToggle.bind(this),this.setDependencyModules=this.setDependencyModules.bind(this),e.columnToggle&&(t.columnToggle=e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{})),t.searchText="object"==typeof e.search&&e.search.defaultSearch||"",this.state=t}static getDerivedStateFromProps(e,t){const o=t.columnToggle;let r;return r=e.columnToggle?e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{}):{},o?{...t,currColumnToggle:o}:{...t,propsColumnToggle:r}}onSearch(e){e!==this.state.searchText&&this.setState({searchText:e})}onClear(){this.setState({searchText:""})}onColumnToggle(e){const{columnToggle:t}=this.state;t[e]=!t[e],this.setState({...this.state,columnToggle:t})}setDependencyModules(e){this._=e}render(){const e={keyField:this.props.keyField,columns:this.props.columns,data:this.props.data,search:this.props.search??!1,exportCSV:this.props.exportCSV??!1,bootstrap4:this.props.bootstrap4??!1,bootstrap5:this.props.bootstrap5??!1,children:this.props.children,setDependencyModules:this.setDependencyModules,registerExposedAPI:this.registerExposedAPI};return this.props.search&&(e.search={searchContext:(0,s.default)(this.props.search),searchText:this.state.searchText}),this.props.columnToggle&&(e.columnToggle={toggles:this.state.columnToggle}),a.default.createElement(l.Provider,{value:{searchProps:{searchText:this.state.searchText,onSearch:this.onSearch,onClear:this.onClear},csvProps:{onExport:this.handleExportCSV},columnToggleProps:{columns:this.props.columns,toggles:this.state.columnToggle,onColumnToggle:this.onColumnToggle},baseProps:e}},this.props.children)}}t.default={Provider:i,Consumer:l.Consumer}},688(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Search=t.CSVExport=t.ColumnToggle=t.ToolkitContext=void 0;const a=r(o(633)),s=r(o(921));t.default=s.default,t.ToolkitContext=a.default;var n=o(555);Object.defineProperty(t,"ColumnToggle",{enumerable:!0,get:function(){return r(n).default}});var l=o(282);Object.defineProperty(t,"CSVExport",{enumerable:!0,get:function(){return r(l).default}});var i=o(470);Object.defineProperty(t,"Search",{enumerable:!0,get:function(){return r(i).default}})},921(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(633));t.default=e=>a.default.createElement(s.default.Provider,{...e},a.default.createElement(s.default.Consumer,null,t=>e.children(t)))},555(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(140));t.default={ToggleList:a.default}},140(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({columns:e,onColumnToggle:t,toggles:o,btnClassName:r="",className:s="",contextual:n="primary"})=>a.default.createElement("div",{className:`btn-group btn-group-toggle ${s}`,"data-toggle":"buttons"},e.map(e=>({...e,toggle:o[e.dataField]})).map(e=>a.default.createElement("button",{type:"button",key:e.dataField,className:`${r} btn btn-${n} ${e.toggle?"active":""}`,"data-toggle":"button","aria-pressed":e.toggle?"true":"false",onClick:()=>t(e.dataField)},e.text)))},40(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s={className:"",style:{}};t.default=e=>{const{onExport:t,children:o,className:r,...n}={...s,...e};return a.default.createElement("button",{type:"button",className:`react-bs-table-csv-btn btn btn-default btn-secondary ${r}`,onClick:()=>t(),...n},o)}},457(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.save=t.transform=t.getMetaInfo=void 0;const a=r(o(213));t.getMetaInfo=e=>e.map(e=>({field:e.dataField,type:e.csvType||String,formatter:e.csvFormatter,formatExtraData:e.formatExtraData,header:e.csvText||e.text,export:!1!==e.csvExport,row:Number(e.row)||0,rowSpan:Number(e.rowSpan)||1,colSpan:Number(e.colSpan)||1,footer:e.footer,footerFormatter:e.footerFormatter})).filter(e=>e.export);t.transform=(e,t,o,r,{separator:a,ignoreHeader:s,ignoreFooter:n})=>{const l=t.filter(e=>e.export);let i="";return s||(i+=l.map(e=>`"${e.header}"`).join(a),i+="\n"),0===e.length||(i+=e.map((e,t)=>l.map(o=>{let a=r.get(e,o.field);return o.formatter&&(a=o.formatter(a,e,t,o.formatExtraData)),o.type===String?`"${`${a}`.replace(/"/g,'""')}"`:a}).join(a)).join("\n"),n||(i+="\n",i+=l.map((t,a)=>{if("function"==typeof t.footer){const s=r.pluck(e,o[a].dataField);return`"${t.footer(s,o[a],a)}"`}return t.footerFormatter?`"${t.footerFormatter(o[a],a)}"`:`"${t.footer}"`}).join(a))),i};t.save=(e,{noAutoBOM:t,fileName:o,blobType:r})=>{a.default.saveAs(new Blob([e],{type:r}),o,t)}},282(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(40));t.default={ExportCSVButton:a.default}},881(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=o(457),n={fileName:"spreadsheet.csv",separator:",",ignoreHeader:!1,ignoreFooter:!0,noAutoBOM:!0,blobType:"text/plain;charset=utf-8",exportAll:!0,onlyExportSelection:!1};t.default=e=>class extends a.default.Component{_;tableExposedAPIEmitter;handleExportCSV=e=>{const{columns:t,exportCSV:o,keyField:r}=this.props,a=(0,s.getMetaInfo)(t),l=!0===o?n:{...n,...o};let i;if(void 0!==e)i=e;else if(l.exportAll)i=this.props.data;else if(l.onlyExportFiltered){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.filtered.rows",e),i=e.result}else{const e={result:void 0};this.tableExposedAPIEmitter.emit("get.table.data",e),i=e.result}if(l.onlyExportSelection){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.selected.rows",e);const t=e.result??[];i=i.filter(e=>t.includes(e[r]))}const u=(0,s.transform)(i,a,t,this._,l);(0,s.save)(u,l)}}},469(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(881));t.default={csvOperation:a.default}},801(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=(e,t,o)=>{let r;return(...a)=>{const s=o&&!r;clearTimeout(r),r=setTimeout(()=>{r=void 0,o||e.apply(this,a)},t||0),s&&e.apply(this,a)}};class n extends a.default.Component{input=null;constructor(e){super(e),this.state={value:e.searchText??""}}onChangeValue=e=>{this.setState({value:e.target.value})};onKeyup=()=>{const{delay:e=250,onSearch:t}=this.props;s(()=>{t(this.input?.value??"")},e)()};componentDidUpdate(e){this.props.searchText!==e.searchText&&this.setState({value:this.props.searchText||""})}render(){const{className:e="",style:t={},placeholder:o="Search",tableId:r="0",searchText:s="Search this table"}=this.props;return a.default.createElement("label",{htmlFor:`search-bar-${r}`,className:"search-label"},a.default.createElement("span",{id:`search-bar-${r}-label`,className:"sr-only visually-hidden"},s),a.default.createElement("input",{ref:e=>{this.input=e},id:`search-bar-${r}`,type:"text",style:t,"aria-labelledby":`search-bar-${r}-label`,onKeyUp:()=>this.onKeyup(),onChange:this.onChangeValue,className:`form-control ${e}`,value:this.state.value,placeholder:o}))}static defaultProps={className:"",style:{},placeholder:"Search",delay:250,searchText:"",tableId:"0",srText:"Search this table"}}t.default=n},68(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({onClear:e,text:t="Clear",className:o=""})=>a.default.createElement("button",{className:`btn btn-default btn-secondary ${o}`,onClick:e},t)},499(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=(e={searchFormatted:!1,afterSearch:void 0,onColumnMatch:()=>!1})=>(t,o,r)=>{const s=a.default.createContext(null);class n extends a.default.Component{constructor(e){super(e);let t=e.data;o()&&""!==this.props.searchText?r(this.props.searchText):(t=this.search(e),this.triggerListener(t,!0)),this.state={data:t}}getSearched(){return this.state.data}triggerListener(t,o){e.afterSearch&&!o&&e.afterSearch(t),this.props.dataChangeListener&&this.props.dataChangeListener.emit("filterChanged",t.length)}componentDidUpdate(e){if(e.searchText!==this.props.searchText)if(o())r(this.props.searchText);else{const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}else if(o())t.isEqual(this.state.data,this.props.data)||this.setState({data:this.props.data});else if(!t.isEqual(e.data,this.props.data)){const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}}search(o){const{data:r,columns:a}=o,s=o.searchText.toLowerCase();return r.filter((o,r)=>{for(let n=0;n<a.length;n+=1){const l=a[n];if(!1===l.searchable)continue;let i=t.get(o,l.dataField);if(l.formatter&&e.searchFormatted?i=l.formatter(i,o,r,l.formatExtraData):l.filterValue&&(i=l.filterValue(i,o)),e.onColumnMatch){if(e.onColumnMatch({searchText:s,value:i,column:l,row:o}))return!0}else if(null!=i&&(i=i.toString().toLowerCase(),i.indexOf(s)>-1))return!0}return!1})}render(){return a.default.createElement(s.Provider,{value:{data:this.state.data}},this.props.children)}}return{Provider:n,Consumer:s.Consumer}}},470(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(801)),s=r(o(68));t.default={SearchBar:a.default,ClearSearchButton:s.default}},880(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(469));t.default=e=>class extends(a.default.csvOperation(e)){registerExposedAPI=e=>{this.tableExposedAPIEmitter=e}}},442(t){"use strict";t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var s=o[e]={exports:{}};return t[e].call(s.exports,s,s.exports,r),s.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(688)})());
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvZGlzdC9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsRUFBUUcsUUFBUSxVQUNSLG1CQUFYQyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sQ0FBQyxTQUFVSixHQUNRLGlCQUFaQyxRQUNkQSxRQUFzQyw2QkFBSUQsRUFBUUcsUUFBUSxVQUUxREosRUFBbUMsNkJBQUlDLEVBQVFELEVBQVksTUFDNUQsQ0FURCxDQVNHTyxLQUFPQyxHLHdCQ1RWLFVBQXdELEVBQU8sUUFBSSwwQkFBRixFQUE4RixXQUFXLGFBQWEsU0FBU0MsRUFBRUMsRUFBRUQsR0FBRyxZQUFNLElBQW9CQSxFQUFFQSxFQUFFLENBQUNFLFNBQVEsR0FBSSxpQkFBaUJGLElBQUlHLFFBQVFDLEtBQUssc0RBQXNESixFQUFFLENBQUNFLFNBQVNGLElBQUlBLEVBQUVFLFNBQVMsNkVBQTZFRyxLQUFLSixFQUFFSyxNQUFNLElBQUlDLEtBQUssQ0FBQyxTQUFTTixHQUFHLENBQUNLLEtBQUtMLEVBQUVLLE9BQU9MLENBQUMsQ0FBQyxTQUFTTyxFQUFFUCxFQUFFRCxFQUFFUSxHQUFHLElBQUlDLEVBQUUsSUFBSUMsZUFBZUQsRUFBRUUsS0FBSyxNQUFNVixHQUFHUSxFQUFFRyxhQUFhLE9BQU9ILEVBQUVJLE9BQU8sV0FBV0MsRUFBRUwsRUFBRU0sU0FBU2YsRUFBRVEsRUFBRSxFQUFFQyxFQUFFTyxRQUFRLFdBQVdiLFFBQVFjLE1BQU0sMEJBQTBCLEVBQUVSLEVBQUVTLE1BQU0sQ0FBQyxTQUFTVCxFQUFFUixHQUFHLElBQUlELEVBQUUsSUFBSVUsZUFBZVYsRUFBRVcsS0FBSyxPQUFPVixHQUFFLEdBQUksSUFBSUQsRUFBRWtCLE1BQU0sQ0FBQyxNQUFNakIsR0FBRyxDQUFDLE9BQU8s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TSxPQUFxQixPQUFPQSxNQUN4QyxDQUNBLENBUHVCLEdDR0UyTSxFQUFvQixJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZmlsZS1zYXZlci9kaXN0L0ZpbGVTYXZlci5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvY29udGV4dC50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvcHJvdmlkZXIudHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9jb2x1bW4tdG9nZ2xlL2luZGV4LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9jb2x1bW4tdG9nZ2xlL3RvZ2dsZS1saXN0LnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY3N2L2J1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2Nzdi9leHBvcnRlci50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY3N2L2luZGV4LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9vcC9jc3YudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL29wL2luZGV4LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9zZWFyY2gvU2VhcmNoQmFyLnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvc2VhcmNoL2NsZWFyLWJ1dHRvbi50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL3NlYXJjaC9jb250ZXh0LnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvc2VhcmNoL2luZGV4LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3N0YXRlbGVzc09wLnRzIiwid2VicGFjazovLy9leHRlcm5hbCB1bWQge1wicm9vdFwiOlwiUmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiYW1kXCI6XCJyZWFjdFwifSIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJSZWFjdEJvb3RzdHJhcFRhYmxlTmdUb29sa2l0XCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlJlYWN0Qm9vdHN0cmFwVGFibGVOZ1Rvb2xraXRcIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSk7XG59KShzZWxmLCAoX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNDQyX18pID0+IHtcbnJldHVybiAiLCIoZnVuY3Rpb24oYSxiKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGIpO2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGV4cG9ydHMpYigpO2Vsc2V7YigpLGEuRmlsZVNhdmVyPXtleHBvcnRzOnt9fS5leHBvcnRzfX0pKHRoaXMsZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBiKGEsYil7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIGI/Yj17YXV0b0JvbTohMX06XCJvYmplY3RcIiE9dHlwZW9mIGImJihjb25zb2xlLndhcm4oXCJEZXByZWNhdGVkOiBFeHBlY3RlZCB0aGlyZCBhcmd1bWVudCB0byBiZSBhIG9iamVjdFwiKSxiPXthdXRvQm9tOiFifSksYi5hdXRvQm9tJiYvXlxccyooPzp0ZXh0XFwvXFxTKnxhcHBsaWNhdGlvblxcL3htbHxcXFMqXFwvXFxTKlxcK3htbClcXHMqOy4qY2hhcnNldFxccyo9XFxzKnV0Zi04L2kudGVzdChhLnR5cGUpP25ldyBCbG9iKFtcIlxcdUZFRkZcIixhXSx7dHlwZTphLnR5cGV9KTphfWZ1bmN0aW9uIGMoYSxiLGMpe3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtkLm9wZW4oXCJHRVRcIixhKSxkLnJlc3BvbnNlVHlwZT1cImJsb2JcIixkLm9ubG9hZD1mdW5jdGlvbigpe2coZC5yZXNwb25zZSxiLGMpfSxkLm9uZXJyb3I9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKFwiY291bGQgbm90IGRvd25sb2FkIGZpbGVcIil9LGQuc2VuZCgpfWZ1bmN0aW9uIGQoYSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbihcIkhFQURcIixhLCExKTt0cnl7Yi5zZW5kKCl9Y2F0Y2goYSl7fXJldHVybiAyMDA8PWIuc3RhdHVzJiYyOTk+PWIuc3RhdHVzfWZ1bmN0aW9uIGUoYSl7dHJ5e2EuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKX1jYXRjaChjKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFdmVudChcIk1vdXNlRXZlbnRzXCIpO2IuaW5pdE1vdXNlRXZlbnQoXCJjbGlja1wiLCEwLCEwLHdpbmRvdywwLDAsMCw4MCwyMCwhMSwhMSwhMSwhMSwwLG51bGwpLGEuZGlzcGF0Y2hFdmVudChiKX19dmFyIGY9XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93LndpbmRvdz09PXdpbmRvdz93aW5kb3c6XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYuc2VsZj09PXNlbGY/c2VsZjpcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwuZ2xvYmFsPT09Z2xvYmFsP2dsb2JhbDp2b2lkIDAsYT1mLm5hdmlnYXRvciYmL01hY2ludG9zaC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmL0FwcGxlV2ViS2l0Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhL1NhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxnPWYuc2F2ZUFzfHwoXCJvYmplY3RcIiE9dHlwZW9mIHdpbmRvd3x8d2luZG93IT09Zj9mdW5jdGlvbigpe306XCJkb3dubG9hZFwiaW4gSFRNTEFuY2hvckVsZW1lbnQucHJvdG90eXBlJiYhYT9mdW5jdGlvbihiLGcsaCl7dmFyIGk9Zi5VUkx8fGYud2Via2l0VVJMLGo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7Zz1nfHxiLm5hbWV8fFwiZG93bmxvYWRcIixqLmRvd25sb2FkPWcsai5yZWw9XCJub29wZW5lclwiLFwic3RyaW5nXCI9PXR5cGVvZiBiPyhqLmhyZWY9YixqLm9yaWdpbj09PWxvY2F0aW9uLm9yaWdpbj9lKGopOmQoai5ocmVmKT9jKGIsZyxoKTplKGosai50YXJnZXQ9XCJfYmxhbmtcIikpOihqLmhyZWY9aS5jcmVhdGVPYmplY3RVUkwoYiksc2V0VGltZW91dChmdW5jdGlvbigpe2kucmV2b2tlT2JqZWN0VVJMKGouaHJlZil9LDRFNCksc2V0VGltZW91dChmdW5jdGlvbigpe2Uoail9LDApKX06XCJtc1NhdmVPck9wZW5CbG9iXCJpbiBuYXZpZ2F0b3I/ZnVuY3Rpb24oZixnLGgpe2lmKGc9Z3x8Zi5uYW1lfHxcImRvd25sb2FkXCIsXCJzdHJpbmdcIiE9dHlwZW9mIGYpbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYihmLGgpLGcpO2Vsc2UgaWYoZChmKSljKGYsZyxoKTtlbHNle3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2kuaHJlZj1mLGkudGFyZ2V0PVwiX2JsYW5rXCIsc2V0VGltZW91dChmdW5jdGlvbigpe2UoaSl9KX19OmZ1bmN0aW9uKGIsZCxlLGcpe2lmKGc9Z3x8b3BlbihcIlwiLFwiX2JsYW5rXCIpLGcmJihnLmRvY3VtZW50LnRpdGxlPWcuZG9jdW1lbnQuYm9keS5pbm5lclRleHQ9XCJkb3dubG9hZGluZy4uLlwiKSxcInN0cmluZ1wiPT10eXBlb2YgYilyZXR1cm4gYyhiLGQsZSk7dmFyIGg9XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIj09PWIudHlwZSxpPS9jb25zdHJ1Y3Rvci9pLnRlc3QoZi5IVE1MRWxlbWVudCl8fGYuc2FmYXJpLGo9L0NyaU9TXFwvW1xcZF0rLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2lmKChqfHxoJiZpfHxhKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEZpbGVSZWFkZXIpe3ZhciBrPW5ldyBGaWxlUmVhZGVyO2sub25sb2FkZW5kPWZ1bmN0aW9uKCl7dmFyIGE9ay5yZXN1bHQ7YT1qP2E6YS5yZXBsYWNlKC9eZGF0YTpbXjtdKjsvLFwiZGF0YTphdHRhY2htZW50L2ZpbGU7XCIpLGc/Zy5sb2NhdGlvbi5ocmVmPWE6bG9jYXRpb249YSxnPW51bGx9LGsucmVhZEFzRGF0YVVSTChiKX1lbHNle3ZhciBsPWYuVVJMfHxmLndlYmtpdFVSTCxtPWwuY3JlYXRlT2JqZWN0VVJMKGIpO2c/Zy5sb2NhdGlvbj1tOmxvY2F0aW9uLmhyZWY9bSxnPW51bGwsc2V0VGltZW91dChmdW5jdGlvbigpe2wucmV2b2tlT2JqZWN0VVJMKG0pfSw0RTQpfX0pO2Yuc2F2ZUFzPWcuc2F2ZUFzPWcsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSYmKG1vZHVsZS5leHBvcnRzPWcpfSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbGVTYXZlci5taW4uanMubWFwIiwiLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiAwICovXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlVG9vbGtpdFByb3BzLCBUb29sa2l0Q29udGV4dFR5cGUgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IGNyZWF0ZVNlYXJjaENvbnRleHQgZnJvbSBcIi4vc3JjL3NlYXJjaC9jb250ZXh0XCI7XG5pbXBvcnQgc3RhdGVsZXNzRGVjb3JhdG9yIGZyb20gXCIuL3N0YXRlbGVzc09wXCI7XG5cbmNvbnN0IFRvb2xraXRDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxUb29sa2l0Q29udGV4dFR5cGU+KHtcbiAgc2VhcmNoUHJvcHM6IHtcbiAgICBzZWFyY2hUZXh0OiBcIlwiLFxuICAgIG9uU2VhcmNoOiAodmFsOiBzdHJpbmcpID0+IHt9LFxuICAgIG9uQ2xlYXI6ICgpID0+IHt9LFxuICB9LFxuICBjc3ZQcm9wczoge1xuICAgIG9uRXhwb3J0OiAoKSA9PiB7fSxcbiAgfSxcbiAgY29sdW1uVG9nZ2xlUHJvcHM6IHtcbiAgICBjb2x1bW5zOiBbXSxcbiAgICB0b2dnbGVzOiBbXSxcbiAgICBvbkNvbHVtblRvZ2dsZTogKGRhdGFGaWVsZDogc3RyaW5nKSA9PiB7fSxcbiAgfSxcbiAgYmFzZVByb3BzOiB7XG4gICAga2V5RmllbGQ6IHVuZGVmaW5lZCxcbiAgICBjb2x1bW5zOiBbXSxcbiAgICBkYXRhOiBbXSxcbiAgICBib290c3RyYXA0OiB1bmRlZmluZWQsXG4gICAgYm9vdHN0cmFwNTogdW5kZWZpbmVkLFxuICB9LFxufSk7XG5cbmNsYXNzIFRvb2xraXRQcm92aWRlciBleHRlbmRzIHN0YXRlbGVzc0RlY29yYXRvcihSZWFjdC5Db21wb25lbnQpIHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzZWFyY2g6IGZhbHNlLFxuICAgIGV4cG9ydENTVjogZmFsc2UsXG4gICAgYm9vdHN0cmFwNDogZmFsc2UsXG4gICAgYm9vdHN0cmFwNTogZmFsc2UsXG4gIH07XG5cbiAgXzogYW55O1xuICBzdGF0ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUYWJsZVRvb2xraXRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBjb2x1bW5Ub2dnbGU6IHt9LFxuICAgICAgc2VhcmNoVGV4dDpcbiAgICAgICAgdHlwZW9mIHByb3BzLnNlYXJjaCA9PT0gXCJvYmplY3RcIlxuICAgICAgICAgID8gcHJvcHMuc2VhcmNoLmRlZmF1bHRTZWFyY2ggfHwgXCJcIlxuICAgICAgICAgIDogXCJcIixcbiAgICB9O1xuICAgIHRoaXMuXyA9IG51bGw7XG4gICAgdGhpcy5vbkNsZWFyID0gdGhpcy5vbkNsZWFyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vblNlYXJjaCA9IHRoaXMub25TZWFyY2guYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uQ29sdW1uVG9nZ2xlID0gdGhpcy5vbkNvbHVtblRvZ2dsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0RGVwZW5kZW5jeU1vZHVsZXMgPSB0aGlzLnNldERlcGVuZGVuY3lNb2R1bGVzLmJpbmQodGhpcyk7XG5cbiAgICBpZiAocHJvcHMuY29sdW1uVG9nZ2xlKSB7XG4gICAgICBpbml0aWFsU3RhdGUuY29sdW1uVG9nZ2xlID0gcHJvcHMuY29sdW1ucy5yZWR1Y2UoXG4gICAgICAgIChvYmo6IGFueSwgY29sdW1uOiBhbnkpID0+IHtcbiAgICAgICAgICBvYmpbY29sdW1uLmRhdGFGaWVsZF0gPSAhY29sdW1uLmhpZGRlbjtcbiAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKTtcbiAgICB9XG4gICAgaW5pdGlhbFN0YXRlLnNlYXJjaFRleHQgPVxuICAgICAgdHlwZW9mIHByb3BzLnNlYXJjaCA9PT0gXCJvYmplY3RcIiA/IHByb3BzLnNlYXJjaC5kZWZhdWx0U2VhcmNoIHx8IFwiXCIgOiBcIlwiO1xuICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzOiBUYWJsZVRvb2xraXRQcm9wcywgc3RhdGU6IGFueSkge1xuICAgIGNvbnN0IGN1cnJDb2x1bW5Ub2dnbGUgPSBzdGF0ZS5jb2x1bW5Ub2dnbGU7XG4gICAgbGV0IHByb3BzQ29sdW1uVG9nZ2xlO1xuICAgIGlmIChwcm9wcy5jb2x1bW5Ub2dnbGUpIHtcbiAgICAgIHByb3BzQ29sdW1uVG9nZ2xlID0gcHJvcHMuY29sdW1ucy5yZWR1Y2UoKG9iajogYW55LCBjb2x1bW46IGFueSkgPT4ge1xuICAgICAgICBvYmpbY29sdW1uLmRhdGFGaWVsZF0gPSAhY29sdW1uLmhpZGRlbjtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcHNDb2x1bW5Ub2dnbGUgPSB7fTtcbiAgICB9XG4gICAgaWYgKGN1cnJDb2x1bW5Ub2dnbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyQ29sdW1uVG9nZ2xlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHByb3BzQ29sdW1uVG9nZ2xlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2hUZXh0OiBhbnkpIHtcbiAgICBpZiAoc2VhcmNoVGV4dCAhPT0gdGhpcy5zdGF0ZS5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoVGV4dCB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNsZWFyKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hUZXh0OiBcIlwiIH0pO1xuICB9XG5cbiAgb25Db2x1bW5Ub2dnbGUoZGF0YUZpZWxkOiBhbnkpIHtcbiAgICBjb25zdCB7IGNvbHVtblRvZ2dsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb2x1bW5Ub2dnbGVbZGF0YUZpZWxkXSA9ICFjb2x1bW5Ub2dnbGVbZGF0YUZpZWxkXTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICBjb2x1bW5Ub2dnbGUsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gX1xuICAgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25lIHRpbWUgd2hlbiB0YWJsZSByZW5kZXJcbiAgICogcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nL3NyYy9jb250ZXh0L2luZGV4LmpzIHdpbGwgY2FsbCB0aGlzIGNiIGZvciBwYXNzaW5nIHRoZSBfIG1vZHVsZVxuICAgKiBQbGVhc2UgY29uc2lkZXIgdG8gZXh0cmFjdCBhIGNvbW1vbiBtb2R1bGUgdG8gaGFuZGxlIF8gbW9kdWxlLlxuICAgKiB0aGlzIGlzIGp1c3QgYSBxdWljayBmaXhcbiAgICovXG4gIHNldERlcGVuZGVuY3lNb2R1bGVzKF86IGFueSkge1xuICAgIHRoaXMuXyA9IF87XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgYmFzZVByb3BzOiBUYWJsZVRvb2xraXRQcm9wcyA9IHtcbiAgICAgIGtleUZpZWxkOiB0aGlzLnByb3BzLmtleUZpZWxkLFxuICAgICAgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zLFxuICAgICAgZGF0YTogdGhpcy5wcm9wcy5kYXRhLFxuICAgICAgc2VhcmNoOiB0aGlzLnByb3BzLnNlYXJjaCA/PyBmYWxzZSxcbiAgICAgIGV4cG9ydENTVjogdGhpcy5wcm9wcy5leHBvcnRDU1YgPz8gZmFsc2UsXG4gICAgICBib290c3RyYXA0OiB0aGlzLnByb3BzLmJvb3RzdHJhcDQgPz8gZmFsc2UsXG4gICAgICBib290c3RyYXA1OiB0aGlzLnByb3BzLmJvb3RzdHJhcDUgPz8gZmFsc2UsXG4gICAgICBjaGlsZHJlbjogdGhpcy5wcm9wcy5jaGlsZHJlbixcbiAgICAgIHNldERlcGVuZGVuY3lNb2R1bGVzOiB0aGlzLnNldERlcGVuZGVuY3lNb2R1bGVzLFxuICAgICAgcmVnaXN0ZXJFeHBvc2VkQVBJOiB0aGlzLnJlZ2lzdGVyRXhwb3NlZEFQSSxcbiAgICB9O1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaCkge1xuICAgICAgYmFzZVByb3BzLnNlYXJjaCA9IHtcbiAgICAgICAgc2VhcmNoQ29udGV4dDogY3JlYXRlU2VhcmNoQ29udGV4dCh0aGlzLnByb3BzLnNlYXJjaCksXG4gICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmNvbHVtblRvZ2dsZSkge1xuICAgICAgYmFzZVByb3BzLmNvbHVtblRvZ2dsZSA9IHtcbiAgICAgICAgdG9nZ2xlczogdGhpcy5zdGF0ZS5jb2x1bW5Ub2dnbGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPFRvb2xraXRDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgc2VhcmNoUHJvcHM6IHtcbiAgICAgICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgIG9uU2VhcmNoOiB0aGlzLm9uU2VhcmNoLFxuICAgICAgICAgICAgb25DbGVhcjogdGhpcy5vbkNsZWFyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3N2UHJvcHM6IHtcbiAgICAgICAgICAgIG9uRXhwb3J0OiB0aGlzLmhhbmRsZUV4cG9ydENTVixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbHVtblRvZ2dsZVByb3BzOiB7XG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMsXG4gICAgICAgICAgICB0b2dnbGVzOiB0aGlzLnN0YXRlLmNvbHVtblRvZ2dsZSxcbiAgICAgICAgICAgIG9uQ29sdW1uVG9nZ2xlOiB0aGlzLm9uQ29sdW1uVG9nZ2xlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmFzZVByb3BzLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvVG9vbGtpdENvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFByb3ZpZGVyOiBUb29sa2l0UHJvdmlkZXIsXG4gIENvbnN1bWVyOiBUb29sa2l0Q29udGV4dC5Db25zdW1lcixcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb2x1bW5EZXNjcmlwdGlvbiwgU2VhcmNoUHJvcHMgfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nXCI7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCBUb29sa2l0UHJvdmlkZXIgZnJvbSBcIi4vcHJvdmlkZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgVG9vbGtpdFByb3ZpZGVyO1xuZXhwb3J0IGNvbnN0IFRvb2xraXRDb250ZXh0ID0gQ29udGV4dDtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDb2x1bW5Ub2dnbGUgfSBmcm9tIFwiLi9zcmMvY29sdW1uLXRvZ2dsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDU1ZFeHBvcnQgfSBmcm9tIFwiLi9zcmMvY3N2XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFNlYXJjaCB9IGZyb20gXCIuL3NyYy9zZWFyY2hcIjtcblxuLyoqXG4gKiBkZWNsYXJhdGlvbiBmb3IgdGFibGUgdG9vbGtpdCBzdWIgbW9kdWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0ZWRTZWFyY2hQcm9wcyB7XG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgb25TZWFyY2g6ICh2YWw6IHN0cmluZykgPT4gdm9pZDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hNYXRjaFByb3BzPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IHtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjb2x1bW46IENvbHVtbkRlc2NyaXB0aW9uPFQ+O1xuICByb3c6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTZWFyY2hQcm9wczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XG4gIHNlYXJjaEZvcm1hdHRlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHRTZWFyY2g/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvbkNvbHVtbk1hdGNoPzogKHByb3BzOiBTZWFyY2hNYXRjaFByb3BzPFQ+KSA9PiBib29sZWFuO1xuICBjdXN0b21NYXRjaEZ1bmM/OiAoKHByb3BzOiBTZWFyY2hNYXRjaFByb3BzPFQ+KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZDtcbiAgYWZ0ZXJTZWFyY2g/OiAobmV3UmVzdWx0OiBUW10pID0+IHZvaWQgfCB1bmRlZmluZWQ7XG4gIHNlYXJjaENvbnRleHQ/OiBGdW5jdGlvbjtcbiAgc2VhcmNoVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDU1ZQcm9wcyB7XG4gIGZpbGVOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzZXBhcmF0b3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlnbm9yZUhlYWRlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlnbm9yZUZvb3Rlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG5vQXV0b0JPTT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBkZWZhdWx0IGlzIHRleHQvcGxhaW47Y2hhcnNldD11dGYtOFxuICAgKi9cbiAgYmxvYlR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGV4cG9ydEFsbD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG9ubHlFeHBvcnRTZWxlY3Rpb24/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBvbmx5RXhwb3J0RmlsdGVyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlVG9vbGtpdFByb3BzPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IHtcbiAgYm9vdHN0cmFwND86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGJvb3RzdHJhcDU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBzZWFyY2g/OiBUYWJsZVNlYXJjaFByb3BzPFQ+IHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAga2V5RmllbGQ6IGtleW9mIFQgfCBzdHJpbmc7XG4gIGRhdGE6IFRbXTtcbiAgcmVmPzogYW55O1xuICBjb2x1bW5zOiBBcnJheTxDb2x1bW5EZXNjcmlwdGlvbjxUPj47XG4gIGNoaWxkcmVuOiAocHJvcHM6IFRvb2xraXRDb250ZXh0VHlwZSkgPT4gUmVhY3QuUmVhY3RFbGVtZW50O1xuICBleHBvcnRDU1Y/OiBib29sZWFuIHwgQ1NWUHJvcHMgfCB1bmRlZmluZWQ7XG4gIGNvbHVtblRvZ2dsZT86IHsgW2RhdGFGaWVsZDogc3RyaW5nXTogYm9vbGVhbiB9IHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgc2V0RGVwZW5kZW5jeU1vZHVsZXM/OiBGdW5jdGlvbjtcbiAgcmVnaXN0ZXJFeHBvc2VkQVBJPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGtpdENvbnRleHRUeXBlIHtcbiAgc2VhcmNoUHJvcHM6IEluamVjdGVkU2VhcmNoUHJvcHM7XG4gIGNzdlByb3BzOiB7XG4gICAgb25FeHBvcnQ6IChzb3VyY2U/OiBhbnkpID0+IHZvaWQ7XG4gIH07XG4gIGNvbHVtblRvZ2dsZVByb3BzOiB7XG4gICAgY29sdW1uczogQ29sdW1uRGVzY3JpcHRpb25bXTtcbiAgICAvKipcbiAgICAgKiBhcnJheSBvZiB0b2dnbGVkIGNvbHVtbnNcbiAgICAgKi9cbiAgICB0b2dnbGVzOiBib29sZWFuW107XG4gICAgb25Db2x1bW5Ub2dnbGU6IChkYXRhRmllbGQ6IHN0cmluZykgPT4gdm9pZDtcbiAgfTtcbiAgYmFzZVByb3BzOiB7XG4gICAgLyoqXG4gICAgICogdGFibGUga2V5IGZpZWxkXG4gICAgICovXG4gICAga2V5RmllbGQ6IGFueTtcbiAgICBjb2x1bW5zOiBDb2x1bW5EZXNjcmlwdGlvbltdO1xuICAgIGRhdGE6IGFueVtdO1xuICAgIGJvb3RzdHJhcDQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIGJvb3RzdHJhcDU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvZ2dsZUxpc3RQcm9wcyB7XG4gIGNvbHVtbnM6IENvbHVtbkRlc2NyaXB0aW9uW107XG4gIC8qKlxuICAgKiBhcnJheSBvZiB0b2dnbGVkIGNvbHVtbnNcbiAgICovXG4gIHRvZ2dsZXM6IGJvb2xlYW5bXTtcbiAgb25Db2x1bW5Ub2dnbGU6IChkYXRhRmllbGQ6IHN0cmluZykgPT4gdm9pZDtcbiAgYnRuQ2xhc3NOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnRleHR1YWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0Q1NWQnV0dG9uUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBvbkV4cG9ydDogKCkgPT4gdm9pZDtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQmFyUHJvcHM8VCA9IGFueT4gZXh0ZW5kcyBTZWFyY2hQcm9wczxUPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICBkZWxheT86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgc2VhcmNoVGV4dD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdGFibGVJZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVmPzogUmVhY3QuUmVmT2JqZWN0PFJlYWN0LkNvbXBvbmVudDxTZWFyY2hQcm9wczxUPj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFyU2VhcmNoQnV0dG9uUHJvcHMge1xuICBvbkNsZWFyPzogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlVG9vbGtpdFByb3BzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCBUb29sa2l0Q29udGV4dCBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbmNvbnN0IFRvb2xraXRwcm92aWRlciA9IChcbiAgcHJvcHM6IFRhYmxlVG9vbGtpdFByb3BzXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IChcbiAgPFRvb2xraXRDb250ZXh0LlByb3ZpZGVyIHsuLi5wcm9wc30+XG4gICAgPFRvb2xraXRDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgeyh0b29rS2l0UHJvcHMpID0+IHByb3BzLmNoaWxkcmVuKHRvb2tLaXRQcm9wcyl9XG4gICAgPC9Ub29sa2l0Q29udGV4dC5Db25zdW1lcj5cbiAgPC9Ub29sa2l0Q29udGV4dC5Qcm92aWRlcj5cbik7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBUb29sa2l0cHJvdmlkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBUb2dnbGVMaXN0IGZyb20gJy4vdG9nZ2xlLWxpc3QnO1xuXG5leHBvcnQgZGVmYXVsdCB7IFRvZ2dsZUxpc3QgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbHVtbkRlc2NyaXB0aW9uIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcC10YWJsZS1uZ1wiO1xuaW1wb3J0IHsgVG9nZ2xlTGlzdFByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmNvbnN0IFRvZ2dsZUxpc3QgPSAoe1xuICBjb2x1bW5zLFxuICBvbkNvbHVtblRvZ2dsZSxcbiAgdG9nZ2xlcyxcbiAgYnRuQ2xhc3NOYW1lID0gXCJcIixcbiAgY2xhc3NOYW1lID0gXCJcIixcbiAgY29udGV4dHVhbCA9IFwicHJpbWFyeVwiXG59OiBUb2dnbGVMaXN0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17YGJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlICR7Y2xhc3NOYW1lfWB9XG4gICAgZGF0YS10b2dnbGU9XCJidXR0b25zXCJcbiAgPlxuICAgIHtjb2x1bW5zXG4gICAgICAubWFwKChjb2x1bW46IENvbHVtbkRlc2NyaXB0aW9uKSA9PiAoe1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIHRvZ2dsZTogdG9nZ2xlc1tjb2x1bW4uZGF0YUZpZWxkXSxcbiAgICAgIH0pKVxuICAgICAgLm1hcCgoY29sdW1uOiBDb2x1bW5EZXNjcmlwdGlvbikgPT4gKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAga2V5PXtjb2x1bW4uZGF0YUZpZWxkfVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7YnRuQ2xhc3NOYW1lfSBidG4gYnRuLSR7Y29udGV4dHVhbH0gJHtcbiAgICAgICAgICAgIGNvbHVtbi50b2dnbGUgPyBcImFjdGl2ZVwiIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLXByZXNzZWQ9e2NvbHVtbi50b2dnbGUgPyBcInRydWVcIiA6IFwiZmFsc2VcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNvbHVtblRvZ2dsZShjb2x1bW4uZGF0YUZpZWxkKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjb2x1bW4udGV4dH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApKX1cbiAgPC9kaXY+XG4pO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgVG9nZ2xlTGlzdDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgRXhwb3J0Q1NWQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuY29uc3QgZXhwb3J0Q1NWQnV0dG9uRGVmYXVsdFByb3BzID0ge1xuICBjbGFzc05hbWU6IFwiXCIsXG4gIHN0eWxlOiB7fSxcbn07XG5cbmNvbnN0IEV4cG9ydENTVkJ1dHRvbiA9IChcbiAgcHJvcHM6IEV4cG9ydENTVkJ1dHRvblByb3BzXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBvbkV4cG9ydCwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgLi4ucmVzdCB9ID0geyAuLi5leHBvcnRDU1ZCdXR0b25EZWZhdWx0UHJvcHMsIC4uLnByb3BzIH07XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzTmFtZT17YHJlYWN0LWJzLXRhYmxlLWNzdi1idG4gYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zZWNvbmRhcnkgJHtjbGFzc05hbWV9YH1cbiAgICAgIG9uQ2xpY2s9eygpID0+IG9uRXhwb3J0KCl9XG4gICAgICB7Li4ucmVzdH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgRXhwb3J0Q1NWQnV0dG9uO1xuIiwiLyogZXNsaW50IG5vLXVubmVlZGVkLXRlcm5hcnk6IDAgKi9cbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSBcImZpbGUtc2F2ZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldE1ldGFJbmZvID0gKGNvbHVtbnM6IGFueSkgPT5cbiAgY29sdW1uc1xuICAgIC5tYXAoKGNvbHVtbjogYW55KSA9PiAoe1xuICAgICAgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICB0eXBlOiBjb2x1bW4uY3N2VHlwZSB8fCBTdHJpbmcsXG4gICAgICBmb3JtYXR0ZXI6IGNvbHVtbi5jc3ZGb3JtYXR0ZXIsXG4gICAgICBmb3JtYXRFeHRyYURhdGE6IGNvbHVtbi5mb3JtYXRFeHRyYURhdGEsXG4gICAgICBoZWFkZXI6IGNvbHVtbi5jc3ZUZXh0IHx8IGNvbHVtbi50ZXh0LFxuICAgICAgZXhwb3J0OiBjb2x1bW4uY3N2RXhwb3J0ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgIHJvdzogTnVtYmVyKGNvbHVtbi5yb3cpIHx8IDAsXG4gICAgICByb3dTcGFuOiBOdW1iZXIoY29sdW1uLnJvd1NwYW4pIHx8IDEsXG4gICAgICBjb2xTcGFuOiBOdW1iZXIoY29sdW1uLmNvbFNwYW4pIHx8IDEsXG4gICAgICBmb290ZXI6IGNvbHVtbi5mb290ZXIsXG4gICAgICBmb290ZXJGb3JtYXR0ZXI6IGNvbHVtbi5mb290ZXJGb3JtYXR0ZXIsXG4gICAgfSkpXG4gICAgLmZpbHRlcigoXzogYW55KSA9PiBfLmV4cG9ydCk7XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm0gPSAoXG4gIGRhdGE6IGFueSxcbiAgbWV0YTogYW55LFxuICBjb2x1bW5zOiBhbnksXG4gIF86IGFueSxcbiAgeyBzZXBhcmF0b3IsIGlnbm9yZUhlYWRlciwgaWdub3JlRm9vdGVyIH06IGFueVxuKSA9PiB7XG4gIGNvbnN0IHZpc2libGVDb2x1bW5zID0gbWV0YS5maWx0ZXIoKG06IGFueSkgPT4gbS5leHBvcnQpO1xuICBsZXQgY29udGVudCA9IFwiXCI7XG4gIC8vIGV4dHJhY3QgY3N2IGhlYWRlclxuICBpZiAoIWlnbm9yZUhlYWRlcikge1xuICAgIGNvbnRlbnQgKz0gdmlzaWJsZUNvbHVtbnMubWFwKChtOiBhbnkpID0+IGBcIiR7bS5oZWFkZXJ9XCJgKS5qb2luKHNlcGFyYXRvcik7XG4gICAgY29udGVudCArPSBcIlxcblwiO1xuICB9XG4gIC8vIGV4dHJhY3QgY3N2IGJvZHlcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gY29udGVudDtcbiAgY29udGVudCArPSBkYXRhXG4gICAgLm1hcCgocm93OiBhbnksIHJvd0luZGV4OiBhbnkpID0+XG4gICAgICB2aXNpYmxlQ29sdW1uc1xuICAgICAgICAubWFwKChtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgY2VsbENvbnRlbnQgPSBfLmdldChyb3csIG0uZmllbGQpO1xuICAgICAgICAgIGlmIChtLmZvcm1hdHRlcikge1xuICAgICAgICAgICAgY2VsbENvbnRlbnQgPSBtLmZvcm1hdHRlcihcbiAgICAgICAgICAgICAgY2VsbENvbnRlbnQsXG4gICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgcm93SW5kZXgsXG4gICAgICAgICAgICAgIG0uZm9ybWF0RXh0cmFEYXRhXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobS50eXBlID09PSBTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCIke2Ake2NlbGxDb250ZW50fWAucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjZWxsQ29udGVudDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oc2VwYXJhdG9yKVxuICAgIClcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBpZiAoIWlnbm9yZUZvb3Rlcikge1xuICAgIGNvbnRlbnQgKz0gXCJcXG5cIjtcbiAgICBjb250ZW50ICs9IHZpc2libGVDb2x1bW5zXG4gICAgICAubWFwKChtOiBhbnksIGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG0uZm9vdGVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gXy5wbHVjayhkYXRhLCBjb2x1bW5zW2ldLmRhdGFGaWVsZCk7XG4gICAgICAgICAgcmV0dXJuIGBcIiR7bS5mb290ZXIoY29sdW1uRGF0YSwgY29sdW1uc1tpXSwgaSl9XCJgO1xuICAgICAgICB9IGVsc2UgaWYgKG0uZm9vdGVyRm9ybWF0dGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGBcIiR7bS5mb290ZXJGb3JtYXR0ZXIoY29sdW1uc1tpXSwgaSl9XCJgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgXCIke20uZm9vdGVyfVwiYDtcbiAgICAgIH0pXG4gICAgICAuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IHNhdmUgPSAoY29udGVudDogYW55LCB7IG5vQXV0b0JPTSwgZmlsZU5hbWUsIGJsb2JUeXBlIH06IGFueSkgPT4ge1xuICBGaWxlU2F2ZXIuc2F2ZUFzKFxuICAgIG5ldyBCbG9iKFtjb250ZW50XSwgeyB0eXBlOiBibG9iVHlwZSB9KSxcbiAgICBmaWxlTmFtZSxcbiAgICBub0F1dG9CT01cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBFeHBvcnRDU1ZCdXR0b24gZnJvbSAnLi9idXR0b24nO1xuXG5leHBvcnQgZGVmYXVsdCB7IEV4cG9ydENTVkJ1dHRvbiB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBnZXRNZXRhSW5mbywgc2F2ZSwgdHJhbnNmb3JtIH0gZnJvbSBcIi4uL2Nzdi9leHBvcnRlclwiO1xuXG5jb25zdCBjc3ZEZWZhdWx0T3B0aW9ucyA9IHtcbiAgZmlsZU5hbWU6IFwic3ByZWFkc2hlZXQuY3N2XCIsXG4gIHNlcGFyYXRvcjogXCIsXCIsXG4gIGlnbm9yZUhlYWRlcjogZmFsc2UsXG4gIGlnbm9yZUZvb3RlcjogdHJ1ZSxcbiAgbm9BdXRvQk9NOiB0cnVlLFxuICBibG9iVHlwZTogXCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLThcIixcbiAgZXhwb3J0QWxsOiB0cnVlLFxuICBvbmx5RXhwb3J0U2VsZWN0aW9uOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChCYXNlOiBhbnkpID0+XG4gIGNsYXNzIENTVk9wZXJhdGlvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDx0eXBlb2YgQmFzZT4ge1xuICAgIF86IGFueTtcbiAgICB0YWJsZUV4cG9zZWRBUElFbWl0dGVyOiBhbnk7XG5cbiAgICBoYW5kbGVFeHBvcnRDU1YgPSAoc291cmNlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgY29sdW1ucywgZXhwb3J0Q1NWLCBrZXlGaWVsZCB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhSW5mbyhjb2x1bW5zKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgICBleHBvcnRDU1YgPT09IHRydWVcbiAgICAgICAgICA/IGNzdkRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmNzdkRlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgICAuLi5leHBvcnRDU1YsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAvLyBnZXQgZGF0YSBmb3IgY3N2IGV4cG9ydFxuICAgICAgbGV0IGRhdGE6IGFueTtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGRhdGEgPSBzb3VyY2U7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXhwb3J0QWxsKSB7XG4gICAgICAgIGRhdGEgPSB0aGlzLnByb3BzLmRhdGE7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMub25seUV4cG9ydEZpbHRlcmVkKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IHsgcmVzdWx0OiBhbnkgfSA9IHsgcmVzdWx0OiB1bmRlZmluZWQgfTtcbiAgICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyLmVtaXQoXCJnZXQuZmlsdGVyZWQucm93c1wiLCBwYXlsb2FkKTtcbiAgICAgICAgZGF0YSA9IHBheWxvYWQucmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcmVzdWx0OiB1bmRlZmluZWQgfTtcbiAgICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyLmVtaXQoXCJnZXQudGFibGUuZGF0YVwiLCBwYXlsb2FkKTtcbiAgICAgICAgZGF0YSA9IHBheWxvYWQucmVzdWx0O1xuICAgICAgfVxuXG4gICAgICAvLyBmaWx0ZXIgZGF0YSBieSByb3cgc2VsZWN0aW9uXG4gICAgICBpZiAob3B0aW9ucy5vbmx5RXhwb3J0U2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IHJlc3VsdDogdW5kZWZpbmVkIH07XG4gICAgICAgIHRoaXMudGFibGVFeHBvc2VkQVBJRW1pdHRlci5lbWl0KFwiZ2V0LnNlbGVjdGVkLnJvd3NcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBwYXlsb2FkLnJlc3VsdCA/PyBbXTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoKHJvdzogYW55KSA9PiBzZWxlY3Rpb25zLmluY2x1ZGVzKHJvd1trZXlGaWVsZF0pKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudCA9IHRyYW5zZm9ybShkYXRhLCBtZXRhLCBjb2x1bW5zLCB0aGlzLl8sIG9wdGlvbnMpO1xuICAgICAgc2F2ZShjb250ZW50LCBvcHRpb25zKTtcbiAgICB9O1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgY3N2T3BlcmF0aW9uIGZyb20gJy4vY3N2JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjc3ZPcGVyYXRpb25cbn07XG4iLCIvKiBlc2xpbnQgY2FtZWxjYXNlOiAwICovXG4vKiBlc2xpbnQgbm8tcmV0dXJuLWFzc2lnbjogMCAqL1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgU2VhcmNoQmFyUHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuY29uc3QgaGFuZGxlRGVib3VuY2UgPSA8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4oXG4gIGZ1bmM6IFQsXG4gIHdhaXQ6IG51bWJlcixcbiAgaW1tZWRpYXRlPzogYm9vbGVhblxuKSA9PiB7XG4gIGxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICBjb25zdCBsYXRlciA9ICgpID0+IHtcbiAgICAgIHRpbWVvdXQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghaW1tZWRpYXRlKSB7XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7XG5cbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCB8fCAwKTtcblxuICAgIGlmIChjYWxsTm93KSB7XG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cbiAgfTtcbn07XG5cbmludGVyZmFjZSBTZWFyY2hCYXJTdGF0ZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmNsYXNzIFNlYXJjaEJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxTZWFyY2hCYXJQcm9wcywgU2VhcmNoQmFyU3RhdGU+IHtcbiAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU2VhcmNoQmFyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHZhbHVlOiBwcm9wcy5zZWFyY2hUZXh0ID8/IFwiXCIsXG4gICAgfTtcbiAgfVxuXG4gIG9uQ2hhbmdlVmFsdWUgPSAoZTogYW55KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBlLnRhcmdldC52YWx1ZSB9KTtcbiAgfTtcblxuICBvbktleXVwID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgZGVsYXkgPSAyNTAsIG9uU2VhcmNoIH0gPSB0aGlzLnByb3BzIGFzIGFueTtcbiAgICBjb25zdCBkZWJvdW5jZUNhbGxiYWNrID0gaGFuZGxlRGVib3VuY2UoKCkgPT4ge1xuICAgICAgb25TZWFyY2ghKHRoaXMuaW5wdXQ/LnZhbHVlID8/IFwiXCIpO1xuICAgIH0sIGRlbGF5KTtcbiAgICBkZWJvdW5jZUNhbGxiYWNrKCk7XG4gIH07XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogU2VhcmNoQmFyUHJvcHMpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hUZXh0ICE9PSBwcmV2UHJvcHMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiB0aGlzLnByb3BzLnNlYXJjaFRleHQgfHwgXCJcIiB9KTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICAgIHN0eWxlID0ge30sXG4gICAgICBwbGFjZWhvbGRlciA9IFwiU2VhcmNoXCIsXG4gICAgICB0YWJsZUlkID0gXCIwXCIsXG4gICAgICBzZWFyY2hUZXh0ID0gXCJTZWFyY2ggdGhpcyB0YWJsZVwiLFxuICAgIH0gPSB0aGlzLnByb3BzIGFzIGFueTtcblxuICAgIHJldHVybiAoXG4gICAgICA8bGFiZWwgaHRtbEZvcj17YHNlYXJjaC1iYXItJHt0YWJsZUlkfWB9IGNsYXNzTmFtZT1cInNlYXJjaC1sYWJlbFwiPlxuICAgICAgICA8c3BhbiBpZD17YHNlYXJjaC1iYXItJHt0YWJsZUlkfS1sYWJlbGB9IGNsYXNzTmFtZT1cInNyLW9ubHkgdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAge3NlYXJjaFRleHR9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXsobikgPT4geyB0aGlzLmlucHV0ID0gbjsgfX1cbiAgICAgICAgICBpZD17YHNlYXJjaC1iYXItJHt0YWJsZUlkfWB9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHN0eWxlPXtzdHlsZSBhcyBhbnl9XG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgc2VhcmNoLWJhci0ke3RhYmxlSWR9LWxhYmVsYH1cbiAgICAgICAgICBvbktleVVwPXsoKSA9PiB0aGlzLm9uS2V5dXAoKX1cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZVZhbHVlfVxuICAgICAgICAgIGNsYXNzTmFtZT17YGZvcm0tY29udHJvbCAke2NsYXNzTmFtZX1gfVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnZhbHVlfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgLz5cbiAgICAgIDwvbGFiZWw+XG4gICAgKTtcbiAgfVxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNsYXNzTmFtZTogJycsXG4gICAgc3R5bGU6IHt9LFxuICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBkZWxheTogMjUwLFxuICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgIHRhYmxlSWQ6ICcwJyxcbiAgICBzclRleHQ6ICdTZWFyY2ggdGhpcyB0YWJsZSdcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoQmFyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2xlYXJTZWFyY2hCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi8uLlwiO1xuXG5jb25zdCBDbGVhckJ1dHRvbiA9ICh7XG4gIG9uQ2xlYXIsXG4gIHRleHQgPSBcIkNsZWFyXCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG59OiBDbGVhclNlYXJjaEJ1dHRvblByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCA9PiAoXG4gIDxidXR0b24gY2xhc3NOYW1lPXtgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zZWNvbmRhcnkgJHtjbGFzc05hbWV9YH0gb25DbGljaz17b25DbGVhcn0+XG4gICAge3RleHR9XG4gIDwvYnV0dG9uPlxuKTtcblxuXG5leHBvcnQgZGVmYXVsdCBDbGVhckJ1dHRvbjtcbiIsIi8qIGVzbGludCByZWFjdC9wcm9wLXR5cGVzOiAwICovXG4vKiBlc2xpbnQgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzOiAwICovXG4vKiBlc2xpbnQgbm8tY29udGludWU6IDAgKi9cbi8qIGVzbGludCBuby1sb25lbHktaWY6IDAgKi9cbi8qIGVzbGludCBjbGFzcy1tZXRob2RzLXVzZS10aGlzOiAwICovXG4vKiBlc2xpbnQgY2FtZWxjYXNlOiAwICovXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTZWFyY2hNYXRjaFByb3BzLCBUYWJsZVNlYXJjaFByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmludGVyZmFjZSBEYXRhQ2hhbmdlTGlzdGVuZXIge1xuICBlbWl0OiAoZXZlbnQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFNlYXJjaFByb3ZpZGVyUHJvcHMgZXh0ZW5kcyBTZWFyY2hNYXRjaFByb3BzIHtcbiAgZGF0YTogYW55W107XG4gIGRhdGFDaGFuZ2VMaXN0ZW5lcj86IERhdGFDaGFuZ2VMaXN0ZW5lcjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuaW50ZXJmYWNlIFNlYXJjaFByb3ZpZGVyU3RhdGUge1xuICBkYXRhOiBhbnlbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgKFxuICAgIG9wdGlvbnM6IFRhYmxlU2VhcmNoUHJvcHMgPSB7XG4gICAgICBzZWFyY2hGb3JtYXR0ZWQ6IGZhbHNlLFxuICAgICAgYWZ0ZXJTZWFyY2g6IHVuZGVmaW5lZCxcbiAgICAgIG9uQ29sdW1uTWF0Y2g6ICgpID0+IGZhbHNlLFxuICAgIH1cbiAgKSA9PlxuICAoXG4gICAgXzogYW55LFxuICAgIGlzUmVtb3RlU2VhcmNoOiAoKSA9PiBib29sZWFuLFxuICAgIGhhbmRsZVJlbW90ZVNlYXJjaENoYW5nZTogKHNlYXJjaFRleHQ6IHN0cmluZykgPT4gdm9pZFxuICApID0+IHtcbiAgICBjb25zdCBTZWFyY2hDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxhbnk+KG51bGwpO1xuXG4gICAgY2xhc3MgU2VhcmNoUHJvdmlkZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gICAgICBTZWFyY2hQcm92aWRlclByb3BzLFxuICAgICAgU2VhcmNoUHJvdmlkZXJTdGF0ZVxuICAgID4ge1xuICAgICAgY29uc3RydWN0b3IocHJvcHM6IFNlYXJjaFByb3ZpZGVyUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICBsZXQgaW5pdGlhbERhdGEgPSBwcm9wcy5kYXRhO1xuICAgICAgICBpZiAoaXNSZW1vdGVTZWFyY2goKSAmJiB0aGlzLnByb3BzLnNlYXJjaFRleHQgIT09IFwiXCIpIHtcbiAgICAgICAgICBoYW5kbGVSZW1vdGVTZWFyY2hDaGFuZ2UodGhpcy5wcm9wcy5zZWFyY2hUZXh0ISk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5pdGlhbERhdGEgPSB0aGlzLnNlYXJjaChwcm9wcyk7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdGVuZXIoaW5pdGlhbERhdGEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7IGRhdGE6IGluaXRpYWxEYXRhIH07XG4gICAgICB9XG5cbiAgICAgIGdldFNlYXJjaGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5kYXRhO1xuICAgICAgfVxuXG4gICAgICB0cmlnZ2VyTGlzdGVuZXIocmVzdWx0OiBhbnksIHNraXBJbml0PzogYW55KSB7XG4gICAgICAgIGlmIChvcHRpb25zLmFmdGVyU2VhcmNoICYmICFza2lwSW5pdCkge1xuICAgICAgICAgIG9wdGlvbnMuYWZ0ZXJTZWFyY2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kYXRhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLmRhdGFDaGFuZ2VMaXN0ZW5lci5lbWl0KFwiZmlsdGVyQ2hhbmdlZFwiLCByZXN1bHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBTZWFyY2hQcm92aWRlclByb3BzKSB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMuc2VhcmNoVGV4dCAhPT0gdGhpcy5wcm9wcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgICAgaWYgKGlzUmVtb3RlU2VhcmNoKCkpIHtcbiAgICAgICAgICAgIGhhbmRsZVJlbW90ZVNlYXJjaENoYW5nZSh0aGlzLnByb3BzLnNlYXJjaFRleHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaCh0aGlzLnByb3BzKTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckxpc3RlbmVyKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc1JlbW90ZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICBpZiAoIV8uaXNFcXVhbCh0aGlzLnN0YXRlLmRhdGEsIHRoaXMucHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGE6IHRoaXMucHJvcHMuZGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzRXF1YWwocHJldlByb3BzLmRhdGEsIHRoaXMucHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdGVuZXIocmVzdWx0KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VhcmNoKHByb3BzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhLCBjb2x1bW5zIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHByb3BzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGRhdGEuZmlsdGVyKChyb3c6IGFueSwgcmlkeDogYW55KSA9PiB7XG4gICAgICAgICAgZm9yIChsZXQgY2lkeCA9IDA7IGNpZHggPCBjb2x1bW5zLmxlbmd0aDsgY2lkeCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2NpZHhdO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5zZWFyY2hhYmxlID09PSBmYWxzZSkgY29udGludWU7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0VmFsdWUgPSBfLmdldChyb3csIGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5mb3JtYXR0ZXIgJiYgb3B0aW9ucy5zZWFyY2hGb3JtYXR0ZWQpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0VmFsdWUgPSBjb2x1bW4uZm9ybWF0dGVyKFxuICAgICAgICAgICAgICAgIHRhcmdldFZhbHVlLFxuICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICByaWR4LFxuICAgICAgICAgICAgICAgIGNvbHVtbi5mb3JtYXRFeHRyYURhdGFcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICAgIHRhcmdldFZhbHVlID0gY29sdW1uLmZpbHRlclZhbHVlKHRhcmdldFZhbHVlLCByb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub25Db2x1bW5NYXRjaCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vbkNvbHVtbk1hdGNoKHtcbiAgICAgICAgICAgICAgICAgIHNlYXJjaFRleHQsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdGFyZ2V0VmFsdWUsXG4gICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0VmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IHRhcmdldFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VmFsdWUuaW5kZXhPZihzZWFyY2hUZXh0KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTZWFyY2hDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IGRhdGE6IHRoaXMuc3RhdGUuZGF0YSB9fT5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvU2VhcmNoQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgUHJvdmlkZXI6IFNlYXJjaFByb3ZpZGVyLFxuICAgICAgQ29uc3VtZXI6IFNlYXJjaENvbnRleHQuQ29uc3VtZXIsXG4gICAgfTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFNlYXJjaEJhciBmcm9tICcuL1NlYXJjaEJhcic7XG5pbXBvcnQgQ2xlYXJTZWFyY2hCdXR0b24gZnJvbSAnLi9jbGVhci1idXR0b24nO1xuXG5leHBvcnQgZGVmYXVsdCB7IFNlYXJjaEJhciwgQ2xlYXJTZWFyY2hCdXR0b24gfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IE9wZXJhdGlvbiBmcm9tIFwiLi9zcmMvb3BcIjtcblxuZXhwb3J0IGRlZmF1bHQgKEJhc2U6IGFueSkgPT5cbiAgY2xhc3MgU3RhdGVsZXNzT3BlcmF0aW9uIGV4dGVuZHMgT3BlcmF0aW9uLmNzdk9wZXJhdGlvbihCYXNlKSB7XG4gICAgcmVnaXN0ZXJFeHBvc2VkQVBJID0gKHRhYmxlRXhwb3NlZEFQSUVtaXR0ZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyID0gdGFibGVFeHBvc2VkQVBJRW1pdHRlcjtcbiAgICB9O1xuICB9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180NDJfXzsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjg4KTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZXF1aXJlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzQ0Ml9fIiwiYiIsImEiLCJhdXRvQm9tIiwiY29uc29sZSIsIndhcm4iLCJ0ZXN0IiwidHlwZSIsIkJsb2IiLCJjIiwiZCIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsInJlc3BvbnNlVHlwZSIsIm9ubG9hZCIsImciLCJyZXNwb25zZSIsIm9uZXJyb3IiLCJlcnJvciIsInNlbmQiLCJzdGF0dXMiLCJlIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJkb2N1bWVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdE1vdXNlRXZlbnQiLCJ3aW5kb3ciLCJmIiwiZ2xvYmFsIiwibmF2aWdhdG9yIiwidXNlckFnZW50Iiwic2F2ZUFzIiwiSFRNTEFuY2hvckVsZW1lbnQiLCJwcm90b3R5cGUiLCJoIiwiaSIsIlVSTCIsIndlYmtpdFVSTCIsImoiLCJjcmVhdGVFbGVtZW50IiwibmFtZSIsImRvd25sb2FkIiwicmVsIiwiaHJlZiIsIm9yaWdpbiIsImxvY2F0aW9uIiwidGFyZ2V0IiwiY3JlYXRlT2JqZWN0VVJMIiwic2V0VGltZW91dCIsInJldm9rZU9iamVjdFVSTCIsIm1zU2F2ZU9yT3BlbkJsb2IiLCJ0aXRsZSIsImJvZHkiLCJpbm5lclRleHQiLCJIVE1MRWxlbWVudCIsInNhZmFyaSIsIkZpbGVSZWFkZXIiLCJrIiwib25sb2FkZW5kIiwicmVzdWx0IiwicmVwbGFjZSIsInJlYWRBc0RhdGFVUkwiLCJsIiwibSIsIlRvb2xraXRDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsInNlYXJjaFByb3BzIiwic2VhcmNoVGV4dCIsIm9uU2VhcmNoIiwidmFsIiwib25DbGVhciIsImNzdlByb3BzIiwib25FeHBvcnQiLCJjb2x1bW5Ub2dnbGVQcm9wcyIsImNvbHVtbnMiLCJ0b2dnbGVzIiwib25Db2x1bW5Ub2dnbGUiLCJkYXRhRmllbGQiLCJiYXNlUHJvcHMiLCJrZXlGaWVsZCIsInVuZGVmaW5lZCIsImRhdGEiLCJib290c3RyYXA0IiwiYm9vdHN0cmFwNSIsIlRvb2xraXRQcm92aWRlciIsIkNvbXBvbmVudCIsInN0YXRpYyIsInNlYXJjaCIsImV4cG9ydENTViIsIl8iLCJzdGF0ZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdXBlciIsImluaXRpYWxTdGF0ZSIsImNvbHVtblRvZ2dsZSIsImRlZmF1bHRTZWFyY2giLCJ0aGlzIiwiYmluZCIsInNldERlcGVuZGVuY3lNb2R1bGVzIiwicmVkdWNlIiwib2JqIiwiY29sdW1uIiwiaGlkZGVuIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiY3VyckNvbHVtblRvZ2dsZSIsInByb3BzQ29sdW1uVG9nZ2xlIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJjaGlsZHJlbiIsInJlZ2lzdGVyRXhwb3NlZEFQSSIsInNlYXJjaENvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiaGFuZGxlRXhwb3J0Q1NWIiwiQ29uc3VtZXIiLCJkZWZhdWx0IiwidG9va0tpdFByb3BzIiwiVG9nZ2xlTGlzdCIsImJ0bkNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImNvbnRleHR1YWwiLCJtYXAiLCJ0b2dnbGUiLCJrZXkiLCJvbkNsaWNrIiwidGV4dCIsImV4cG9ydENTVkJ1dHRvbkRlZmF1bHRQcm9wcyIsInN0eWxlIiwicmVzdCIsImdldE1ldGFJbmZvIiwiZmllbGQiLCJjc3ZUeXBlIiwiU3RyaW5nIiwiZm9ybWF0dGVyIiwiY3N2Rm9ybWF0dGVyIiwiZm9ybWF0RXh0cmFEYXRhIiwiaGVhZGVyIiwiY3N2VGV4dCIsImV4cG9ydCIsImNzdkV4cG9ydCIsInJvdyIsIk51bWJlciIsInJvd1NwYW4iLCJjb2xTcGFuIiwiZm9vdGVyIiwiZm9vdGVyRm9ybWF0dGVyIiwiZmlsdGVyIiwidHJhbnNmb3JtIiwibWV0YSIsInNlcGFyYXRvciIsImlnbm9yZUhlYWRlciIsImlnbm9yZUZvb3RlciIsInZpc2libGVDb2x1bW5zIiwiY29udGVudCIsImpvaW4iLCJsZW5ndGgiLCJyb3dJbmRleCIsImNlbGxDb250ZW50IiwiZ2V0IiwiY29sdW1uRGF0YSIsInBsdWNrIiwic2F2ZSIsIm5vQXV0b0JPTSIsImZpbGVOYW1lIiwiYmxvYlR5cGUiLCJFeHBvcnRDU1ZCdXR0b24iLCJjc3ZEZWZhdWx0T3B0aW9ucyIsImV4cG9ydEFsbCIsIm9ubHlFeHBvcnRTZWxlY3Rpb24iLCJCYXNlIiwidGFibGVFeHBvc2VkQVBJRW1pdHRlciIsInNvdXJjZSIsIm9wdGlvbnMiLCJvbmx5RXhwb3J0RmlsdGVyZWQiLCJwYXlsb2FkIiwiZW1pdCIsInNlbGVjdGlvbnMiLCJpbmNsdWRlcyIsImNzdk9wZXJhdGlvbiIsImhhbmRsZURlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJpbW1lZGlhdGUiLCJ0aW1lb3V0IiwiYXJncyIsImNhbGxOb3ciLCJjbGVhclRpbWVvdXQiLCJhcHBseSIsIlNlYXJjaEJhciIsImlucHV0Iiwib25DaGFuZ2VWYWx1ZSIsIm9uS2V5dXAiLCJkZWxheSIsImRlYm91bmNlQ2FsbGJhY2siLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwbGFjZWhvbGRlciIsInRhYmxlSWQiLCJodG1sRm9yIiwiaWQiLCJyZWYiLCJuIiwib25LZXlVcCIsIm9uQ2hhbmdlIiwic3JUZXh0Iiwic2VhcmNoRm9ybWF0dGVkIiwiYWZ0ZXJTZWFyY2giLCJvbkNvbHVtbk1hdGNoIiwiaXNSZW1vdGVTZWFyY2giLCJoYW5kbGVSZW1vdGVTZWFyY2hDaGFuZ2UiLCJTZWFyY2hDb250ZXh0IiwiU2VhcmNoUHJvdmlkZXIiLCJpbml0aWFsRGF0YSIsInRyaWdnZXJMaXN0ZW5lciIsImdldFNlYXJjaGVkIiwic2tpcEluaXQiLCJkYXRhQ2hhbmdlTGlzdGVuZXIiLCJpc0VxdWFsIiwidG9Mb3dlckNhc2UiLCJyaWR4IiwiY2lkeCIsInNlYXJjaGFibGUiLCJ0YXJnZXRWYWx1ZSIsImZpbHRlclZhbHVlIiwidG9TdHJpbmciLCJpbmRleE9mIiwiQ2xlYXJTZWFyY2hCdXR0b24iLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiY2FsbCIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactBootstrapTableNgToolkit=t(require("react")):e.ReactBootstrapTableNgToolkit=t(e.React)}(self,e=>(()=>{var t={213(e,t,o){var r,a,s;a=[],void 0===(s="function"==typeof(r=function(){"use strict";function t(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function r(e,t,o){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){i(r.response,t,o)},r.onerror=function(){console.error("could not download file")},r.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var n="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof o.g&&o.g.global===o.g?o.g:void 0,l=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=n.saveAs||("object"!=typeof window||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(e,t,o){var l=n.URL||n.webkitURL,i=document.createElement("a");t=t||e.name||"download",i.download=t,i.rel="noopener","string"==typeof e?(i.href=e,i.origin===location.origin?s(i):a(i.href)?r(e,t,o):s(i,i.target="_blank")):(i.href=l.createObjectURL(e),setTimeout(function(){l.revokeObjectURL(i.href)},4e4),setTimeout(function(){s(i)},0))}:"msSaveOrOpenBlob"in navigator?function(e,o,n){if(o=o||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,n),o);else if(a(e))r(e,o,n);else{var l=document.createElement("a");l.href=e,l.target="_blank",setTimeout(function(){s(l)})}}:function(e,t,o,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,o);var s="application/octet-stream"===e.type,i=/constructor/i.test(n.HTMLElement)||n.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&i||l)&&"undefined"!=typeof FileReader){var c=new FileReader;c.onloadend=function(){var e=c.result;e=u?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},c.readAsDataURL(e)}else{var d=n.URL||n.webkitURL,p=d.createObjectURL(e);a?a.location=p:location.href=p,a=null,setTimeout(function(){d.revokeObjectURL(p)},4e4)}});n.saveAs=i.saveAs=i,e.exports=i})?r.apply(t,a):r)||(e.exports=s)},633(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(499)),n=r(o(880)),l=a.default.createContext({searchProps:{searchText:"",onSearch:e=>{},onClear:()=>{}},csvProps:{onExport:()=>{}},columnToggleProps:{columns:[],toggles:[],onColumnToggle:e=>{}},baseProps:{keyField:void 0,columns:[],data:[],bootstrap4:void 0,bootstrap5:void 0,columnResize:void 0}});class i extends((0,n.default)(a.default.Component)){static defaultProps={search:!1,exportCSV:!1,bootstrap4:!1,bootstrap5:!1,columnResize:!1};_;state;constructor(e){super(e);const t={columnToggle:{},searchText:"object"==typeof e.search&&e.search.defaultSearch||""};this._=null,this.onClear=this.onClear.bind(this),this.onSearch=this.onSearch.bind(this),this.onColumnToggle=this.onColumnToggle.bind(this),this.setDependencyModules=this.setDependencyModules.bind(this),e.columnToggle&&(t.columnToggle=e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{})),t.searchText="object"==typeof e.search&&e.search.defaultSearch||"",this.state=t}static getDerivedStateFromProps(e,t){const o=t.columnToggle;let r;return r=e.columnToggle?e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{}):{},o?{...t,currColumnToggle:o}:{...t,propsColumnToggle:r}}onSearch(e){e!==this.state.searchText&&this.setState({searchText:e})}onClear(){this.setState({searchText:""})}onColumnToggle(e){const{columnToggle:t}=this.state;t[e]=!t[e],this.setState({...this.state,columnToggle:t})}setDependencyModules(e){this._=e}render(){const e={keyField:this.props.keyField,columns:this.props.columns,data:this.props.data,search:this.props.search??!1,exportCSV:this.props.exportCSV??!1,bootstrap4:this.props.bootstrap4??!1,bootstrap5:this.props.bootstrap5??!1,columnResize:this.props.columnResize??!1,children:this.props.children,setDependencyModules:this.setDependencyModules,registerExposedAPI:this.registerExposedAPI};return this.props.search&&(e.search={searchContext:(0,s.default)(this.props.search),searchText:this.state.searchText}),this.props.columnToggle&&(e.columnToggle={toggles:this.state.columnToggle}),a.default.createElement(l.Provider,{value:{searchProps:{searchText:this.state.searchText,onSearch:this.onSearch,onClear:this.onClear},csvProps:{onExport:this.handleExportCSV},columnToggleProps:{columns:this.props.columns,toggles:this.state.columnToggle,onColumnToggle:this.onColumnToggle},baseProps:e}},this.props.children)}}t.default={Provider:i,Consumer:l.Consumer}},688(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Search=t.CSVExport=t.ColumnToggle=t.ToolkitContext=void 0;const a=r(o(633)),s=r(o(921));t.default=s.default,t.ToolkitContext=a.default;var n=o(555);Object.defineProperty(t,"ColumnToggle",{enumerable:!0,get:function(){return r(n).default}});var l=o(282);Object.defineProperty(t,"CSVExport",{enumerable:!0,get:function(){return r(l).default}});var i=o(470);Object.defineProperty(t,"Search",{enumerable:!0,get:function(){return r(i).default}})},921(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(633));t.default=e=>a.default.createElement(s.default.Provider,{...e},a.default.createElement(s.default.Consumer,null,t=>e.children(t)))},555(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(140));t.default={ToggleList:a.default}},140(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({columns:e,onColumnToggle:t,toggles:o,btnClassName:r="",className:s="",contextual:n="primary"})=>a.default.createElement("div",{className:`btn-group btn-group-toggle ${s}`,"data-toggle":"buttons"},e.map(e=>({...e,toggle:o[e.dataField]})).map(e=>a.default.createElement("button",{type:"button",key:e.dataField,className:`${r} btn btn-${n} ${e.toggle?"active":""}`,"data-toggle":"button","aria-pressed":e.toggle?"true":"false",onClick:()=>t(e.dataField)},e.text)))},40(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s={className:"",style:{}};t.default=e=>{const{onExport:t,children:o,className:r,...n}={...s,...e};return a.default.createElement("button",{type:"button",className:`react-bs-table-csv-btn btn btn-default btn-secondary ${r}`,onClick:()=>t(),...n},o)}},457(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.save=t.transform=t.getMetaInfo=void 0;const a=r(o(213));t.getMetaInfo=e=>e.map(e=>({field:e.dataField,type:e.csvType||String,formatter:e.csvFormatter,formatExtraData:e.formatExtraData,header:e.csvText||e.text,export:!1!==e.csvExport,row:Number(e.row)||0,rowSpan:Number(e.rowSpan)||1,colSpan:Number(e.colSpan)||1,footer:e.footer,footerFormatter:e.footerFormatter})).filter(e=>e.export);t.transform=(e,t,o,r,{separator:a,ignoreHeader:s,ignoreFooter:n})=>{const l=t.filter(e=>e.export);let i="";return s||(i+=l.map(e=>`"${e.header}"`).join(a),i+="\n"),0===e.length||(i+=e.map((e,t)=>l.map(o=>{let a=r.get(e,o.field);return o.formatter&&(a=o.formatter(a,e,t,o.formatExtraData)),o.type===String?`"${`${a}`.replace(/"/g,'""')}"`:a}).join(a)).join("\n"),n||(i+="\n",i+=l.map((t,a)=>{if("function"==typeof t.footer){const s=r.pluck(e,o[a].dataField);return`"${t.footer(s,o[a],a)}"`}return t.footerFormatter?`"${t.footerFormatter(o[a],a)}"`:`"${t.footer}"`}).join(a))),i};t.save=(e,{noAutoBOM:t,fileName:o,blobType:r})=>{a.default.saveAs(new Blob([e],{type:r}),o,t)}},282(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(40));t.default={ExportCSVButton:a.default}},881(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=o(457),n={fileName:"spreadsheet.csv",separator:",",ignoreHeader:!1,ignoreFooter:!0,noAutoBOM:!0,blobType:"text/plain;charset=utf-8",exportAll:!0,onlyExportSelection:!1};t.default=e=>class extends a.default.Component{_;tableExposedAPIEmitter;handleExportCSV=e=>{const{columns:t,exportCSV:o,keyField:r}=this.props,a=(0,s.getMetaInfo)(t),l=!0===o?n:{...n,...o};let i;if(void 0!==e)i=e;else if(l.exportAll)i=this.props.data;else if(l.onlyExportFiltered){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.filtered.rows",e),i=e.result}else{const e={result:void 0};this.tableExposedAPIEmitter.emit("get.table.data",e),i=e.result}if(l.onlyExportSelection){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.selected.rows",e);const t=e.result??[];i=i.filter(e=>t.includes(e[r]))}const u=(0,s.transform)(i,a,t,this._,l);(0,s.save)(u,l)}}},469(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(881));t.default={csvOperation:a.default}},801(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=(e,t,o)=>{let r;return(...a)=>{const s=o&&!r;clearTimeout(r),r=setTimeout(()=>{r=void 0,o||e.apply(this,a)},t||0),s&&e.apply(this,a)}};class n extends a.default.Component{input=null;constructor(e){super(e),this.state={value:e.searchText??""}}onChangeValue=e=>{this.setState({value:e.target.value})};onKeyup=()=>{const{delay:e=250,onSearch:t}=this.props;s(()=>{t(this.input?.value??"")},e)()};componentDidUpdate(e){this.props.searchText!==e.searchText&&this.setState({value:this.props.searchText||""})}render(){const{className:e="",style:t={},placeholder:o="Search",tableId:r="0",searchText:s="Search this table"}=this.props;return a.default.createElement("label",{htmlFor:`search-bar-${r}`,className:"search-label"},a.default.createElement("span",{id:`search-bar-${r}-label`,className:"sr-only visually-hidden"},s),a.default.createElement("input",{ref:e=>{this.input=e},id:`search-bar-${r}`,type:"text",style:t,"aria-labelledby":`search-bar-${r}-label`,onKeyUp:()=>this.onKeyup(),onChange:this.onChangeValue,className:`form-control ${e}`,value:this.state.value,placeholder:o}))}static defaultProps={className:"",style:{},placeholder:"Search",delay:250,searchText:"",tableId:"0",srText:"Search this table"}}t.default=n},68(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({onClear:e,text:t="Clear",className:o=""})=>a.default.createElement("button",{className:`btn btn-default btn-secondary ${o}`,onClick:e},t)},499(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=(e={searchFormatted:!1,afterSearch:void 0,onColumnMatch:()=>!1})=>(t,o,r)=>{const s=a.default.createContext(null);class n extends a.default.Component{constructor(e){super(e);let t=e.data;o()&&""!==this.props.searchText?r(this.props.searchText):(t=this.search(e),this.triggerListener(t,!0)),this.state={data:t}}getSearched(){return this.state.data}triggerListener(t,o){e.afterSearch&&!o&&e.afterSearch(t),this.props.dataChangeListener&&this.props.dataChangeListener.emit("filterChanged",t.length)}componentDidUpdate(e){if(e.searchText!==this.props.searchText)if(o())r(this.props.searchText);else{const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}else if(o())t.isEqual(this.state.data,this.props.data)||this.setState({data:this.props.data});else if(!t.isEqual(e.data,this.props.data)){const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}}search(o){const{data:r,columns:a}=o,s=o.searchText.toLowerCase();return r.filter((o,r)=>{for(let n=0;n<a.length;n+=1){const l=a[n];if(!1===l.searchable)continue;let i=t.get(o,l.dataField);if(l.formatter&&e.searchFormatted?i=l.formatter(i,o,r,l.formatExtraData):l.filterValue&&(i=l.filterValue(i,o)),e.onColumnMatch){if(e.onColumnMatch({searchText:s,value:i,column:l,row:o}))return!0}else if(null!=i&&(i=i.toString().toLowerCase(),i.indexOf(s)>-1))return!0}return!1})}render(){return a.default.createElement(s.Provider,{value:{data:this.state.data}},this.props.children)}}return{Provider:n,Consumer:s.Consumer}}},470(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(801)),s=r(o(68));t.default={SearchBar:a.default,ClearSearchButton:s.default}},880(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(469));t.default=e=>class extends(a.default.csvOperation(e)){registerExposedAPI=e=>{this.tableExposedAPIEmitter=e}}},442(t){"use strict";t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var s=o[e]={exports:{}};return t[e].call(s.exports,s,s.exports,r),s.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(688)})());
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvZGlzdC9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC5qcyIsIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsRUFBUUcsUUFBUSxVQUNSLG1CQUFYQyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sQ0FBQyxTQUFVSixHQUNRLGlCQUFaQyxRQUNkQSxRQUFzQyw2QkFBSUQsRUFBUUcsUUFBUSxVQUUxREosRUFBbUMsNkJBQUlDLEVBQVFELEVBQVksTUFDNUQsQ0FURCxDQVNHTyxLQUFPQyxHLHdCQ1RWLFVBQXdELEVBQU8sUUFBSSwwQkFBRixFQUE4RixXQUFXLGFBQWEsU0FBU0MsRUFBRUMsRUFBRUQsR0FBRyxZQUFNLElBQW9CQSxFQUFFQSxFQUFFLENBQUNFLFNBQVEsR0FBSSxpQkFBaUJGLElBQUlHLFFBQVFDLEtBQUssc0RBQXNESixFQUFFLENBQUNFLFNBQVNGLElBQUlBLEVBQUVFLFNBQVMsNkVBQTZFRyxLQUFLSixFQUFFSyxNQUFNLElBQUlDLEtBQUssQ0FBQyxTQUFTTixHQUFHLENBQUNLLEtBQUtMLEVBQUVLLE9BQU9MLENBQUMsQ0FBQyxTQUFTTyxFQUFFUCxFQUFFRCxFQUFFUSxHQUFHLElBQUlDLEVBQUUsSUFBSUMsZUFBZUQsRUFBRUUsS0FBSyxNQUFNVixHQUFHUSxFQUFFRyxhQUFhLE9BQU9ILEVBQUVJLE9BQU8sV0FBV0MsRUFBRUwsRUFBRU0sU0FBU2YsRUFBRVEsRUFBRSxFQUFFQyxFQUFFTyxRQUFRLFdBQVdiLFFBQVFjLE1BQU0sMEJBQTBCLEVBQUVSLEVBQUVTLE1BQU0sQ0FBQyxTQUFTVCxFQUFFUixHQUFHLElBQUlELEVBQUUsSUFBSVUsZUFBZVYsRUFBRVcsS0FBSyxPQUFPVixHQUFFLEdBQUksSUFBSUQsRUFBRWtCLE1BQU0sQ0FBQyxNQUFNakIsR0FBRyxDQUFDLE9BQU8s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SSxNQUFRLElBQUkwSSxTQUFTLGNBQWIsRUFDaEIsQ0FBRSxNQUFPeE4sR0FDUixHQUFzQixpQkFBWE0sT0FBcUIsT0FBT0EsTUFDeEMsQ0FDQSxDQVB1QixHQ0dFNE0sRUFBb0IsSSIsInNvdXJjZXMiOlsid2VicGFjazovLy93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZpbGUtc2F2ZXIvZGlzdC9GaWxlU2F2ZXIubWluLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L2NvbnRleHQudHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L2luZGV4LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3Byb3ZpZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY29sdW1uLXRvZ2dsZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY29sdW1uLXRvZ2dsZS90b2dnbGUtbGlzdC50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2Nzdi9idXR0b24udHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9jc3YvZXhwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2Nzdi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvb3AvY3N2LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9vcC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvc2VhcmNoL1NlYXJjaEJhci50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL3NlYXJjaC9jbGVhci1idXR0b24udHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9zZWFyY2gvY29udGV4dC50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL3NlYXJjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zdGF0ZWxlc3NPcC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgdW1kIHtcInJvb3RcIjpcIlJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImFtZFwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovLy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiUmVhY3RCb290c3RyYXBUYWJsZU5nVG9vbGtpdFwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJSZWFjdEJvb3RzdHJhcFRhYmxlTmdUb29sa2l0XCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoc2VsZiwgKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzQ0Ml9fKSA9PiB7XG5yZXR1cm4gIiwiKGZ1bmN0aW9uKGEsYil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxiKTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBleHBvcnRzKWIoKTtlbHNle2IoKSxhLkZpbGVTYXZlcj17ZXhwb3J0czp7fX0uZXhwb3J0c319KSh0aGlzLGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYihhLGIpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBiP2I9e2F1dG9Cb206ITF9Olwib2JqZWN0XCIhPXR5cGVvZiBiJiYoY29uc29sZS53YXJuKFwiRGVwcmVjYXRlZDogRXhwZWN0ZWQgdGhpcmQgYXJndW1lbnQgdG8gYmUgYSBvYmplY3RcIiksYj17YXV0b0JvbTohYn0pLGIuYXV0b0JvbSYmL15cXHMqKD86dGV4dFxcL1xcUyp8YXBwbGljYXRpb25cXC94bWx8XFxTKlxcL1xcUypcXCt4bWwpXFxzKjsuKmNoYXJzZXRcXHMqPVxccyp1dGYtOC9pLnRlc3QoYS50eXBlKT9uZXcgQmxvYihbXCJcXHVGRUZGXCIsYV0se3R5cGU6YS50eXBlfSk6YX1mdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKFwiR0VUXCIsYSksZC5yZXNwb25zZVR5cGU9XCJibG9iXCIsZC5vbmxvYWQ9ZnVuY3Rpb24oKXtnKGQucmVzcG9uc2UsYixjKX0sZC5vbmVycm9yPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcihcImNvdWxkIG5vdCBkb3dubG9hZCBmaWxlXCIpfSxkLnNlbmQoKX1mdW5jdGlvbiBkKGEpe3ZhciBiPW5ldyBYTUxIdHRwUmVxdWVzdDtiLm9wZW4oXCJIRUFEXCIsYSwhMSk7dHJ5e2Iuc2VuZCgpfWNhdGNoKGEpe31yZXR1cm4gMjAwPD1iLnN0YXR1cyYmMjk5Pj1iLnN0YXR1c31mdW5jdGlvbiBlKGEpe3RyeXthLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSl9Y2F0Y2goYyl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJNb3VzZUV2ZW50c1wiKTtiLmluaXRNb3VzZUV2ZW50KFwiY2xpY2tcIiwhMCwhMCx3aW5kb3csMCwwLDAsODAsMjAsITEsITEsITEsITEsMCxudWxsKSxhLmRpc3BhdGNoRXZlbnQoYil9fXZhciBmPVwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy53aW5kb3c9PT13aW5kb3c/d2luZG93Olwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmLnNlbGY9PT1zZWxmP3NlbGY6XCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsLmdsb2JhbD09PWdsb2JhbD9nbG9iYWw6dm9pZCAwLGE9Zi5uYXZpZ2F0b3ImJi9NYWNpbnRvc2gvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJi9BcHBsZVdlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIS9TYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksZz1mLnNhdmVBc3x8KFwib2JqZWN0XCIhPXR5cGVvZiB3aW5kb3d8fHdpbmRvdyE9PWY/ZnVuY3Rpb24oKXt9OlwiZG93bmxvYWRcImluIEhUTUxBbmNob3JFbGVtZW50LnByb3RvdHlwZSYmIWE/ZnVuY3Rpb24oYixnLGgpe3ZhciBpPWYuVVJMfHxmLndlYmtpdFVSTCxqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2c9Z3x8Yi5uYW1lfHxcImRvd25sb2FkXCIsai5kb3dubG9hZD1nLGoucmVsPVwibm9vcGVuZXJcIixcInN0cmluZ1wiPT10eXBlb2YgYj8oai5ocmVmPWIsai5vcmlnaW49PT1sb2NhdGlvbi5vcmlnaW4/ZShqKTpkKGouaHJlZik/YyhiLGcsaCk6ZShqLGoudGFyZ2V0PVwiX2JsYW5rXCIpKTooai5ocmVmPWkuY3JlYXRlT2JqZWN0VVJMKGIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnJldm9rZU9iamVjdFVSTChqLmhyZWYpfSw0RTQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGopfSwwKSl9OlwibXNTYXZlT3JPcGVuQmxvYlwiaW4gbmF2aWdhdG9yP2Z1bmN0aW9uKGYsZyxoKXtpZihnPWd8fGYubmFtZXx8XCJkb3dubG9hZFwiLFwic3RyaW5nXCIhPXR5cGVvZiBmKW5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGIoZixoKSxnKTtlbHNlIGlmKGQoZikpYyhmLGcsaCk7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtpLmhyZWY9ZixpLnRhcmdldD1cIl9ibGFua1wiLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGkpfSl9fTpmdW5jdGlvbihiLGQsZSxnKXtpZihnPWd8fG9wZW4oXCJcIixcIl9ibGFua1wiKSxnJiYoZy5kb2N1bWVudC50aXRsZT1nLmRvY3VtZW50LmJvZHkuaW5uZXJUZXh0PVwiZG93bmxvYWRpbmcuLi5cIiksXCJzdHJpbmdcIj09dHlwZW9mIGIpcmV0dXJuIGMoYixkLGUpO3ZhciBoPVwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI9PT1iLnR5cGUsaT0vY29uc3RydWN0b3IvaS50ZXN0KGYuSFRNTEVsZW1lbnQpfHxmLnNhZmFyaSxqPS9DcmlPU1xcL1tcXGRdKy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtpZigoanx8aCYmaXx8YSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBGaWxlUmVhZGVyKXt2YXIgaz1uZXcgRmlsZVJlYWRlcjtrLm9ubG9hZGVuZD1mdW5jdGlvbigpe3ZhciBhPWsucmVzdWx0O2E9aj9hOmEucmVwbGFjZSgvXmRhdGE6W147XSo7LyxcImRhdGE6YXR0YWNobWVudC9maWxlO1wiKSxnP2cubG9jYXRpb24uaHJlZj1hOmxvY2F0aW9uPWEsZz1udWxsfSxrLnJlYWRBc0RhdGFVUkwoYil9ZWxzZXt2YXIgbD1mLlVSTHx8Zi53ZWJraXRVUkwsbT1sLmNyZWF0ZU9iamVjdFVSTChiKTtnP2cubG9jYXRpb249bTpsb2NhdGlvbi5ocmVmPW0sZz1udWxsLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLnJldm9rZU9iamVjdFVSTChtKX0sNEU0KX19KTtmLnNhdmVBcz1nLnNhdmVBcz1nLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUmJihtb2R1bGUuZXhwb3J0cz1nKX0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWxlU2F2ZXIubWluLmpzLm1hcCIsIi8qIGVzbGludCBuby1wYXJhbS1yZWFzc2lnbjogMCAqL1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZVRvb2xraXRQcm9wcywgVG9vbGtpdENvbnRleHRUeXBlIH0gZnJvbSBcIi5cIjtcbmltcG9ydCBjcmVhdGVTZWFyY2hDb250ZXh0IGZyb20gXCIuL3NyYy9zZWFyY2gvY29udGV4dFwiO1xuaW1wb3J0IHN0YXRlbGVzc0RlY29yYXRvciBmcm9tIFwiLi9zdGF0ZWxlc3NPcFwiO1xuXG5jb25zdCBUb29sa2l0Q29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8VG9vbGtpdENvbnRleHRUeXBlPih7XG4gIHNlYXJjaFByb3BzOiB7XG4gICAgc2VhcmNoVGV4dDogXCJcIixcbiAgICBvblNlYXJjaDogKHZhbDogc3RyaW5nKSA9PiB7fSxcbiAgICBvbkNsZWFyOiAoKSA9PiB7fSxcbiAgfSxcbiAgY3N2UHJvcHM6IHtcbiAgICBvbkV4cG9ydDogKCkgPT4ge30sXG4gIH0sXG4gIGNvbHVtblRvZ2dsZVByb3BzOiB7XG4gICAgY29sdW1uczogW10sXG4gICAgdG9nZ2xlczogW10sXG4gICAgb25Db2x1bW5Ub2dnbGU6IChkYXRhRmllbGQ6IHN0cmluZykgPT4ge30sXG4gIH0sXG4gIGJhc2VQcm9wczoge1xuICAgIGtleUZpZWxkOiB1bmRlZmluZWQsXG4gICAgY29sdW1uczogW10sXG4gICAgZGF0YTogW10sXG4gICAgYm9vdHN0cmFwNDogdW5kZWZpbmVkLFxuICAgIGJvb3RzdHJhcDU6IHVuZGVmaW5lZCxcbiAgICBjb2x1bW5SZXNpemU6IHVuZGVmaW5lZCxcbiAgfSxcbn0pO1xuXG5jbGFzcyBUb29sa2l0UHJvdmlkZXIgZXh0ZW5kcyBzdGF0ZWxlc3NEZWNvcmF0b3IoUmVhY3QuQ29tcG9uZW50KSB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgc2VhcmNoOiBmYWxzZSxcbiAgICBleHBvcnRDU1Y6IGZhbHNlLFxuICAgIGJvb3RzdHJhcDQ6IGZhbHNlLFxuICAgIGJvb3RzdHJhcDU6IGZhbHNlLFxuICAgIGNvbHVtblJlc2l6ZTogZmFsc2VcbiAgfTtcblxuICBfOiBhbnk7XG4gIHN0YXRlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFRhYmxlVG9vbGtpdFByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIGNvbHVtblRvZ2dsZToge30sXG4gICAgICBzZWFyY2hUZXh0OlxuICAgICAgICB0eXBlb2YgcHJvcHMuc2VhcmNoID09PSBcIm9iamVjdFwiXG4gICAgICAgICAgPyBwcm9wcy5zZWFyY2guZGVmYXVsdFNlYXJjaCB8fCBcIlwiXG4gICAgICAgICAgOiBcIlwiLFxuICAgIH07XG4gICAgdGhpcy5fID0gbnVsbDtcbiAgICB0aGlzLm9uQ2xlYXIgPSB0aGlzLm9uQ2xlYXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uU2VhcmNoID0gdGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpO1xuICAgIHRoaXMub25Db2x1bW5Ub2dnbGUgPSB0aGlzLm9uQ29sdW1uVG9nZ2xlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXREZXBlbmRlbmN5TW9kdWxlcyA9IHRoaXMuc2V0RGVwZW5kZW5jeU1vZHVsZXMuYmluZCh0aGlzKTtcblxuICAgIGlmIChwcm9wcy5jb2x1bW5Ub2dnbGUpIHtcbiAgICAgIGluaXRpYWxTdGF0ZS5jb2x1bW5Ub2dnbGUgPSBwcm9wcy5jb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKG9iajogYW55LCBjb2x1bW46IGFueSkgPT4ge1xuICAgICAgICAgIG9ialtjb2x1bW4uZGF0YUZpZWxkXSA9ICFjb2x1bW4uaGlkZGVuO1xuICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApO1xuICAgIH1cbiAgICBpbml0aWFsU3RhdGUuc2VhcmNoVGV4dCA9XG4gICAgICB0eXBlb2YgcHJvcHMuc2VhcmNoID09PSBcIm9iamVjdFwiID8gcHJvcHMuc2VhcmNoLmRlZmF1bHRTZWFyY2ggfHwgXCJcIiA6IFwiXCI7XG4gICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0ZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHM6IFRhYmxlVG9vbGtpdFByb3BzLCBzdGF0ZTogYW55KSB7XG4gICAgY29uc3QgY3VyckNvbHVtblRvZ2dsZSA9IHN0YXRlLmNvbHVtblRvZ2dsZTtcbiAgICBsZXQgcHJvcHNDb2x1bW5Ub2dnbGU7XG4gICAgaWYgKHByb3BzLmNvbHVtblRvZ2dsZSkge1xuICAgICAgcHJvcHNDb2x1bW5Ub2dnbGUgPSBwcm9wcy5jb2x1bW5zLnJlZHVjZSgob2JqOiBhbnksIGNvbHVtbjogYW55KSA9PiB7XG4gICAgICAgIG9ialtjb2x1bW4uZGF0YUZpZWxkXSA9ICFjb2x1bW4uaGlkZGVuO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSwge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wc0NvbHVtblRvZ2dsZSA9IHt9O1xuICAgIH1cbiAgICBpZiAoY3VyckNvbHVtblRvZ2dsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJDb2x1bW5Ub2dnbGUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcHJvcHNDb2x1bW5Ub2dnbGUsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHNlYXJjaFRleHQ6IGFueSkge1xuICAgIGlmIChzZWFyY2hUZXh0ICE9PSB0aGlzLnN0YXRlLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hUZXh0IH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNlYXJjaFRleHQ6IFwiXCIgfSk7XG4gIH1cblxuICBvbkNvbHVtblRvZ2dsZShkYXRhRmllbGQ6IGFueSkge1xuICAgIGNvbnN0IHsgY29sdW1uVG9nZ2xlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbHVtblRvZ2dsZVtkYXRhRmllbGRdID0gIWNvbHVtblRvZ2dsZVtkYXRhRmllbGRdO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgIGNvbHVtblRvZ2dsZSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHsqfSBfXG4gICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBvbmUgdGltZSB3aGVuIHRhYmxlIHJlbmRlclxuICAgKiByZWFjdC1ib290c3RyYXAtdGFibGUtbmcvc3JjL2NvbnRleHQvaW5kZXguanMgd2lsbCBjYWxsIHRoaXMgY2IgZm9yIHBhc3NpbmcgdGhlIF8gbW9kdWxlXG4gICAqIFBsZWFzZSBjb25zaWRlciB0byBleHRyYWN0IGEgY29tbW9uIG1vZHVsZSB0byBoYW5kbGUgXyBtb2R1bGUuXG4gICAqIHRoaXMgaXMganVzdCBhIHF1aWNrIGZpeFxuICAgKi9cbiAgc2V0RGVwZW5kZW5jeU1vZHVsZXMoXzogYW55KSB7XG4gICAgdGhpcy5fID0gXztcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBiYXNlUHJvcHM6IFRhYmxlVG9vbGtpdFByb3BzID0ge1xuICAgICAga2V5RmllbGQ6IHRoaXMucHJvcHMua2V5RmllbGQsXG4gICAgICBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMsXG4gICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICBzZWFyY2g6IHRoaXMucHJvcHMuc2VhcmNoID8/IGZhbHNlLFxuICAgICAgZXhwb3J0Q1NWOiB0aGlzLnByb3BzLmV4cG9ydENTViA/PyBmYWxzZSxcbiAgICAgIGJvb3RzdHJhcDQ6IHRoaXMucHJvcHMuYm9vdHN0cmFwNCA/PyBmYWxzZSxcbiAgICAgIGJvb3RzdHJhcDU6IHRoaXMucHJvcHMuYm9vdHN0cmFwNSA/PyBmYWxzZSxcbiAgICAgIGNvbHVtblJlc2l6ZTogdGhpcy5wcm9wcy5jb2x1bW5SZXNpemUgPz8gZmFsc2UsXG4gICAgICBjaGlsZHJlbjogdGhpcy5wcm9wcy5jaGlsZHJlbixcbiAgICAgIHNldERlcGVuZGVuY3lNb2R1bGVzOiB0aGlzLnNldERlcGVuZGVuY3lNb2R1bGVzLFxuICAgICAgcmVnaXN0ZXJFeHBvc2VkQVBJOiB0aGlzLnJlZ2lzdGVyRXhwb3NlZEFQSSxcbiAgICB9O1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaCkge1xuICAgICAgYmFzZVByb3BzLnNlYXJjaCA9IHtcbiAgICAgICAgc2VhcmNoQ29udGV4dDogY3JlYXRlU2VhcmNoQ29udGV4dCh0aGlzLnByb3BzLnNlYXJjaCksXG4gICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmNvbHVtblRvZ2dsZSkge1xuICAgICAgYmFzZVByb3BzLmNvbHVtblRvZ2dsZSA9IHtcbiAgICAgICAgdG9nZ2xlczogdGhpcy5zdGF0ZS5jb2x1bW5Ub2dnbGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPFRvb2xraXRDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgc2VhcmNoUHJvcHM6IHtcbiAgICAgICAgICAgIHNlYXJjaFRleHQ6IHRoaXMuc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgIG9uU2VhcmNoOiB0aGlzLm9uU2VhcmNoLFxuICAgICAgICAgICAgb25DbGVhcjogdGhpcy5vbkNsZWFyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3N2UHJvcHM6IHtcbiAgICAgICAgICAgIG9uRXhwb3J0OiB0aGlzLmhhbmRsZUV4cG9ydENTVixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbHVtblRvZ2dsZVByb3BzOiB7XG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMsXG4gICAgICAgICAgICB0b2dnbGVzOiB0aGlzLnN0YXRlLmNvbHVtblRvZ2dsZSxcbiAgICAgICAgICAgIG9uQ29sdW1uVG9nZ2xlOiB0aGlzLm9uQ29sdW1uVG9nZ2xlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmFzZVByb3BzLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvVG9vbGtpdENvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFByb3ZpZGVyOiBUb29sa2l0UHJvdmlkZXIsXG4gIENvbnN1bWVyOiBUb29sa2l0Q29udGV4dC5Db25zdW1lcixcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb2x1bW5EZXNjcmlwdGlvbiwgU2VhcmNoUHJvcHMgfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nXCI7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCBUb29sa2l0UHJvdmlkZXIgZnJvbSBcIi4vcHJvdmlkZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgVG9vbGtpdFByb3ZpZGVyO1xuZXhwb3J0IGNvbnN0IFRvb2xraXRDb250ZXh0ID0gQ29udGV4dDtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDb2x1bW5Ub2dnbGUgfSBmcm9tIFwiLi9zcmMvY29sdW1uLXRvZ2dsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDU1ZFeHBvcnQgfSBmcm9tIFwiLi9zcmMvY3N2XCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFNlYXJjaCB9IGZyb20gXCIuL3NyYy9zZWFyY2hcIjtcblxuLyoqXG4gKiBkZWNsYXJhdGlvbiBmb3IgdGFibGUgdG9vbGtpdCBzdWIgbW9kdWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0ZWRTZWFyY2hQcm9wcyB7XG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgb25TZWFyY2g6ICh2YWw6IHN0cmluZykgPT4gdm9pZDtcbiAgb25DbGVhcjogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hNYXRjaFByb3BzPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IHtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBjb2x1bW46IENvbHVtbkRlc2NyaXB0aW9uPFQ+O1xuICByb3c6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTZWFyY2hQcm9wczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XG4gIHNlYXJjaEZvcm1hdHRlZD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHRTZWFyY2g/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvbkNvbHVtbk1hdGNoPzogKHByb3BzOiBTZWFyY2hNYXRjaFByb3BzPFQ+KSA9PiBib29sZWFuO1xuICBjdXN0b21NYXRjaEZ1bmM/OiAoKHByb3BzOiBTZWFyY2hNYXRjaFByb3BzPFQ+KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZDtcbiAgYWZ0ZXJTZWFyY2g/OiAobmV3UmVzdWx0OiBUW10pID0+IHZvaWQgfCB1bmRlZmluZWQ7XG4gIHNlYXJjaENvbnRleHQ/OiBGdW5jdGlvbjtcbiAgc2VhcmNoVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDU1ZQcm9wcyB7XG4gIGZpbGVOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzZXBhcmF0b3I/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlnbm9yZUhlYWRlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlnbm9yZUZvb3Rlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG5vQXV0b0JPTT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBkZWZhdWx0IGlzIHRleHQvcGxhaW47Y2hhcnNldD11dGYtOFxuICAgKi9cbiAgYmxvYlR5cGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGV4cG9ydEFsbD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIG9ubHlFeHBvcnRTZWxlY3Rpb24/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBvbmx5RXhwb3J0RmlsdGVyZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlVG9vbGtpdFByb3BzPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IHtcbiAgYm9vdHN0cmFwND86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGJvb3RzdHJhcDU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBzZWFyY2g/OiBUYWJsZVNlYXJjaFByb3BzPFQ+IHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAga2V5RmllbGQ6IGtleW9mIFQgfCBzdHJpbmc7XG4gIGRhdGE6IFRbXTtcbiAgcmVmPzogYW55O1xuICBjb2x1bW5zOiBBcnJheTxDb2x1bW5EZXNjcmlwdGlvbjxUPj47XG4gIGNoaWxkcmVuOiAocHJvcHM6IFRvb2xraXRDb250ZXh0VHlwZSkgPT4gUmVhY3QuUmVhY3RFbGVtZW50O1xuICBleHBvcnRDU1Y/OiBib29sZWFuIHwgQ1NWUHJvcHMgfCB1bmRlZmluZWQ7XG4gIGNvbHVtblRvZ2dsZT86IHsgW2RhdGFGaWVsZDogc3RyaW5nXTogYm9vbGVhbiB9IHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY29sdW1uUmVzaXplPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgc2V0RGVwZW5kZW5jeU1vZHVsZXM/OiBGdW5jdGlvbjtcbiAgcmVnaXN0ZXJFeHBvc2VkQVBJPzogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGtpdENvbnRleHRUeXBlIHtcbiAgc2VhcmNoUHJvcHM6IEluamVjdGVkU2VhcmNoUHJvcHM7XG4gIGNzdlByb3BzOiB7XG4gICAgb25FeHBvcnQ6IChzb3VyY2U/OiBhbnkpID0+IHZvaWQ7XG4gIH07XG4gIGNvbHVtblRvZ2dsZVByb3BzOiB7XG4gICAgY29sdW1uczogQ29sdW1uRGVzY3JpcHRpb25bXTtcbiAgICAvKipcbiAgICAgKiBhcnJheSBvZiB0b2dnbGVkIGNvbHVtbnNcbiAgICAgKi9cbiAgICB0b2dnbGVzOiBib29sZWFuW107XG4gICAgb25Db2x1bW5Ub2dnbGU6IChkYXRhRmllbGQ6IHN0cmluZykgPT4gdm9pZDtcbiAgfTtcbiAgYmFzZVByb3BzOiB7XG4gICAgLyoqXG4gICAgICogdGFibGUga2V5IGZpZWxkXG4gICAgICovXG4gICAga2V5RmllbGQ6IGFueTtcbiAgICBjb2x1bW5zOiBDb2x1bW5EZXNjcmlwdGlvbltdO1xuICAgIGRhdGE6IGFueVtdO1xuICAgIGJvb3RzdHJhcDQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIGJvb3RzdHJhcDU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIGNvbHVtblJlc2l6ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9nZ2xlTGlzdFByb3BzIHtcbiAgY29sdW1uczogQ29sdW1uRGVzY3JpcHRpb25bXTtcbiAgLyoqXG4gICAqIGFycmF5IG9mIHRvZ2dsZWQgY29sdW1uc1xuICAgKi9cbiAgdG9nZ2xlczogYm9vbGVhbltdO1xuICBvbkNvbHVtblRvZ2dsZTogKGRhdGFGaWVsZDogc3RyaW5nKSA9PiB2b2lkO1xuICBidG5DbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29udGV4dHVhbD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRDU1ZCdXR0b25Qcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIG9uRXhwb3J0OiAoKSA9PiB2b2lkO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hCYXJQcm9wczxUID0gYW55PiBleHRlbmRzIFNlYXJjaFByb3BzPFQ+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gIGRlbGF5PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBzZWFyY2hUZXh0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0YWJsZUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWY/OiBSZWFjdC5SZWZPYmplY3Q8UmVhY3QuQ29tcG9uZW50PFNlYXJjaFByb3BzPFQ+Pj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xlYXJTZWFyY2hCdXR0b25Qcm9wcyB7XG4gIG9uQ2xlYXI/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdGV4dD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVUb29sa2l0UHJvcHMgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IFRvb2xraXRDb250ZXh0IGZyb20gXCIuL2NvbnRleHRcIjtcblxuY29uc3QgVG9vbGtpdHByb3ZpZGVyID0gKFxuICBwcm9wczogVGFibGVUb29sa2l0UHJvcHNcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwgPT4gKFxuICA8VG9vbGtpdENvbnRleHQuUHJvdmlkZXIgey4uLnByb3BzfT5cbiAgICA8VG9vbGtpdENvbnRleHQuQ29uc3VtZXI+XG4gICAgICB7KHRvb2tLaXRQcm9wcykgPT4gcHJvcHMuY2hpbGRyZW4odG9va0tpdFByb3BzKX1cbiAgICA8L1Rvb2xraXRDb250ZXh0LkNvbnN1bWVyPlxuICA8L1Rvb2xraXRDb250ZXh0LlByb3ZpZGVyPlxuKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IFRvb2xraXRwcm92aWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFRvZ2dsZUxpc3QgZnJvbSAnLi90b2dnbGUtbGlzdCc7XG5cbmV4cG9ydCBkZWZhdWx0IHsgVG9nZ2xlTGlzdCB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29sdW1uRGVzY3JpcHRpb24gfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nXCI7XG5pbXBvcnQgeyBUb2dnbGVMaXN0UHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuY29uc3QgVG9nZ2xlTGlzdCA9ICh7XG4gIGNvbHVtbnMsXG4gIG9uQ29sdW1uVG9nZ2xlLFxuICB0b2dnbGVzLFxuICBidG5DbGFzc05hbWUgPSBcIlwiLFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICBjb250ZXh0dWFsID0gXCJwcmltYXJ5XCJcbn06IFRvZ2dsZUxpc3RQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPXtgYnRuLWdyb3VwIGJ0bi1ncm91cC10b2dnbGUgJHtjbGFzc05hbWV9YH1cbiAgICBkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIlxuICA+XG4gICAge2NvbHVtbnNcbiAgICAgIC5tYXAoKGNvbHVtbjogQ29sdW1uRGVzY3JpcHRpb24pID0+ICh7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgdG9nZ2xlOiB0b2dnbGVzW2NvbHVtbi5kYXRhRmllbGRdLFxuICAgICAgfSkpXG4gICAgICAubWFwKChjb2x1bW46IENvbHVtbkRlc2NyaXB0aW9uKSA9PiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBrZXk9e2NvbHVtbi5kYXRhRmllbGR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtidG5DbGFzc05hbWV9IGJ0biBidG4tJHtjb250ZXh0dWFsfSAke1xuICAgICAgICAgICAgY29sdW1uLnRvZ2dsZSA/IFwiYWN0aXZlXCIgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgZGF0YS10b2dnbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtcHJlc3NlZD17Y29sdW1uLnRvZ2dsZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwifVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ29sdW1uVG9nZ2xlKGNvbHVtbi5kYXRhRmllbGQpfVxuICAgICAgICA+XG4gICAgICAgICAge2NvbHVtbi50ZXh0fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICkpfVxuICA8L2Rpdj5cbik7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBUb2dnbGVMaXN0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBFeHBvcnRDU1ZCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi8uLlwiO1xuXG5jb25zdCBleHBvcnRDU1ZCdXR0b25EZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZTogXCJcIixcbiAgc3R5bGU6IHt9LFxufTtcblxuY29uc3QgRXhwb3J0Q1NWQnV0dG9uID0gKFxuICBwcm9wczogRXhwb3J0Q1NWQnV0dG9uUHJvcHNcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwgPT4ge1xuICBjb25zdCB7IG9uRXhwb3J0LCBjaGlsZHJlbiwgY2xhc3NOYW1lLCAuLi5yZXN0IH0gPSB7IC4uLmV4cG9ydENTVkJ1dHRvbkRlZmF1bHRQcm9wcywgLi4ucHJvcHMgfTtcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3NOYW1lPXtgcmVhY3QtYnMtdGFibGUtY3N2LWJ0biBidG4gYnRuLWRlZmF1bHQgYnRuLXNlY29uZGFyeSAke2NsYXNzTmFtZX1gfVxuICAgICAgb25DbGljaz17KCkgPT4gb25FeHBvcnQoKX1cbiAgICAgIHsuLi5yZXN0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5cblxuXG5leHBvcnQgZGVmYXVsdCBFeHBvcnRDU1ZCdXR0b247XG4iLCIvKiBlc2xpbnQgbm8tdW5uZWVkZWQtdGVybmFyeTogMCAqL1xuaW1wb3J0IEZpbGVTYXZlciBmcm9tIFwiZmlsZS1zYXZlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0TWV0YUluZm8gPSAoY29sdW1uczogYW55KSA9PlxuICBjb2x1bW5zXG4gICAgLm1hcCgoY29sdW1uOiBhbnkpID0+ICh7XG4gICAgICBmaWVsZDogY29sdW1uLmRhdGFGaWVsZCxcbiAgICAgIHR5cGU6IGNvbHVtbi5jc3ZUeXBlIHx8IFN0cmluZyxcbiAgICAgIGZvcm1hdHRlcjogY29sdW1uLmNzdkZvcm1hdHRlcixcbiAgICAgIGZvcm1hdEV4dHJhRGF0YTogY29sdW1uLmZvcm1hdEV4dHJhRGF0YSxcbiAgICAgIGhlYWRlcjogY29sdW1uLmNzdlRleHQgfHwgY29sdW1uLnRleHQsXG4gICAgICBleHBvcnQ6IGNvbHVtbi5jc3ZFeHBvcnQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxuICAgICAgcm93OiBOdW1iZXIoY29sdW1uLnJvdykgfHwgMCxcbiAgICAgIHJvd1NwYW46IE51bWJlcihjb2x1bW4ucm93U3BhbikgfHwgMSxcbiAgICAgIGNvbFNwYW46IE51bWJlcihjb2x1bW4uY29sU3BhbikgfHwgMSxcbiAgICAgIGZvb3RlcjogY29sdW1uLmZvb3RlcixcbiAgICAgIGZvb3RlckZvcm1hdHRlcjogY29sdW1uLmZvb3RlckZvcm1hdHRlcixcbiAgICB9KSlcbiAgICAuZmlsdGVyKChfOiBhbnkpID0+IF8uZXhwb3J0KTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybSA9IChcbiAgZGF0YTogYW55LFxuICBtZXRhOiBhbnksXG4gIGNvbHVtbnM6IGFueSxcbiAgXzogYW55LFxuICB7IHNlcGFyYXRvciwgaWdub3JlSGVhZGVyLCBpZ25vcmVGb290ZXIgfTogYW55XG4pID0+IHtcbiAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBtZXRhLmZpbHRlcigobTogYW55KSA9PiBtLmV4cG9ydCk7XG4gIGxldCBjb250ZW50ID0gXCJcIjtcbiAgLy8gZXh0cmFjdCBjc3YgaGVhZGVyXG4gIGlmICghaWdub3JlSGVhZGVyKSB7XG4gICAgY29udGVudCArPSB2aXNpYmxlQ29sdW1ucy5tYXAoKG06IGFueSkgPT4gYFwiJHttLmhlYWRlcn1cImApLmpvaW4oc2VwYXJhdG9yKTtcbiAgICBjb250ZW50ICs9IFwiXFxuXCI7XG4gIH1cbiAgLy8gZXh0cmFjdCBjc3YgYm9keVxuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBjb250ZW50O1xuICBjb250ZW50ICs9IGRhdGFcbiAgICAubWFwKChyb3c6IGFueSwgcm93SW5kZXg6IGFueSkgPT5cbiAgICAgIHZpc2libGVDb2x1bW5zXG4gICAgICAgIC5tYXAoKG06IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBjZWxsQ29udGVudCA9IF8uZ2V0KHJvdywgbS5maWVsZCk7XG4gICAgICAgICAgaWYgKG0uZm9ybWF0dGVyKSB7XG4gICAgICAgICAgICBjZWxsQ29udGVudCA9IG0uZm9ybWF0dGVyKFxuICAgICAgICAgICAgICBjZWxsQ29udGVudCxcbiAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgICAgbS5mb3JtYXRFeHRyYURhdGFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtLnR5cGUgPT09IFN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGBcIiR7YCR7Y2VsbENvbnRlbnR9YC5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNlbGxDb250ZW50O1xuICAgICAgICB9KVxuICAgICAgICAuam9pbihzZXBhcmF0b3IpXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGlmICghaWdub3JlRm9vdGVyKSB7XG4gICAgY29udGVudCArPSBcIlxcblwiO1xuICAgIGNvbnRlbnQgKz0gdmlzaWJsZUNvbHVtbnNcbiAgICAgIC5tYXAoKG06IGFueSwgaTogYW55KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgbS5mb290ZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbkRhdGEgPSBfLnBsdWNrKGRhdGEsIGNvbHVtbnNbaV0uZGF0YUZpZWxkKTtcbiAgICAgICAgICByZXR1cm4gYFwiJHttLmZvb3Rlcihjb2x1bW5EYXRhLCBjb2x1bW5zW2ldLCBpKX1cImA7XG4gICAgICAgIH0gZWxzZSBpZiAobS5mb290ZXJGb3JtYXR0ZXIpIHtcbiAgICAgICAgICByZXR1cm4gYFwiJHttLmZvb3RlckZvcm1hdHRlcihjb2x1bW5zW2ldLCBpKX1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBcIiR7bS5mb290ZXJ9XCJgO1xuICAgICAgfSlcbiAgICAgIC5qb2luKHNlcGFyYXRvcik7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2F2ZSA9IChjb250ZW50OiBhbnksIHsgbm9BdXRvQk9NLCBmaWxlTmFtZSwgYmxvYlR5cGUgfTogYW55KSA9PiB7XG4gIEZpbGVTYXZlci5zYXZlQXMoXG4gICAgbmV3IEJsb2IoW2NvbnRlbnRdLCB7IHR5cGU6IGJsb2JUeXBlIH0pLFxuICAgIGZpbGVOYW1lLFxuICAgIG5vQXV0b0JPTVxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IEV4cG9ydENTVkJ1dHRvbiBmcm9tICcuL2J1dHRvbic7XG5cbmV4cG9ydCBkZWZhdWx0IHsgRXhwb3J0Q1NWQnV0dG9uIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGdldE1ldGFJbmZvLCBzYXZlLCB0cmFuc2Zvcm0gfSBmcm9tIFwiLi4vY3N2L2V4cG9ydGVyXCI7XG5cbmNvbnN0IGNzdkRlZmF1bHRPcHRpb25zID0ge1xuICBmaWxlTmFtZTogXCJzcHJlYWRzaGVldC5jc3ZcIixcbiAgc2VwYXJhdG9yOiBcIixcIixcbiAgaWdub3JlSGVhZGVyOiBmYWxzZSxcbiAgaWdub3JlRm9vdGVyOiB0cnVlLFxuICBub0F1dG9CT006IHRydWUsXG4gIGJsb2JUeXBlOiBcInRleHQvcGxhaW47Y2hhcnNldD11dGYtOFwiLFxuICBleHBvcnRBbGw6IHRydWUsXG4gIG9ubHlFeHBvcnRTZWxlY3Rpb246IGZhbHNlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgKEJhc2U6IGFueSkgPT5cbiAgY2xhc3MgQ1NWT3BlcmF0aW9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PHR5cGVvZiBCYXNlPiB7XG4gICAgXzogYW55O1xuICAgIHRhYmxlRXhwb3NlZEFQSUVtaXR0ZXI6IGFueTtcblxuICAgIGhhbmRsZUV4cG9ydENTViA9IChzb3VyY2U6IGFueSkgPT4ge1xuICAgICAgY29uc3QgeyBjb2x1bW5zLCBleHBvcnRDU1YsIGtleUZpZWxkIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgbWV0YSA9IGdldE1ldGFJbmZvKGNvbHVtbnMpO1xuICAgICAgY29uc3Qgb3B0aW9ucyA9XG4gICAgICAgIGV4cG9ydENTViA9PT0gdHJ1ZVxuICAgICAgICAgID8gY3N2RGVmYXVsdE9wdGlvbnNcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgLi4uY3N2RGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICAgIC4uLmV4cG9ydENTVixcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIGdldCBkYXRhIGZvciBjc3YgZXhwb3J0XG4gICAgICBsZXQgZGF0YTogYW55O1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgZGF0YSA9IHNvdXJjZTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5leHBvcnRBbGwpIHtcbiAgICAgICAgZGF0YSA9IHRoaXMucHJvcHMuZGF0YTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5vbmx5RXhwb3J0RmlsdGVyZWQpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogeyByZXN1bHQ6IGFueSB9ID0geyByZXN1bHQ6IHVuZGVmaW5lZCB9O1xuICAgICAgICB0aGlzLnRhYmxlRXhwb3NlZEFQSUVtaXR0ZXIuZW1pdChcImdldC5maWx0ZXJlZC5yb3dzXCIsIHBheWxvYWQpO1xuICAgICAgICBkYXRhID0gcGF5bG9hZC5yZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0geyByZXN1bHQ6IHVuZGVmaW5lZCB9O1xuICAgICAgICB0aGlzLnRhYmxlRXhwb3NlZEFQSUVtaXR0ZXIuZW1pdChcImdldC50YWJsZS5kYXRhXCIsIHBheWxvYWQpO1xuICAgICAgICBkYXRhID0gcGF5bG9hZC5yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbHRlciBkYXRhIGJ5IHJvdyBzZWxlY3Rpb25cbiAgICAgIGlmIChvcHRpb25zLm9ubHlFeHBvcnRTZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcmVzdWx0OiB1bmRlZmluZWQgfTtcbiAgICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyLmVtaXQoXCJnZXQuc2VsZWN0ZWQucm93c1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IHBheWxvYWQucmVzdWx0ID8/IFtdO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcigocm93OiBhbnkpID0+IHNlbGVjdGlvbnMuaW5jbHVkZXMocm93W2tleUZpZWxkXSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50ID0gdHJhbnNmb3JtKGRhdGEsIG1ldGEsIGNvbHVtbnMsIHRoaXMuXywgb3B0aW9ucyk7XG4gICAgICBzYXZlKGNvbnRlbnQsIG9wdGlvbnMpO1xuICAgIH07XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBjc3ZPcGVyYXRpb24gZnJvbSAnLi9jc3YnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNzdk9wZXJhdGlvblxufTtcbiIsIi8qIGVzbGludCBjYW1lbGNhc2U6IDAgKi9cbi8qIGVzbGludCBuby1yZXR1cm4tYXNzaWduOiAwICovXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTZWFyY2hCYXJQcm9wcyB9IGZyb20gXCIuLi8uLlwiO1xuXG5jb25zdCBoYW5kbGVEZWJvdW5jZSA9IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPihcbiAgZnVuYzogVCxcbiAgd2FpdDogbnVtYmVyLFxuICBpbW1lZGlhdGU/OiBib29sZWFuXG4pID0+IHtcbiAgbGV0IHRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuICAgICAgdGltZW91dCA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKCFpbW1lZGlhdGUpIHtcbiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDtcblxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblxuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0IHx8IDApO1xuXG4gICAgaWYgKGNhbGxOb3cpIHtcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9O1xufTtcblxuaW50ZXJmYWNlIFNlYXJjaEJhclN0YXRlIHtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuY2xhc3MgU2VhcmNoQmFyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFNlYXJjaEJhclByb3BzLCBTZWFyY2hCYXJTdGF0ZT4ge1xuICBpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWFyY2hCYXJQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdmFsdWU6IHByb3BzLnNlYXJjaFRleHQgPz8gXCJcIixcbiAgICB9O1xuICB9XG5cbiAgb25DaGFuZ2VWYWx1ZSA9IChlOiBhbnkpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IGUudGFyZ2V0LnZhbHVlIH0pO1xuICB9O1xuXG4gIG9uS2V5dXAgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBkZWxheSA9IDI1MCwgb25TZWFyY2ggfSA9IHRoaXMucHJvcHMgYXMgYW55O1xuICAgIGNvbnN0IGRlYm91bmNlQ2FsbGJhY2sgPSBoYW5kbGVEZWJvdW5jZSgoKSA9PiB7XG4gICAgICBvblNlYXJjaCEodGhpcy5pbnB1dD8udmFsdWUgPz8gXCJcIik7XG4gICAgfSwgZGVsYXkpO1xuICAgIGRlYm91bmNlQ2FsbGJhY2soKTtcbiAgfTtcblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBTZWFyY2hCYXJQcm9wcykge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaFRleHQgIT09IHByZXZQcm9wcy5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHRoaXMucHJvcHMuc2VhcmNoVGV4dCB8fCBcIlwiIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgICAgc3R5bGUgPSB7fSxcbiAgICAgIHBsYWNlaG9sZGVyID0gXCJTZWFyY2hcIixcbiAgICAgIHRhYmxlSWQgPSBcIjBcIixcbiAgICAgIHNlYXJjaFRleHQgPSBcIlNlYXJjaCB0aGlzIHRhYmxlXCIsXG4gICAgfSA9IHRoaXMucHJvcHMgYXMgYW55O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxsYWJlbCBodG1sRm9yPXtgc2VhcmNoLWJhci0ke3RhYmxlSWR9YH0gY2xhc3NOYW1lPVwic2VhcmNoLWxhYmVsXCI+XG4gICAgICAgIDxzcGFuIGlkPXtgc2VhcmNoLWJhci0ke3RhYmxlSWR9LWxhYmVsYH0gY2xhc3NOYW1lPVwic3Itb25seSB2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICB7c2VhcmNoVGV4dH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9eyhuKSA9PiB7IHRoaXMuaW5wdXQgPSBuOyB9fVxuICAgICAgICAgIGlkPXtgc2VhcmNoLWJhci0ke3RhYmxlSWR9YH1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgc3R5bGU9e3N0eWxlIGFzIGFueX1cbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2BzZWFyY2gtYmFyLSR7dGFibGVJZH0tbGFiZWxgfVxuICAgICAgICAgIG9uS2V5VXA9eygpID0+IHRoaXMub25LZXl1cCgpfVxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlVmFsdWV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgZm9ybS1jb250cm9sICR7Y2xhc3NOYW1lfWB9XG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgPC9sYWJlbD5cbiAgICApO1xuICB9XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBzdHlsZToge30sXG4gICAgcGxhY2Vob2xkZXI6ICdTZWFyY2gnLFxuICAgIGRlbGF5OiAyNTAsXG4gICAgc2VhcmNoVGV4dDogJycsXG4gICAgdGFibGVJZDogJzAnLFxuICAgIHNyVGV4dDogJ1NlYXJjaCB0aGlzIHRhYmxlJ1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2hCYXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDbGVhclNlYXJjaEJ1dHRvblByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmNvbnN0IENsZWFyQnV0dG9uID0gKHtcbiAgb25DbGVhcixcbiAgdGV4dCA9IFwiQ2xlYXJcIixcbiAgY2xhc3NOYW1lID0gXCJcIixcbn06IENsZWFyU2VhcmNoQnV0dG9uUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IChcbiAgPGJ1dHRvbiBjbGFzc05hbWU9e2BidG4gYnRuLWRlZmF1bHQgYnRuLXNlY29uZGFyeSAke2NsYXNzTmFtZX1gfSBvbkNsaWNrPXtvbkNsZWFyfT5cbiAgICB7dGV4dH1cbiAgPC9idXR0b24+XG4pO1xuXG5cbmV4cG9ydCBkZWZhdWx0IENsZWFyQnV0dG9uO1xuIiwiLyogZXNsaW50IHJlYWN0L3Byb3AtdHlwZXM6IDAgKi9cbi8qIGVzbGludCByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHM6IDAgKi9cbi8qIGVzbGludCBuby1jb250aW51ZTogMCAqL1xuLyogZXNsaW50IG5vLWxvbmVseS1pZjogMCAqL1xuLyogZXNsaW50IGNsYXNzLW1ldGhvZHMtdXNlLXRoaXM6IDAgKi9cbi8qIGVzbGludCBjYW1lbGNhc2U6IDAgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNlYXJjaE1hdGNoUHJvcHMsIFRhYmxlU2VhcmNoUHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuaW50ZXJmYWNlIERhdGFDaGFuZ2VMaXN0ZW5lciB7XG4gIGVtaXQ6IChldmVudDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoUHJvdmlkZXJQcm9wcyBleHRlbmRzIFNlYXJjaE1hdGNoUHJvcHMge1xuICBkYXRhOiBhbnlbXTtcbiAgZGF0YUNoYW5nZUxpc3RlbmVyPzogRGF0YUNoYW5nZUxpc3RlbmVyO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoUHJvdmlkZXJTdGF0ZSB7XG4gIGRhdGE6IGFueVtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCAoXG4gICAgb3B0aW9uczogVGFibGVTZWFyY2hQcm9wcyA9IHtcbiAgICAgIHNlYXJjaEZvcm1hdHRlZDogZmFsc2UsXG4gICAgICBhZnRlclNlYXJjaDogdW5kZWZpbmVkLFxuICAgICAgb25Db2x1bW5NYXRjaDogKCkgPT4gZmFsc2UsXG4gICAgfVxuICApID0+XG4gIChcbiAgICBfOiBhbnksXG4gICAgaXNSZW1vdGVTZWFyY2g6ICgpID0+IGJvb2xlYW4sXG4gICAgaGFuZGxlUmVtb3RlU2VhcmNoQ2hhbmdlOiAoc2VhcmNoVGV4dDogc3RyaW5nKSA9PiB2b2lkXG4gICkgPT4ge1xuICAgIGNvbnN0IFNlYXJjaENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PGFueT4obnVsbCk7XG5cbiAgICBjbGFzcyBTZWFyY2hQcm92aWRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgICAgIFNlYXJjaFByb3ZpZGVyUHJvcHMsXG4gICAgICBTZWFyY2hQcm92aWRlclN0YXRlXG4gICAgPiB7XG4gICAgICBjb25zdHJ1Y3Rvcihwcm9wczogU2VhcmNoUHJvdmlkZXJQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIGxldCBpbml0aWFsRGF0YSA9IHByb3BzLmRhdGE7XG4gICAgICAgIGlmIChpc1JlbW90ZVNlYXJjaCgpICYmIHRoaXMucHJvcHMuc2VhcmNoVGV4dCAhPT0gXCJcIikge1xuICAgICAgICAgIGhhbmRsZVJlbW90ZVNlYXJjaENoYW5nZSh0aGlzLnByb3BzLnNlYXJjaFRleHQhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbml0aWFsRGF0YSA9IHRoaXMuc2VhcmNoKHByb3BzKTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJMaXN0ZW5lcihpbml0aWFsRGF0YSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHsgZGF0YTogaW5pdGlhbERhdGEgfTtcbiAgICAgIH1cblxuICAgICAgZ2V0U2VhcmNoZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmRhdGE7XG4gICAgICB9XG5cbiAgICAgIHRyaWdnZXJMaXN0ZW5lcihyZXN1bHQ6IGFueSwgc2tpcEluaXQ/OiBhbnkpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXJTZWFyY2ggJiYgIXNraXBJbml0KSB7XG4gICAgICAgICAgb3B0aW9ucy5hZnRlclNlYXJjaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRhdGFDaGFuZ2VMaXN0ZW5lcikge1xuICAgICAgICAgIHRoaXMucHJvcHMuZGF0YUNoYW5nZUxpc3RlbmVyLmVtaXQoXCJmaWx0ZXJDaGFuZ2VkXCIsIHJlc3VsdC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IFNlYXJjaFByb3ZpZGVyUHJvcHMpIHtcbiAgICAgICAgaWYgKHByZXZQcm9wcy5zZWFyY2hUZXh0ICE9PSB0aGlzLnByb3BzLnNlYXJjaFRleHQpIHtcbiAgICAgICAgICBpZiAoaXNSZW1vdGVTZWFyY2goKSkge1xuICAgICAgICAgICAgaGFuZGxlUmVtb3RlU2VhcmNoQ2hhbmdlKHRoaXMucHJvcHMuc2VhcmNoVGV4dCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdGVuZXIocmVzdWx0KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzUmVtb3RlU2VhcmNoKCkpIHtcbiAgICAgICAgICAgIGlmICghXy5pc0VxdWFsKHRoaXMuc3RhdGUuZGF0YSwgdGhpcy5wcm9wcy5kYXRhKSkge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YTogdGhpcy5wcm9wcy5kYXRhIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIV8uaXNFcXVhbChwcmV2UHJvcHMuZGF0YSwgdGhpcy5wcm9wcy5kYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2godGhpcy5wcm9wcyk7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJMaXN0ZW5lcihyZXN1bHQpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZWFyY2gocHJvcHM6IGFueSkge1xuICAgICAgICBjb25zdCB7IGRhdGEsIGNvbHVtbnMgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gcHJvcHMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gZGF0YS5maWx0ZXIoKHJvdzogYW55LCByaWR4OiBhbnkpID0+IHtcbiAgICAgICAgICBmb3IgKGxldCBjaWR4ID0gMDsgY2lkeCA8IGNvbHVtbnMubGVuZ3RoOyBjaWR4ICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbY2lkeF07XG4gICAgICAgICAgICBpZiAoY29sdW1uLnNlYXJjaGFibGUgPT09IGZhbHNlKSBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCB0YXJnZXRWYWx1ZSA9IF8uZ2V0KHJvdywgY29sdW1uLmRhdGFGaWVsZCk7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmZvcm1hdHRlciAmJiBvcHRpb25zLnNlYXJjaEZvcm1hdHRlZCkge1xuICAgICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IGNvbHVtbi5mb3JtYXR0ZXIoXG4gICAgICAgICAgICAgICAgdGFyZ2V0VmFsdWUsXG4gICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgIHJpZHgsXG4gICAgICAgICAgICAgICAgY29sdW1uLmZvcm1hdEV4dHJhRGF0YVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uZmlsdGVyVmFsdWUpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0VmFsdWUgPSBjb2x1bW4uZmlsdGVyVmFsdWUodGFyZ2V0VmFsdWUsIHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5vbkNvbHVtbk1hdGNoKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ29sdW1uTWF0Y2goe1xuICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB0YXJnZXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHRhcmdldFZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB0YXJnZXRWYWx1ZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHRhcmdldFZhbHVlID0gdGFyZ2V0VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRWYWx1ZS5pbmRleE9mKHNlYXJjaFRleHQpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNlYXJjaENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgZGF0YTogdGhpcy5zdGF0ZS5kYXRhIH19PlxuICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgPC9TZWFyY2hDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBQcm92aWRlcjogU2VhcmNoUHJvdmlkZXIsXG4gICAgICBDb25zdW1lcjogU2VhcmNoQ29udGV4dC5Db25zdW1lcixcbiAgICB9O1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgU2VhcmNoQmFyIGZyb20gJy4vU2VhcmNoQmFyJztcbmltcG9ydCBDbGVhclNlYXJjaEJ1dHRvbiBmcm9tICcuL2NsZWFyLWJ1dHRvbic7XG5cbmV4cG9ydCBkZWZhdWx0IHsgU2VhcmNoQmFyLCBDbGVhclNlYXJjaEJ1dHRvbiB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgT3BlcmF0aW9uIGZyb20gXCIuL3NyYy9vcFwiO1xuXG5leHBvcnQgZGVmYXVsdCAoQmFzZTogYW55KSA9PlxuICBjbGFzcyBTdGF0ZWxlc3NPcGVyYXRpb24gZXh0ZW5kcyBPcGVyYXRpb24uY3N2T3BlcmF0aW9uKEJhc2UpIHtcbiAgICByZWdpc3RlckV4cG9zZWRBUEkgPSAodGFibGVFeHBvc2VkQVBJRW1pdHRlcjogYW55KSA9PiB7XG4gICAgICB0aGlzLnRhYmxlRXhwb3NlZEFQSUVtaXR0ZXIgPSB0YWJsZUV4cG9zZWRBUElFbWl0dGVyO1xuICAgIH07XG4gIH07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzQ0Ml9fOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2ODgpO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsInJlcXVpcmUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNDQyX18iLCJiIiwiYSIsImF1dG9Cb20iLCJjb25zb2xlIiwid2FybiIsInRlc3QiLCJ0eXBlIiwiQmxvYiIsImMiLCJkIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwicmVzcG9uc2VUeXBlIiwib25sb2FkIiwiZyIsInJlc3BvbnNlIiwib25lcnJvciIsImVycm9yIiwic2VuZCIsInN0YXR1cyIsImUiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsImRvY3VtZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0TW91c2VFdmVudCIsIndpbmRvdyIsImYiLCJnbG9iYWwiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJzYXZlQXMiLCJIVE1MQW5jaG9yRWxlbWVudCIsInByb3RvdHlwZSIsImgiLCJpIiwiVVJMIiwid2Via2l0VVJMIiwiaiIsImNyZWF0ZUVsZW1lbnQiLCJuYW1lIiwiZG93bmxvYWQiLCJyZWwiLCJocmVmIiwib3JpZ2luIiwibG9jYXRpb24iLCJ0YXJnZXQiLCJjcmVhdGVPYmplY3RVUkwiLCJzZXRUaW1lb3V0IiwicmV2b2tlT2JqZWN0VVJMIiwibXNTYXZlT3JPcGVuQmxvYiIsInRpdGxlIiwiYm9keSIsImlubmVyVGV4dCIsIkhUTUxFbGVtZW50Iiwic2FmYXJpIiwiRmlsZVJlYWRlciIsImsiLCJvbmxvYWRlbmQiLCJyZXN1bHQiLCJyZXBsYWNlIiwicmVhZEFzRGF0YVVSTCIsImwiLCJtIiwiVG9vbGtpdENvbnRleHQiLCJjcmVhdGVDb250ZXh0Iiwic2VhcmNoUHJvcHMiLCJzZWFyY2hUZXh0Iiwib25TZWFyY2giLCJ2YWwiLCJvbkNsZWFyIiwiY3N2UHJvcHMiLCJvbkV4cG9ydCIsImNvbHVtblRvZ2dsZVByb3BzIiwiY29sdW1ucyIsInRvZ2dsZXMiLCJvbkNvbHVtblRvZ2dsZSIsImRhdGFGaWVsZCIsImJhc2VQcm9wcyIsImtleUZpZWxkIiwidW5kZWZpbmVkIiwiZGF0YSIsImJvb3RzdHJhcDQiLCJib290c3RyYXA1IiwiY29sdW1uUmVzaXplIiwiVG9vbGtpdFByb3ZpZGVyIiwiQ29tcG9uZW50Iiwic3RhdGljIiwic2VhcmNoIiwiZXhwb3J0Q1NWIiwiXyIsInN0YXRlIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN1cGVyIiwiaW5pdGlhbFN0YXRlIiwiY29sdW1uVG9nZ2xlIiwiZGVmYXVsdFNlYXJjaCIsInRoaXMiLCJiaW5kIiwic2V0RGVwZW5kZW5jeU1vZHVsZXMiLCJyZWR1Y2UiLCJvYmoiLCJjb2x1bW4iLCJoaWRkZW4iLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJjdXJyQ29sdW1uVG9nZ2xlIiwicHJvcHNDb2x1bW5Ub2dnbGUiLCJzZXRTdGF0ZSIsInJlbmRlciIsImNoaWxkcmVuIiwicmVnaXN0ZXJFeHBvc2VkQVBJIiwic2VhcmNoQ29udGV4dCIsIlByb3ZpZGVyIiwidmFsdWUiLCJoYW5kbGVFeHBvcnRDU1YiLCJDb25zdW1lciIsImRlZmF1bHQiLCJ0b29rS2l0UHJvcHMiLCJUb2dnbGVMaXN0IiwiYnRuQ2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiY29udGV4dHVhbCIsIm1hcCIsInRvZ2dsZSIsImtleSIsIm9uQ2xpY2siLCJ0ZXh0IiwiZXhwb3J0Q1NWQnV0dG9uRGVmYXVsdFByb3BzIiwic3R5bGUiLCJyZXN0IiwiZ2V0TWV0YUluZm8iLCJmaWVsZCIsImNzdlR5cGUiLCJTdHJpbmciLCJmb3JtYXR0ZXIiLCJjc3ZGb3JtYXR0ZXIiLCJmb3JtYXRFeHRyYURhdGEiLCJoZWFkZXIiLCJjc3ZUZXh0IiwiZXhwb3J0IiwiY3N2RXhwb3J0Iiwicm93IiwiTnVtYmVyIiwicm93U3BhbiIsImNvbFNwYW4iLCJmb290ZXIiLCJmb290ZXJGb3JtYXR0ZXIiLCJmaWx0ZXIiLCJ0cmFuc2Zvcm0iLCJtZXRhIiwic2VwYXJhdG9yIiwiaWdub3JlSGVhZGVyIiwiaWdub3JlRm9vdGVyIiwidmlzaWJsZUNvbHVtbnMiLCJjb250ZW50Iiwiam9pbiIsImxlbmd0aCIsInJvd0luZGV4IiwiY2VsbENvbnRlbnQiLCJnZXQiLCJjb2x1bW5EYXRhIiwicGx1Y2siLCJzYXZlIiwibm9BdXRvQk9NIiwiZmlsZU5hbWUiLCJibG9iVHlwZSIsIkV4cG9ydENTVkJ1dHRvbiIsImNzdkRlZmF1bHRPcHRpb25zIiwiZXhwb3J0QWxsIiwib25seUV4cG9ydFNlbGVjdGlvbiIsIkJhc2UiLCJ0YWJsZUV4cG9zZWRBUElFbWl0dGVyIiwic291cmNlIiwib3B0aW9ucyIsIm9ubHlFeHBvcnRGaWx0ZXJlZCIsInBheWxvYWQiLCJlbWl0Iiwic2VsZWN0aW9ucyIsImluY2x1ZGVzIiwiY3N2T3BlcmF0aW9uIiwiaGFuZGxlRGVib3VuY2UiLCJmdW5jIiwid2FpdCIsImltbWVkaWF0ZSIsInRpbWVvdXQiLCJhcmdzIiwiY2FsbE5vdyIsImNsZWFyVGltZW91dCIsImFwcGx5IiwiU2VhcmNoQmFyIiwiaW5wdXQiLCJvbkNoYW5nZVZhbHVlIiwib25LZXl1cCIsImRlbGF5IiwiZGVib3VuY2VDYWxsYmFjayIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInBsYWNlaG9sZGVyIiwidGFibGVJZCIsImh0bWxGb3IiLCJpZCIsInJlZiIsIm4iLCJvbktleVVwIiwib25DaGFuZ2UiLCJzclRleHQiLCJzZWFyY2hGb3JtYXR0ZWQiLCJhZnRlclNlYXJjaCIsIm9uQ29sdW1uTWF0Y2giLCJpc1JlbW90ZVNlYXJjaCIsImhhbmRsZVJlbW90ZVNlYXJjaENoYW5nZSIsIlNlYXJjaENvbnRleHQiLCJTZWFyY2hQcm92aWRlciIsImluaXRpYWxEYXRhIiwidHJpZ2dlckxpc3RlbmVyIiwiZ2V0U2VhcmNoZWQiLCJza2lwSW5pdCIsImRhdGFDaGFuZ2VMaXN0ZW5lciIsImlzRXF1YWwiLCJ0b0xvd2VyQ2FzZSIsInJpZHgiLCJjaWR4Iiwic2VhcmNoYWJsZSIsInRhcmdldFZhbHVlIiwiZmlsdGVyVmFsdWUiLCJ0b1N0cmluZyIsImluZGV4T2YiLCJDbGVhclNlYXJjaEJ1dHRvbiIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactBootstrapTableNgToolkit=t(require("react")):e.ReactBootstrapTableNgToolkit=t(e.React)}(self,e=>(()=>{var t={213(e,t,o){var r,a,s;a=[],void 0===(s="function"==typeof(r=function(){"use strict";function t(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function r(e,t,o){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){i(r.response,t,o)},r.onerror=function(){console.error("could not download file")},r.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var n="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof o.g&&o.g.global===o.g?o.g:void 0,l=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=n.saveAs||("object"!=typeof window||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(e,t,o){var l=n.URL||n.webkitURL,i=document.createElement("a");t=t||e.name||"download",i.download=t,i.rel="noopener","string"==typeof e?(i.href=e,i.origin===location.origin?s(i):a(i.href)?r(e,t,o):s(i,i.target="_blank")):(i.href=l.createObjectURL(e),setTimeout(function(){l.revokeObjectURL(i.href)},4e4),setTimeout(function(){s(i)},0))}:"msSaveOrOpenBlob"in navigator?function(e,o,n){if(o=o||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,n),o);else if(a(e))r(e,o,n);else{var l=document.createElement("a");l.href=e,l.target="_blank",setTimeout(function(){s(l)})}}:function(e,t,o,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,o);var s="application/octet-stream"===e.type,i=/constructor/i.test(n.HTMLElement)||n.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&i||l)&&"undefined"!=typeof FileReader){var c=new FileReader;c.onloadend=function(){var e=c.result;e=u?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},c.readAsDataURL(e)}else{var d=n.URL||n.webkitURL,p=d.createObjectURL(e);a?a.location=p:location.href=p,a=null,setTimeout(function(){d.revokeObjectURL(p)},4e4)}});n.saveAs=i.saveAs=i,e.exports=i})?r.apply(t,a):r)||(e.exports=s)},633(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(499)),n=r(o(880)),l=a.default.createContext({searchProps:{searchText:"",onSearch:e=>{},onClear:()=>{}},csvProps:{onExport:()=>{}},columnToggleProps:{columns:[],toggles:[],onColumnToggle:e=>{}},baseProps:{keyField:void 0,columns:[],data:[],bootstrap4:void 0,bootstrap5:void 0}});class i extends((0,n.default)(a.default.Component)){static defaultProps={search:!1,exportCSV:!1,bootstrap4:!1,bootstrap5:!1};_;state;constructor(e){super(e);const t={columnToggle:{},searchText:"object"==typeof e.search&&e.search.defaultSearch||""};this._=null,this.onClear=this.onClear.bind(this),this.onSearch=this.onSearch.bind(this),this.onColumnToggle=this.onColumnToggle.bind(this),this.setDependencyModules=this.setDependencyModules.bind(this),e.columnToggle&&(t.columnToggle=e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{})),t.searchText="object"==typeof e.search&&e.search.defaultSearch||"",this.state=t}static getDerivedStateFromProps(e,t){const o=t.columnToggle;let r;return r=e.columnToggle?e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{}):{},o?{...t,currColumnToggle:o}:{...t,propsColumnToggle:r}}onSearch(e){e!==this.state.searchText&&this.setState({searchText:e})}onClear(){this.setState({searchText:""})}onColumnToggle(e){const{columnToggle:t}=this.state;t[e]=!t[e],this.setState({...this.state,columnToggle:t})}setDependencyModules(e){this._=e}render(){const e={keyField:this.props.keyField,columns:this.props.columns,data:this.props.data,search:this.props.search??!1,exportCSV:this.props.exportCSV??!1,bootstrap4:this.props.bootstrap4??!1,bootstrap5:this.props.bootstrap5??!1,children:this.props.children,setDependencyModules:this.setDependencyModules,registerExposedAPI:this.registerExposedAPI};return this.props.search&&(e.search={searchContext:(0,s.default)(this.props.search),searchText:this.state.searchText}),this.props.columnToggle&&(e.columnToggle={toggles:this.state.columnToggle}),a.default.createElement(l.Provider,{value:{searchProps:{searchText:this.state.searchText,onSearch:this.onSearch,onClear:this.onClear},csvProps:{onExport:this.handleExportCSV},columnToggleProps:{columns:this.props.columns,toggles:this.state.columnToggle,onColumnToggle:this.onColumnToggle},baseProps:e}},this.props.children)}}t.default={Provider:i,Consumer:l.Consumer}},688(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Search=t.CSVExport=t.ColumnToggle=t.ToolkitContext=void 0;const a=r(o(633)),s=r(o(921));t.default=s.default,t.ToolkitContext=a.default;var n=o(555);Object.defineProperty(t,"ColumnToggle",{enumerable:!0,get:function(){return r(n).default}});var l=o(282);Object.defineProperty(t,"CSVExport",{enumerable:!0,get:function(){return r(l).default}});var i=o(470);Object.defineProperty(t,"Search",{enumerable:!0,get:function(){return r(i).default}})},921(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(633));t.default=e=>a.default.createElement(s.default.Provider,{...e},a.default.createElement(s.default.Consumer,null,t=>e.children(t)))},555(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(140));t.default={ToggleList:a.default}},140(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({columns:e,onColumnToggle:t,toggles:o,btnClassName:r="",className:s="",contextual:n="primary"})=>a.default.createElement("div",{className:`btn-group btn-group-toggle ${s}`,"data-toggle":"buttons"},e.map(e=>({...e,toggle:o[e.dataField]})).map(e=>a.default.createElement("button",{type:"button",key:e.dataField,className:`${r} btn btn-${n} ${e.toggle?"active":""}`,"data-toggle":"button","aria-pressed":e.toggle?"true":"false",onClick:()=>t(e.dataField)},e.text)))},40(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s={className:"",style:{}};t.default=e=>{const{onExport:t,children:o,className:r,...n}={...s,...e};return a.default.createElement("button",{type:"button",className:`react-bs-table-csv-btn btn btn-default btn-secondary ${r}`,onClick:()=>t(),...n},o)}},457(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.save=t.transform=t.getMetaInfo=void 0;const a=r(o(213));t.getMetaInfo=e=>e.map(e=>({field:e.dataField,type:e.csvType||String,formatter:e.csvFormatter,formatExtraData:e.formatExtraData,header:e.csvText||e.text,export:!1!==e.csvExport,row:Number(e.row)||0,rowSpan:Number(e.rowSpan)||1,colSpan:Number(e.colSpan)||1,footer:e.footer,footerFormatter:e.footerFormatter})).filter(e=>e.export);t.transform=(e,t,o,r,{separator:a,ignoreHeader:s,ignoreFooter:n})=>{const l=t.filter(e=>e.export);let i="";return s||(i+=l.map(e=>`"${e.header}"`).join(a),i+="\n"),0===e.length||(i+=e.map((e,t)=>l.map(o=>{let a=r.get(e,o.field);return o.formatter&&(a=o.formatter(a,e,t,o.formatExtraData)),o.type===String?`"${`${a}`.replace(/"/g,'""')}"`:a}).join(a)).join("\n"),n||(i+="\n",i+=l.map((t,a)=>{if("function"==typeof t.footer){const s=r.pluck(e,o[a].dataField);return`"${t.footer(s,o[a],a)}"`}return t.footerFormatter?`"${t.footerFormatter(o[a],a)}"`:`"${t.footer}"`}).join(a))),i};t.save=(e,{noAutoBOM:t,fileName:o,blobType:r})=>{a.default.saveAs(new Blob([e],{type:r}),o,t)}},282(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(40));t.default={ExportCSVButton:a.default}},881(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=o(457),n={fileName:"spreadsheet.csv",separator:",",ignoreHeader:!1,ignoreFooter:!0,noAutoBOM:!0,blobType:"text/plain;charset=utf-8",exportAll:!0,onlyExportSelection:!1};t.default=e=>class extends a.default.Component{_;tableExposedAPIEmitter;handleExportCSV=e=>{const{columns:t,exportCSV:o,keyField:r}=this.props,a=(0,s.getMetaInfo)(t),l=!0===o?n:{...n,...o};let i;if(void 0!==e)i=e;else if(l.exportAll)i=this.props.data;else if(l.onlyExportFiltered){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.filtered.rows",e),i=e.result}else{const e={result:void 0};this.tableExposedAPIEmitter.emit("get.table.data",e),i=e.result}if(l.onlyExportSelection){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.selected.rows",e);const t=e.result??[];i=i.filter(e=>t.includes(e[r]))}const u=(0,s.transform)(i,a,t,this._,l);(0,s.save)(u,l)}}},469(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(881));t.default={csvOperation:a.default}},801(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=(e,t,o)=>{let r;return(...a)=>{const s=o&&!r;clearTimeout(r),r=setTimeout(()=>{r=void 0,o||e.apply(this,a)},t||0),s&&e.apply(this,a)}};class n extends a.default.Component{input=null;constructor(e){super(e),this.state={value:e.searchText??""}}onChangeValue=e=>{this.setState({value:e.target.value})};onKeyup=()=>{const{delay:e=250,onSearch:t}=this.props;s(()=>{t(this.input?.value??"")},e)()};componentDidUpdate(e){this.props.searchText!==e.searchText&&this.setState({value:this.props.searchText||""})}render(){const{className:e="",style:t={},placeholder:o="Search",tableId:r="0",searchText:s="Search this table"}=this.props;return a.default.createElement("label",{htmlFor:`search-bar-${r}`,className:"search-label"},a.default.createElement("span",{id:`search-bar-${r}-label`,className:"sr-only visually-hidden"},s),a.default.createElement("input",{ref:e=>{this.input=e},id:`search-bar-${r}`,type:"text",style:t,"aria-labelledby":`search-bar-${r}-label`,onKeyUp:()=>this.onKeyup(),onChange:this.onChangeValue,className:`form-control ${e}`,value:this.state.value,placeholder:o}))}static defaultProps={className:"",style:{},placeholder:"Search",delay:250,searchText:"",tableId:"0",srText:"Search this table"}}t.default=n},68(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({onClear:e,text:t="Clear",className:o=""})=>a.default.createElement("button",{className:`btn btn-default btn-secondary ${o}`,onClick:e},t)},499(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=(e={searchFormatted:!1,afterSearch:void 0,onColumnMatch:()=>!1})=>(t,o,r)=>{const s=a.default.createContext(null);class n extends a.default.Component{constructor(e){super(e);let t=e.data;o()&&""!==this.props.searchText?r(this.props.searchText):(t=this.search(e),this.triggerListener(t,!0)),this.state={data:t}}getSearched(){return this.state.data}triggerListener(t,o){e.afterSearch&&!o&&e.afterSearch(t),this.props.dataChangeListener&&this.props.dataChangeListener.emit("filterChanged",t.length)}componentDidUpdate(e){if(e.searchText!==this.props.searchText)if(o())r(this.props.searchText);else{const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}else if(o())t.isEqual(this.state.data,this.props.data)||this.setState({data:this.props.data});else if(!t.isEqual(e.data,this.props.data)){const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}}search(o){const{data:r,columns:a}=o,s=o.searchText.toLowerCase();return r.filter((o,r)=>{for(let n=0;n<a.length;n+=1){const l=a[n];if(!1===l.searchable)continue;let i=t.get(o,l.dataField);if(l.formatter&&e.searchFormatted?i=l.formatter(i,o,r,l.formatExtraData):l.filterValue&&(i=l.filterValue(i,o)),e.onColumnMatch){if(e.onColumnMatch({searchText:s,value:i,column:l,row:o}))return!0}else if(null!=i&&(i=i.toString().toLowerCase(),i.indexOf(s)>-1))return!0}return!1})}render(){return a.default.createElement(s.Provider,{value:{data:this.state.data}},this.props.children)}}return{Provider:n,Consumer:s.Consumer}}},470(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(801)),s=r(o(68));t.default={SearchBar:a.default,ClearSearchButton:s.default}},880(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(469));t.default=e=>class extends(a.default.csvOperation(e)){registerExposedAPI=e=>{this.tableExposedAPIEmitter=e}}},442(t){"use strict";t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var s=o[e]={exports:{}};return t[e].call(s.exports,s,s.exports,r),s.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(688)})());
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvZGlzdC9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC5taW4uanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELEVBQVFHLFFBQVEsVUFDUixtQkFBWEMsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLENBQUMsU0FBVUosR0FDUSxpQkFBWkMsUUFDZEEsUUFBc0MsNkJBQUlELEVBQVFHLFFBQVEsVUFFMURKLEVBQW1DLDZCQUFJQyxFQUFRRCxFQUFZLE1BQzVELENBVEQsQ0FTR08sS0FBT0MsRyx3QkNUVixVQUF3RCxFQUFPLFFBQUksMEJBQUYsRUFBOEYsV0FBVyxhQUFhLFNBQVNDLEVBQUVDLEVBQUVELEdBQUcsWUFBTSxJQUFvQkEsRUFBRUEsRUFBRSxDQUFDRSxTQUFRLEdBQUksaUJBQWlCRixJQUFJRyxRQUFRQyxLQUFLLHNEQUFzREosRUFBRSxDQUFDRSxTQUFTRixJQUFJQSxFQUFFRSxTQUFTLDZFQUE2RUcsS0FBS0osRUFBRUssTUFBTSxJQUFJQyxLQUFLLENBQUMsU0FBU04sR0FBRyxDQUFDSyxLQUFLTCxFQUFFSyxPQUFPTCxDQUFDLENBQUMsU0FBU08sRUFBRVAsRUFBRUQsRUFBRVEsR0FBRyxJQUFJQyxFQUFFLElBQUlDLGVBQWVELEVBQUVFLEtBQUssTUFBTVYsR0FBR1EsRUFBRUcsYUFBYSxPQUFPSCxFQUFFSSxPQUFPLFdBQVdDLEVBQUVMLEVBQUVNLFNBQVNmLEVBQUVRLEVBQUUsRUFBRUMsRUFBRU8sUUFBUSxXQUFXYixRQUFRYyxNQUFNLDBCQUEwQixFQUFFUixFQUFFUyxNQUFNLENBQUMsU0FBU1QsRUFBRVIsR0FBRyxJQUFJRCxFQUFFLElBQUlVLGVBQWVWLEVBQUVXLEtBQUssT0FBT1YsR0FBRSxHQUFJLElBQUlELEVBQUVrQixNQUFNLENBQUMsTUFBTWpCLEdBQUcsQ0FBQyxPQUFPLEtBQUtELEVBQUVtQixRQUFRLEtBQUtuQixFQUFFbUIsTUFBTSxDQUFDLFNBQVNDLEVBQUVuQixHQUFHLElBQUlBLEVBQUVvQixjQUFjLElBQUlDLFdBQVcsU0FBUyxDQUFDLE1BQU1kLEdBQUcsSUFBSVIsRUFBRXVCLFNBQVNDLFlBQVksZUFBZXhCLEVBQUV5QixlQUFlLFNBQVEsR0FBRyxFQUFHQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRyxHQUFHLEdBQUcsR0FBRyxFQUFHLEVBQUUsTUFBTXpCLEVBQUVvQixjQUFjckIsRUFBRSxDQUFDLENBQUMsSUFBSTJCLEVBQUUsaUJBQWlCRCxRQUFRQSxPQUFPQSxTQUFTQSxPQUFPQSxPQUFPLGlCQUFpQjVCLE1BQU1BLEtBQUtBLE9BQU9BLEtBQUtBLEtBQUssaUJBQWlCLEVBQUFnQixHQUFRLEVBQUFBLEVBQU9jLFNBQVMsRUFBQWQsRUFBTyxFQUFBQSxPQUFZLEVBQUViLEVBQUUwQixFQUFFRSxXQUFXLFlBQVl4QixLQUFLd0IsVUFBVUMsWUFBWSxjQUFjekIsS0FBS3dCLFVBQVVDLGFBQWEsU0FBU3pCLEtBQUt3QixVQUFVQyxXQUFXaEIsRUFBRWEsRUFBRUksU0FBUyxpQkFBaUJMLFFBQVFBLFNBQVNDLEVBQUUsV0FBVyxFQUFFLGFBQWFLLGtCQUFrQkMsWUFBWWhDLEVBQUUsU0FBU0QsRUFBRWMsRUFBRW9CLEdBQUcsSUFBSUMsRUFBRVIsRUFBRVMsS0FBS1QsRUFBRVUsVUFBVUMsRUFBRWYsU0FBU2dCLGNBQWMsS0FBS3pCLEVBQUVBLEdBQUdkLEVBQUV3QyxNQUFNLFdBQVdGLEVBQUVHLFNBQVMzQixFQUFFd0IsRUFBRUksSUFBSSxXQUFXLGlCQUFpQjFDLEdBQUdzQyxFQUFFSyxLQUFLM0MsRUFBRXNDLEVBQUVNLFNBQVNDLFNBQVNELE9BQU94QixFQUFFa0IsR0FBRzdCLEVBQUU2QixFQUFFSyxNQUFNbkMsRUFBRVIsRUFBRWMsRUFBRW9CLEdBQUdkLEVBQUVrQixFQUFFQSxFQUFFUSxPQUFPLFlBQVlSLEVBQUVLLEtBQUtSLEVBQUVZLGdCQUFnQi9DLEdBQUdnRCxXQUFXLFdBQVdiLEVBQUVjLGdCQUFnQlgsRUFBRUssS0FBSyxFQUFFLEtBQUtLLFdBQVcsV0FBVzVCLEVBQUVrQixFQUFFLEVBQUUsR0FBRyxFQUFFLHFCQUFxQlQsVUFBVSxTQUFTRixFQUFFYixFQUFFb0IsR0FBRyxHQUFHcEIsRUFBRUEsR0FBR2EsRUFBRWEsTUFBTSxXQUFXLGlCQUFpQmIsRUFBRUUsVUFBVXFCLGlCQUFpQmxELEVBQUUyQixFQUFFTyxHQUFHcEIsUUFBUSxHQUFHTCxFQUFFa0IsR0FBR25CLEVBQUVtQixFQUFFYixFQUFFb0IsT0FBTyxDQUFDLElBQUlDLEVBQUVaLFNBQVNnQixjQUFjLEtBQUtKLEVBQUVRLEtBQUtoQixFQUFFUSxFQUFFVyxPQUFPLFNBQVNFLFdBQVcsV0FBVzVCLEVBQUVlLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBU25DLEVBQUVTLEVBQUVXLEVBQUVOLEdBQUcsSUFBR0EsRUFBRUEsR0FBR0gsS0FBSyxHQUFHLGFBQWNHLEVBQUVTLFNBQVM0QixNQUFNckMsRUFBRVMsU0FBUzZCLEtBQUtDLFVBQVUsa0JBQWtCLGlCQUFpQnJELEVBQUUsT0FBT1EsRUFBRVIsRUFBRVMsRUFBRVcsR0FBRyxJQUFJYyxFQUFFLDZCQUE2QmxDLEVBQUVNLEtBQUs2QixFQUFFLGVBQWU5QixLQUFLc0IsRUFBRTJCLGNBQWMzQixFQUFFNEIsT0FBT2pCLEVBQUUsZUFBZWpDLEtBQUt3QixVQUFVQyxXQUFXLElBQUlRLEdBQUdKLEdBQUdDLEdBQUdsQyxJQUFJLG9CQUFvQnVELFdBQVcsQ0FBQyxJQUFJQyxFQUFFLElBQUlELFdBQVdDLEVBQUVDLFVBQVUsV0FBVyxJQUFJekQsRUFBRXdELEVBQUVFLE9BQU8xRCxFQUFFcUMsRUFBRXJDLEVBQUVBLEVBQUUyRCxRQUFRLGVBQWUseUJBQXlCOUMsRUFBRUEsRUFBRStCLFNBQVNGLEtBQUsxQyxFQUFFNEMsU0FBUzVDLEVBQUVhLEVBQUUsSUFBSSxFQUFFMkMsRUFBRUksY0FBYzdELEVBQUUsS0FBSyxDQUFDLElBQUk4RCxFQUFFbkMsRUFBRVMsS0FBS1QsRUFBRVUsVUFBVTBCLEVBQUVELEVBQUVmLGdCQUFnQi9DLEdBQUdjLEVBQUVBLEVBQUUrQixTQUFTa0IsRUFBRWxCLFNBQVNGLEtBQUtvQixFQUFFakQsRUFBRSxLQUFLa0MsV0FBVyxXQUFXYyxFQUFFYixnQkFBZ0JjLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBR3BDLEVBQUVJLE9BQU9qQixFQUFFaUIsT0FBT2pCLEVBQStCcEIsRUFBT0QsUUFBUXFCLENBQUUsR0FBNWtGLDhCLCtKQ0NuRSxrQkFHQSxZQUNBLFlBRU1rRCxFQUFpQixVQUFNQyxjQUFrQyxDQUM3REMsWUFBYSxDQUNYQyxXQUFZLEdBQ1pDLFNBQVdDLE1BQ1hDLFFBQVMsUUFFWEMsU0FBVSxDQUNSQyxTQUFVLFFBRVpDLGtCQUFtQixDQUNqQkMsUUFBUyxHQUNUQyxRQUFTLEdBQ1RDLGVBQWlCQyxPQUVuQkMsVUFBVyxDQUNUQyxjQUFVQyxFQUNWTixRQUFTLEdBQ1RPLEtBQU0sR0FDTkMsZ0JBQVlGLEVBQ1pHLGdCQUFZSCxLQUloQixNQUFNSSxXQUF3QixhQUFtQixVQUFNQyxZQUNyREMsb0JBQXNCLENBQ3BCQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWE4sWUFBWSxFQUNaQyxZQUFZLEdBR2RNLEVBQ0FDLE1BRUEsV0FBQUMsQ0FBWUMsR0FDVkMsTUFBTUQsR0FDTixNQUFNRSxFQUFlLENBQ25CQyxhQUFjLENBQUMsRUFDZjVCLFdBQzBCLGlCQUFqQnlCLEVBQU1MLFFBQ1RLLEVBQU1MLE9BQU9TLGVBQ2IsSUFFUkMsS0FBS1IsRUFBSSxLQUNUUSxLQUFLM0IsUUFBVTJCLEtBQUszQixRQUFRNEIsS0FBS0QsTUFDakNBLEtBQUs3QixTQUFXNkIsS0FBSzdCLFNBQVM4QixLQUFLRCxNQUNuQ0EsS0FBS3JCLGVBQWlCcUIsS0FBS3JCLGVBQWVzQixLQUFLRCxNQUMvQ0EsS0FBS0UscUJBQXVCRixLQUFLRSxxQkFBcUJELEtBQUtELE1BRXZETCxFQUFNRyxlQUNSRCxFQUFhQyxhQUFlSCxFQUFNbEIsUUFBUTBCLE9BQ3hDLENBQUNDLEVBQVVDLEtBQ1RELEVBQUlDLEVBQU96QixZQUFjeUIsRUFBT0MsT0FDekJGLEdBRVQsQ0FBQyxJQUdMUCxFQUFhM0IsV0FDYSxpQkFBakJ5QixFQUFNTCxRQUFzQkssRUFBTUwsT0FBT1MsZUFBc0IsR0FDeEVDLEtBQUtQLE1BQVFJLENBQ2YsQ0FFQSwrQkFBT1UsQ0FBeUJaLEVBQTBCRixHQUN4RCxNQUFNZSxFQUFtQmYsRUFBTUssYUFDL0IsSUFBSVcsRUFTSixPQVBFQSxFQURFZCxFQUFNRyxhQUNZSCxFQUFNbEIsUUFBUTBCLE9BQU8sQ0FBQ0MsRUFBVUMsS0FDbERELEVBQUlDLEVBQU96QixZQUFjeUIsRUFBT0MsT0FDekJGLEdBQ04sQ0FBQyxHQUVnQixDQUFDLEVBRW5CSSxFQUNLLElBQ0ZmLEVBQ0hlLG9CQUdLLElBQ0ZmLEVBQ0hnQixvQkFHTixDQUVBLFFBQUF0QyxDQUFTRCxHQUNIQSxJQUFlOEIsS0FBS1AsTUFBTXZCLFlBQzVCOEIsS0FBS1UsU0FBUyxDQUFFeEMsY0FFcEIsQ0FFQSxPQUFBRyxHQUNFMkIsS0FBS1UsU0FBUyxDQUFFeEMsV0FBWSxJQUM5QixDQUVBLGNBQUFTLENBQWVDLEdBQ2IsTUFBTSxhQUFFa0IsR0FBaUJFLEtBQUtQLE1BQzlCSyxFQUFhbEIsSUFBY2tCLEVBQWFsQixHQUN4Q29CLEtBQUtVLFNBQVMsSUFDVFYsS0FBS1AsTUFDUkssZ0JBRUosQ0FTQSxvQkFBQUksQ0FBcUJWLEdBQ25CUSxLQUFLUixFQUFJQSxDQUNYLENBRUEsTUFBQW1CLEdBQ0UsTUFBTTlCLEVBQStCLENBQ25DQyxTQUFVa0IsS0FBS0wsTUFBTWIsU0FDckJMLFFBQVN1QixLQUFLTCxNQUFNbEIsUUFDcEJPLEtBQU1nQixLQUFLTCxNQUFNWCxLQUNqQk0sT0FBUVUsS0FBS0wsTUFBTUwsU0FBVSxFQUM3QkMsVUFBV1MsS0FBS0wsTUFBTUosWUFBYSxFQUNuQ04sV0FBWWUsS0FBS0wsTUFBTVYsYUFBYyxFQUNyQ0MsV0FBWWMsS0FBS0wsTUFBTVQsYUFBYyxFQUNyQzBCLFNBQVVaLEtBQUtMLE1BQU1pQixTQUNyQlYscUJBQXNCRixLQUFLRSxxQkFDM0JXLG1CQUFvQmIsS0FBS2Esb0JBYTNCLE9BWEliLEtBQUtMLE1BQU1MLFNBQ2JULEVBQVVTLE9BQVMsQ0FDakJ3QixlQUFlLGFBQW9CZCxLQUFLTCxNQUFNTCxRQUM5Q3BCLFdBQVk4QixLQUFLUCxNQUFNdkIsYUFHdkI4QixLQUFLTCxNQUFNRyxlQUNiakIsRUFBVWlCLGFBQWUsQ0FDdkJwQixRQUFTc0IsS0FBS1AsTUFBTUssZUFJdEIsd0JBQUMvQixFQUFlZ0QsU0FBUSxDQUN0QkMsTUFBTyxDQUNML0MsWUFBYSxDQUNYQyxXQUFZOEIsS0FBS1AsTUFBTXZCLFdBQ3ZCQyxTQUFVNkIsS0FBSzdCLFNBQ2ZFLFFBQVMyQixLQUFLM0IsU0FFaEJDLFNBQVUsQ0FDUkMsU0FBVXlCLEtBQUtpQixpQkFFakJ6QyxrQkFBbUIsQ0FDakJDLFFBQVN1QixLQUFLTCxNQUFNbEIsUUFDcEJDLFFBQVNzQixLQUFLUCxNQUFNSyxhQUNwQm5CLGVBQWdCcUIsS0FBS3JCLGdCQUV2QkUsY0FHRG1CLEtBQUtMLE1BQU1pQixTQUdsQixFQUdGLFVBQWUsQ0FDYkcsU0FBVTVCLEVBQ1YrQixTQUFVbkQsRUFBZW1ELFMsMk5DNUszQixrQkFDQSxZQUVBLFVBQWUsVUFDRixFQUFBbkQsZUFBaUIsVUFFOUIsYUFBUyxpRkFBQW9ELE9BQU8sSUFDaEIsYUFBUyw4RUFBQUEsT0FBTyxJQUNoQixhQUFTLDJFQUFBQSxPQUFPLEcsK0pDWGhCLGtCQUdBLFlBY0EsVUFYRXhCLEdBRUEsd0JBQUMsVUFBZW9CLFNBQVEsSUFBS3BCLEdBQzNCLHdCQUFDLFVBQWV1QixTQUFRLEtBQ3BCRSxHQUFpQnpCLEVBQU1pQixTQUFTUSxJLCtKQ1J4QyxrQkFFQSxVQUFlLENBQUVDLFdBQUEsVSwrSkNKakIsa0JBd0NBLFVBcENtQixFQUNqQjVDLFVBQ0FFLGlCQUNBRCxVQUNBNEMsZUFBZSxHQUNmQyxZQUFZLEdBQ1pDLGFBQWEsYUFFYiwrQkFDRUQsVUFBVyw4QkFBOEJBLElBQVcsY0FDeEMsV0FFWDlDLEVBQ0VnRCxJQUFLcEIsSUFBOEIsSUFDL0JBLEVBQ0hxQixPQUFRaEQsRUFBUTJCLEVBQU96QixjQUV4QjZDLElBQUtwQixHQUNKLGtDQUNFaEcsS0FBSyxTQUNMc0gsSUFBS3RCLEVBQU96QixVQUNaMkMsVUFBVyxHQUFHRCxhQUF3QkUsS0FDcENuQixFQUFPcUIsT0FBUyxTQUFXLEtBQzNCLGNBQ1UsU0FBUSxlQUNOckIsRUFBT3FCLE9BQVMsT0FBUyxRQUN2Q0UsUUFBUyxJQUFNakQsRUFBZTBCLEVBQU96QixZQUVwQ3lCLEVBQU93QixPLDhKQ2hDbEIsa0JBSU1DLEVBQThCLENBQ2xDUCxVQUFXLEdBQ1hRLE1BQU8sQ0FBQyxHQXNCVixVQWxCRXBDLElBRUEsTUFBTSxTQUFFcEIsRUFBUSxTQUFFcUMsRUFBUSxVQUFFVyxLQUFjUyxHQUFTLElBQUtGLEtBQWdDbkMsR0FFeEYsT0FDRSxrQ0FDRXRGLEtBQUssU0FDTGtILFVBQVcsd0RBQXdEQSxJQUNuRUssUUFBUyxJQUFNckQsT0FDWHlELEdBRUhwQixHLHVNQ3BCUCxrQkFFYSxFQUFBcUIsWUFBZXhELEdBQzFCQSxFQUNHZ0QsSUFBS3BCLElBQWdCLENBQ3BCNkIsTUFBTzdCLEVBQU96QixVQUNkdkUsS0FBTWdHLEVBQU84QixTQUFXQyxPQUN4QkMsVUFBV2hDLEVBQU9pQyxhQUNsQkMsZ0JBQWlCbEMsRUFBT2tDLGdCQUN4QkMsT0FBUW5DLEVBQU9vQyxTQUFXcEMsRUFBT3dCLEtBQ2pDYSxRQUE2QixJQUFyQnJDLEVBQU9zQyxVQUNmQyxJQUFLQyxPQUFPeEMsRUFBT3VDLE1BQVEsRUFDM0JFLFFBQVNELE9BQU94QyxFQUFPeUMsVUFBWSxFQUNuQ0MsUUFBU0YsT0FBT3hDLEVBQU8wQyxVQUFZLEVBQ25DQyxPQUFRM0MsRUFBTzJDLE9BQ2ZDLGdCQUFpQjVDLEVBQU80QyxtQkFFekJDLE9BQVExRCxHQUFXQSxFQUFFa0QsUUFFYixFQUFBUyxVQUFZLENBQ3ZCbkUsRUFDQW9FLEVBQ0EzRSxFQUNBZSxHQUNFNkQsWUFBV0MsZUFBY0MsbUJBRTNCLE1BQU1DLEVBQWlCSixFQUFLRixPQUFRcEYsR0FBV0EsRUFBRTRFLFFBQ2pELElBQUllLEVBQVUsR0FPZCxPQUxLSCxJQUNIRyxHQUFXRCxFQUFlL0IsSUFBSzNELEdBQVcsSUFBSUEsRUFBRTBFLFdBQVdrQixLQUFLTCxHQUNoRUksR0FBVyxNQUdPLElBQWhCekUsRUFBSzJFLFNBQ1RGLEdBQVd6RSxFQUNSeUMsSUFBSSxDQUFDbUIsRUFBVWdCLElBQ2RKLEVBQ0cvQixJQUFLM0QsSUFDSixJQUFJK0YsRUFBY3JFLEVBQUVzRSxJQUFJbEIsRUFBSzlFLEVBQUVvRSxPQVMvQixPQVJJcEUsRUFBRXVFLFlBQ0p3QixFQUFjL0YsRUFBRXVFLFVBQ2R3QixFQUNBakIsRUFDQWdCLEVBQ0E5RixFQUFFeUUsa0JBR0Z6RSxFQUFFekQsT0FBUytILE9BQ04sSUFBSSxHQUFHeUIsSUFBY2xHLFFBQVEsS0FBTSxTQUVyQ2tHLElBRVJILEtBQUtMLElBRVRLLEtBQUssTUFFSEgsSUFDSEUsR0FBVyxLQUNYQSxHQUFXRCxFQUNSL0IsSUFBSSxDQUFDM0QsRUFBUTVCLEtBQ1osR0FBd0IsbUJBQWI0QixFQUFFa0YsT0FBdUIsQ0FDbEMsTUFBTWUsRUFBYXZFLEVBQUV3RSxNQUFNaEYsRUFBTVAsRUFBUXZDLEdBQUcwQyxXQUM1QyxNQUFPLElBQUlkLEVBQUVrRixPQUFPZSxFQUFZdEYsRUFBUXZDLEdBQUlBLEtBQzlDLENBQU8sT0FBSTRCLEVBQUVtRixnQkFDSixJQUFJbkYsRUFBRW1GLGdCQUFnQnhFLEVBQVF2QyxHQUFJQSxNQUVwQyxJQUFJNEIsRUFBRWtGLFlBRWRVLEtBQUtMLEtBbkNvQkksR0F3Q25CLEVBQUFRLEtBQU8sQ0FBQ1IsR0FBZ0JTLFlBQVdDLFdBQVVDLGVBQ3hELFVBQVV0SSxPQUNSLElBQUl4QixLQUFLLENBQUNtSixHQUFVLENBQUVwSixLQUFNK0osSUFDNUJELEVBQ0FELEcsK0pDN0VKLGlCQUVBLFVBQWUsQ0FBRUcsZ0JBQUEsVSwrSkNKakIsa0JBRUEsU0FFTUMsRUFBb0IsQ0FDeEJILFNBQVUsa0JBQ1ZkLFVBQVcsSUFDWEMsY0FBYyxFQUNkQyxjQUFjLEVBQ2RXLFdBQVcsRUFDWEUsU0FBVSwyQkFDVkcsV0FBVyxFQUNYQyxxQkFBcUIsR0FHdkIsVUFBZ0JDLEdBQ2QsY0FBMkIsVUFBTXJGLFVBQy9CSSxFQUNBa0YsdUJBRUF6RCxnQkFBbUIwRCxJQUNqQixNQUFNLFFBQUVsRyxFQUFPLFVBQUVjLEVBQVMsU0FBRVQsR0FBYWtCLEtBQUtMLE1BQ3hDeUQsR0FBTyxJQUFBbkIsYUFBWXhELEdBQ25CbUcsR0FDVSxJQUFkckYsRUFDSStFLEVBQ0EsSUFDS0EsS0FDQS9FLEdBSVgsSUFBSVAsRUFDSixRQUFzQixJQUFYMkYsRUFDVDNGLEVBQU8yRixPQUNGLEdBQUlDLEVBQVFMLFVBQ2pCdkYsRUFBT2dCLEtBQUtMLE1BQU1YLFVBQ2IsR0FBSTRGLEVBQVFDLG1CQUFvQixDQUNyQyxNQUFNQyxFQUEyQixDQUFFcEgsWUFBUXFCLEdBQzNDaUIsS0FBSzBFLHVCQUF1QkssS0FBSyxvQkFBcUJELEdBQ3REOUYsRUFBTzhGLEVBQVFwSCxNQUNqQixLQUFPLENBQ0wsTUFBTW9ILEVBQVUsQ0FBRXBILFlBQVFxQixHQUMxQmlCLEtBQUswRSx1QkFBdUJLLEtBQUssaUJBQWtCRCxHQUNuRDlGLEVBQU84RixFQUFRcEgsTUFDakIsQ0FHQSxHQUFJa0gsRUFBUUosb0JBQXFCLENBQy9CLE1BQU1NLEVBQVUsQ0FBRXBILFlBQVFxQixHQUMxQmlCLEtBQUswRSx1QkFBdUJLLEtBQUssb0JBQXFCRCxHQUN0RCxNQUFNRSxFQUFhRixFQUFRcEgsUUFBVSxHQUVyQ3NCLEVBQU9BLEVBQUtrRSxPQUFRTixHQUFhb0MsRUFBV0MsU0FBU3JDLEVBQUk5RCxJQUMzRCxDQUVBLE1BQU0yRSxHQUFVLElBQUFOLFdBQVVuRSxFQUFNb0UsRUFBTTNFLEVBQVN1QixLQUFLUixFQUFHb0YsSUFDdkQsSUFBQVgsTUFBS1IsRUFBU21CLEksK0pDdkRwQixrQkFFQSxVQUFlLENBQ2JNLGFBQUEsVSwrSkNIRixrQkFHTUMsRUFBaUIsQ0FDckJDLEVBQ0FDLEVBQ0FDLEtBRUEsSUFBSUMsRUFFSixNQUFPLElBQUlDLEtBQ1QsTUFRTUMsRUFBVUgsSUFBY0MsRUFFOUJHLGFBQWFILEdBRWJBLEVBQVV4SSxXQVpJLEtBQ1p3SSxPQUFVeEcsRUFFTHVHLEdBQ0hGLEVBQUtPLE1BQU0zRixLQUFNd0YsSUFRT0gsR0FBUSxHQUVoQ0ksR0FDRkwsRUFBS08sTUFBTTNGLEtBQU13RixLQVN2QixNQUFNSSxVQUFrQixVQUFNeEcsVUFDNUJ5RyxNQUFpQyxLQUVqQyxXQUFBbkcsQ0FBWUMsR0FDVkMsTUFBTUQsR0FDTkssS0FBS1AsTUFBUSxDQUNYdUIsTUFBT3JCLEVBQU16QixZQUFjLEdBRS9CLENBRUE0SCxjQUFpQjNLLElBQ2Y2RSxLQUFLVSxTQUFTLENBQUVNLE1BQU83RixFQUFFMEIsT0FBT21FLFNBR2xDK0UsUUFBVSxLQUNSLE1BQU0sTUFBRUMsRUFBUSxJQUFHLFNBQUU3SCxHQUFhNkIsS0FBS0wsTUFDZHdGLEVBQWUsS0FDdENoSCxFQUFVNkIsS0FBSzZGLE9BQU83RSxPQUFTLEtBQzlCZ0YsRUFDSEMsSUFHRixrQkFBQUMsQ0FBbUJDLEdBQ2JuRyxLQUFLTCxNQUFNekIsYUFBZWlJLEVBQVVqSSxZQUN0QzhCLEtBQUtVLFNBQVMsQ0FBRU0sTUFBT2hCLEtBQUtMLE1BQU16QixZQUFjLElBRXBELENBRUEsTUFBQXlDLEdBQ0UsTUFBTSxVQUNKWSxFQUFZLEdBQUUsTUFDZFEsRUFBUSxDQUFDLEVBQUMsWUFDVnFFLEVBQWMsU0FBUSxRQUN0QkMsRUFBVSxJQUFHLFdBQ2JuSSxFQUFhLHFCQUNYOEIsS0FBS0wsTUFFVCxPQUNFLGlDQUFPMkcsUUFBUyxjQUFjRCxJQUFXOUUsVUFBVSxnQkFDakQsZ0NBQU1nRixHQUFJLGNBQWNGLFVBQWlCOUUsVUFBVSwyQkFDaERyRCxHQUVILGlDQUNFc0ksSUFBTUMsSUFBUXpHLEtBQUs2RixNQUFRWSxHQUMzQkYsR0FBSSxjQUFjRixJQUNsQmhNLEtBQUssT0FDTDBILE1BQU9BLEVBQVksa0JBQ0YsY0FBY3NFLFVBQy9CSyxRQUFTLElBQU0xRyxLQUFLK0YsVUFDcEJZLFNBQVUzRyxLQUFLOEYsY0FDZnZFLFVBQVcsZ0JBQWdCQSxJQUMzQlAsTUFBT2hCLEtBQUtQLE1BQU11QixNQUNsQm9GLFlBQWFBLElBSXJCLENBQ0EvRyxvQkFBc0IsQ0FDcEJrQyxVQUFXLEdBQ1hRLE1BQU8sQ0FBQyxFQUNScUUsWUFBYSxTQUNiSixNQUFPLElBQ1A5SCxXQUFZLEdBQ1ptSSxRQUFTLElBQ1RPLE9BQVEscUJBSVosVUFBZWhCLEMsOEpDekdmLGtCQWNBLFVBWG9CLEVBQ2xCdkgsVUFDQXdELE9BQU8sUUFDUE4sWUFBWSxNQUVaLGtDQUFRQSxVQUFXLGlDQUFpQ0EsSUFBYUssUUFBU3ZELEdBQ3ZFd0QsRSwrSkNITCxrQkFpQkEsVUFBZSxDQUNYK0MsRUFBNEIsQ0FDMUJpQyxpQkFBaUIsRUFDakJDLGlCQUFhL0gsRUFDYmdJLGNBQWUsS0FBTSxLQUd6QixDQUNFdkgsRUFDQXdILEVBQ0FDLEtBRUEsTUFBTUMsRUFBZ0IsVUFBTWxKLGNBQW1CLE1BRS9DLE1BQU1tSixVQUF1QixVQUFNL0gsVUFJakMsV0FBQU0sQ0FBWUMsR0FDVkMsTUFBTUQsR0FDTixJQUFJeUgsRUFBY3pILEVBQU1YLEtBQ3BCZ0ksS0FBOEMsS0FBMUJoSCxLQUFLTCxNQUFNekIsV0FDakMrSSxFQUF5QmpILEtBQUtMLE1BQU16QixhQUVwQ2tKLEVBQWNwSCxLQUFLVixPQUFPSyxHQUMxQkssS0FBS3FILGdCQUFnQkQsR0FBYSxJQUVwQ3BILEtBQUtQLE1BQVEsQ0FBRVQsS0FBTW9JLEVBQ3ZCLENBRUEsV0FBQUUsR0FDRSxPQUFPdEgsS0FBS1AsTUFBTVQsSUFDcEIsQ0FFQSxlQUFBcUksQ0FBZ0IzSixFQUFhNkosR0FDdkIzQyxFQUFRa0MsY0FBZ0JTLEdBQzFCM0MsRUFBUWtDLFlBQVlwSixHQUVsQnNDLEtBQUtMLE1BQU02SCxvQkFDYnhILEtBQUtMLE1BQU02SCxtQkFBbUJ6QyxLQUFLLGdCQUFpQnJILEVBQU9pRyxPQUUvRCxDQUVBLGtCQUFBdUMsQ0FBbUJDLEdBQ2pCLEdBQUlBLEVBQVVqSSxhQUFlOEIsS0FBS0wsTUFBTXpCLFdBQ3RDLEdBQUk4SSxJQUNGQyxFQUF5QmpILEtBQUtMLE1BQU16QixnQkFDL0IsQ0FDTCxNQUFNUixFQUFTc0MsS0FBS1YsT0FBT1UsS0FBS0wsT0FDaENLLEtBQUtxSCxnQkFBZ0IzSixHQUNyQnNDLEtBQUtVLFNBQVMsQ0FDWjFCLEtBQU10QixHQUVWLE1BRUEsR0FBSXNKLElBQ0d4SCxFQUFFaUksUUFBUXpILEtBQUtQLE1BQU1ULEtBQU1nQixLQUFLTCxNQUFNWCxPQUN6Q2dCLEtBQUtVLFNBQVMsQ0FBRTFCLEtBQU1nQixLQUFLTCxNQUFNWCxZQUU5QixJQUFLUSxFQUFFaUksUUFBUXRCLEVBQVVuSCxLQUFNZ0IsS0FBS0wsTUFBTVgsTUFBTyxDQUN0RCxNQUFNdEIsRUFBU3NDLEtBQUtWLE9BQU9VLEtBQUtMLE9BQ2hDSyxLQUFLcUgsZ0JBQWdCM0osR0FDckJzQyxLQUFLVSxTQUFTLENBQ1oxQixLQUFNdEIsR0FFVixDQUVKLENBRUEsTUFBQTRCLENBQU9LLEdBQ0wsTUFBTSxLQUFFWCxFQUFJLFFBQUVQLEdBQVlrQixFQUNwQnpCLEVBQWF5QixFQUFNekIsV0FBV3dKLGNBQ3BDLE9BQU8xSSxFQUFLa0UsT0FBTyxDQUFDTixFQUFVK0UsS0FDNUIsSUFBSyxJQUFJQyxFQUFPLEVBQUdBLEVBQU9uSixFQUFRa0YsT0FBUWlFLEdBQVEsRUFBRyxDQUNuRCxNQUFNdkgsRUFBUzVCLEVBQVFtSixHQUN2QixJQUEwQixJQUF0QnZILEVBQU93SCxXQUFzQixTQUNqQyxJQUFJQyxFQUFjdEksRUFBRXNFLElBQUlsQixFQUFLdkMsRUFBT3pCLFdBV3BDLEdBVkl5QixFQUFPZ0MsV0FBYXVDLEVBQVFpQyxnQkFDOUJpQixFQUFjekgsRUFBT2dDLFVBQ25CeUYsRUFDQWxGLEVBQ0ErRSxFQUNBdEgsRUFBT2tDLGlCQUVBbEMsRUFBTzBILGNBQ2hCRCxFQUFjekgsRUFBTzBILFlBQVlELEVBQWFsRixJQUU1Q2dDLEVBQVFtQyxlQUNWLEdBQ0VuQyxFQUFRbUMsY0FBYyxDQUNwQjdJLGFBQ0E4QyxNQUFPOEcsRUFDUHpILFNBQ0F1QyxRQUdGLE9BQU8sT0FHVCxHQUFJa0YsVUFDRkEsRUFBY0EsRUFBWUUsV0FBV04sY0FDakNJLEVBQVlHLFFBQVEvSixJQUFlLEdBQ3JDLE9BQU8sQ0FJZixDQUNBLE9BQU8sR0FFWCxDQUVBLE1BQUF5QyxHQUNFLE9BQ0Usd0JBQUN1RyxFQUFjbkcsU0FBUSxDQUFDQyxNQUFPLENBQUVoQyxLQUFNZ0IsS0FBS1AsTUFBTVQsT0FDL0NnQixLQUFLTCxNQUFNaUIsU0FHbEIsRUFHRixNQUFPLENBQ0xHLFNBQVVvRyxFQUNWakcsU0FBVWdHLEVBQWNoRyxVLCtKQy9JOUIsa0JBQ0EsV0FFQSxVQUFlLENBQUUwRSxVQUFBLFVBQVdzQyxrQkFBQSxVLCtKQ0g1QixrQkFFQSxVQUFnQnpELEdBQ2QsY0FBaUMsVUFBVVMsYUFBYVQsSUFDdEQ1RCxtQkFBc0I2RCxJQUNwQjFFLEtBQUswRSx1QkFBeUJBLEcsc0JDUHBDakwsRUFBT0QsUUFBVU0sQyxHQ0NicU8sRUFBMkIsQ0FBQyxFQUdoQyxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCdEosSUFBakJ1SixFQUNILE9BQU9BLEVBQWE5TyxRQUdyQixJQUFJQyxFQUFTME8sRUFBeUJFLEdBQVksQ0FHakQ3TyxRQUFTLENBQUMsR0FPWCxPQUhBK08sRUFBb0JGLEdBQVVHLEtBQUsvTyxFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTNE8sR0FHcEUzTyxFQUFPRCxPQUNmLEMsT0N0QkE0TyxFQUFvQnZOLEVBQUksV0FDdkIsR0FBMEIsaUJBQWY0TixXQUF5QixPQUFPQSxXQUMzQyxJQUNDLE9BQU96SSxNQUFRLElBQUkwSSxTQUFTLGNBQWIsRUFDaEIsQ0FBRSxNQUFPdk4sR0FDUixHQUFzQixpQkFBWE0sT0FBcUIsT0FBT0EsTUFDeEMsQ0FDQSxDQVB1QixHQ0dFMk0sRUFBb0IsSSIsInNvdXJjZXMiOlsid2VicGFjazovLy93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZpbGUtc2F2ZXIvZGlzdC9GaWxlU2F2ZXIubWluLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L2NvbnRleHQudHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L2luZGV4LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3Byb3ZpZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY29sdW1uLXRvZ2dsZS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY29sdW1uLXRvZ2dsZS90b2dnbGUtbGlzdC50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2Nzdi9idXR0b24udHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9jc3YvZXhwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2Nzdi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvb3AvY3N2LnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9vcC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvc2VhcmNoL1NlYXJjaEJhci50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL3NlYXJjaC9jbGVhci1idXR0b24udHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9zZWFyY2gvY29udGV4dC50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL3NlYXJjaC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zdGF0ZWxlc3NPcC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgdW1kIHtcInJvb3RcIjpcIlJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImFtZFwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovLy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiUmVhY3RCb290c3RyYXBUYWJsZU5nVG9vbGtpdFwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJSZWFjdEJvb3RzdHJhcFRhYmxlTmdUb29sa2l0XCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkoc2VsZiwgKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzQ0Ml9fKSA9PiB7XG5yZXR1cm4gIiwiKGZ1bmN0aW9uKGEsYil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSxiKTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBleHBvcnRzKWIoKTtlbHNle2IoKSxhLkZpbGVTYXZlcj17ZXhwb3J0czp7fX0uZXhwb3J0c319KSh0aGlzLGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYihhLGIpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBiP2I9e2F1dG9Cb206ITF9Olwib2JqZWN0XCIhPXR5cGVvZiBiJiYoY29uc29sZS53YXJuKFwiRGVwcmVjYXRlZDogRXhwZWN0ZWQgdGhpcmQgYXJndW1lbnQgdG8gYmUgYSBvYmplY3RcIiksYj17YXV0b0JvbTohYn0pLGIuYXV0b0JvbSYmL15cXHMqKD86dGV4dFxcL1xcUyp8YXBwbGljYXRpb25cXC94bWx8XFxTKlxcL1xcUypcXCt4bWwpXFxzKjsuKmNoYXJzZXRcXHMqPVxccyp1dGYtOC9pLnRlc3QoYS50eXBlKT9uZXcgQmxvYihbXCJcXHVGRUZGXCIsYV0se3R5cGU6YS50eXBlfSk6YX1mdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKFwiR0VUXCIsYSksZC5yZXNwb25zZVR5cGU9XCJibG9iXCIsZC5vbmxvYWQ9ZnVuY3Rpb24oKXtnKGQucmVzcG9uc2UsYixjKX0sZC5vbmVycm9yPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcihcImNvdWxkIG5vdCBkb3dubG9hZCBmaWxlXCIpfSxkLnNlbmQoKX1mdW5jdGlvbiBkKGEpe3ZhciBiPW5ldyBYTUxIdHRwUmVxdWVzdDtiLm9wZW4oXCJIRUFEXCIsYSwhMSk7dHJ5e2Iuc2VuZCgpfWNhdGNoKGEpe31yZXR1cm4gMjAwPD1iLnN0YXR1cyYmMjk5Pj1iLnN0YXR1c31mdW5jdGlvbiBlKGEpe3RyeXthLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSl9Y2F0Y2goYyl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJNb3VzZUV2ZW50c1wiKTtiLmluaXRNb3VzZUV2ZW50KFwiY2xpY2tcIiwhMCwhMCx3aW5kb3csMCwwLDAsODAsMjAsITEsITEsITEsITEsMCxudWxsKSxhLmRpc3BhdGNoRXZlbnQoYil9fXZhciBmPVwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy53aW5kb3c9PT13aW5kb3c/d2luZG93Olwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmLnNlbGY9PT1zZWxmP3NlbGY6XCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsLmdsb2JhbD09PWdsb2JhbD9nbG9iYWw6dm9pZCAwLGE9Zi5uYXZpZ2F0b3ImJi9NYWNpbnRvc2gvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJi9BcHBsZVdlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIS9TYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksZz1mLnNhdmVBc3x8KFwib2JqZWN0XCIhPXR5cGVvZiB3aW5kb3d8fHdpbmRvdyE9PWY/ZnVuY3Rpb24oKXt9OlwiZG93bmxvYWRcImluIEhUTUxBbmNob3JFbGVtZW50LnByb3RvdHlwZSYmIWE/ZnVuY3Rpb24oYixnLGgpe3ZhciBpPWYuVVJMfHxmLndlYmtpdFVSTCxqPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2c9Z3x8Yi5uYW1lfHxcImRvd25sb2FkXCIsai5kb3dubG9hZD1nLGoucmVsPVwibm9vcGVuZXJcIixcInN0cmluZ1wiPT10eXBlb2YgYj8oai5ocmVmPWIsai5vcmlnaW49PT1sb2NhdGlvbi5vcmlnaW4/ZShqKTpkKGouaHJlZik/YyhiLGcsaCk6ZShqLGoudGFyZ2V0PVwiX2JsYW5rXCIpKTooai5ocmVmPWkuY3JlYXRlT2JqZWN0VVJMKGIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnJldm9rZU9iamVjdFVSTChqLmhyZWYpfSw0RTQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGopfSwwKSl9OlwibXNTYXZlT3JPcGVuQmxvYlwiaW4gbmF2aWdhdG9yP2Z1bmN0aW9uKGYsZyxoKXtpZihnPWd8fGYubmFtZXx8XCJkb3dubG9hZFwiLFwic3RyaW5nXCIhPXR5cGVvZiBmKW5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGIoZixoKSxnKTtlbHNlIGlmKGQoZikpYyhmLGcsaCk7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtpLmhyZWY9ZixpLnRhcmdldD1cIl9ibGFua1wiLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGkpfSl9fTpmdW5jdGlvbihiLGQsZSxnKXtpZihnPWd8fG9wZW4oXCJcIixcIl9ibGFua1wiKSxnJiYoZy5kb2N1bWVudC50aXRsZT1nLmRvY3VtZW50LmJvZHkuaW5uZXJUZXh0PVwiZG93bmxvYWRpbmcuLi5cIiksXCJzdHJpbmdcIj09dHlwZW9mIGIpcmV0dXJuIGMoYixkLGUpO3ZhciBoPVwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI9PT1iLnR5cGUsaT0vY29uc3RydWN0b3IvaS50ZXN0KGYuSFRNTEVsZW1lbnQpfHxmLnNhZmFyaSxqPS9DcmlPU1xcL1tcXGRdKy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtpZigoanx8aCYmaXx8YSkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBGaWxlUmVhZGVyKXt2YXIgaz1uZXcgRmlsZVJlYWRlcjtrLm9ubG9hZGVuZD1mdW5jdGlvbigpe3ZhciBhPWsucmVzdWx0O2E9aj9hOmEucmVwbGFjZSgvXmRhdGE6W147XSo7LyxcImRhdGE6YXR0YWNobWVudC9maWxlO1wiKSxnP2cubG9jYXRpb24uaHJlZj1hOmxvY2F0aW9uPWEsZz1udWxsfSxrLnJlYWRBc0RhdGFVUkwoYil9ZWxzZXt2YXIgbD1mLlVSTHx8Zi53ZWJraXRVUkwsbT1sLmNyZWF0ZU9iamVjdFVSTChiKTtnP2cubG9jYXRpb249bTpsb2NhdGlvbi5ocmVmPW0sZz1udWxsLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLnJldm9rZU9iamVjdFVSTChtKX0sNEU0KX19KTtmLnNhdmVBcz1nLnNhdmVBcz1nLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUmJihtb2R1bGUuZXhwb3J0cz1nKX0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWxlU2F2ZXIubWluLmpzLm1hcCIsIi8qIGVzbGludCBuby1wYXJhbS1yZWFzc2lnbjogMCAqL1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZVRvb2xraXRQcm9wcywgVG9vbGtpdENvbnRleHRUeXBlIH0gZnJvbSBcIi5cIjtcbmltcG9ydCBjcmVhdGVTZWFyY2hDb250ZXh0IGZyb20gXCIuL3NyYy9zZWFyY2gvY29udGV4dFwiO1xuaW1wb3J0IHN0YXRlbGVzc0RlY29yYXRvciBmcm9tIFwiLi9zdGF0ZWxlc3NPcFwiO1xuXG5jb25zdCBUb29sa2l0Q29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8VG9vbGtpdENvbnRleHRUeXBlPih7XG4gIHNlYXJjaFByb3BzOiB7XG4gICAgc2VhcmNoVGV4dDogXCJcIixcbiAgICBvblNlYXJjaDogKHZhbDogc3RyaW5nKSA9PiB7fSxcbiAgICBvbkNsZWFyOiAoKSA9PiB7fSxcbiAgfSxcbiAgY3N2UHJvcHM6IHtcbiAgICBvbkV4cG9ydDogKCkgPT4ge30sXG4gIH0sXG4gIGNvbHVtblRvZ2dsZVByb3BzOiB7XG4gICAgY29sdW1uczogW10sXG4gICAgdG9nZ2xlczogW10sXG4gICAgb25Db2x1bW5Ub2dnbGU6IChkYXRhRmllbGQ6IHN0cmluZykgPT4ge30sXG4gIH0sXG4gIGJhc2VQcm9wczoge1xuICAgIGtleUZpZWxkOiB1bmRlZmluZWQsXG4gICAgY29sdW1uczogW10sXG4gICAgZGF0YTogW10sXG4gICAgYm9vdHN0cmFwNDogdW5kZWZpbmVkLFxuICAgIGJvb3RzdHJhcDU6IHVuZGVmaW5lZCxcbiAgfSxcbn0pO1xuXG5jbGFzcyBUb29sa2l0UHJvdmlkZXIgZXh0ZW5kcyBzdGF0ZWxlc3NEZWNvcmF0b3IoUmVhY3QuQ29tcG9uZW50KSB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgc2VhcmNoOiBmYWxzZSxcbiAgICBleHBvcnRDU1Y6IGZhbHNlLFxuICAgIGJvb3RzdHJhcDQ6IGZhbHNlLFxuICAgIGJvb3RzdHJhcDU6IGZhbHNlLFxuICB9O1xuXG4gIF86IGFueTtcbiAgc3RhdGU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogVGFibGVUb29sa2l0UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgY29sdW1uVG9nZ2xlOiB7fSxcbiAgICAgIHNlYXJjaFRleHQ6XG4gICAgICAgIHR5cGVvZiBwcm9wcy5zZWFyY2ggPT09IFwib2JqZWN0XCJcbiAgICAgICAgICA/IHByb3BzLnNlYXJjaC5kZWZhdWx0U2VhcmNoIHx8IFwiXCJcbiAgICAgICAgICA6IFwiXCIsXG4gICAgfTtcbiAgICB0aGlzLl8gPSBudWxsO1xuICAgIHRoaXMub25DbGVhciA9IHRoaXMub25DbGVhci5iaW5kKHRoaXMpO1xuICAgIHRoaXMub25TZWFyY2ggPSB0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbkNvbHVtblRvZ2dsZSA9IHRoaXMub25Db2x1bW5Ub2dnbGUuYmluZCh0aGlzKTtcbiAgICB0aGlzLnNldERlcGVuZGVuY3lNb2R1bGVzID0gdGhpcy5zZXREZXBlbmRlbmN5TW9kdWxlcy5iaW5kKHRoaXMpO1xuXG4gICAgaWYgKHByb3BzLmNvbHVtblRvZ2dsZSkge1xuICAgICAgaW5pdGlhbFN0YXRlLmNvbHVtblRvZ2dsZSA9IHByb3BzLmNvbHVtbnMucmVkdWNlKFxuICAgICAgICAob2JqOiBhbnksIGNvbHVtbjogYW55KSA9PiB7XG4gICAgICAgICAgb2JqW2NvbHVtbi5kYXRhRmllbGRdID0gIWNvbHVtbi5oaWRkZW47XG4gICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgICk7XG4gICAgfVxuICAgIGluaXRpYWxTdGF0ZS5zZWFyY2hUZXh0ID1cbiAgICAgIHR5cGVvZiBwcm9wcy5zZWFyY2ggPT09IFwib2JqZWN0XCIgPyBwcm9wcy5zZWFyY2guZGVmYXVsdFNlYXJjaCB8fCBcIlwiIDogXCJcIjtcbiAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wczogVGFibGVUb29sa2l0UHJvcHMsIHN0YXRlOiBhbnkpIHtcbiAgICBjb25zdCBjdXJyQ29sdW1uVG9nZ2xlID0gc3RhdGUuY29sdW1uVG9nZ2xlO1xuICAgIGxldCBwcm9wc0NvbHVtblRvZ2dsZTtcbiAgICBpZiAocHJvcHMuY29sdW1uVG9nZ2xlKSB7XG4gICAgICBwcm9wc0NvbHVtblRvZ2dsZSA9IHByb3BzLmNvbHVtbnMucmVkdWNlKChvYmo6IGFueSwgY29sdW1uOiBhbnkpID0+IHtcbiAgICAgICAgb2JqW2NvbHVtbi5kYXRhRmllbGRdID0gIWNvbHVtbi5oaWRkZW47XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9LCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzQ29sdW1uVG9nZ2xlID0ge307XG4gICAgfVxuICAgIGlmIChjdXJyQ29sdW1uVG9nZ2xlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VyckNvbHVtblRvZ2dsZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBwcm9wc0NvbHVtblRvZ2dsZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goc2VhcmNoVGV4dDogYW55KSB7XG4gICAgaWYgKHNlYXJjaFRleHQgIT09IHRoaXMuc3RhdGUuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlYXJjaFRleHQgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DbGVhcigpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoVGV4dDogXCJcIiB9KTtcbiAgfVxuXG4gIG9uQ29sdW1uVG9nZ2xlKGRhdGFGaWVsZDogYW55KSB7XG4gICAgY29uc3QgeyBjb2x1bW5Ub2dnbGUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29sdW1uVG9nZ2xlW2RhdGFGaWVsZF0gPSAhY29sdW1uVG9nZ2xlW2RhdGFGaWVsZF07XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgY29sdW1uVG9nZ2xlLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0geyp9IF9cbiAgICogdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbmx5IG9uZSB0aW1lIHdoZW4gdGFibGUgcmVuZGVyXG4gICAqIHJlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy9zcmMvY29udGV4dC9pbmRleC5qcyB3aWxsIGNhbGwgdGhpcyBjYiBmb3IgcGFzc2luZyB0aGUgXyBtb2R1bGVcbiAgICogUGxlYXNlIGNvbnNpZGVyIHRvIGV4dHJhY3QgYSBjb21tb24gbW9kdWxlIHRvIGhhbmRsZSBfIG1vZHVsZS5cbiAgICogdGhpcyBpcyBqdXN0IGEgcXVpY2sgZml4XG4gICAqL1xuICBzZXREZXBlbmRlbmN5TW9kdWxlcyhfOiBhbnkpIHtcbiAgICB0aGlzLl8gPSBfO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGJhc2VQcm9wczogVGFibGVUb29sa2l0UHJvcHMgPSB7XG4gICAgICBrZXlGaWVsZDogdGhpcy5wcm9wcy5rZXlGaWVsZCxcbiAgICAgIGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyxcbiAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgIHNlYXJjaDogdGhpcy5wcm9wcy5zZWFyY2ggPz8gZmFsc2UsXG4gICAgICBleHBvcnRDU1Y6IHRoaXMucHJvcHMuZXhwb3J0Q1NWID8/IGZhbHNlLFxuICAgICAgYm9vdHN0cmFwNDogdGhpcy5wcm9wcy5ib290c3RyYXA0ID8/IGZhbHNlLFxuICAgICAgYm9vdHN0cmFwNTogdGhpcy5wcm9wcy5ib290c3RyYXA1ID8/IGZhbHNlLFxuICAgICAgY2hpbGRyZW46IHRoaXMucHJvcHMuY2hpbGRyZW4sXG4gICAgICBzZXREZXBlbmRlbmN5TW9kdWxlczogdGhpcy5zZXREZXBlbmRlbmN5TW9kdWxlcyxcbiAgICAgIHJlZ2lzdGVyRXhwb3NlZEFQSTogdGhpcy5yZWdpc3RlckV4cG9zZWRBUEksXG4gICAgfTtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2gpIHtcbiAgICAgIGJhc2VQcm9wcy5zZWFyY2ggPSB7XG4gICAgICAgIHNlYXJjaENvbnRleHQ6IGNyZWF0ZVNlYXJjaENvbnRleHQodGhpcy5wcm9wcy5zZWFyY2gpLFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnN0YXRlLnNlYXJjaFRleHQsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5Ub2dnbGUpIHtcbiAgICAgIGJhc2VQcm9wcy5jb2x1bW5Ub2dnbGUgPSB7XG4gICAgICAgIHRvZ2dsZXM6IHRoaXMuc3RhdGUuY29sdW1uVG9nZ2xlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxUb29sa2l0Q29udGV4dC5Qcm92aWRlclxuICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgIHNlYXJjaFByb3BzOiB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnN0YXRlLnNlYXJjaFRleHQsXG4gICAgICAgICAgICBvblNlYXJjaDogdGhpcy5vblNlYXJjaCxcbiAgICAgICAgICAgIG9uQ2xlYXI6IHRoaXMub25DbGVhcixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNzdlByb3BzOiB7XG4gICAgICAgICAgICBvbkV4cG9ydDogdGhpcy5oYW5kbGVFeHBvcnRDU1YsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb2x1bW5Ub2dnbGVQcm9wczoge1xuICAgICAgICAgICAgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zLFxuICAgICAgICAgICAgdG9nZ2xlczogdGhpcy5zdGF0ZS5jb2x1bW5Ub2dnbGUsXG4gICAgICAgICAgICBvbkNvbHVtblRvZ2dsZTogdGhpcy5vbkNvbHVtblRvZ2dsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJhc2VQcm9wcyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICA8L1Rvb2xraXRDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBQcm92aWRlcjogVG9vbGtpdFByb3ZpZGVyLFxuICBDb25zdW1lcjogVG9vbGtpdENvbnRleHQuQ29uc3VtZXIsXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29sdW1uRGVzY3JpcHRpb24sIFNlYXJjaFByb3BzIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcC10YWJsZS1uZ1wiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgVG9vbGtpdFByb3ZpZGVyIGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IFRvb2xraXRQcm92aWRlcjtcbmV4cG9ydCBjb25zdCBUb29sa2l0Q29udGV4dCA9IENvbnRleHQ7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29sdW1uVG9nZ2xlIH0gZnJvbSBcIi4vc3JjL2NvbHVtbi10b2dnbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ1NWRXhwb3J0IH0gZnJvbSBcIi4vc3JjL2NzdlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTZWFyY2ggfSBmcm9tIFwiLi9zcmMvc2VhcmNoXCI7XG5cbi8qKlxuICogZGVjbGFyYXRpb24gZm9yIHRhYmxlIHRvb2xraXQgc3ViIG1vZHVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGVkU2VhcmNoUHJvcHMge1xuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIG9uU2VhcmNoOiAodmFsOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoTWF0Y2hQcm9wczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY29sdW1uOiBDb2x1bW5EZXNjcmlwdGlvbjxUPjtcbiAgcm93OiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU2VhcmNoUHJvcHM8VCBleHRlbmRzIG9iamVjdCA9IGFueT4ge1xuICBzZWFyY2hGb3JtYXR0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBkZWZhdWx0U2VhcmNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb25Db2x1bW5NYXRjaD86IChwcm9wczogU2VhcmNoTWF0Y2hQcm9wczxUPikgPT4gYm9vbGVhbjtcbiAgY3VzdG9tTWF0Y2hGdW5jPzogKChwcm9wczogU2VhcmNoTWF0Y2hQcm9wczxUPikgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQ7XG4gIGFmdGVyU2VhcmNoPzogKG5ld1Jlc3VsdDogVFtdKSA9PiB2b2lkIHwgdW5kZWZpbmVkO1xuICBzZWFyY2hDb250ZXh0PzogRnVuY3Rpb247XG4gIHNlYXJjaFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ1NWUHJvcHMge1xuICBmaWxlTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc2VwYXJhdG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZ25vcmVIZWFkZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpZ25vcmVGb290ZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBub0F1dG9CT00/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogZGVmYXVsdCBpcyB0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLThcbiAgICovXG4gIGJsb2JUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBleHBvcnRBbGw/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBvbmx5RXhwb3J0U2VsZWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgb25seUV4cG9ydEZpbHRlcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVRvb2xraXRQcm9wczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XG4gIGJvb3RzdHJhcDQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBib290c3RyYXA1PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgc2VhcmNoPzogVGFibGVTZWFyY2hQcm9wczxUPiB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGtleUZpZWxkOiBrZXlvZiBUIHwgc3RyaW5nO1xuICBkYXRhOiBUW107XG4gIHJlZj86IGFueTtcbiAgY29sdW1uczogQXJyYXk8Q29sdW1uRGVzY3JpcHRpb248VD4+O1xuICBjaGlsZHJlbjogKHByb3BzOiBUb29sa2l0Q29udGV4dFR5cGUpID0+IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgZXhwb3J0Q1NWPzogYm9vbGVhbiB8IENTVlByb3BzIHwgdW5kZWZpbmVkO1xuICBjb2x1bW5Ub2dnbGU/OiB7IFtkYXRhRmllbGQ6IHN0cmluZ106IGJvb2xlYW4gfSB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHNldERlcGVuZGVuY3lNb2R1bGVzPzogRnVuY3Rpb247XG4gIHJlZ2lzdGVyRXhwb3NlZEFQST86IEZ1bmN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xraXRDb250ZXh0VHlwZSB7XG4gIHNlYXJjaFByb3BzOiBJbmplY3RlZFNlYXJjaFByb3BzO1xuICBjc3ZQcm9wczoge1xuICAgIG9uRXhwb3J0OiAoc291cmNlPzogYW55KSA9PiB2b2lkO1xuICB9O1xuICBjb2x1bW5Ub2dnbGVQcm9wczoge1xuICAgIGNvbHVtbnM6IENvbHVtbkRlc2NyaXB0aW9uW107XG4gICAgLyoqXG4gICAgICogYXJyYXkgb2YgdG9nZ2xlZCBjb2x1bW5zXG4gICAgICovXG4gICAgdG9nZ2xlczogYm9vbGVhbltdO1xuICAgIG9uQ29sdW1uVG9nZ2xlOiAoZGF0YUZpZWxkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIH07XG4gIGJhc2VQcm9wczoge1xuICAgIC8qKlxuICAgICAqIHRhYmxlIGtleSBmaWVsZFxuICAgICAqL1xuICAgIGtleUZpZWxkOiBhbnk7XG4gICAgY29sdW1uczogQ29sdW1uRGVzY3JpcHRpb25bXTtcbiAgICBkYXRhOiBhbnlbXTtcbiAgICBib290c3RyYXA0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBib290c3RyYXA1PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb2dnbGVMaXN0UHJvcHMge1xuICBjb2x1bW5zOiBDb2x1bW5EZXNjcmlwdGlvbltdO1xuICAvKipcbiAgICogYXJyYXkgb2YgdG9nZ2xlZCBjb2x1bW5zXG4gICAqL1xuICB0b2dnbGVzOiBib29sZWFuW107XG4gIG9uQ29sdW1uVG9nZ2xlOiAoZGF0YUZpZWxkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGJ0bkNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY2xhc3NOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb250ZXh0dWFsPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydENTVkJ1dHRvblByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb25FeHBvcnQ6ICgpID0+IHZvaWQ7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDtcbiAgY2xhc3NOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEJhclByb3BzPFQgPSBhbnk+IGV4dGVuZHMgU2VhcmNoUHJvcHM8VD4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcyB8IHVuZGVmaW5lZDtcbiAgZGVsYXk/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHNlYXJjaFRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRhYmxlSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlZj86IFJlYWN0LlJlZk9iamVjdDxSZWFjdC5Db21wb25lbnQ8U2VhcmNoUHJvcHM8VD4+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGVhclNlYXJjaEJ1dHRvblByb3BzIHtcbiAgb25DbGVhcj86ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgY2xhc3NOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0ZXh0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZVRvb2xraXRQcm9wcyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgVG9vbGtpdENvbnRleHQgZnJvbSBcIi4vY29udGV4dFwiO1xuXG5jb25zdCBUb29sa2l0cHJvdmlkZXIgPSAoXG4gIHByb3BzOiBUYWJsZVRvb2xraXRQcm9wc1xuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCA9PiAoXG4gIDxUb29sa2l0Q29udGV4dC5Qcm92aWRlciB7Li4ucHJvcHN9PlxuICAgIDxUb29sa2l0Q29udGV4dC5Db25zdW1lcj5cbiAgICAgIHsodG9va0tpdFByb3BzKSA9PiBwcm9wcy5jaGlsZHJlbih0b29rS2l0UHJvcHMpfVxuICAgIDwvVG9vbGtpdENvbnRleHQuQ29uc3VtZXI+XG4gIDwvVG9vbGtpdENvbnRleHQuUHJvdmlkZXI+XG4pO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgVG9vbGtpdHByb3ZpZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgVG9nZ2xlTGlzdCBmcm9tICcuL3RvZ2dsZS1saXN0JztcblxuZXhwb3J0IGRlZmF1bHQgeyBUb2dnbGVMaXN0IH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb2x1bW5EZXNjcmlwdGlvbiB9IGZyb20gXCJyZWFjdC1ib290c3RyYXAtdGFibGUtbmdcIjtcbmltcG9ydCB7IFRvZ2dsZUxpc3RQcm9wcyB9IGZyb20gXCIuLi8uLlwiO1xuXG5jb25zdCBUb2dnbGVMaXN0ID0gKHtcbiAgY29sdW1ucyxcbiAgb25Db2x1bW5Ub2dnbGUsXG4gIHRvZ2dsZXMsXG4gIGJ0bkNsYXNzTmFtZSA9IFwiXCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIGNvbnRleHR1YWwgPSBcInByaW1hcnlcIlxufTogVG9nZ2xlTGlzdFByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e2BidG4tZ3JvdXAgYnRuLWdyb3VwLXRvZ2dsZSAke2NsYXNzTmFtZX1gfVxuICAgIGRhdGEtdG9nZ2xlPVwiYnV0dG9uc1wiXG4gID5cbiAgICB7Y29sdW1uc1xuICAgICAgLm1hcCgoY29sdW1uOiBDb2x1bW5EZXNjcmlwdGlvbikgPT4gKHtcbiAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICB0b2dnbGU6IHRvZ2dsZXNbY29sdW1uLmRhdGFGaWVsZF0sXG4gICAgICB9KSlcbiAgICAgIC5tYXAoKGNvbHVtbjogQ29sdW1uRGVzY3JpcHRpb24pID0+IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGtleT17Y29sdW1uLmRhdGFGaWVsZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake2J0bkNsYXNzTmFtZX0gYnRuIGJ0bi0ke2NvbnRleHR1YWx9ICR7XG4gICAgICAgICAgICBjb2x1bW4udG9nZ2xlID8gXCJhY3RpdmVcIiA6IFwiXCJcbiAgICAgICAgICB9YH1cbiAgICAgICAgICBkYXRhLXRvZ2dsZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1wcmVzc2VkPXtjb2x1bW4udG9nZ2xlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJ9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25Db2x1bW5Ub2dnbGUoY29sdW1uLmRhdGFGaWVsZCl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y29sdW1uLnRleHR9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gIDwvZGl2PlxuKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IFRvZ2dsZUxpc3Q7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEV4cG9ydENTVkJ1dHRvblByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmNvbnN0IGV4cG9ydENTVkJ1dHRvbkRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiBcIlwiLFxuICBzdHlsZToge30sXG59O1xuXG5jb25zdCBFeHBvcnRDU1ZCdXR0b24gPSAoXG4gIHByb3BzOiBFeHBvcnRDU1ZCdXR0b25Qcm9wc1xuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCA9PiB7XG4gIGNvbnN0IHsgb25FeHBvcnQsIGNoaWxkcmVuLCBjbGFzc05hbWUsIC4uLnJlc3QgfSA9IHsgLi4uZXhwb3J0Q1NWQnV0dG9uRGVmYXVsdFByb3BzLCAuLi5wcm9wcyB9O1xuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2ByZWFjdC1icy10YWJsZS1jc3YtYnRuIGJ0biBidG4tZGVmYXVsdCBidG4tc2Vjb25kYXJ5ICR7Y2xhc3NOYW1lfWB9XG4gICAgICBvbkNsaWNrPXsoKSA9PiBvbkV4cG9ydCgpfVxuICAgICAgey4uLnJlc3R9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IEV4cG9ydENTVkJ1dHRvbjtcbiIsIi8qIGVzbGludCBuby11bm5lZWRlZC10ZXJuYXJ5OiAwICovXG5pbXBvcnQgRmlsZVNhdmVyIGZyb20gXCJmaWxlLXNhdmVyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRNZXRhSW5mbyA9IChjb2x1bW5zOiBhbnkpID0+XG4gIGNvbHVtbnNcbiAgICAubWFwKChjb2x1bW46IGFueSkgPT4gKHtcbiAgICAgIGZpZWxkOiBjb2x1bW4uZGF0YUZpZWxkLFxuICAgICAgdHlwZTogY29sdW1uLmNzdlR5cGUgfHwgU3RyaW5nLFxuICAgICAgZm9ybWF0dGVyOiBjb2x1bW4uY3N2Rm9ybWF0dGVyLFxuICAgICAgZm9ybWF0RXh0cmFEYXRhOiBjb2x1bW4uZm9ybWF0RXh0cmFEYXRhLFxuICAgICAgaGVhZGVyOiBjb2x1bW4uY3N2VGV4dCB8fCBjb2x1bW4udGV4dCxcbiAgICAgIGV4cG9ydDogY29sdW1uLmNzdkV4cG9ydCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXG4gICAgICByb3c6IE51bWJlcihjb2x1bW4ucm93KSB8fCAwLFxuICAgICAgcm93U3BhbjogTnVtYmVyKGNvbHVtbi5yb3dTcGFuKSB8fCAxLFxuICAgICAgY29sU3BhbjogTnVtYmVyKGNvbHVtbi5jb2xTcGFuKSB8fCAxLFxuICAgICAgZm9vdGVyOiBjb2x1bW4uZm9vdGVyLFxuICAgICAgZm9vdGVyRm9ybWF0dGVyOiBjb2x1bW4uZm9vdGVyRm9ybWF0dGVyLFxuICAgIH0pKVxuICAgIC5maWx0ZXIoKF86IGFueSkgPT4gXy5leHBvcnQpO1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtID0gKFxuICBkYXRhOiBhbnksXG4gIG1ldGE6IGFueSxcbiAgY29sdW1uczogYW55LFxuICBfOiBhbnksXG4gIHsgc2VwYXJhdG9yLCBpZ25vcmVIZWFkZXIsIGlnbm9yZUZvb3RlciB9OiBhbnlcbikgPT4ge1xuICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IG1ldGEuZmlsdGVyKChtOiBhbnkpID0+IG0uZXhwb3J0KTtcbiAgbGV0IGNvbnRlbnQgPSBcIlwiO1xuICAvLyBleHRyYWN0IGNzdiBoZWFkZXJcbiAgaWYgKCFpZ25vcmVIZWFkZXIpIHtcbiAgICBjb250ZW50ICs9IHZpc2libGVDb2x1bW5zLm1hcCgobTogYW55KSA9PiBgXCIke20uaGVhZGVyfVwiYCkuam9pbihzZXBhcmF0b3IpO1xuICAgIGNvbnRlbnQgKz0gXCJcXG5cIjtcbiAgfVxuICAvLyBleHRyYWN0IGNzdiBib2R5XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNvbnRlbnQ7XG4gIGNvbnRlbnQgKz0gZGF0YVxuICAgIC5tYXAoKHJvdzogYW55LCByb3dJbmRleDogYW55KSA9PlxuICAgICAgdmlzaWJsZUNvbHVtbnNcbiAgICAgICAgLm1hcCgobTogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IGNlbGxDb250ZW50ID0gXy5nZXQocm93LCBtLmZpZWxkKTtcbiAgICAgICAgICBpZiAobS5mb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgIGNlbGxDb250ZW50ID0gbS5mb3JtYXR0ZXIoXG4gICAgICAgICAgICAgIGNlbGxDb250ZW50LFxuICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgICBtLmZvcm1hdEV4dHJhRGF0YVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG0udHlwZSA9PT0gU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwiJHtgJHtjZWxsQ29udGVudH1gLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY2VsbENvbnRlbnQ7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKHNlcGFyYXRvcilcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgaWYgKCFpZ25vcmVGb290ZXIpIHtcbiAgICBjb250ZW50ICs9IFwiXFxuXCI7XG4gICAgY29udGVudCArPSB2aXNpYmxlQ29sdW1uc1xuICAgICAgLm1hcCgobTogYW55LCBpOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBtLmZvb3RlciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uRGF0YSA9IF8ucGx1Y2soZGF0YSwgY29sdW1uc1tpXS5kYXRhRmllbGQpO1xuICAgICAgICAgIHJldHVybiBgXCIke20uZm9vdGVyKGNvbHVtbkRhdGEsIGNvbHVtbnNbaV0sIGkpfVwiYDtcbiAgICAgICAgfSBlbHNlIGlmIChtLmZvb3RlckZvcm1hdHRlcikge1xuICAgICAgICAgIHJldHVybiBgXCIke20uZm9vdGVyRm9ybWF0dGVyKGNvbHVtbnNbaV0sIGkpfVwiYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYFwiJHttLmZvb3Rlcn1cImA7XG4gICAgICB9KVxuICAgICAgLmpvaW4oc2VwYXJhdG9yKTtcbiAgfVxuICByZXR1cm4gY29udGVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlID0gKGNvbnRlbnQ6IGFueSwgeyBub0F1dG9CT00sIGZpbGVOYW1lLCBibG9iVHlwZSB9OiBhbnkpID0+IHtcbiAgRmlsZVNhdmVyLnNhdmVBcyhcbiAgICBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogYmxvYlR5cGUgfSksXG4gICAgZmlsZU5hbWUsXG4gICAgbm9BdXRvQk9NXG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgRXhwb3J0Q1NWQnV0dG9uIGZyb20gJy4vYnV0dG9uJztcblxuZXhwb3J0IGRlZmF1bHQgeyBFeHBvcnRDU1ZCdXR0b24gfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgZ2V0TWV0YUluZm8sIHNhdmUsIHRyYW5zZm9ybSB9IGZyb20gXCIuLi9jc3YvZXhwb3J0ZXJcIjtcblxuY29uc3QgY3N2RGVmYXVsdE9wdGlvbnMgPSB7XG4gIGZpbGVOYW1lOiBcInNwcmVhZHNoZWV0LmNzdlwiLFxuICBzZXBhcmF0b3I6IFwiLFwiLFxuICBpZ25vcmVIZWFkZXI6IGZhbHNlLFxuICBpZ25vcmVGb290ZXI6IHRydWUsXG4gIG5vQXV0b0JPTTogdHJ1ZSxcbiAgYmxvYlR5cGU6IFwidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04XCIsXG4gIGV4cG9ydEFsbDogdHJ1ZSxcbiAgb25seUV4cG9ydFNlbGVjdGlvbjogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCAoQmFzZTogYW55KSA9PlxuICBjbGFzcyBDU1ZPcGVyYXRpb24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8dHlwZW9mIEJhc2U+IHtcbiAgICBfOiBhbnk7XG4gICAgdGFibGVFeHBvc2VkQVBJRW1pdHRlcjogYW55O1xuXG4gICAgaGFuZGxlRXhwb3J0Q1NWID0gKHNvdXJjZTogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGNvbHVtbnMsIGV4cG9ydENTViwga2V5RmllbGQgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBtZXRhID0gZ2V0TWV0YUluZm8oY29sdW1ucyk7XG4gICAgICBjb25zdCBvcHRpb25zID1cbiAgICAgICAgZXhwb3J0Q1NWID09PSB0cnVlXG4gICAgICAgICAgPyBjc3ZEZWZhdWx0T3B0aW9uc1xuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAuLi5jc3ZEZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgICAgLi4uZXhwb3J0Q1NWLFxuICAgICAgICAgICAgfTtcblxuICAgICAgLy8gZ2V0IGRhdGEgZm9yIGNzdiBleHBvcnRcbiAgICAgIGxldCBkYXRhOiBhbnk7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBkYXRhID0gc291cmNlO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmV4cG9ydEFsbCkge1xuICAgICAgICBkYXRhID0gdGhpcy5wcm9wcy5kYXRhO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLm9ubHlFeHBvcnRGaWx0ZXJlZCkge1xuICAgICAgICBjb25zdCBwYXlsb2FkOiB7IHJlc3VsdDogYW55IH0gPSB7IHJlc3VsdDogdW5kZWZpbmVkIH07XG4gICAgICAgIHRoaXMudGFibGVFeHBvc2VkQVBJRW1pdHRlci5lbWl0KFwiZ2V0LmZpbHRlcmVkLnJvd3NcIiwgcGF5bG9hZCk7XG4gICAgICAgIGRhdGEgPSBwYXlsb2FkLnJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IHJlc3VsdDogdW5kZWZpbmVkIH07XG4gICAgICAgIHRoaXMudGFibGVFeHBvc2VkQVBJRW1pdHRlci5lbWl0KFwiZ2V0LnRhYmxlLmRhdGFcIiwgcGF5bG9hZCk7XG4gICAgICAgIGRhdGEgPSBwYXlsb2FkLnJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgLy8gZmlsdGVyIGRhdGEgYnkgcm93IHNlbGVjdGlvblxuICAgICAgaWYgKG9wdGlvbnMub25seUV4cG9ydFNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0geyByZXN1bHQ6IHVuZGVmaW5lZCB9O1xuICAgICAgICB0aGlzLnRhYmxlRXhwb3NlZEFQSUVtaXR0ZXIuZW1pdChcImdldC5zZWxlY3RlZC5yb3dzXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gcGF5bG9hZC5yZXN1bHQgPz8gW107XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gc2VsZWN0aW9ucy5pbmNsdWRlcyhyb3dba2V5RmllbGRdKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0cmFuc2Zvcm0oZGF0YSwgbWV0YSwgY29sdW1ucywgdGhpcy5fLCBvcHRpb25zKTtcbiAgICAgIHNhdmUoY29udGVudCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IGNzdk9wZXJhdGlvbiBmcm9tICcuL2Nzdic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3N2T3BlcmF0aW9uXG59O1xuIiwiLyogZXNsaW50IGNhbWVsY2FzZTogMCAqL1xuLyogZXNsaW50IG5vLXJldHVybi1hc3NpZ246IDAgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFNlYXJjaEJhclByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmNvbnN0IGhhbmRsZURlYm91bmNlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IHZvaWQ+KFxuICBmdW5jOiBULFxuICB3YWl0OiBudW1iZXIsXG4gIGltbWVkaWF0ZT86IGJvb2xlYW5cbikgPT4ge1xuICBsZXQgdGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICB0aW1lb3V0ID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQgfHwgMCk7XG5cbiAgICBpZiAoY2FsbE5vdykge1xuICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH07XG59O1xuXG5pbnRlcmZhY2UgU2VhcmNoQmFyU3RhdGUge1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5jbGFzcyBTZWFyY2hCYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8U2VhcmNoQmFyUHJvcHMsIFNlYXJjaEJhclN0YXRlPiB7XG4gIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFNlYXJjaEJhclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICB2YWx1ZTogcHJvcHMuc2VhcmNoVGV4dCA/PyBcIlwiLFxuICAgIH07XG4gIH1cblxuICBvbkNoYW5nZVZhbHVlID0gKGU6IGFueSkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogZS50YXJnZXQudmFsdWUgfSk7XG4gIH07XG5cbiAgb25LZXl1cCA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlbGF5ID0gMjUwLCBvblNlYXJjaCB9ID0gdGhpcy5wcm9wcyBhcyBhbnk7XG4gICAgY29uc3QgZGVib3VuY2VDYWxsYmFjayA9IGhhbmRsZURlYm91bmNlKCgpID0+IHtcbiAgICAgIG9uU2VhcmNoISh0aGlzLmlucHV0Py52YWx1ZSA/PyBcIlwiKTtcbiAgICB9LCBkZWxheSk7XG4gICAgZGVib3VuY2VDYWxsYmFjaygpO1xuICB9O1xuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IFNlYXJjaEJhclByb3BzKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2VhcmNoVGV4dCAhPT0gcHJldlByb3BzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdGhpcy5wcm9wcy5zZWFyY2hUZXh0IHx8IFwiXCIgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSA9IFwiXCIsXG4gICAgICBzdHlsZSA9IHt9LFxuICAgICAgcGxhY2Vob2xkZXIgPSBcIlNlYXJjaFwiLFxuICAgICAgdGFibGVJZCA9IFwiMFwiLFxuICAgICAgc2VhcmNoVGV4dCA9IFwiU2VhcmNoIHRoaXMgdGFibGVcIixcbiAgICB9ID0gdGhpcy5wcm9wcyBhcyBhbnk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGxhYmVsIGh0bWxGb3I9e2BzZWFyY2gtYmFyLSR7dGFibGVJZH1gfSBjbGFzc05hbWU9XCJzZWFyY2gtbGFiZWxcIj5cbiAgICAgICAgPHNwYW4gaWQ9e2BzZWFyY2gtYmFyLSR7dGFibGVJZH0tbGFiZWxgfSBjbGFzc05hbWU9XCJzci1vbmx5IHZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgIHtzZWFyY2hUZXh0fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17KG4pID0+IHsgdGhpcy5pbnB1dCA9IG47IH19XG4gICAgICAgICAgaWQ9e2BzZWFyY2gtYmFyLSR7dGFibGVJZH1gfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBzdHlsZT17c3R5bGUgYXMgYW55fVxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YHNlYXJjaC1iYXItJHt0YWJsZUlkfS1sYWJlbGB9XG4gICAgICAgICAgb25LZXlVcD17KCkgPT4gdGhpcy5vbktleXVwKCl9XG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2VWYWx1ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2Bmb3JtLWNvbnRyb2wgJHtjbGFzc05hbWV9YH1cbiAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS52YWx1ZX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIC8+XG4gICAgICA8L2xhYmVsPlxuICAgICk7XG4gIH1cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6ICcnLFxuICAgIHN0eWxlOiB7fSxcbiAgICBwbGFjZWhvbGRlcjogJ1NlYXJjaCcsXG4gICAgZGVsYXk6IDI1MCxcbiAgICBzZWFyY2hUZXh0OiAnJyxcbiAgICB0YWJsZUlkOiAnMCcsXG4gICAgc3JUZXh0OiAnU2VhcmNoIHRoaXMgdGFibGUnXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaEJhcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENsZWFyU2VhcmNoQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuY29uc3QgQ2xlYXJCdXR0b24gPSAoe1xuICBvbkNsZWFyLFxuICB0ZXh0ID0gXCJDbGVhclwiLFxuICBjbGFzc05hbWUgPSBcIlwiLFxufTogQ2xlYXJTZWFyY2hCdXR0b25Qcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwgPT4gKFxuICA8YnV0dG9uIGNsYXNzTmFtZT17YGJ0biBidG4tZGVmYXVsdCBidG4tc2Vjb25kYXJ5ICR7Y2xhc3NOYW1lfWB9IG9uQ2xpY2s9e29uQ2xlYXJ9PlxuICAgIHt0ZXh0fVxuICA8L2J1dHRvbj5cbik7XG5cblxuZXhwb3J0IGRlZmF1bHQgQ2xlYXJCdXR0b247XG4iLCIvKiBlc2xpbnQgcmVhY3QvcHJvcC10eXBlczogMCAqL1xuLyogZXNsaW50IHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wczogMCAqL1xuLyogZXNsaW50IG5vLWNvbnRpbnVlOiAwICovXG4vKiBlc2xpbnQgbm8tbG9uZWx5LWlmOiAwICovXG4vKiBlc2xpbnQgY2xhc3MtbWV0aG9kcy11c2UtdGhpczogMCAqL1xuLyogZXNsaW50IGNhbWVsY2FzZTogMCAqL1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgU2VhcmNoTWF0Y2hQcm9wcywgVGFibGVTZWFyY2hQcm9wcyB9IGZyb20gXCIuLi8uLlwiO1xuXG5pbnRlcmZhY2UgRGF0YUNoYW5nZUxpc3RlbmVyIHtcbiAgZW1pdDogKGV2ZW50OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBTZWFyY2hQcm92aWRlclByb3BzIGV4dGVuZHMgU2VhcmNoTWF0Y2hQcm9wcyB7XG4gIGRhdGE6IGFueVtdO1xuICBkYXRhQ2hhbmdlTGlzdGVuZXI/OiBEYXRhQ2hhbmdlTGlzdGVuZXI7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmludGVyZmFjZSBTZWFyY2hQcm92aWRlclN0YXRlIHtcbiAgZGF0YTogYW55W107XG59XG5cbmV4cG9ydCBkZWZhdWx0IChcbiAgICBvcHRpb25zOiBUYWJsZVNlYXJjaFByb3BzID0ge1xuICAgICAgc2VhcmNoRm9ybWF0dGVkOiBmYWxzZSxcbiAgICAgIGFmdGVyU2VhcmNoOiB1bmRlZmluZWQsXG4gICAgICBvbkNvbHVtbk1hdGNoOiAoKSA9PiBmYWxzZSxcbiAgICB9XG4gICkgPT5cbiAgKFxuICAgIF86IGFueSxcbiAgICBpc1JlbW90ZVNlYXJjaDogKCkgPT4gYm9vbGVhbixcbiAgICBoYW5kbGVSZW1vdGVTZWFyY2hDaGFuZ2U6IChzZWFyY2hUZXh0OiBzdHJpbmcpID0+IHZvaWRcbiAgKSA9PiB7XG4gICAgY29uc3QgU2VhcmNoQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8YW55PihudWxsKTtcblxuICAgIGNsYXNzIFNlYXJjaFByb3ZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICAgICAgU2VhcmNoUHJvdmlkZXJQcm9wcyxcbiAgICAgIFNlYXJjaFByb3ZpZGVyU3RhdGVcbiAgICA+IHtcbiAgICAgIGNvbnN0cnVjdG9yKHByb3BzOiBTZWFyY2hQcm92aWRlclByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgbGV0IGluaXRpYWxEYXRhID0gcHJvcHMuZGF0YTtcbiAgICAgICAgaWYgKGlzUmVtb3RlU2VhcmNoKCkgJiYgdGhpcy5wcm9wcy5zZWFyY2hUZXh0ICE9PSBcIlwiKSB7XG4gICAgICAgICAgaGFuZGxlUmVtb3RlU2VhcmNoQ2hhbmdlKHRoaXMucHJvcHMuc2VhcmNoVGV4dCEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluaXRpYWxEYXRhID0gdGhpcy5zZWFyY2gocHJvcHMpO1xuICAgICAgICAgIHRoaXMudHJpZ2dlckxpc3RlbmVyKGluaXRpYWxEYXRhLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0geyBkYXRhOiBpbml0aWFsRGF0YSB9O1xuICAgICAgfVxuXG4gICAgICBnZXRTZWFyY2hlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZGF0YTtcbiAgICAgIH1cblxuICAgICAgdHJpZ2dlckxpc3RlbmVyKHJlc3VsdDogYW55LCBza2lwSW5pdD86IGFueSkge1xuICAgICAgICBpZiAob3B0aW9ucy5hZnRlclNlYXJjaCAmJiAhc2tpcEluaXQpIHtcbiAgICAgICAgICBvcHRpb25zLmFmdGVyU2VhcmNoKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGF0YUNoYW5nZUxpc3RlbmVyKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5kYXRhQ2hhbmdlTGlzdGVuZXIuZW1pdChcImZpbHRlckNoYW5nZWRcIiwgcmVzdWx0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogU2VhcmNoUHJvdmlkZXJQcm9wcykge1xuICAgICAgICBpZiAocHJldlByb3BzLnNlYXJjaFRleHQgIT09IHRoaXMucHJvcHMuc2VhcmNoVGV4dCkge1xuICAgICAgICAgIGlmIChpc1JlbW90ZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICBoYW5kbGVSZW1vdGVTZWFyY2hDaGFuZ2UodGhpcy5wcm9wcy5zZWFyY2hUZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2godGhpcy5wcm9wcyk7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJMaXN0ZW5lcihyZXN1bHQpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNSZW1vdGVTZWFyY2goKSkge1xuICAgICAgICAgICAgaWYgKCFfLmlzRXF1YWwodGhpcy5zdGF0ZS5kYXRhLCB0aGlzLnByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkYXRhOiB0aGlzLnByb3BzLmRhdGEgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghXy5pc0VxdWFsKHByZXZQcm9wcy5kYXRhLCB0aGlzLnByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaCh0aGlzLnByb3BzKTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckxpc3RlbmVyKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlYXJjaChwcm9wczogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSwgY29sdW1ucyB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHNlYXJjaFRleHQgPSBwcm9wcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBkYXRhLmZpbHRlcigocm93OiBhbnksIHJpZHg6IGFueSkgPT4ge1xuICAgICAgICAgIGZvciAobGV0IGNpZHggPSAwOyBjaWR4IDwgY29sdW1ucy5sZW5ndGg7IGNpZHggKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjaWR4XTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uc2VhcmNoYWJsZSA9PT0gZmFsc2UpIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHRhcmdldFZhbHVlID0gXy5nZXQocm93LCBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uZm9ybWF0dGVyICYmIG9wdGlvbnMuc2VhcmNoRm9ybWF0dGVkKSB7XG4gICAgICAgICAgICAgIHRhcmdldFZhbHVlID0gY29sdW1uLmZvcm1hdHRlcihcbiAgICAgICAgICAgICAgICB0YXJnZXRWYWx1ZSxcbiAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgcmlkeCxcbiAgICAgICAgICAgICAgICBjb2x1bW4uZm9ybWF0RXh0cmFEYXRhXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5maWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IGNvbHVtbi5maWx0ZXJWYWx1ZSh0YXJnZXRWYWx1ZSwgcm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLm9uQ29sdW1uTWF0Y2gpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG9wdGlvbnMub25Db2x1bW5NYXRjaCh7XG4gICAgICAgICAgICAgICAgICBzZWFyY2hUZXh0LFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHRhcmdldFZhbHVlLFxuICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodGFyZ2V0VmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHRhcmdldFZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0VmFsdWUgPSB0YXJnZXRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFZhbHVlLmluZGV4T2Yoc2VhcmNoVGV4dCkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8U2VhcmNoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBkYXRhOiB0aGlzLnN0YXRlLmRhdGEgfX0+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICA8L1NlYXJjaENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIFByb3ZpZGVyOiBTZWFyY2hQcm92aWRlcixcbiAgICAgIENvbnN1bWVyOiBTZWFyY2hDb250ZXh0LkNvbnN1bWVyLFxuICAgIH07XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBTZWFyY2hCYXIgZnJvbSAnLi9TZWFyY2hCYXInO1xuaW1wb3J0IENsZWFyU2VhcmNoQnV0dG9uIGZyb20gJy4vY2xlYXItYnV0dG9uJztcblxuZXhwb3J0IGRlZmF1bHQgeyBTZWFyY2hCYXIsIENsZWFyU2VhcmNoQnV0dG9uIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBPcGVyYXRpb24gZnJvbSBcIi4vc3JjL29wXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChCYXNlOiBhbnkpID0+XG4gIGNsYXNzIFN0YXRlbGVzc09wZXJhdGlvbiBleHRlbmRzIE9wZXJhdGlvbi5jc3ZPcGVyYXRpb24oQmFzZSkge1xuICAgIHJlZ2lzdGVyRXhwb3NlZEFQSSA9ICh0YWJsZUV4cG9zZWRBUElFbWl0dGVyOiBhbnkpID0+IHtcbiAgICAgIHRoaXMudGFibGVFeHBvc2VkQVBJRW1pdHRlciA9IHRhYmxlRXhwb3NlZEFQSUVtaXR0ZXI7XG4gICAgfTtcbiAgfTtcbiIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNDQyX187IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4OCk7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180NDJfXyIsImIiLCJhIiwiYXV0b0JvbSIsImNvbnNvbGUiLCJ3YXJuIiwidGVzdCIsInR5cGUiLCJCbG9iIiwiYyIsImQiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJyZXNwb25zZVR5cGUiLCJvbmxvYWQiLCJnIiwicmVzcG9uc2UiLCJvbmVycm9yIiwiZXJyb3IiLCJzZW5kIiwic3RhdHVzIiwiZSIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFdmVudCIsImluaXRNb3VzZUV2ZW50Iiwid2luZG93IiwiZiIsImdsb2JhbCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInNhdmVBcyIsIkhUTUxBbmNob3JFbGVtZW50IiwicHJvdG90eXBlIiwiaCIsImkiLCJVUkwiLCJ3ZWJraXRVUkwiLCJqIiwiY3JlYXRlRWxlbWVudCIsIm5hbWUiLCJkb3dubG9hZCIsInJlbCIsImhyZWYiLCJvcmlnaW4iLCJsb2NhdGlvbiIsInRhcmdldCIsImNyZWF0ZU9iamVjdFVSTCIsInNldFRpbWVvdXQiLCJyZXZva2VPYmplY3RVUkwiLCJtc1NhdmVPck9wZW5CbG9iIiwidGl0bGUiLCJib2R5IiwiaW5uZXJUZXh0IiwiSFRNTEVsZW1lbnQiLCJzYWZhcmkiLCJGaWxlUmVhZGVyIiwiayIsIm9ubG9hZGVuZCIsInJlc3VsdCIsInJlcGxhY2UiLCJyZWFkQXNEYXRhVVJMIiwibCIsIm0iLCJUb29sa2l0Q29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJzZWFyY2hQcm9wcyIsInNlYXJjaFRleHQiLCJvblNlYXJjaCIsInZhbCIsIm9uQ2xlYXIiLCJjc3ZQcm9wcyIsIm9uRXhwb3J0IiwiY29sdW1uVG9nZ2xlUHJvcHMiLCJjb2x1bW5zIiwidG9nZ2xlcyIsIm9uQ29sdW1uVG9nZ2xlIiwiZGF0YUZpZWxkIiwiYmFzZVByb3BzIiwia2V5RmllbGQiLCJ1bmRlZmluZWQiLCJkYXRhIiwiYm9vdHN0cmFwNCIsImJvb3RzdHJhcDUiLCJUb29sa2l0UHJvdmlkZXIiLCJDb21wb25lbnQiLCJzdGF0aWMiLCJzZWFyY2giLCJleHBvcnRDU1YiLCJfIiwic3RhdGUiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3VwZXIiLCJpbml0aWFsU3RhdGUiLCJjb2x1bW5Ub2dnbGUiLCJkZWZhdWx0U2VhcmNoIiwidGhpcyIsImJpbmQiLCJzZXREZXBlbmRlbmN5TW9kdWxlcyIsInJlZHVjZSIsIm9iaiIsImNvbHVtbiIsImhpZGRlbiIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsImN1cnJDb2x1bW5Ub2dnbGUiLCJwcm9wc0NvbHVtblRvZ2dsZSIsInNldFN0YXRlIiwicmVuZGVyIiwiY2hpbGRyZW4iLCJyZWdpc3RlckV4cG9zZWRBUEkiLCJzZWFyY2hDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsImhhbmRsZUV4cG9ydENTViIsIkNvbnN1bWVyIiwiZGVmYXVsdCIsInRvb2tLaXRQcm9wcyIsIlRvZ2dsZUxpc3QiLCJidG5DbGFzc05hbWUiLCJjbGFzc05hbWUiLCJjb250ZXh0dWFsIiwibWFwIiwidG9nZ2xlIiwia2V5Iiwib25DbGljayIsInRleHQiLCJleHBvcnRDU1ZCdXR0b25EZWZhdWx0UHJvcHMiLCJzdHlsZSIsInJlc3QiLCJnZXRNZXRhSW5mbyIsImZpZWxkIiwiY3N2VHlwZSIsIlN0cmluZyIsImZvcm1hdHRlciIsImNzdkZvcm1hdHRlciIsImZvcm1hdEV4dHJhRGF0YSIsImhlYWRlciIsImNzdlRleHQiLCJleHBvcnQiLCJjc3ZFeHBvcnQiLCJyb3ciLCJOdW1iZXIiLCJyb3dTcGFuIiwiY29sU3BhbiIsImZvb3RlciIsImZvb3RlckZvcm1hdHRlciIsImZpbHRlciIsInRyYW5zZm9ybSIsIm1ldGEiLCJzZXBhcmF0b3IiLCJpZ25vcmVIZWFkZXIiLCJpZ25vcmVGb290ZXIiLCJ2aXNpYmxlQ29sdW1ucyIsImNvbnRlbnQiLCJqb2luIiwibGVuZ3RoIiwicm93SW5kZXgiLCJjZWxsQ29udGVudCIsImdldCIsImNvbHVtbkRhdGEiLCJwbHVjayIsInNhdmUiLCJub0F1dG9CT00iLCJmaWxlTmFtZSIsImJsb2JUeXBlIiwiRXhwb3J0Q1NWQnV0dG9uIiwiY3N2RGVmYXVsdE9wdGlvbnMiLCJleHBvcnRBbGwiLCJvbmx5RXhwb3J0U2VsZWN0aW9uIiwiQmFzZSIsInRhYmxlRXhwb3NlZEFQSUVtaXR0ZXIiLCJzb3VyY2UiLCJvcHRpb25zIiwib25seUV4cG9ydEZpbHRlcmVkIiwicGF5bG9hZCIsImVtaXQiLCJzZWxlY3Rpb25zIiwiaW5jbHVkZXMiLCJjc3ZPcGVyYXRpb24iLCJoYW5kbGVEZWJvdW5jZSIsImZ1bmMiLCJ3YWl0IiwiaW1tZWRpYXRlIiwidGltZW91dCIsImFyZ3MiLCJjYWxsTm93IiwiY2xlYXJUaW1lb3V0IiwiYXBwbHkiLCJTZWFyY2hCYXIiLCJpbnB1dCIsIm9uQ2hhbmdlVmFsdWUiLCJvbktleXVwIiwiZGVsYXkiLCJkZWJvdW5jZUNhbGxiYWNrIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicGxhY2Vob2xkZXIiLCJ0YWJsZUlkIiwiaHRtbEZvciIsImlkIiwicmVmIiwibiIsIm9uS2V5VXAiLCJvbkNoYW5nZSIsInNyVGV4dCIsInNlYXJjaEZvcm1hdHRlZCIsImFmdGVyU2VhcmNoIiwib25Db2x1bW5NYXRjaCIsImlzUmVtb3RlU2VhcmNoIiwiaGFuZGxlUmVtb3RlU2VhcmNoQ2hhbmdlIiwiU2VhcmNoQ29udGV4dCIsIlNlYXJjaFByb3ZpZGVyIiwiaW5pdGlhbERhdGEiLCJ0cmlnZ2VyTGlzdGVuZXIiLCJnZXRTZWFyY2hlZCIsInNraXBJbml0IiwiZGF0YUNoYW5nZUxpc3RlbmVyIiwiaXNFcXVhbCIsInRvTG93ZXJDYXNlIiwicmlkeCIsImNpZHgiLCJzZWFyY2hhYmxlIiwidGFyZ2V0VmFsdWUiLCJmaWx0ZXJWYWx1ZSIsInRvU3RyaW5nIiwiaW5kZXhPZiIsIkNsZWFyU2VhcmNoQnV0dG9uIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImNhbGwiLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iXSwic291cmNlUm9vdCI6IiJ9
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactBootstrapTableNgToolkit=t(require("react")):e.ReactBootstrapTableNgToolkit=t(e.React)}(self,e=>(()=>{var t={213(e,t,o){var r,a,s;a=[],void 0===(s="function"==typeof(r=function(){"use strict";function t(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function r(e,t,o){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){i(r.response,t,o)},r.onerror=function(){console.error("could not download file")},r.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var n="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof o.g&&o.g.global===o.g?o.g:void 0,l=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=n.saveAs||("object"!=typeof window||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(e,t,o){var l=n.URL||n.webkitURL,i=document.createElement("a");t=t||e.name||"download",i.download=t,i.rel="noopener","string"==typeof e?(i.href=e,i.origin===location.origin?s(i):a(i.href)?r(e,t,o):s(i,i.target="_blank")):(i.href=l.createObjectURL(e),setTimeout(function(){l.revokeObjectURL(i.href)},4e4),setTimeout(function(){s(i)},0))}:"msSaveOrOpenBlob"in navigator?function(e,o,n){if(o=o||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,n),o);else if(a(e))r(e,o,n);else{var l=document.createElement("a");l.href=e,l.target="_blank",setTimeout(function(){s(l)})}}:function(e,t,o,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return r(e,t,o);var s="application/octet-stream"===e.type,i=/constructor/i.test(n.HTMLElement)||n.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||s&&i||l)&&"undefined"!=typeof FileReader){var c=new FileReader;c.onloadend=function(){var e=c.result;e=u?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},c.readAsDataURL(e)}else{var d=n.URL||n.webkitURL,p=d.createObjectURL(e);a?a.location=p:location.href=p,a=null,setTimeout(function(){d.revokeObjectURL(p)},4e4)}});n.saveAs=i.saveAs=i,e.exports=i})?r.apply(t,a):r)||(e.exports=s)},633(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(499)),n=r(o(880)),l=a.default.createContext({searchProps:{searchText:"",onSearch:e=>{},onClear:()=>{}},csvProps:{onExport:()=>{}},columnToggleProps:{columns:[],toggles:[],onColumnToggle:e=>{}},baseProps:{keyField:void 0,columns:[],data:[],bootstrap4:void 0,bootstrap5:void 0,columnResize:void 0}});class i extends((0,n.default)(a.default.Component)){static defaultProps={search:!1,exportCSV:!1,bootstrap4:!1,bootstrap5:!1,columnResize:!1};_;state;constructor(e){super(e);const t={columnToggle:{},searchText:"object"==typeof e.search&&e.search.defaultSearch||""};this._=null,this.onClear=this.onClear.bind(this),this.onSearch=this.onSearch.bind(this),this.onColumnToggle=this.onColumnToggle.bind(this),this.setDependencyModules=this.setDependencyModules.bind(this),e.columnToggle&&(t.columnToggle=e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{})),t.searchText="object"==typeof e.search&&e.search.defaultSearch||"",this.state=t}static getDerivedStateFromProps(e,t){const o=t.columnToggle;let r;return r=e.columnToggle?e.columns.reduce((e,t)=>(e[t.dataField]=!t.hidden,e),{}):{},o?{...t,currColumnToggle:o}:{...t,propsColumnToggle:r}}onSearch(e){e!==this.state.searchText&&this.setState({searchText:e})}onClear(){this.setState({searchText:""})}onColumnToggle(e){const{columnToggle:t}=this.state;t[e]=!t[e],this.setState({...this.state,columnToggle:t})}setDependencyModules(e){this._=e}render(){const e={keyField:this.props.keyField,columns:this.props.columns,data:this.props.data,search:this.props.search??!1,exportCSV:this.props.exportCSV??!1,bootstrap4:this.props.bootstrap4??!1,bootstrap5:this.props.bootstrap5??!1,columnResize:this.props.columnResize??!1,children:this.props.children,setDependencyModules:this.setDependencyModules,registerExposedAPI:this.registerExposedAPI};return this.props.search&&(e.search={searchContext:(0,s.default)(this.props.search),searchText:this.state.searchText}),this.props.columnToggle&&(e.columnToggle={toggles:this.state.columnToggle}),a.default.createElement(l.Provider,{value:{searchProps:{searchText:this.state.searchText,onSearch:this.onSearch,onClear:this.onClear},csvProps:{onExport:this.handleExportCSV},columnToggleProps:{columns:this.props.columns,toggles:this.state.columnToggle,onColumnToggle:this.onColumnToggle},baseProps:e}},this.props.children)}}t.default={Provider:i,Consumer:l.Consumer}},688(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Search=t.CSVExport=t.ColumnToggle=t.ToolkitContext=void 0;const a=r(o(633)),s=r(o(921));t.default=s.default,t.ToolkitContext=a.default;var n=o(555);Object.defineProperty(t,"ColumnToggle",{enumerable:!0,get:function(){return r(n).default}});var l=o(282);Object.defineProperty(t,"CSVExport",{enumerable:!0,get:function(){return r(l).default}});var i=o(470);Object.defineProperty(t,"Search",{enumerable:!0,get:function(){return r(i).default}})},921(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=r(o(633));t.default=e=>a.default.createElement(s.default.Provider,{...e},a.default.createElement(s.default.Consumer,null,t=>e.children(t)))},555(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(140));t.default={ToggleList:a.default}},140(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({columns:e,onColumnToggle:t,toggles:o,btnClassName:r="",className:s="",contextual:n="primary"})=>a.default.createElement("div",{className:`btn-group btn-group-toggle ${s}`,"data-toggle":"buttons"},e.map(e=>({...e,toggle:o[e.dataField]})).map(e=>a.default.createElement("button",{type:"button",key:e.dataField,className:`${r} btn btn-${n} ${e.toggle?"active":""}`,"data-toggle":"button","aria-pressed":e.toggle?"true":"false",onClick:()=>t(e.dataField)},e.text)))},40(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s={className:"",style:{}};t.default=e=>{const{onExport:t,children:o,className:r,...n}={...s,...e};return a.default.createElement("button",{type:"button",className:`react-bs-table-csv-btn btn btn-default btn-secondary ${r}`,onClick:()=>t(),...n},o)}},457(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.save=t.transform=t.getMetaInfo=void 0;const a=r(o(213));t.getMetaInfo=e=>e.map(e=>({field:e.dataField,type:e.csvType||String,formatter:e.csvFormatter,formatExtraData:e.formatExtraData,header:e.csvText||e.text,export:!1!==e.csvExport,row:Number(e.row)||0,rowSpan:Number(e.rowSpan)||1,colSpan:Number(e.colSpan)||1,footer:e.footer,footerFormatter:e.footerFormatter})).filter(e=>e.export);t.transform=(e,t,o,r,{separator:a,ignoreHeader:s,ignoreFooter:n})=>{const l=t.filter(e=>e.export);let i="";return s||(i+=l.map(e=>`"${e.header}"`).join(a),i+="\n"),0===e.length||(i+=e.map((e,t)=>l.map(o=>{let a=r.get(e,o.field);return o.formatter&&(a=o.formatter(a,e,t,o.formatExtraData)),o.type===String?`"${`${a}`.replace(/"/g,'""')}"`:a}).join(a)).join("\n"),n||(i+="\n",i+=l.map((t,a)=>{if("function"==typeof t.footer){const s=r.pluck(e,o[a].dataField);return`"${t.footer(s,o[a],a)}"`}return t.footerFormatter?`"${t.footerFormatter(o[a],a)}"`:`"${t.footer}"`}).join(a))),i};t.save=(e,{noAutoBOM:t,fileName:o,blobType:r})=>{a.default.saveAs(new Blob([e],{type:r}),o,t)}},282(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(40));t.default={ExportCSVButton:a.default}},881(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=o(457),n={fileName:"spreadsheet.csv",separator:",",ignoreHeader:!1,ignoreFooter:!0,noAutoBOM:!0,blobType:"text/plain;charset=utf-8",exportAll:!0,onlyExportSelection:!1};t.default=e=>class extends a.default.Component{_;tableExposedAPIEmitter;handleExportCSV=e=>{const{columns:t,exportCSV:o,keyField:r}=this.props,a=(0,s.getMetaInfo)(t),l=!0===o?n:{...n,...o};let i;if(void 0!==e)i=e;else if(l.exportAll)i=this.props.data;else if(l.onlyExportFiltered){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.filtered.rows",e),i=e.result}else{const e={result:void 0};this.tableExposedAPIEmitter.emit("get.table.data",e),i=e.result}if(l.onlyExportSelection){const e={result:void 0};this.tableExposedAPIEmitter.emit("get.selected.rows",e);const t=e.result??[];i=i.filter(e=>t.includes(e[r]))}const u=(0,s.transform)(i,a,t,this._,l);(0,s.save)(u,l)}}},469(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(881));t.default={csvOperation:a.default}},801(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442)),s=(e,t,o)=>{let r;return(...a)=>{const s=o&&!r;clearTimeout(r),r=setTimeout(()=>{r=void 0,o||e.apply(this,a)},t||0),s&&e.apply(this,a)}};class n extends a.default.Component{input=null;constructor(e){super(e),this.state={value:e.searchText??""}}onChangeValue=e=>{this.setState({value:e.target.value})};onKeyup=()=>{const{delay:e=250,onSearch:t}=this.props;s(()=>{t(this.input?.value??"")},e)()};componentDidUpdate(e){this.props.searchText!==e.searchText&&this.setState({value:this.props.searchText||""})}render(){const{className:e="",style:t={},placeholder:o="Search",tableId:r="0",searchText:s="Search this table"}=this.props;return a.default.createElement("label",{htmlFor:`search-bar-${r}`,className:"search-label"},a.default.createElement("span",{id:`search-bar-${r}-label`,className:"sr-only visually-hidden"},s),a.default.createElement("input",{ref:e=>{this.input=e},id:`search-bar-${r}`,type:"text",style:t,"aria-labelledby":`search-bar-${r}-label`,onKeyUp:()=>this.onKeyup(),onChange:this.onChangeValue,className:`form-control ${e}`,value:this.state.value,placeholder:o}))}static defaultProps={className:"",style:{},placeholder:"Search",delay:250,searchText:"",tableId:"0",srText:"Search this table"}}t.default=n},68(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=({onClear:e,text:t="Clear",className:o=""})=>a.default.createElement("button",{className:`btn btn-default btn-secondary ${o}`,onClick:e},t)},499(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(442));t.default=(e={searchFormatted:!1,afterSearch:void 0,onColumnMatch:()=>!1})=>(t,o,r)=>{const s=a.default.createContext(null);class n extends a.default.Component{constructor(e){super(e);let t=e.data;o()&&""!==this.props.searchText?r(this.props.searchText):(t=this.search(e),this.triggerListener(t,!0)),this.state={data:t}}getSearched(){return this.state.data}triggerListener(t,o){e.afterSearch&&!o&&e.afterSearch(t),this.props.dataChangeListener&&this.props.dataChangeListener.emit("filterChanged",t.length)}componentDidUpdate(e){if(e.searchText!==this.props.searchText)if(o())r(this.props.searchText);else{const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}else if(o())t.isEqual(this.state.data,this.props.data)||this.setState({data:this.props.data});else if(!t.isEqual(e.data,this.props.data)){const e=this.search(this.props);this.triggerListener(e),this.setState({data:e})}}search(o){const{data:r,columns:a}=o,s=o.searchText.toLowerCase();return r.filter((o,r)=>{for(let n=0;n<a.length;n+=1){const l=a[n];if(!1===l.searchable)continue;let i=t.get(o,l.dataField);if(l.formatter&&e.searchFormatted?i=l.formatter(i,o,r,l.formatExtraData):l.filterValue&&(i=l.filterValue(i,o)),e.onColumnMatch){if(e.onColumnMatch({searchText:s,value:i,column:l,row:o}))return!0}else if(null!=i&&(i=i.toString().toLowerCase(),i.indexOf(s)>-1))return!0}return!1})}render(){return a.default.createElement(s.Provider,{value:{data:this.state.data}},this.props.children)}}return{Provider:n,Consumer:s.Consumer}}},470(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(801)),s=r(o(68));t.default={SearchBar:a.default,ClearSearchButton:s.default}},880(e,t,o){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(o(469));t.default=e=>class extends(a.default.csvOperation(e)){registerExposedAPI=e=>{this.tableExposedAPIEmitter=e}}},442(t){"use strict";t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var s=o[e]={exports:{}};return t[e].call(s.exports,s,s.exports,r),s.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(688)})());
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvZGlzdC9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC5taW4uanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELEVBQVFHLFFBQVEsVUFDUixtQkFBWEMsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLENBQUMsU0FBVUosR0FDUSxpQkFBWkMsUUFDZEEsUUFBc0MsNkJBQUlELEVBQVFHLFFBQVEsVUFFMURKLEVBQW1DLDZCQUFJQyxFQUFRRCxFQUFZLE1BQzVELENBVEQsQ0FTR08sS0FBT0MsRyx3QkNUVixVQUF3RCxFQUFPLFFBQUksMEJBQUYsRUFBOEYsV0FBVyxhQUFhLFNBQVNDLEVBQUVDLEVBQUVELEdBQUcsWUFBTSxJQUFvQkEsRUFBRUEsRUFBRSxDQUFDRSxTQUFRLEdBQUksaUJBQWlCRixJQUFJRyxRQUFRQyxLQUFLLHNEQUFzREosRUFBRSxDQUFDRSxTQUFTRixJQUFJQSxFQUFFRSxTQUFTLDZFQUE2RUcsS0FBS0osRUFBRUssTUFBTSxJQUFJQyxLQUFLLENBQUMsU0FBU04sR0FBRyxDQUFDSyxLQUFLTCxFQUFFSyxPQUFPTCxDQUFDLENBQUMsU0FBU08sRUFBRVAsRUFBRUQsRUFBRVEsR0FBRyxJQUFJQyxFQUFFLElBQUlDLGVBQWVELEVBQUVFLEtBQUssTUFBTVYsR0FBR1EsRUFBRUcsYUFBYSxPQUFPSCxFQUFFSSxPQUFPLFdBQVdDLEVBQUVMLEVBQUVNLFNBQVNmLEVBQUVRLEVBQUUsRUFBRUMsRUFBRU8sUUFBUSxXQUFXYixRQUFRYyxNQUFNLDBCQUEwQixFQUFFUixFQUFFUyxNQUFNLENBQUMsU0FBU1QsRUFBRVIsR0FBRyxJQUFJRCxFQUFFLElBQUlVLGVBQWVWLEVBQUVXLEtBQUssT0FBT1YsR0FBRSxHQUFJLElBQUlELEVBQUVrQixNQUFNLENBQUMsTUFBTWpCLEdBQUcsQ0FBQyxP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QUFPekksTUFBUSxJQUFJMEksU0FBUyxjQUFiLEVBQ2hCLENBQUUsTUFBT3hOLEdBQ1IsR0FBc0IsaUJBQVhNLE9BQXFCLE9BQU9BLE1BQ3hDLENBQ0EsQ0FQdUIsR0NHRTRNLEVBQW9CLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9maWxlLXNhdmVyL2Rpc3QvRmlsZVNhdmVyLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9jb250ZXh0LnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9wcm92aWRlci50c3giLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2NvbHVtbi10b2dnbGUvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL2NvbHVtbi10b2dnbGUvdG9nZ2xlLWxpc3QudHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9jc3YvYnV0dG9uLnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvY3N2L2V4cG9ydGVyLnRzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9jc3YvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL29wL2Nzdi50cyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvb3AvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3JjL3NlYXJjaC9TZWFyY2hCYXIudHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9zZWFyY2gvY2xlYXItYnV0dG9uLnRzeCIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9yZWFjdC1ib290c3RyYXAtdGFibGUtbmctdG9vbGtpdC9zcmMvc2VhcmNoL2NvbnRleHQudHN4Iiwid2VicGFjazovLy8uL3BhY2thZ2VzL3JlYWN0LWJvb3RzdHJhcC10YWJsZS1uZy10b29sa2l0L3NyYy9zZWFyY2gvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nLXRvb2xraXQvc3RhdGVsZXNzT3AudHMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHVtZCB7XCJyb290XCI6XCJSZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJhbWRcIjpcInJlYWN0XCJ9Iiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly8vd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlJlYWN0Qm9vdHN0cmFwVGFibGVOZ1Rvb2xraXRcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiUmVhY3RCb290c3RyYXBUYWJsZU5nVG9vbGtpdFwiXSA9IGZhY3Rvcnkocm9vdFtcIlJlYWN0XCJdKTtcbn0pKHNlbGYsIChfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180NDJfXykgPT4ge1xucmV0dXJuICIsIihmdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sYik7ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgZXhwb3J0cyliKCk7ZWxzZXtiKCksYS5GaWxlU2F2ZXI9e2V4cG9ydHM6e319LmV4cG9ydHN9fSkodGhpcyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGIoYSxiKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgYj9iPXthdXRvQm9tOiExfTpcIm9iamVjdFwiIT10eXBlb2YgYiYmKGNvbnNvbGUud2FybihcIkRlcHJlY2F0ZWQ6IEV4cGVjdGVkIHRoaXJkIGFyZ3VtZW50IHRvIGJlIGEgb2JqZWN0XCIpLGI9e2F1dG9Cb206IWJ9KSxiLmF1dG9Cb20mJi9eXFxzKig/OnRleHRcXC9cXFMqfGFwcGxpY2F0aW9uXFwveG1sfFxcUypcXC9cXFMqXFwreG1sKVxccyo7LipjaGFyc2V0XFxzKj1cXHMqdXRmLTgvaS50ZXN0KGEudHlwZSk/bmV3IEJsb2IoW1wiXFx1RkVGRlwiLGFdLHt0eXBlOmEudHlwZX0pOmF9ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub3BlbihcIkdFVFwiLGEpLGQucmVzcG9uc2VUeXBlPVwiYmxvYlwiLGQub25sb2FkPWZ1bmN0aW9uKCl7ZyhkLnJlc3BvbnNlLGIsYyl9LGQub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoXCJjb3VsZCBub3QgZG93bmxvYWQgZmlsZVwiKX0sZC5zZW5kKCl9ZnVuY3Rpb24gZChhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKFwiSEVBRFwiLGEsITEpO3RyeXtiLnNlbmQoKX1jYXRjaChhKXt9cmV0dXJuIDIwMDw9Yi5zdGF0dXMmJjI5OT49Yi5zdGF0dXN9ZnVuY3Rpb24gZShhKXt0cnl7YS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpfWNhdGNoKGMpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiTW91c2VFdmVudHNcIik7Yi5pbml0TW91c2VFdmVudChcImNsaWNrXCIsITAsITAsd2luZG93LDAsMCwwLDgwLDIwLCExLCExLCExLCExLDAsbnVsbCksYS5kaXNwYXRjaEV2ZW50KGIpfX12YXIgZj1cIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cud2luZG93PT09d2luZG93P3dpbmRvdzpcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZi5zZWxmPT09c2VsZj9zZWxmOlwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbC5nbG9iYWw9PT1nbG9iYWw/Z2xvYmFsOnZvaWQgMCxhPWYubmF2aWdhdG9yJiYvTWFjaW50b3NoLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEvU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGc9Zi5zYXZlQXN8fChcIm9iamVjdFwiIT10eXBlb2Ygd2luZG93fHx3aW5kb3chPT1mP2Z1bmN0aW9uKCl7fTpcImRvd25sb2FkXCJpbiBIVE1MQW5jaG9yRWxlbWVudC5wcm90b3R5cGUmJiFhP2Z1bmN0aW9uKGIsZyxoKXt2YXIgaT1mLlVSTHx8Zi53ZWJraXRVUkwsaj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtnPWd8fGIubmFtZXx8XCJkb3dubG9hZFwiLGouZG93bmxvYWQ9ZyxqLnJlbD1cIm5vb3BlbmVyXCIsXCJzdHJpbmdcIj09dHlwZW9mIGI/KGouaHJlZj1iLGoub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP2Uoaik6ZChqLmhyZWYpP2MoYixnLGgpOmUoaixqLnRhcmdldD1cIl9ibGFua1wiKSk6KGouaHJlZj1pLmNyZWF0ZU9iamVjdFVSTChiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5yZXZva2VPYmplY3RVUkwoai5ocmVmKX0sNEU0KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShqKX0sMCkpfTpcIm1zU2F2ZU9yT3BlbkJsb2JcImluIG5hdmlnYXRvcj9mdW5jdGlvbihmLGcsaCl7aWYoZz1nfHxmLm5hbWV8fFwiZG93bmxvYWRcIixcInN0cmluZ1wiIT10eXBlb2YgZiluYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihiKGYsaCksZyk7ZWxzZSBpZihkKGYpKWMoZixnLGgpO2Vsc2V7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7aS5ocmVmPWYsaS50YXJnZXQ9XCJfYmxhbmtcIixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShpKX0pfX06ZnVuY3Rpb24oYixkLGUsZyl7aWYoZz1nfHxvcGVuKFwiXCIsXCJfYmxhbmtcIiksZyYmKGcuZG9jdW1lbnQudGl0bGU9Zy5kb2N1bWVudC5ib2R5LmlubmVyVGV4dD1cImRvd25sb2FkaW5nLi4uXCIpLFwic3RyaW5nXCI9PXR5cGVvZiBiKXJldHVybiBjKGIsZCxlKTt2YXIgaD1cImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiPT09Yi50eXBlLGk9L2NvbnN0cnVjdG9yL2kudGVzdChmLkhUTUxFbGVtZW50KXx8Zi5zYWZhcmksaj0vQ3JpT1NcXC9bXFxkXSsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7aWYoKGp8fGgmJml8fGEpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgRmlsZVJlYWRlcil7dmFyIGs9bmV3IEZpbGVSZWFkZXI7ay5vbmxvYWRlbmQ9ZnVuY3Rpb24oKXt2YXIgYT1rLnJlc3VsdDthPWo/YTphLnJlcGxhY2UoL15kYXRhOlteO10qOy8sXCJkYXRhOmF0dGFjaG1lbnQvZmlsZTtcIiksZz9nLmxvY2F0aW9uLmhyZWY9YTpsb2NhdGlvbj1hLGc9bnVsbH0say5yZWFkQXNEYXRhVVJMKGIpfWVsc2V7dmFyIGw9Zi5VUkx8fGYud2Via2l0VVJMLG09bC5jcmVhdGVPYmplY3RVUkwoYik7Zz9nLmxvY2F0aW9uPW06bG9jYXRpb24uaHJlZj1tLGc9bnVsbCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5yZXZva2VPYmplY3RVUkwobSl9LDRFNCl9fSk7Zi5zYXZlQXM9Zy5zYXZlQXM9ZyxcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiYobW9kdWxlLmV4cG9ydHM9Zyl9KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZVNhdmVyLm1pbi5qcy5tYXAiLCIvKiBlc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246IDAgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVUb29sa2l0UHJvcHMsIFRvb2xraXRDb250ZXh0VHlwZSB9IGZyb20gXCIuXCI7XG5pbXBvcnQgY3JlYXRlU2VhcmNoQ29udGV4dCBmcm9tIFwiLi9zcmMvc2VhcmNoL2NvbnRleHRcIjtcbmltcG9ydCBzdGF0ZWxlc3NEZWNvcmF0b3IgZnJvbSBcIi4vc3RhdGVsZXNzT3BcIjtcblxuY29uc3QgVG9vbGtpdENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFRvb2xraXRDb250ZXh0VHlwZT4oe1xuICBzZWFyY2hQcm9wczoge1xuICAgIHNlYXJjaFRleHQ6IFwiXCIsXG4gICAgb25TZWFyY2g6ICh2YWw6IHN0cmluZykgPT4ge30sXG4gICAgb25DbGVhcjogKCkgPT4ge30sXG4gIH0sXG4gIGNzdlByb3BzOiB7XG4gICAgb25FeHBvcnQ6ICgpID0+IHt9LFxuICB9LFxuICBjb2x1bW5Ub2dnbGVQcm9wczoge1xuICAgIGNvbHVtbnM6IFtdLFxuICAgIHRvZ2dsZXM6IFtdLFxuICAgIG9uQ29sdW1uVG9nZ2xlOiAoZGF0YUZpZWxkOiBzdHJpbmcpID0+IHt9LFxuICB9LFxuICBiYXNlUHJvcHM6IHtcbiAgICBrZXlGaWVsZDogdW5kZWZpbmVkLFxuICAgIGNvbHVtbnM6IFtdLFxuICAgIGRhdGE6IFtdLFxuICAgIGJvb3RzdHJhcDQ6IHVuZGVmaW5lZCxcbiAgICBib290c3RyYXA1OiB1bmRlZmluZWQsXG4gICAgY29sdW1uUmVzaXplOiB1bmRlZmluZWQsXG4gIH0sXG59KTtcblxuY2xhc3MgVG9vbGtpdFByb3ZpZGVyIGV4dGVuZHMgc3RhdGVsZXNzRGVjb3JhdG9yKFJlYWN0LkNvbXBvbmVudCkge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHNlYXJjaDogZmFsc2UsXG4gICAgZXhwb3J0Q1NWOiBmYWxzZSxcbiAgICBib290c3RyYXA0OiBmYWxzZSxcbiAgICBib290c3RyYXA1OiBmYWxzZSxcbiAgICBjb2x1bW5SZXNpemU6IGZhbHNlXG4gIH07XG5cbiAgXzogYW55O1xuICBzdGF0ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUYWJsZVRvb2xraXRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgICBjb2x1bW5Ub2dnbGU6IHt9LFxuICAgICAgc2VhcmNoVGV4dDpcbiAgICAgICAgdHlwZW9mIHByb3BzLnNlYXJjaCA9PT0gXCJvYmplY3RcIlxuICAgICAgICAgID8gcHJvcHMuc2VhcmNoLmRlZmF1bHRTZWFyY2ggfHwgXCJcIlxuICAgICAgICAgIDogXCJcIixcbiAgICB9O1xuICAgIHRoaXMuXyA9IG51bGw7XG4gICAgdGhpcy5vbkNsZWFyID0gdGhpcy5vbkNsZWFyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vblNlYXJjaCA9IHRoaXMub25TZWFyY2guYmluZCh0aGlzKTtcbiAgICB0aGlzLm9uQ29sdW1uVG9nZ2xlID0gdGhpcy5vbkNvbHVtblRvZ2dsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0RGVwZW5kZW5jeU1vZHVsZXMgPSB0aGlzLnNldERlcGVuZGVuY3lNb2R1bGVzLmJpbmQodGhpcyk7XG5cbiAgICBpZiAocHJvcHMuY29sdW1uVG9nZ2xlKSB7XG4gICAgICBpbml0aWFsU3RhdGUuY29sdW1uVG9nZ2xlID0gcHJvcHMuY29sdW1ucy5yZWR1Y2UoXG4gICAgICAgIChvYmo6IGFueSwgY29sdW1uOiBhbnkpID0+IHtcbiAgICAgICAgICBvYmpbY29sdW1uLmRhdGFGaWVsZF0gPSAhY29sdW1uLmhpZGRlbjtcbiAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKTtcbiAgICB9XG4gICAgaW5pdGlhbFN0YXRlLnNlYXJjaFRleHQgPVxuICAgICAgdHlwZW9mIHByb3BzLnNlYXJjaCA9PT0gXCJvYmplY3RcIiA/IHByb3BzLnNlYXJjaC5kZWZhdWx0U2VhcmNoIHx8IFwiXCIgOiBcIlwiO1xuICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzOiBUYWJsZVRvb2xraXRQcm9wcywgc3RhdGU6IGFueSkge1xuICAgIGNvbnN0IGN1cnJDb2x1bW5Ub2dnbGUgPSBzdGF0ZS5jb2x1bW5Ub2dnbGU7XG4gICAgbGV0IHByb3BzQ29sdW1uVG9nZ2xlO1xuICAgIGlmIChwcm9wcy5jb2x1bW5Ub2dnbGUpIHtcbiAgICAgIHByb3BzQ29sdW1uVG9nZ2xlID0gcHJvcHMuY29sdW1ucy5yZWR1Y2UoKG9iajogYW55LCBjb2x1bW46IGFueSkgPT4ge1xuICAgICAgICBvYmpbY29sdW1uLmRhdGFGaWVsZF0gPSAhY29sdW1uLmhpZGRlbjtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcHNDb2x1bW5Ub2dnbGUgPSB7fTtcbiAgICB9XG4gICAgaWYgKGN1cnJDb2x1bW5Ub2dnbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyQ29sdW1uVG9nZ2xlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHByb3BzQ29sdW1uVG9nZ2xlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2hUZXh0OiBhbnkpIHtcbiAgICBpZiAoc2VhcmNoVGV4dCAhPT0gdGhpcy5zdGF0ZS5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoVGV4dCB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNsZWFyKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hUZXh0OiBcIlwiIH0pO1xuICB9XG5cbiAgb25Db2x1bW5Ub2dnbGUoZGF0YUZpZWxkOiBhbnkpIHtcbiAgICBjb25zdCB7IGNvbHVtblRvZ2dsZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb2x1bW5Ub2dnbGVbZGF0YUZpZWxkXSA9ICFjb2x1bW5Ub2dnbGVbZGF0YUZpZWxkXTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICBjb2x1bW5Ub2dnbGUsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gX1xuICAgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25lIHRpbWUgd2hlbiB0YWJsZSByZW5kZXJcbiAgICogcmVhY3QtYm9vdHN0cmFwLXRhYmxlLW5nL3NyYy9jb250ZXh0L2luZGV4LmpzIHdpbGwgY2FsbCB0aGlzIGNiIGZvciBwYXNzaW5nIHRoZSBfIG1vZHVsZVxuICAgKiBQbGVhc2UgY29uc2lkZXIgdG8gZXh0cmFjdCBhIGNvbW1vbiBtb2R1bGUgdG8gaGFuZGxlIF8gbW9kdWxlLlxuICAgKiB0aGlzIGlzIGp1c3QgYSBxdWljayBmaXhcbiAgICovXG4gIHNldERlcGVuZGVuY3lNb2R1bGVzKF86IGFueSkge1xuICAgIHRoaXMuXyA9IF87XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgYmFzZVByb3BzOiBUYWJsZVRvb2xraXRQcm9wcyA9IHtcbiAgICAgIGtleUZpZWxkOiB0aGlzLnByb3BzLmtleUZpZWxkLFxuICAgICAgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zLFxuICAgICAgZGF0YTogdGhpcy5wcm9wcy5kYXRhLFxuICAgICAgc2VhcmNoOiB0aGlzLnByb3BzLnNlYXJjaCA/PyBmYWxzZSxcbiAgICAgIGV4cG9ydENTVjogdGhpcy5wcm9wcy5leHBvcnRDU1YgPz8gZmFsc2UsXG4gICAgICBib290c3RyYXA0OiB0aGlzLnByb3BzLmJvb3RzdHJhcDQgPz8gZmFsc2UsXG4gICAgICBib290c3RyYXA1OiB0aGlzLnByb3BzLmJvb3RzdHJhcDUgPz8gZmFsc2UsXG4gICAgICBjb2x1bW5SZXNpemU6IHRoaXMucHJvcHMuY29sdW1uUmVzaXplID8/IGZhbHNlLFxuICAgICAgY2hpbGRyZW46IHRoaXMucHJvcHMuY2hpbGRyZW4sXG4gICAgICBzZXREZXBlbmRlbmN5TW9kdWxlczogdGhpcy5zZXREZXBlbmRlbmN5TW9kdWxlcyxcbiAgICAgIHJlZ2lzdGVyRXhwb3NlZEFQSTogdGhpcy5yZWdpc3RlckV4cG9zZWRBUEksXG4gICAgfTtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2gpIHtcbiAgICAgIGJhc2VQcm9wcy5zZWFyY2ggPSB7XG4gICAgICAgIHNlYXJjaENvbnRleHQ6IGNyZWF0ZVNlYXJjaENvbnRleHQodGhpcy5wcm9wcy5zZWFyY2gpLFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnN0YXRlLnNlYXJjaFRleHQsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5Ub2dnbGUpIHtcbiAgICAgIGJhc2VQcm9wcy5jb2x1bW5Ub2dnbGUgPSB7XG4gICAgICAgIHRvZ2dsZXM6IHRoaXMuc3RhdGUuY29sdW1uVG9nZ2xlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxUb29sa2l0Q29udGV4dC5Qcm92aWRlclxuICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgIHNlYXJjaFByb3BzOiB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnN0YXRlLnNlYXJjaFRleHQsXG4gICAgICAgICAgICBvblNlYXJjaDogdGhpcy5vblNlYXJjaCxcbiAgICAgICAgICAgIG9uQ2xlYXI6IHRoaXMub25DbGVhcixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNzdlByb3BzOiB7XG4gICAgICAgICAgICBvbkV4cG9ydDogdGhpcy5oYW5kbGVFeHBvcnRDU1YsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb2x1bW5Ub2dnbGVQcm9wczoge1xuICAgICAgICAgICAgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zLFxuICAgICAgICAgICAgdG9nZ2xlczogdGhpcy5zdGF0ZS5jb2x1bW5Ub2dnbGUsXG4gICAgICAgICAgICBvbkNvbHVtblRvZ2dsZTogdGhpcy5vbkNvbHVtblRvZ2dsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJhc2VQcm9wcyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICA8L1Rvb2xraXRDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBQcm92aWRlcjogVG9vbGtpdFByb3ZpZGVyLFxuICBDb25zdW1lcjogVG9vbGtpdENvbnRleHQuQ29uc3VtZXIsXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29sdW1uRGVzY3JpcHRpb24sIFNlYXJjaFByb3BzIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcC10YWJsZS1uZ1wiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgVG9vbGtpdFByb3ZpZGVyIGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IFRvb2xraXRQcm92aWRlcjtcbmV4cG9ydCBjb25zdCBUb29sa2l0Q29udGV4dCA9IENvbnRleHQ7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29sdW1uVG9nZ2xlIH0gZnJvbSBcIi4vc3JjL2NvbHVtbi10b2dnbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ1NWRXhwb3J0IH0gZnJvbSBcIi4vc3JjL2NzdlwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTZWFyY2ggfSBmcm9tIFwiLi9zcmMvc2VhcmNoXCI7XG5cbi8qKlxuICogZGVjbGFyYXRpb24gZm9yIHRhYmxlIHRvb2xraXQgc3ViIG1vZHVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGVkU2VhcmNoUHJvcHMge1xuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIG9uU2VhcmNoOiAodmFsOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uQ2xlYXI6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoTWF0Y2hQcm9wczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY29sdW1uOiBDb2x1bW5EZXNjcmlwdGlvbjxUPjtcbiAgcm93OiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU2VhcmNoUHJvcHM8VCBleHRlbmRzIG9iamVjdCA9IGFueT4ge1xuICBzZWFyY2hGb3JtYXR0ZWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBkZWZhdWx0U2VhcmNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb25Db2x1bW5NYXRjaD86IChwcm9wczogU2VhcmNoTWF0Y2hQcm9wczxUPikgPT4gYm9vbGVhbjtcbiAgY3VzdG9tTWF0Y2hGdW5jPzogKChwcm9wczogU2VhcmNoTWF0Y2hQcm9wczxUPikgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQ7XG4gIGFmdGVyU2VhcmNoPzogKG5ld1Jlc3VsdDogVFtdKSA9PiB2b2lkIHwgdW5kZWZpbmVkO1xuICBzZWFyY2hDb250ZXh0PzogRnVuY3Rpb247XG4gIHNlYXJjaFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ1NWUHJvcHMge1xuICBmaWxlTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc2VwYXJhdG9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZ25vcmVIZWFkZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpZ25vcmVGb290ZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBub0F1dG9CT00/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogZGVmYXVsdCBpcyB0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLThcbiAgICovXG4gIGJsb2JUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBleHBvcnRBbGw/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBvbmx5RXhwb3J0U2VsZWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgb25seUV4cG9ydEZpbHRlcmVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVRvb2xraXRQcm9wczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiB7XG4gIGJvb3RzdHJhcDQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBib290c3RyYXA1PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgc2VhcmNoPzogVGFibGVTZWFyY2hQcm9wczxUPiB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGtleUZpZWxkOiBrZXlvZiBUIHwgc3RyaW5nO1xuICBkYXRhOiBUW107XG4gIHJlZj86IGFueTtcbiAgY29sdW1uczogQXJyYXk8Q29sdW1uRGVzY3JpcHRpb248VD4+O1xuICBjaGlsZHJlbjogKHByb3BzOiBUb29sa2l0Q29udGV4dFR5cGUpID0+IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgZXhwb3J0Q1NWPzogYm9vbGVhbiB8IENTVlByb3BzIHwgdW5kZWZpbmVkO1xuICBjb2x1bW5Ub2dnbGU/OiB7IFtkYXRhRmllbGQ6IHN0cmluZ106IGJvb2xlYW4gfSB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNvbHVtblJlc2l6ZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHNldERlcGVuZGVuY3lNb2R1bGVzPzogRnVuY3Rpb247XG4gIHJlZ2lzdGVyRXhwb3NlZEFQST86IEZ1bmN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xraXRDb250ZXh0VHlwZSB7XG4gIHNlYXJjaFByb3BzOiBJbmplY3RlZFNlYXJjaFByb3BzO1xuICBjc3ZQcm9wczoge1xuICAgIG9uRXhwb3J0OiAoc291cmNlPzogYW55KSA9PiB2b2lkO1xuICB9O1xuICBjb2x1bW5Ub2dnbGVQcm9wczoge1xuICAgIGNvbHVtbnM6IENvbHVtbkRlc2NyaXB0aW9uW107XG4gICAgLyoqXG4gICAgICogYXJyYXkgb2YgdG9nZ2xlZCBjb2x1bW5zXG4gICAgICovXG4gICAgdG9nZ2xlczogYm9vbGVhbltdO1xuICAgIG9uQ29sdW1uVG9nZ2xlOiAoZGF0YUZpZWxkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIH07XG4gIGJhc2VQcm9wczoge1xuICAgIC8qKlxuICAgICAqIHRhYmxlIGtleSBmaWVsZFxuICAgICAqL1xuICAgIGtleUZpZWxkOiBhbnk7XG4gICAgY29sdW1uczogQ29sdW1uRGVzY3JpcHRpb25bXTtcbiAgICBkYXRhOiBhbnlbXTtcbiAgICBib290c3RyYXA0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBib290c3RyYXA1PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBjb2x1bW5SZXNpemU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvZ2dsZUxpc3RQcm9wcyB7XG4gIGNvbHVtbnM6IENvbHVtbkRlc2NyaXB0aW9uW107XG4gIC8qKlxuICAgKiBhcnJheSBvZiB0b2dnbGVkIGNvbHVtbnNcbiAgICovXG4gIHRvZ2dsZXM6IGJvb2xlYW5bXTtcbiAgb25Db2x1bW5Ub2dnbGU6IChkYXRhRmllbGQ6IHN0cmluZykgPT4gdm9pZDtcbiAgYnRuQ2xhc3NOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnRleHR1YWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0Q1NWQnV0dG9uUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBvbkV4cG9ydDogKCkgPT4gdm9pZDtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQmFyUHJvcHM8VCA9IGFueT4gZXh0ZW5kcyBTZWFyY2hQcm9wczxUPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkO1xuICBkZWxheT86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgc2VhcmNoVGV4dD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdGFibGVJZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVmPzogUmVhY3QuUmVmT2JqZWN0PFJlYWN0LkNvbXBvbmVudDxTZWFyY2hQcm9wczxUPj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsZWFyU2VhcmNoQnV0dG9uUHJvcHMge1xuICBvbkNsZWFyPzogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBjbGFzc05hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHRleHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlVG9vbGtpdFByb3BzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCBUb29sa2l0Q29udGV4dCBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbmNvbnN0IFRvb2xraXRwcm92aWRlciA9IChcbiAgcHJvcHM6IFRhYmxlVG9vbGtpdFByb3BzXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IChcbiAgPFRvb2xraXRDb250ZXh0LlByb3ZpZGVyIHsuLi5wcm9wc30+XG4gICAgPFRvb2xraXRDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgeyh0b29rS2l0UHJvcHMpID0+IHByb3BzLmNoaWxkcmVuKHRvb2tLaXRQcm9wcyl9XG4gICAgPC9Ub29sa2l0Q29udGV4dC5Db25zdW1lcj5cbiAgPC9Ub29sa2l0Q29udGV4dC5Qcm92aWRlcj5cbik7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBUb29sa2l0cHJvdmlkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBUb2dnbGVMaXN0IGZyb20gJy4vdG9nZ2xlLWxpc3QnO1xuXG5leHBvcnQgZGVmYXVsdCB7IFRvZ2dsZUxpc3QgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbHVtbkRlc2NyaXB0aW9uIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcC10YWJsZS1uZ1wiO1xuaW1wb3J0IHsgVG9nZ2xlTGlzdFByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmNvbnN0IFRvZ2dsZUxpc3QgPSAoe1xuICBjb2x1bW5zLFxuICBvbkNvbHVtblRvZ2dsZSxcbiAgdG9nZ2xlcyxcbiAgYnRuQ2xhc3NOYW1lID0gXCJcIixcbiAgY2xhc3NOYW1lID0gXCJcIixcbiAgY29udGV4dHVhbCA9IFwicHJpbWFyeVwiXG59OiBUb2dnbGVMaXN0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17YGJ0bi1ncm91cCBidG4tZ3JvdXAtdG9nZ2xlICR7Y2xhc3NOYW1lfWB9XG4gICAgZGF0YS10b2dnbGU9XCJidXR0b25zXCJcbiAgPlxuICAgIHtjb2x1bW5zXG4gICAgICAubWFwKChjb2x1bW46IENvbHVtbkRlc2NyaXB0aW9uKSA9PiAoe1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIHRvZ2dsZTogdG9nZ2xlc1tjb2x1bW4uZGF0YUZpZWxkXSxcbiAgICAgIH0pKVxuICAgICAgLm1hcCgoY29sdW1uOiBDb2x1bW5EZXNjcmlwdGlvbikgPT4gKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAga2V5PXtjb2x1bW4uZGF0YUZpZWxkfVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7YnRuQ2xhc3NOYW1lfSBidG4gYnRuLSR7Y29udGV4dHVhbH0gJHtcbiAgICAgICAgICAgIGNvbHVtbi50b2dnbGUgPyBcImFjdGl2ZVwiIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLXByZXNzZWQ9e2NvbHVtbi50b2dnbGUgPyBcInRydWVcIiA6IFwiZmFsc2VcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNvbHVtblRvZ2dsZShjb2x1bW4uZGF0YUZpZWxkKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjb2x1bW4udGV4dH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApKX1cbiAgPC9kaXY+XG4pO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgVG9nZ2xlTGlzdDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgRXhwb3J0Q1NWQnV0dG9uUHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuY29uc3QgZXhwb3J0Q1NWQnV0dG9uRGVmYXVsdFByb3BzID0ge1xuICBjbGFzc05hbWU6IFwiXCIsXG4gIHN0eWxlOiB7fSxcbn07XG5cbmNvbnN0IEV4cG9ydENTVkJ1dHRvbiA9IChcbiAgcHJvcHM6IEV4cG9ydENTVkJ1dHRvblByb3BzXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBvbkV4cG9ydCwgY2hpbGRyZW4sIGNsYXNzTmFtZSwgLi4ucmVzdCB9ID0geyAuLi5leHBvcnRDU1ZCdXR0b25EZWZhdWx0UHJvcHMsIC4uLnByb3BzIH07XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzTmFtZT17YHJlYWN0LWJzLXRhYmxlLWNzdi1idG4gYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zZWNvbmRhcnkgJHtjbGFzc05hbWV9YH1cbiAgICAgIG9uQ2xpY2s9eygpID0+IG9uRXhwb3J0KCl9XG4gICAgICB7Li4ucmVzdH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgRXhwb3J0Q1NWQnV0dG9uO1xuIiwiLyogZXNsaW50IG5vLXVubmVlZGVkLXRlcm5hcnk6IDAgKi9cbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSBcImZpbGUtc2F2ZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldE1ldGFJbmZvID0gKGNvbHVtbnM6IGFueSkgPT5cbiAgY29sdW1uc1xuICAgIC5tYXAoKGNvbHVtbjogYW55KSA9PiAoe1xuICAgICAgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICB0eXBlOiBjb2x1bW4uY3N2VHlwZSB8fCBTdHJpbmcsXG4gICAgICBmb3JtYXR0ZXI6IGNvbHVtbi5jc3ZGb3JtYXR0ZXIsXG4gICAgICBmb3JtYXRFeHRyYURhdGE6IGNvbHVtbi5mb3JtYXRFeHRyYURhdGEsXG4gICAgICBoZWFkZXI6IGNvbHVtbi5jc3ZUZXh0IHx8IGNvbHVtbi50ZXh0LFxuICAgICAgZXhwb3J0OiBjb2x1bW4uY3N2RXhwb3J0ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgIHJvdzogTnVtYmVyKGNvbHVtbi5yb3cpIHx8IDAsXG4gICAgICByb3dTcGFuOiBOdW1iZXIoY29sdW1uLnJvd1NwYW4pIHx8IDEsXG4gICAgICBjb2xTcGFuOiBOdW1iZXIoY29sdW1uLmNvbFNwYW4pIHx8IDEsXG4gICAgICBmb290ZXI6IGNvbHVtbi5mb290ZXIsXG4gICAgICBmb290ZXJGb3JtYXR0ZXI6IGNvbHVtbi5mb290ZXJGb3JtYXR0ZXIsXG4gICAgfSkpXG4gICAgLmZpbHRlcigoXzogYW55KSA9PiBfLmV4cG9ydCk7XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm0gPSAoXG4gIGRhdGE6IGFueSxcbiAgbWV0YTogYW55LFxuICBjb2x1bW5zOiBhbnksXG4gIF86IGFueSxcbiAgeyBzZXBhcmF0b3IsIGlnbm9yZUhlYWRlciwgaWdub3JlRm9vdGVyIH06IGFueVxuKSA9PiB7XG4gIGNvbnN0IHZpc2libGVDb2x1bW5zID0gbWV0YS5maWx0ZXIoKG06IGFueSkgPT4gbS5leHBvcnQpO1xuICBsZXQgY29udGVudCA9IFwiXCI7XG4gIC8vIGV4dHJhY3QgY3N2IGhlYWRlclxuICBpZiAoIWlnbm9yZUhlYWRlcikge1xuICAgIGNvbnRlbnQgKz0gdmlzaWJsZUNvbHVtbnMubWFwKChtOiBhbnkpID0+IGBcIiR7bS5oZWFkZXJ9XCJgKS5qb2luKHNlcGFyYXRvcik7XG4gICAgY29udGVudCArPSBcIlxcblwiO1xuICB9XG4gIC8vIGV4dHJhY3QgY3N2IGJvZHlcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gY29udGVudDtcbiAgY29udGVudCArPSBkYXRhXG4gICAgLm1hcCgocm93OiBhbnksIHJvd0luZGV4OiBhbnkpID0+XG4gICAgICB2aXNpYmxlQ29sdW1uc1xuICAgICAgICAubWFwKChtOiBhbnkpID0+IHtcbiAgICAgICAgICBsZXQgY2VsbENvbnRlbnQgPSBfLmdldChyb3csIG0uZmllbGQpO1xuICAgICAgICAgIGlmIChtLmZvcm1hdHRlcikge1xuICAgICAgICAgICAgY2VsbENvbnRlbnQgPSBtLmZvcm1hdHRlcihcbiAgICAgICAgICAgICAgY2VsbENvbnRlbnQsXG4gICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgcm93SW5kZXgsXG4gICAgICAgICAgICAgIG0uZm9ybWF0RXh0cmFEYXRhXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobS50eXBlID09PSBTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBgXCIke2Ake2NlbGxDb250ZW50fWAucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjZWxsQ29udGVudDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oc2VwYXJhdG9yKVxuICAgIClcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBpZiAoIWlnbm9yZUZvb3Rlcikge1xuICAgIGNvbnRlbnQgKz0gXCJcXG5cIjtcbiAgICBjb250ZW50ICs9IHZpc2libGVDb2x1bW5zXG4gICAgICAubWFwKChtOiBhbnksIGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG0uZm9vdGVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjb25zdCBjb2x1bW5EYXRhID0gXy5wbHVjayhkYXRhLCBjb2x1bW5zW2ldLmRhdGFGaWVsZCk7XG4gICAgICAgICAgcmV0dXJuIGBcIiR7bS5mb290ZXIoY29sdW1uRGF0YSwgY29sdW1uc1tpXSwgaSl9XCJgO1xuICAgICAgICB9IGVsc2UgaWYgKG0uZm9vdGVyRm9ybWF0dGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGBcIiR7bS5mb290ZXJGb3JtYXR0ZXIoY29sdW1uc1tpXSwgaSl9XCJgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgXCIke20uZm9vdGVyfVwiYDtcbiAgICAgIH0pXG4gICAgICAuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IHNhdmUgPSAoY29udGVudDogYW55LCB7IG5vQXV0b0JPTSwgZmlsZU5hbWUsIGJsb2JUeXBlIH06IGFueSkgPT4ge1xuICBGaWxlU2F2ZXIuc2F2ZUFzKFxuICAgIG5ldyBCbG9iKFtjb250ZW50XSwgeyB0eXBlOiBibG9iVHlwZSB9KSxcbiAgICBmaWxlTmFtZSxcbiAgICBub0F1dG9CT01cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCBFeHBvcnRDU1ZCdXR0b24gZnJvbSAnLi9idXR0b24nO1xuXG5leHBvcnQgZGVmYXVsdCB7IEV4cG9ydENTVkJ1dHRvbiB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBnZXRNZXRhSW5mbywgc2F2ZSwgdHJhbnNmb3JtIH0gZnJvbSBcIi4uL2Nzdi9leHBvcnRlclwiO1xuXG5jb25zdCBjc3ZEZWZhdWx0T3B0aW9ucyA9IHtcbiAgZmlsZU5hbWU6IFwic3ByZWFkc2hlZXQuY3N2XCIsXG4gIHNlcGFyYXRvcjogXCIsXCIsXG4gIGlnbm9yZUhlYWRlcjogZmFsc2UsXG4gIGlnbm9yZUZvb3RlcjogdHJ1ZSxcbiAgbm9BdXRvQk9NOiB0cnVlLFxuICBibG9iVHlwZTogXCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLThcIixcbiAgZXhwb3J0QWxsOiB0cnVlLFxuICBvbmx5RXhwb3J0U2VsZWN0aW9uOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChCYXNlOiBhbnkpID0+XG4gIGNsYXNzIENTVk9wZXJhdGlvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDx0eXBlb2YgQmFzZT4ge1xuICAgIF86IGFueTtcbiAgICB0YWJsZUV4cG9zZWRBUElFbWl0dGVyOiBhbnk7XG5cbiAgICBoYW5kbGVFeHBvcnRDU1YgPSAoc291cmNlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgY29sdW1ucywgZXhwb3J0Q1NWLCBrZXlGaWVsZCB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhSW5mbyhjb2x1bW5zKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgICBleHBvcnRDU1YgPT09IHRydWVcbiAgICAgICAgICA/IGNzdkRlZmF1bHRPcHRpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmNzdkRlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgICAuLi5leHBvcnRDU1YsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAvLyBnZXQgZGF0YSBmb3IgY3N2IGV4cG9ydFxuICAgICAgbGV0IGRhdGE6IGFueTtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGRhdGEgPSBzb3VyY2U7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXhwb3J0QWxsKSB7XG4gICAgICAgIGRhdGEgPSB0aGlzLnByb3BzLmRhdGE7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMub25seUV4cG9ydEZpbHRlcmVkKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IHsgcmVzdWx0OiBhbnkgfSA9IHsgcmVzdWx0OiB1bmRlZmluZWQgfTtcbiAgICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyLmVtaXQoXCJnZXQuZmlsdGVyZWQucm93c1wiLCBwYXlsb2FkKTtcbiAgICAgICAgZGF0YSA9IHBheWxvYWQucmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcmVzdWx0OiB1bmRlZmluZWQgfTtcbiAgICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyLmVtaXQoXCJnZXQudGFibGUuZGF0YVwiLCBwYXlsb2FkKTtcbiAgICAgICAgZGF0YSA9IHBheWxvYWQucmVzdWx0O1xuICAgICAgfVxuXG4gICAgICAvLyBmaWx0ZXIgZGF0YSBieSByb3cgc2VsZWN0aW9uXG4gICAgICBpZiAob3B0aW9ucy5vbmx5RXhwb3J0U2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IHJlc3VsdDogdW5kZWZpbmVkIH07XG4gICAgICAgIHRoaXMudGFibGVFeHBvc2VkQVBJRW1pdHRlci5lbWl0KFwiZ2V0LnNlbGVjdGVkLnJvd3NcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBwYXlsb2FkLnJlc3VsdCA/PyBbXTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoKHJvdzogYW55KSA9PiBzZWxlY3Rpb25zLmluY2x1ZGVzKHJvd1trZXlGaWVsZF0pKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudCA9IHRyYW5zZm9ybShkYXRhLCBtZXRhLCBjb2x1bW5zLCB0aGlzLl8sIG9wdGlvbnMpO1xuICAgICAgc2F2ZShjb250ZW50LCBvcHRpb25zKTtcbiAgICB9O1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgY3N2T3BlcmF0aW9uIGZyb20gJy4vY3N2JztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjc3ZPcGVyYXRpb25cbn07XG4iLCIvKiBlc2xpbnQgY2FtZWxjYXNlOiAwICovXG4vKiBlc2xpbnQgbm8tcmV0dXJuLWFzc2lnbjogMCAqL1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgU2VhcmNoQmFyUHJvcHMgfSBmcm9tIFwiLi4vLi5cIjtcblxuY29uc3QgaGFuZGxlRGVib3VuY2UgPSA8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4oXG4gIGZ1bmM6IFQsXG4gIHdhaXQ6IG51bWJlcixcbiAgaW1tZWRpYXRlPzogYm9vbGVhblxuKSA9PiB7XG4gIGxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICBjb25zdCBsYXRlciA9ICgpID0+IHtcbiAgICAgIHRpbWVvdXQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghaW1tZWRpYXRlKSB7XG4gICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7XG5cbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCB8fCAwKTtcblxuICAgIGlmIChjYWxsTm93KSB7XG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cbiAgfTtcbn07XG5cbmludGVyZmFjZSBTZWFyY2hCYXJTdGF0ZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmNsYXNzIFNlYXJjaEJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxTZWFyY2hCYXJQcm9wcywgU2VhcmNoQmFyU3RhdGU+IHtcbiAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU2VhcmNoQmFyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHZhbHVlOiBwcm9wcy5zZWFyY2hUZXh0ID8/IFwiXCIsXG4gICAgfTtcbiAgfVxuXG4gIG9uQ2hhbmdlVmFsdWUgPSAoZTogYW55KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBlLnRhcmdldC52YWx1ZSB9KTtcbiAgfTtcblxuICBvbktleXVwID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgZGVsYXkgPSAyNTAsIG9uU2VhcmNoIH0gPSB0aGlzLnByb3BzIGFzIGFueTtcbiAgICBjb25zdCBkZWJvdW5jZUNhbGxiYWNrID0gaGFuZGxlRGVib3VuY2UoKCkgPT4ge1xuICAgICAgb25TZWFyY2ghKHRoaXMuaW5wdXQ/LnZhbHVlID8/IFwiXCIpO1xuICAgIH0sIGRlbGF5KTtcbiAgICBkZWJvdW5jZUNhbGxiYWNrKCk7XG4gIH07XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogU2VhcmNoQmFyUHJvcHMpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWFyY2hUZXh0ICE9PSBwcmV2UHJvcHMuc2VhcmNoVGV4dCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiB0aGlzLnByb3BzLnNlYXJjaFRleHQgfHwgXCJcIiB9KTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICAgIHN0eWxlID0ge30sXG4gICAgICBwbGFjZWhvbGRlciA9IFwiU2VhcmNoXCIsXG4gICAgICB0YWJsZUlkID0gXCIwXCIsXG4gICAgICBzZWFyY2hUZXh0ID0gXCJTZWFyY2ggdGhpcyB0YWJsZVwiLFxuICAgIH0gPSB0aGlzLnByb3BzIGFzIGFueTtcblxuICAgIHJldHVybiAoXG4gICAgICA8bGFiZWwgaHRtbEZvcj17YHNlYXJjaC1iYXItJHt0YWJsZUlkfWB9IGNsYXNzTmFtZT1cInNlYXJjaC1sYWJlbFwiPlxuICAgICAgICA8c3BhbiBpZD17YHNlYXJjaC1iYXItJHt0YWJsZUlkfS1sYWJlbGB9IGNsYXNzTmFtZT1cInNyLW9ubHkgdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAge3NlYXJjaFRleHR9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXsobikgPT4geyB0aGlzLmlucHV0ID0gbjsgfX1cbiAgICAgICAgICBpZD17YHNlYXJjaC1iYXItJHt0YWJsZUlkfWB9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHN0eWxlPXtzdHlsZSBhcyBhbnl9XG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgc2VhcmNoLWJhci0ke3RhYmxlSWR9LWxhYmVsYH1cbiAgICAgICAgICBvbktleVVwPXsoKSA9PiB0aGlzLm9uS2V5dXAoKX1cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZVZhbHVlfVxuICAgICAgICAgIGNsYXNzTmFtZT17YGZvcm0tY29udHJvbCAke2NsYXNzTmFtZX1gfVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnZhbHVlfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgLz5cbiAgICAgIDwvbGFiZWw+XG4gICAgKTtcbiAgfVxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNsYXNzTmFtZTogJycsXG4gICAgc3R5bGU6IHt9LFxuICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBkZWxheTogMjUwLFxuICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgIHRhYmxlSWQ6ICcwJyxcbiAgICBzclRleHQ6ICdTZWFyY2ggdGhpcyB0YWJsZSdcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoQmFyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2xlYXJTZWFyY2hCdXR0b25Qcm9wcyB9IGZyb20gXCIuLi8uLlwiO1xuXG5jb25zdCBDbGVhckJ1dHRvbiA9ICh7XG4gIG9uQ2xlYXIsXG4gIHRleHQgPSBcIkNsZWFyXCIsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG59OiBDbGVhclNlYXJjaEJ1dHRvblByb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCA9PiAoXG4gIDxidXR0b24gY2xhc3NOYW1lPXtgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zZWNvbmRhcnkgJHtjbGFzc05hbWV9YH0gb25DbGljaz17b25DbGVhcn0+XG4gICAge3RleHR9XG4gIDwvYnV0dG9uPlxuKTtcblxuXG5leHBvcnQgZGVmYXVsdCBDbGVhckJ1dHRvbjtcbiIsIi8qIGVzbGludCByZWFjdC9wcm9wLXR5cGVzOiAwICovXG4vKiBlc2xpbnQgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzOiAwICovXG4vKiBlc2xpbnQgbm8tY29udGludWU6IDAgKi9cbi8qIGVzbGludCBuby1sb25lbHktaWY6IDAgKi9cbi8qIGVzbGludCBjbGFzcy1tZXRob2RzLXVzZS10aGlzOiAwICovXG4vKiBlc2xpbnQgY2FtZWxjYXNlOiAwICovXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTZWFyY2hNYXRjaFByb3BzLCBUYWJsZVNlYXJjaFByb3BzIH0gZnJvbSBcIi4uLy4uXCI7XG5cbmludGVyZmFjZSBEYXRhQ2hhbmdlTGlzdGVuZXIge1xuICBlbWl0OiAoZXZlbnQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFNlYXJjaFByb3ZpZGVyUHJvcHMgZXh0ZW5kcyBTZWFyY2hNYXRjaFByb3BzIHtcbiAgZGF0YTogYW55W107XG4gIGRhdGFDaGFuZ2VMaXN0ZW5lcj86IERhdGFDaGFuZ2VMaXN0ZW5lcjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuaW50ZXJmYWNlIFNlYXJjaFByb3ZpZGVyU3RhdGUge1xuICBkYXRhOiBhbnlbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgKFxuICAgIG9wdGlvbnM6IFRhYmxlU2VhcmNoUHJvcHMgPSB7XG4gICAgICBzZWFyY2hGb3JtYXR0ZWQ6IGZhbHNlLFxuICAgICAgYWZ0ZXJTZWFyY2g6IHVuZGVmaW5lZCxcbiAgICAgIG9uQ29sdW1uTWF0Y2g6ICgpID0+IGZhbHNlLFxuICAgIH1cbiAgKSA9PlxuICAoXG4gICAgXzogYW55LFxuICAgIGlzUmVtb3RlU2VhcmNoOiAoKSA9PiBib29sZWFuLFxuICAgIGhhbmRsZVJlbW90ZVNlYXJjaENoYW5nZTogKHNlYXJjaFRleHQ6IHN0cmluZykgPT4gdm9pZFxuICApID0+IHtcbiAgICBjb25zdCBTZWFyY2hDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxhbnk+KG51bGwpO1xuXG4gICAgY2xhc3MgU2VhcmNoUHJvdmlkZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gICAgICBTZWFyY2hQcm92aWRlclByb3BzLFxuICAgICAgU2VhcmNoUHJvdmlkZXJTdGF0ZVxuICAgID4ge1xuICAgICAgY29uc3RydWN0b3IocHJvcHM6IFNlYXJjaFByb3ZpZGVyUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICBsZXQgaW5pdGlhbERhdGEgPSBwcm9wcy5kYXRhO1xuICAgICAgICBpZiAoaXNSZW1vdGVTZWFyY2goKSAmJiB0aGlzLnByb3BzLnNlYXJjaFRleHQgIT09IFwiXCIpIHtcbiAgICAgICAgICBoYW5kbGVSZW1vdGVTZWFyY2hDaGFuZ2UodGhpcy5wcm9wcy5zZWFyY2hUZXh0ISk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5pdGlhbERhdGEgPSB0aGlzLnNlYXJjaChwcm9wcyk7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdGVuZXIoaW5pdGlhbERhdGEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7IGRhdGE6IGluaXRpYWxEYXRhIH07XG4gICAgICB9XG5cbiAgICAgIGdldFNlYXJjaGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5kYXRhO1xuICAgICAgfVxuXG4gICAgICB0cmlnZ2VyTGlzdGVuZXIocmVzdWx0OiBhbnksIHNraXBJbml0PzogYW55KSB7XG4gICAgICAgIGlmIChvcHRpb25zLmFmdGVyU2VhcmNoICYmICFza2lwSW5pdCkge1xuICAgICAgICAgIG9wdGlvbnMuYWZ0ZXJTZWFyY2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kYXRhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLmRhdGFDaGFuZ2VMaXN0ZW5lci5lbWl0KFwiZmlsdGVyQ2hhbmdlZFwiLCByZXN1bHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBTZWFyY2hQcm92aWRlclByb3BzKSB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMuc2VhcmNoVGV4dCAhPT0gdGhpcy5wcm9wcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgICAgaWYgKGlzUmVtb3RlU2VhcmNoKCkpIHtcbiAgICAgICAgICAgIGhhbmRsZVJlbW90ZVNlYXJjaENoYW5nZSh0aGlzLnByb3BzLnNlYXJjaFRleHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaCh0aGlzLnByb3BzKTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckxpc3RlbmVyKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc1JlbW90ZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICBpZiAoIV8uaXNFcXVhbCh0aGlzLnN0YXRlLmRhdGEsIHRoaXMucHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGE6IHRoaXMucHJvcHMuZGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzRXF1YWwocHJldlByb3BzLmRhdGEsIHRoaXMucHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoKHRoaXMucHJvcHMpO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdGVuZXIocmVzdWx0KTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VhcmNoKHByb3BzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhLCBjb2x1bW5zIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHByb3BzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGRhdGEuZmlsdGVyKChyb3c6IGFueSwgcmlkeDogYW55KSA9PiB7XG4gICAgICAgICAgZm9yIChsZXQgY2lkeCA9IDA7IGNpZHggPCBjb2x1bW5zLmxlbmd0aDsgY2lkeCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2NpZHhdO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5zZWFyY2hhYmxlID09PSBmYWxzZSkgY29udGludWU7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0VmFsdWUgPSBfLmdldChyb3csIGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5mb3JtYXR0ZXIgJiYgb3B0aW9ucy5zZWFyY2hGb3JtYXR0ZWQpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0VmFsdWUgPSBjb2x1bW4uZm9ybWF0dGVyKFxuICAgICAgICAgICAgICAgIHRhcmdldFZhbHVlLFxuICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICByaWR4LFxuICAgICAgICAgICAgICAgIGNvbHVtbi5mb3JtYXRFeHRyYURhdGFcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICAgIHRhcmdldFZhbHVlID0gY29sdW1uLmZpbHRlclZhbHVlKHRhcmdldFZhbHVlLCByb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub25Db2x1bW5NYXRjaCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vbkNvbHVtbk1hdGNoKHtcbiAgICAgICAgICAgICAgICAgIHNlYXJjaFRleHQsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdGFyZ2V0VmFsdWUsXG4gICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0VmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IHRhcmdldFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VmFsdWUuaW5kZXhPZihzZWFyY2hUZXh0KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTZWFyY2hDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IGRhdGE6IHRoaXMuc3RhdGUuZGF0YSB9fT5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvU2VhcmNoQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgUHJvdmlkZXI6IFNlYXJjaFByb3ZpZGVyLFxuICAgICAgQ29uc3VtZXI6IFNlYXJjaENvbnRleHQuQ29uc3VtZXIsXG4gICAgfTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFNlYXJjaEJhciBmcm9tICcuL1NlYXJjaEJhcic7XG5pbXBvcnQgQ2xlYXJTZWFyY2hCdXR0b24gZnJvbSAnLi9jbGVhci1idXR0b24nO1xuXG5leHBvcnQgZGVmYXVsdCB7IFNlYXJjaEJhciwgQ2xlYXJTZWFyY2hCdXR0b24gfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IE9wZXJhdGlvbiBmcm9tIFwiLi9zcmMvb3BcIjtcblxuZXhwb3J0IGRlZmF1bHQgKEJhc2U6IGFueSkgPT5cbiAgY2xhc3MgU3RhdGVsZXNzT3BlcmF0aW9uIGV4dGVuZHMgT3BlcmF0aW9uLmNzdk9wZXJhdGlvbihCYXNlKSB7XG4gICAgcmVnaXN0ZXJFeHBvc2VkQVBJID0gKHRhYmxlRXhwb3NlZEFQSUVtaXR0ZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy50YWJsZUV4cG9zZWRBUElFbWl0dGVyID0gdGFibGVFeHBvc2VkQVBJRW1pdHRlcjtcbiAgICB9O1xuICB9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX180NDJfXzsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjg4KTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZXF1aXJlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzQ0Ml9fIiwiYiIsImEiLCJhdXRvQm9tIiwiY29uc29sZSIsIndhcm4iLCJ0ZXN0IiwidHlwZSIsIkJsb2IiLCJjIiwiZCIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsInJlc3BvbnNlVHlwZSIsIm9ubG9hZCIsImciLCJyZXNwb25zZSIsIm9uZXJyb3IiLCJlcnJvciIsInNlbmQiLCJzdGF0dXMiLCJlIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJkb2N1bWVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdE1vdXNlRXZlbnQiLCJ3aW5kb3ciLCJmIiwiZ2xvYmFsIiwibmF2aWdhdG9yIiwidXNlckFnZW50Iiwic2F2ZUFzIiwiSFRNTEFuY2hvckVsZW1lbnQiLCJwcm90b3R5cGUiLCJoIiwiaSIsIlVSTCIsIndlYmtpdFVSTCIsImoiLCJjcmVhdGVFbGVtZW50IiwibmFtZSIsImRvd25sb2FkIiwicmVsIiwiaHJlZiIsIm9yaWdpbiIsImxvY2F0aW9uIiwidGFyZ2V0IiwiY3JlYXRlT2JqZWN0VVJMIiwic2V0VGltZW91dCIsInJldm9rZU9iamVjdFVSTCIsIm1zU2F2ZU9yT3BlbkJsb2IiLCJ0aXRsZSIsImJvZHkiLCJpbm5lclRleHQiLCJIVE1MRWxlbWVudCIsInNhZmFyaSIsIkZpbGVSZWFkZXIiLCJrIiwib25sb2FkZW5kIiwicmVzdWx0IiwicmVwbGFjZSIsInJlYWRBc0RhdGFVUkwiLCJsIiwibSIsIlRvb2xraXRDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsInNlYXJjaFByb3BzIiwic2VhcmNoVGV4dCIsIm9uU2VhcmNoIiwidmFsIiwib25DbGVhciIsImNzdlByb3BzIiwib25FeHBvcnQiLCJjb2x1bW5Ub2dnbGVQcm9wcyIsImNvbHVtbnMiLCJ0b2dnbGVzIiwib25Db2x1bW5Ub2dnbGUiLCJkYXRhRmllbGQiLCJiYXNlUHJvcHMiLCJrZXlGaWVsZCIsInVuZGVmaW5lZCIsImRhdGEiLCJib290c3RyYXA0IiwiYm9vdHN0cmFwNSIsImNvbHVtblJlc2l6ZSIsIlRvb2xraXRQcm92aWRlciIsIkNvbXBvbmVudCIsInN0YXRpYyIsInNlYXJjaCIsImV4cG9ydENTViIsIl8iLCJzdGF0ZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdXBlciIsImluaXRpYWxTdGF0ZSIsImNvbHVtblRvZ2dsZSIsImRlZmF1bHRTZWFyY2giLCJ0aGlzIiwiYmluZCIsInNldERlcGVuZGVuY3lNb2R1bGVzIiwicmVkdWNlIiwib2JqIiwiY29sdW1uIiwiaGlkZGVuIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiY3VyckNvbHVtblRvZ2dsZSIsInByb3BzQ29sdW1uVG9nZ2xlIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJjaGlsZHJlbiIsInJlZ2lzdGVyRXhwb3NlZEFQSSIsInNlYXJjaENvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiaGFuZGxlRXhwb3J0Q1NWIiwiQ29uc3VtZXIiLCJkZWZhdWx0IiwidG9va0tpdFByb3BzIiwiVG9nZ2xlTGlzdCIsImJ0bkNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImNvbnRleHR1YWwiLCJtYXAiLCJ0b2dnbGUiLCJrZXkiLCJvbkNsaWNrIiwidGV4dCIsImV4cG9ydENTVkJ1dHRvbkRlZmF1bHRQcm9wcyIsInN0eWxlIiwicmVzdCIsImdldE1ldGFJbmZvIiwiZmllbGQiLCJjc3ZUeXBlIiwiU3RyaW5nIiwiZm9ybWF0dGVyIiwiY3N2Rm9ybWF0dGVyIiwiZm9ybWF0RXh0cmFEYXRhIiwiaGVhZGVyIiwiY3N2VGV4dCIsImV4cG9ydCIsImNzdkV4cG9ydCIsInJvdyIsIk51bWJlciIsInJvd1NwYW4iLCJjb2xTcGFuIiwiZm9vdGVyIiwiZm9vdGVyRm9ybWF0dGVyIiwiZmlsdGVyIiwidHJhbnNmb3JtIiwibWV0YSIsInNlcGFyYXRvciIsImlnbm9yZUhlYWRlciIsImlnbm9yZUZvb3RlciIsInZpc2libGVDb2x1bW5zIiwiY29udGVudCIsImpvaW4iLCJsZW5ndGgiLCJyb3dJbmRleCIsImNlbGxDb250ZW50IiwiZ2V0IiwiY29sdW1uRGF0YSIsInBsdWNrIiwic2F2ZSIsIm5vQXV0b0JPTSIsImZpbGVOYW1lIiwiYmxvYlR5cGUiLCJFeHBvcnRDU1ZCdXR0b24iLCJjc3ZEZWZhdWx0T3B0aW9ucyIsImV4cG9ydEFsbCIsIm9ubHlFeHBvcnRTZWxlY3Rpb24iLCJCYXNlIiwidGFibGVFeHBvc2VkQVBJRW1pdHRlciIsInNvdXJjZSIsIm9wdGlvbnMiLCJvbmx5RXhwb3J0RmlsdGVyZWQiLCJwYXlsb2FkIiwiZW1pdCIsInNlbGVjdGlvbnMiLCJpbmNsdWRlcyIsImNzdk9wZXJhdGlvbiIsImhhbmRsZURlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJpbW1lZGlhdGUiLCJ0aW1lb3V0IiwiYXJncyIsImNhbGxOb3ciLCJjbGVhclRpbWVvdXQiLCJhcHBseSIsIlNlYXJjaEJhciIsImlucHV0Iiwib25DaGFuZ2VWYWx1ZSIsIm9uS2V5dXAiLCJkZWxheSIsImRlYm91bmNlQ2FsbGJhY2siLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwbGFjZWhvbGRlciIsInRhYmxlSWQiLCJodG1sRm9yIiwiaWQiLCJyZWYiLCJuIiwib25LZXlVcCIsIm9uQ2hhbmdlIiwic3JUZXh0Iiwic2VhcmNoRm9ybWF0dGVkIiwiYWZ0ZXJTZWFyY2giLCJvbkNvbHVtbk1hdGNoIiwiaXNSZW1vdGVTZWFyY2giLCJoYW5kbGVSZW1vdGVTZWFyY2hDaGFuZ2UiLCJTZWFyY2hDb250ZXh0IiwiU2VhcmNoUHJvdmlkZXIiLCJpbml0aWFsRGF0YSIsInRyaWdnZXJMaXN0ZW5lciIsImdldFNlYXJjaGVkIiwic2tpcEluaXQiLCJkYXRhQ2hhbmdlTGlzdGVuZXIiLCJpc0VxdWFsIiwidG9Mb3dlckNhc2UiLCJyaWR4IiwiY2lkeCIsInNlYXJjaGFibGUiLCJ0YXJnZXRWYWx1ZSIsImZpbHRlclZhbHVlIiwidG9TdHJpbmciLCJpbmRleE9mIiwiQ2xlYXJTZWFyY2hCdXR0b24iLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiY2FsbCIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|
package/lib/context.d.ts
CHANGED
package/lib/context.js
CHANGED
|
@@ -47,7 +47,8 @@ var ToolkitContext = react_1["default"].createContext({
|
|
|
47
47
|
columns: [],
|
|
48
48
|
data: [],
|
|
49
49
|
bootstrap4: undefined,
|
|
50
|
-
bootstrap5: undefined
|
|
50
|
+
bootstrap5: undefined,
|
|
51
|
+
columnResize: undefined
|
|
51
52
|
}
|
|
52
53
|
});
|
|
53
54
|
var ToolkitProvider = /*#__PURE__*/function (_ref) {
|
|
@@ -118,7 +119,7 @@ var ToolkitProvider = /*#__PURE__*/function (_ref) {
|
|
|
118
119
|
}, {
|
|
119
120
|
key: "render",
|
|
120
121
|
value: function render() {
|
|
121
|
-
var _this$props$search, _this$props$exportCSV, _this$props$bootstrap, _this$props$bootstrap2;
|
|
122
|
+
var _this$props$search, _this$props$exportCSV, _this$props$bootstrap, _this$props$bootstrap2, _this$props$columnRes;
|
|
122
123
|
var baseProps = {
|
|
123
124
|
keyField: this.props.keyField,
|
|
124
125
|
columns: this.props.columns,
|
|
@@ -127,6 +128,7 @@ var ToolkitProvider = /*#__PURE__*/function (_ref) {
|
|
|
127
128
|
exportCSV: (_this$props$exportCSV = this.props.exportCSV) !== null && _this$props$exportCSV !== void 0 ? _this$props$exportCSV : false,
|
|
128
129
|
bootstrap4: (_this$props$bootstrap = this.props.bootstrap4) !== null && _this$props$bootstrap !== void 0 ? _this$props$bootstrap : false,
|
|
129
130
|
bootstrap5: (_this$props$bootstrap2 = this.props.bootstrap5) !== null && _this$props$bootstrap2 !== void 0 ? _this$props$bootstrap2 : false,
|
|
131
|
+
columnResize: (_this$props$columnRes = this.props.columnResize) !== null && _this$props$columnRes !== void 0 ? _this$props$columnRes : false,
|
|
130
132
|
children: this.props.children,
|
|
131
133
|
setDependencyModules: this.setDependencyModules,
|
|
132
134
|
registerExposedAPI: this.registerExposedAPI
|
|
@@ -190,7 +192,8 @@ _defineProperty(ToolkitProvider, "defaultProps", {
|
|
|
190
192
|
search: false,
|
|
191
193
|
exportCSV: false,
|
|
192
194
|
bootstrap4: false,
|
|
193
|
-
bootstrap5: false
|
|
195
|
+
bootstrap5: false,
|
|
196
|
+
columnResize: false
|
|
194
197
|
});
|
|
195
198
|
exports["default"] = {
|
|
196
199
|
Provider: ToolkitProvider,
|
package/lib/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["context.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAiC;AACjC,kDAA0B;AAG1B,mEAAuD;AACvD,gEAA+C;AAE/C,MAAM,cAAc,GAAG,eAAK,CAAC,aAAa,CAAqB;IAC7D,WAAW,EAAE;QACX,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,GAAE,CAAC;QAC7B,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;KACnB;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,CAAC,SAAiB,EAAE,EAAE,GAAE,CAAC;KAC1C;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["context.tsx"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare const ToolkitContext: {
|
|
|
37
37
|
exportCSV: boolean;
|
|
38
38
|
bootstrap4: boolean;
|
|
39
39
|
bootstrap5: boolean;
|
|
40
|
+
columnResize: boolean;
|
|
40
41
|
};
|
|
41
42
|
getDerivedStateFromProps(props: TableToolkitProps, state: any): any;
|
|
42
43
|
contextType?: React.Context<any> | undefined;
|
|
@@ -98,6 +99,7 @@ export interface TableToolkitProps<T extends object = any> {
|
|
|
98
99
|
columnToggle?: {
|
|
99
100
|
[dataField: string]: boolean;
|
|
100
101
|
} | boolean | undefined;
|
|
102
|
+
columnResize?: boolean | undefined;
|
|
101
103
|
setDependencyModules?: Function;
|
|
102
104
|
registerExposedAPI?: Function;
|
|
103
105
|
}
|
|
@@ -123,6 +125,7 @@ export interface ToolkitContextType {
|
|
|
123
125
|
data: any[];
|
|
124
126
|
bootstrap4?: boolean | undefined;
|
|
125
127
|
bootstrap5?: boolean | undefined;
|
|
128
|
+
columnResize?: boolean | undefined;
|
|
126
129
|
};
|
|
127
130
|
}
|
|
128
131
|
export interface ToggleListProps {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-bootstrap-table-ng-toolkit",
|
|
3
|
-
"version": "5.19.
|
|
3
|
+
"version": "5.19.2",
|
|
4
4
|
"description": "The toolkit for react-bootstrap-table-ng",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"file-saver": "^2.0.5",
|
|
56
|
-
"react-bootstrap-table-ng": "^5.19.
|
|
56
|
+
"react-bootstrap-table-ng": "^5.19.2"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@types/file-saver": "^2.0.5"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "ebe6bd85b25e5cc53e0b44e50af2d83219016f20"
|
|
62
62
|
}
|