diff --git a/frontend/components/Analytics.js b/frontend/components/Analytics.js index 581099a..5c6cbd1 100644 --- a/frontend/components/Analytics.js +++ b/frontend/components/Analytics.js @@ -1,6 +1,4 @@ import React from 'react'; -// import '../assets/stylesheets/base.scss'; -// import 'bulma/css/bulma.css'; import {LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend} from 'recharts'; const clarity = [ diff --git a/frontend/components/Landing.js b/frontend/components/Landing.js new file mode 100644 index 0000000..fde4a7c --- /dev/null +++ b/frontend/components/Landing.js @@ -0,0 +1,128 @@ +import React from 'react'; + +class BusinessLanding extends React.Component { + constructor(props) { + super(props); + this.state = { + open: false, + submit: false, + name: '', + email: '', + complete: false, + error: false + } + this.onClick = this.onClick.bind(this); + this.onSubmit = this.onSubmit.bind(this); + } + onClick() { + this.setState({open: !this.state.open}) + } + onSubmit() { + console.log('SENDING', this.state.name, this.state.email); + if (this.state.name.trim().length > 0 && this.state.email.trim().length > 0) { + this.setState({open: false, complete: true}); + } else { + this.setState({error: true}) + } + } + render() { + return( +
+
+

Welcome to Parro

+
+

Parro is an automated tech interviewing platform + helping businesses screen technical applicants efficiently and guiding applicants through a seamless interview process. +

+
+
+
+
+

+

    +
  • + + + + Behavioral: Companies provide us with their behavioral questions. Responses are recorded and + bound with time limits. +
  • +
    +
  • + + + + Technical: Equipped with a code editor, multiple + languages, a timer, and the ability to ask questions live. +
  • + +
    + +
  • + + + + Q&A: Applicants can ask role and company specific questions, and Parro will analyze the question + and respond with the best fit answer from the company. +
  • +
    + +
  • + + + + Analytics: Responses are analyzed throughout the interview, and at the end, + recruiters are given summary analytics on the applicant's performance as well as behavioral metrics. +
  • +
+

+
+
+
+ +
+ + {this.state.open ? +
+
+
+ this.setState({name: e.target.value})}/> + + + +
+
+
+
+ this.setState({email: e.target.value})}/> + + + +
+
+ {this.state.error &&

Please enter valid name and email.

} +
+ +
+
+ + : ''} + {this.state.complete && +
+

🚀 Please check your email for a link to the demo.

+
+ } +
+ + ) + } +} + +export default BusinessLanding; diff --git a/frontend/index.js b/frontend/index.js index 7cae944..b421396 100644 --- a/frontend/index.js +++ b/frontend/index.js @@ -3,7 +3,6 @@ import { render } from 'react-dom'; import { createStore } from 'redux'; import { Provider } from 'react-redux'; import App from './containers/AppContainer' -// import Recorder from './components/Recorder'; import { BrowserRouter, Route, Link } from 'react-router-dom' import rootReducer from './reducers/index'; import Analytics from './components/Analytics'; @@ -16,6 +15,7 @@ import Technical from './components/Technical'; import End from './components/End'; import Timer from './components/Timer'; import Question from './components/Question'; +import Landing from './components/Landing'; import 'bulma/css/bulma.css'; @@ -27,7 +27,7 @@ render(
- + diff --git a/public/bundle.js b/public/bundle.js new file mode 100644 index 0000000..1d74aaf --- /dev/null +++ b/public/bundle.js @@ -0,0 +1 @@ +!function(n){function e(n){delete installedChunks[n]}function t(n){var e=document.getElementsByTagName("head")[0],t=document.createElement("script");t.type="text/javascript",t.charset="utf-8",t.src=u.p+""+n+"."+Q+".hot-update.js",e.appendChild(t)}function c(){return new Promise(function(n,e){if("undefined"==typeof XMLHttpRequest)return e(new Error("No browser support"));try{var t=new XMLHttpRequest,c=u.p+""+Q+".hot-update.json";t.open("GET",c,!0),t.timeout=1e4,t.send(null)}catch(n){return e(n)}t.onreadystatechange=function(){if(4===t.readyState)if(0===t.status)e(new Error("Manifest request to "+c+" timed out."));else if(404===t.status)n();else if(200!==t.status&&304!==t.status)e(new Error("Manifest request to "+c+" failed."));else{try{var g=JSON.parse(t.responseText)}catch(n){return void e(n)}n(g)}}})}function g(n){var e=R[n];if(!e)return u;var t=function(t){return e.hot.active?(R[t]?R[t].parents.indexOf(n)<0&&R[t].parents.push(n):(p=[n],G=t),e.children.indexOf(t)<0&&e.children.push(t)):(console.warn("[HMR] unexpected require("+t+") from disposed module "+n),p=[]),u(t)};for(var c in u)Object.prototype.hasOwnProperty.call(u,c)&&"e"!==c&&Object.defineProperty(t,c,function(n){return{configurable:!0,enumerable:!0,get:function(){return u[n]},set:function(e){u[n]=e}}}(c));return t.e=function(n){function e(){h--,"prepare"===y&&(V[n]||b(n),0===h&&0===W&&d())}return"ready"===y&&l("prepare"),h++,u.e(n).then(e,function(n){throw e(),n})},t}function I(n){var e={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_disposeHandlers:[],_main:G!==n,active:!0,accept:function(n,t){if(void 0===n)e._selfAccepted=!0;else if("function"==typeof n)e._selfAccepted=n;else if("object"==typeof n)for(var c=0;c=0&&e._disposeHandlers.splice(t,1)},check:i,apply:o,status:function(n){if(!n)return y;A.push(n)},addStatusHandler:function(n){A.push(n)},removeStatusHandler:function(n){var e=A.indexOf(n);e>=0&&A.splice(e,1)},data:F[n]};return G=void 0,e}function l(n){y=n;for(var e=0;e0;){var I=g.pop(),l=I.id,a=I.chain;if((B=R[l])&&!B.hot._selfAccepted){if(B.hot._selfDeclined)return{type:"self-declined",chain:a,moduleId:l};if(B.hot._main)return{type:"unaccepted",chain:a,moduleId:l};for(var i=0;i=0||(d.hot._acceptedDependencies[l]?(t[b]||(t[b]=[]),c(t[b],[l])):(delete t[b],e.push(b),g.push({chain:a.concat([b]),id:b})))}}}}return{type:"accepted",moduleId:n,outdatedModules:e,outdatedDependencies:t}}(b):{type:"disposed",moduleId:C};var X=!1,A=!1,W=!1,h="";switch(Z.chain&&(h="\nUpdate propagation: "+Z.chain.join(" -> ")),Z.type){case"self-declined":t.onDeclined&&t.onDeclined(Z),t.ignoreDeclined||(X=new Error("Aborted because of self decline: "+Z.moduleId+h));break;case"declined":t.onDeclined&&t.onDeclined(Z),t.ignoreDeclined||(X=new Error("Aborted because of declined dependency: "+Z.moduleId+" in "+Z.parentId+h));break;case"unaccepted":t.onUnaccepted&&t.onUnaccepted(Z),t.ignoreUnaccepted||(X=new Error("Aborted because "+b+" is not accepted"+h));break;case"accepted":t.onAccepted&&t.onAccepted(Z),A=!0;break;case"disposed":t.onDisposed&&t.onDisposed(Z),W=!0;break;default:throw new Error("Unexception type "+Z.type)}if(X)return l("abort"),Promise.reject(X);if(A){r[b]=s[b],c(o,Z.outdatedModules);for(b in Z.outdatedDependencies)Object.prototype.hasOwnProperty.call(Z.outdatedDependencies,b)&&(d[b]||(d[b]=[]),c(d[b],Z.outdatedDependencies[b]))}W&&(c(o,[Z.moduleId]),r[b]=G)}var V=[];for(I=0;I0;)if(b=x.pop(),B=R[b]){var v={},Y=B.hot._disposeHandlers;for(i=0;i=0&&H.parents.splice(U,1))}}var _,J;for(b in d)if(Object.prototype.hasOwnProperty.call(d,b)&&(B=R[b]))for(J=d[b],i=0;i=0&&B.children.splice(U,1);l("apply"),Q=m;for(b in r)Object.prototype.hasOwnProperty.call(r,b)&&(n[b]=r[b]);var E=null;for(b in d)if(Object.prototype.hasOwnProperty.call(d,b)){B=R[b],J=d[b];var T=[];for(I=0;I=0||T.push(g);for(I=0;I= 0;\n};\n\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\nvar filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n\n __WEBPACK_IMPORTED_MODULE_5_react___default.a.Children.forEach(children, function (entry) {\n if (entry && entry.type && __WEBPACK_IMPORTED_MODULE_1_lodash_isString___default()(entry.type) && SVG_TAGS.indexOf(entry.type) >= 0) {\n svgElements.push(entry);\n }\n });\n\n return svgElements;\n};\n\nvar isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (__WEBPACK_IMPORTED_MODULE_0_lodash_isNil___default()(nextChild) && __WEBPACK_IMPORTED_MODULE_0_lodash_isNil___default()(prevChild)) {\n return true;\n } else if (!__WEBPACK_IMPORTED_MODULE_0_lodash_isNil___default()(nextChild) && !__WEBPACK_IMPORTED_MODULE_0_lodash_isNil___default()(prevChild)) {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_8__PureRender__[\"a\" /* shallowEqual */])(nextChild.props, prevChild.props);\n }\n\n return false;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\nvar isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n if (__WEBPACK_IMPORTED_MODULE_5_react__[\"Children\"].count(nextChildren) !== __WEBPACK_IMPORTED_MODULE_5_react__[\"Children\"].count(prevChildren)) {\n return false;\n }\n var count = __WEBPACK_IMPORTED_MODULE_5_react__[\"Children\"].count(nextChildren);\n\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n return isSingleChildEqual(nextChildren, prevChildren);\n }\n\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n\n if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n\n __WEBPACK_IMPORTED_MODULE_5_react__[\"Children\"].forEach(children, function (child, index) {\n if (child && isSvgElement(child)) {\n elements.push(child);\n } else if (child && renderMap[getDisplayName(child.type)]) {\n var displayName = getDisplayName(child.type);\n var _renderMap$displayNam = renderMap[displayName],\n handler = _renderMap$displayNam.handler,\n once = _renderMap$displayNam.once;\n\n\n if (once && !record[displayName] || !once) {\n var results = handler(child, displayName, index);\n\n if (__WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default()(results)) {\n elements = [elements].concat(_toConsumableArray(results));\n } else {\n elements.push(results);\n }\n\n record[displayName] = true;\n }\n }\n });\n\n return elements;\n};\n\nvar getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\n\nvar parseChildIndex = function parseChildIndex(child, children) {\n var result = -1;\n __WEBPACK_IMPORTED_MODULE_5_react__[\"Children\"].forEach(children, function (entry, index) {\n if (entry === child) {\n result = index;\n }\n });\n\n return result;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVjaGFydHMvZXM2L3V0aWwvUmVhY3RVdGlscy5qcz81YjYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBfaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBfaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBfaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgX2lzQXJyYXkgZnJvbSAnbG9kYXNoL2lzQXJyYXknO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblxuaW1wb3J0IFJlYWN0LCB7IENoaWxkcmVuIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwgfSBmcm9tICcuL1B1cmVSZW5kZXInO1xuXG5leHBvcnQgdmFyIFBSRVNFTlRBVElPTl9BVFRSSUJVVEVTID0ge1xuICBhbGlnbm1lbnRCYXNlbGluZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYW5nbGU6IFByb3BUeXBlcy5udW1iZXIsXG4gIGJhc2VsaW5lU2hpZnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsaXA6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsaXBQYXRoOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjbGlwUnVsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbG9ySW50ZXJwb2xhdGlvbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3JQcm9maWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvclJlbmRlcmluZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgY3Vyc29yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbJ2x0cicsICdydGwnLCAnaW5oZXJpdCddKSxcbiAgZGlzcGxheTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZG9taW5hbnRCYXNlbGluZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZW5hYmxlQmFja2dyb3VuZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZmlsbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZmlsbE9wYWNpdHk6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgZmlsbFJ1bGU6IFByb3BUeXBlcy5vbmVPZihbJ25vbnplcm8nLCAnZXZlbm9kZCcsICdpbmhlcml0J10pLFxuICBmaWx0ZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZsb29kQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZsb29kT3BhY2l0eTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxuICBmb250OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb250RmFtaWx5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBmb250U2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICBmb250U2l6ZUFkanVzdDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICBmb250U3RyZXRjaDogUHJvcFR5cGVzLm9uZU9mKFsnbm9ybWFsJywgJ3dpZGVyJywgJ25hcnJvd2VyJywgJ3VsdHJhLWNvbmRlbnNlZCcsICdleHRyYS1jb25kZW5zZWQnLCAnY29uZGVuc2VkJywgJ3NlbWktY29uZGVuc2VkJywgJ3NlbWktZXhwYW5kZWQnLCAnZXhwYW5kZWQnLCAnZXh0cmEtZXhwYW5kZWQnLCAndWx0cmEtZXhwYW5kZWQnLCAnaW5oZXJpdCddKSxcbiAgZm9udFN0eWxlOiBQcm9wVHlwZXMub25lT2YoWydub3JtYWwnLCAnaXRhbGljJywgJ29ibGlxdWUnLCAnaW5oZXJpdCddKSxcbiAgZm9udFZhcmlhbnQ6IFByb3BUeXBlcy5vbmVPZihbJ25vcm1hbCcsICdzbWFsbC1jYXBzJywgJ2luaGVyaXQnXSksXG4gIGZvbnRXZWlnaHQ6IFByb3BUeXBlcy5vbmVPZihbJ25vcm1hbCcsICdib2xkJywgJ2JvbGRlcicsICdsaWdodGVyJywgMTAwLCAyMDAsIDMwMCwgNDAwLCA1MDAsIDYwMCwgNzAwLCA4MDAsIDkwMCwgJ2luaGVyaXQnXSksXG4gIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGltYWdlUmVuZGVyaW5nOiBQcm9wVHlwZXMub25lT2YoWydhdXRvJywgJ29wdGltaXplU3BlZWQnLCAnb3B0aW1pemVRdWFsaXR5JywgJ2luaGVyaXQnXSksXG4gIGtlcm5pbmc6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgbGV0dGVyU3BhY2luZzogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICBsaWdodGluZ0NvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBtYXJrZXJFbmQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG1hcmtlck1pZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbWFya2VyU3RhcnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG1hc2s6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9wYWNpdHk6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgb3ZlcmZsb3c6IFByb3BUeXBlcy5vbmVPZihbJ3Zpc2libGUnLCAnaGlkZGVuJywgJ3Njcm9sbCcsICdhdXRvJywgJ2luaGVyaXQnXSksXG4gIHBvaW50ZXJFdmVudHM6IFByb3BUeXBlcy5vbmVPZihbJ3Zpc2libGVQYWludGVkJywgJ3Zpc2libGVGaWxsJywgJ3Zpc2libGVTdHJva2UnLCAndmlzaWJsZScsICdwYWludGVkJywgJ2ZpbGwnLCAnc3Ryb2tlJywgJ2FsbCcsICdub25lJywgJ2luaGVyaXQnXSksXG4gIHNoYXBlUmVuZGVyaW5nOiBQcm9wVHlwZXMub25lT2YoWydhdXRvJywgJ29wdGltaXplU3BlZWQnLCAnY3Jpc3BFZGdlcycsICdnZW9tZXRyaWNQcmVjaXNpb24nLCAnaW5oZXJpdCddKSxcbiAgc3RvcENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdG9wT3BhY2l0eTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICBzdHJva2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgc3Ryb2tlRGFzaGFycmF5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdHJva2VEYXNob2Zmc2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIHN0cm9rZUxpbmVjYXA6IFByb3BUeXBlcy5vbmVPZihbJ2J1dHQnLCAncm91bmQnLCAnc3F1YXJlJywgJ2luaGVyaXQnXSksXG4gIHN0cm9rZUxpbmVqb2luOiBQcm9wVHlwZXMub25lT2YoWydtaXRlcicsICdyb3VuZCcsICdiZXZlbCcsICdpbmhlcml0J10pLFxuICBzdHJva2VNaXRlcmxpbWl0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIHN0cm9rZU9wYWNpdHk6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgc3Ryb2tlV2lkdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgdGV4dEFuY2hvcjogUHJvcFR5cGVzLm9uZU9mKFsnc3RhcnQnLCAnbWlkZGxlJywgJ2VuZCcsICdpbmhlcml0J10pLFxuICB0ZXh0RGVjb3JhdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnbm9uZScsICd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ2JsaW5rJywgJ2luaGVyaXQnXSksXG4gIHRleHRSZW5kZXJpbmc6IFByb3BUeXBlcy5vbmVPZihbJ2F1dG8nLCAnb3B0aW1pemVTcGVlZCcsICdvcHRpbWl6ZUxlZ2liaWxpdHknLCAnZ2VvbWV0cmljUHJlY2lzaW9uJywgJ2luaGVyaXQnXSksXG4gIHVuaWNvZGVCaWRpOiBQcm9wVHlwZXMub25lT2YoWydub3JtYWwnLCAnZW1iZWQnLCAnYmlkaS1vdmVycmlkZScsICdpbmhlcml0J10pLFxuICB2aXNpYmlsaXR5OiBQcm9wVHlwZXMub25lT2YoWyd2aXNpYmxlJywgJ2hpZGRlbicsICdjb2xsYXBzZScsICdpbmhlcml0J10pLFxuICB3b3JkU3BhY2luZzogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICB3cml0aW5nTW9kZTogUHJvcFR5cGVzLm9uZU9mKFsnbHItdGInLCAncmwtdGInLCAndGItcmwnLCAnbHInLCAncmwnLCAndGInLCAnaW5oZXJpdCddKSxcbiAgdHJhbnNmb3JtOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgaGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBkeDogUHJvcFR5cGVzLm51bWJlcixcbiAgZHk6IFByb3BUeXBlcy5udW1iZXIsXG4gIHg6IFByb3BUeXBlcy5udW1iZXIsXG4gIHk6IFByb3BUeXBlcy5udW1iZXIsXG4gIHI6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCB2YXIgRVZFTlRfQVRUUklCVVRFUyA9IHtcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uTW91c2VEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3VzZVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb3VzZU92ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvbk1vdXNlTW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uTW91c2VPdXQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbk1vdXNlRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvbk1vdXNlTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuICBvblRvdWNoRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Ub3VjaE1vdmU6IFByb3BUeXBlcy5mdW5jLFxuICBvblRvdWNoU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblRvdWNoQ2FuY2VsOiBQcm9wVHlwZXMuZnVuY1xufTtcblxudmFyIFJFQUNUX0JST1dTRVJfRVZFTlRfTUFQID0ge1xuICBjbGljazogJ29uQ2xpY2snLFxuICBtb3VzZWRvd246ICdvbk1vdXNlRG93bicsXG4gIG1vdXNldXA6ICdvbk1vdXNlVXAnLFxuICBtb3VzZW92ZXI6ICdvbk1vdXNlT3ZlcicsXG4gIG1vdXNlbW92ZTogJ29uTW91c2VNb3ZlJyxcbiAgbW91c2VvdXQ6ICdvbk1vdXNlT3V0JyxcbiAgbW91c2VlbnRlcjogJ29uTW91c2VFbnRlcicsXG4gIG1vdXNlbGVhdmU6ICdvbk1vdXNlTGVhdmUnLFxuICB0b3VjaGNhbmNlbDogJ29uVG91Y2hDYW5jZWwnLFxuICB0b3VjaGVuZDogJ29uVG91Y2hFbmQnLFxuICB0b3VjaG1vdmU6ICdvblRvdWNoTW92ZScsXG4gIHRvdWNoc3RhcnQ6ICdvblRvdWNoU3RhcnQnXG59O1xuXG5leHBvcnQgdmFyIFNDQUxFX1RZUEVTID0gWydhdXRvJywgJ2xpbmVhcicsICdwb3cnLCAnc3FydCcsICdsb2cnLCAnaWRlbnRpdHknLCAndGltZScsICdiYW5kJywgJ3BvaW50JywgJ29yZGluYWwnLCAncXVhbnRpbGUnLCAncXVhbnRpemUnLCAndXRjVGltZScsICdzZXF1ZW50aWFsJywgJ3RocmVzaG9sZCddO1xuXG5leHBvcnQgdmFyIExFR0VORF9UWVBFUyA9IFsnbGluZScsICdzcXVhcmUnLCAncmVjdCcsICdjaXJjbGUnLCAnY3Jvc3MnLCAnZGlhbW9uZCcsICdzdGFyJywgJ3RyaWFuZ2xlJywgJ3d5ZScsICdub25lJ107XG5cbi8qKlxuICogR2V0IHRoZSBkaXNwbGF5IG5hbWUgb2YgYSBjb21wb25lbnRcbiAqIEBwYXJhbSAge09iamVjdH0gQ29tcCBTcGVjaWZpZWQgQ29tcG9uZW50XG4gKiBAcmV0dXJuIHtTdHJpbmd9ICAgICAgRGlzcGxheSBuYW1lIG9mIENvbXBvbmVudFxuICovXG5leHBvcnQgdmFyIGdldERpc3BsYXlOYW1lID0gZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoQ29tcCkge1xuICBpZiAoIUNvbXApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHR5cGVvZiBDb21wID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBDb21wO1xuICB9XG4gIHJldHVybiBDb21wLmRpc3BsYXlOYW1lIHx8IENvbXAubmFtZSB8fCAnQ29tcG9uZW50Jztcbn07XG5cbi8qXG4gKiBGaW5kIGFuZCByZXR1cm4gYWxsIG1hdGNoZWQgY2hpbGRyZW4gYnkgdHlwZS4gYHR5cGVgIGNhbiBiZSBhIFJlYWN0IGVsZW1lbnQgY2xhc3Mgb3JcbiAqIHN0cmluZ1xuICovXG5leHBvcnQgdmFyIGZpbmRBbGxCeVR5cGUgPSBmdW5jdGlvbiBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCB0eXBlKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIHR5cGVzID0gW107XG5cbiAgaWYgKF9pc0FycmF5KHR5cGUpKSB7XG4gICAgdHlwZXMgPSB0eXBlLm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKHQpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHR5cGVzID0gW2dldERpc3BsYXlOYW1lKHR5cGUpXTtcbiAgfVxuXG4gIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHZhciBjaGlsZFR5cGUgPSBjaGlsZCAmJiBjaGlsZC50eXBlICYmIChjaGlsZC50eXBlLmRpc3BsYXlOYW1lIHx8IGNoaWxkLnR5cGUubmFtZSk7XG4gICAgaWYgKHR5cGVzLmluZGV4T2YoY2hpbGRUeXBlKSAhPT0gLTEpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuLypcbiAqIFJldHVybiB0aGUgZmlyc3QgbWF0Y2hlZCBjaGlsZCBieSB0eXBlLCByZXR1cm4gbnVsbCBvdGhlcndpc2UuXG4gKiBgdHlwZWAgY2FuIGJlIGEgUmVhY3QgZWxlbWVudCBjbGFzcyBvciBzdHJpbmcuXG4gKi9cbmV4cG9ydCB2YXIgZmluZENoaWxkQnlUeXBlID0gZnVuY3Rpb24gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCB0eXBlKSB7XG4gIHZhciByZXN1bHQgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCB0eXBlKTtcblxuICByZXR1cm4gcmVzdWx0ICYmIHJlc3VsdFswXTtcbn07XG5cbi8qXG4gKiBDcmVhdGUgYSBuZXcgYXJyYXkgb2YgY2hpbGRyZW4gZXhjbHVkaW5nIHRoZSBvbmVzIG1hdGNoZWQgdGhlIHR5cGVcbiAqL1xuZXhwb3J0IHZhciB3aXRob3V0VHlwZSA9IGZ1bmN0aW9uIHdpdGhvdXRUeXBlKGNoaWxkcmVuLCB0eXBlKSB7XG4gIHZhciBuZXdDaGlsZHJlbiA9IFtdO1xuICB2YXIgdHlwZXMgPSB2b2lkIDA7XG5cbiAgaWYgKF9pc0FycmF5KHR5cGUpKSB7XG4gICAgdHlwZXMgPSB0eXBlLm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKHQpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHR5cGVzID0gW2dldERpc3BsYXlOYW1lKHR5cGUpXTtcbiAgfVxuXG4gIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChjaGlsZCAmJiBjaGlsZC50eXBlICYmIGNoaWxkLnR5cGUuZGlzcGxheU5hbWUgJiYgdHlwZXMuaW5kZXhPZihjaGlsZC50eXBlLmRpc3BsYXlOYW1lKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV3Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gIH0pO1xuXG4gIHJldHVybiBuZXdDaGlsZHJlbjtcbn07XG5cbi8qKlxuICogZ2V0IGFsbCB0aGUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBvZiBzdmcgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBlbCBBIHJlYWN0IGVsZW1lbnQgb3IgdGhlIHByb3BzIG9mIGEgcmVhY3QgZWxlbWVudFxuICogQHJldHVybiB7T2JqZWN0fSAgICBhdHRyaWJ1dGVzIG9yIG51bGxcbiAqL1xuZXhwb3J0IHZhciBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGVzID0gZnVuY3Rpb24gZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlcyhlbCkge1xuICBpZiAoIWVsIHx8IF9pc0Z1bmN0aW9uKGVsKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIHByb3BzID0gUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWwpID8gZWwucHJvcHMgOiBlbDtcblxuICBpZiAoIV9pc09iamVjdChwcm9wcykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBvdXQgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yICh2YXIgaSBpbiBwcm9wcykge1xuICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBpKSAmJiBQUkVTRU5UQVRJT05fQVRUUklCVVRFU1tpXSkge1xuICAgICAgaWYgKCFvdXQpIG91dCA9IHt9O1xuICAgICAgb3V0W2ldID0gcHJvcHNbaV07XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG4vKipcbiAqIGdldCBhbGwgdGhlIGV2ZW50IGF0dHJpYnV0ZSBvZiBzdmcgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSAgIGVsICAgICAgICAgQSByZWFjdCBlbGVtZW50IG9yIHRoZSBwcm9wcyBvZiBhIHJlYWN0IGVsZW1lbnRcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBuZXdIYW5kbGVyIE5ldyBoYW5kbGVyIG9mIGV2ZW50XG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICBhdHRyaWJ1dGVzIG9yIG51bGxcbiAqL1xuZXhwb3J0IHZhciBmaWx0ZXJFdmVudEF0dHJpYnV0ZXMgPSBmdW5jdGlvbiBmaWx0ZXJFdmVudEF0dHJpYnV0ZXMoZWwsIG5ld0hhbmRsZXIpIHtcbiAgaWYgKCFlbCB8fCBfaXNGdW5jdGlvbihlbCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBwcm9wcyA9IFJlYWN0LmlzVmFsaWRFbGVtZW50KGVsKSA/IGVsLnByb3BzIDogZWw7XG5cbiAgaWYgKCFfaXNPYmplY3QocHJvcHMpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgb3V0ID0gbnVsbDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gIGZvciAodmFyIGkgaW4gcHJvcHMpIHtcbiAgICBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgaSkgJiYgRVZFTlRfQVRUUklCVVRFU1tpXSkge1xuICAgICAgaWYgKCFvdXQpIG91dCA9IHt9O1xuICAgICAgb3V0W2ldID0gbmV3SGFuZGxlciB8fCBwcm9wc1tpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbnZhciBnZXRFdmVudEhhbmRsZXIgPSBmdW5jdGlvbiBnZXRFdmVudEhhbmRsZXIob3JpZ2luYWxIYW5kbGVyLCBkYXRhLCBpbmRleCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGUpIHtcbiAgICBvcmlnaW5hbEhhbmRsZXIoZGF0YSwgaW5kZXgsIGUpO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59O1xuXG5leHBvcnQgdmFyIGZpbHRlckV2ZW50c09mQ2hpbGQgPSBmdW5jdGlvbiBmaWx0ZXJFdmVudHNPZkNoaWxkKHByb3BzLCBkYXRhLCBpbmRleCkge1xuICBpZiAoIV9pc09iamVjdChwcm9wcykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBvdXQgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yICh2YXIgaSBpbiBwcm9wcykge1xuICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBpKSAmJiBFVkVOVF9BVFRSSUJVVEVTW2ldICYmIF9pc0Z1bmN0aW9uKHByb3BzW2ldKSkge1xuICAgICAgaWYgKCFvdXQpIG91dCA9IHt9O1xuICAgICAgb3V0W2ldID0gZ2V0RXZlbnRIYW5kbGVyKHByb3BzW2ldLCBkYXRhLCBpbmRleCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG4vKipcbiAqIHZhbGlkYXRlIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHByb3BzIG9mIGEgY2hhcnQgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBlbCBBIGNoYXJ0IGVsZW1lbnRcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgdHJ1ZSBJZiB0aGUgcHJvcHMgd2lkdGggYW5kIGhlaWdodCBhcmUgbnVtYmVyLCBhbmQgZ3JlYXRlciB0aGFuIDBcbiAqL1xuZXhwb3J0IHZhciB2YWxpZGF0ZVdpZHRoSGVpZ2h0ID0gZnVuY3Rpb24gdmFsaWRhdGVXaWR0aEhlaWdodChlbCkge1xuICBpZiAoIWVsIHx8ICFlbC5wcm9wcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgX2VsJHByb3BzID0gZWwucHJvcHMsXG4gICAgICB3aWR0aCA9IF9lbCRwcm9wcy53aWR0aCxcbiAgICAgIGhlaWdodCA9IF9lbCRwcm9wcy5oZWlnaHQ7XG5cblxuICBpZiAoIWlzTnVtYmVyKHdpZHRoKSB8fCB3aWR0aCA8PSAwIHx8ICFpc051bWJlcihoZWlnaHQpIHx8IGhlaWdodCA8PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgdmFyIGlzU3NyID0gZnVuY3Rpb24gaXNTc3IoKSB7XG4gIHJldHVybiAhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAmJiB3aW5kb3cuc2V0VGltZW91dCk7XG59O1xuXG52YXIgU1ZHX1RBR1MgPSBbJ2EnLCAnYWx0R2x5cGgnLCAnYWx0R2x5cGhEZWYnLCAnYWx0R2x5cGhJdGVtJywgJ2FuaW1hdGUnLCAnYW5pbWF0ZUNvbG9yJywgJ2FuaW1hdGVNb3Rpb24nLCAnYW5pbWF0ZVRyYW5zZm9ybScsICdjaXJjbGUnLCAnY2xpcFBhdGgnLCAnY29sb3ItcHJvZmlsZScsICdjdXJzb3InLCAnZGVmcycsICdkZXNjJywgJ2VsbGlwc2UnLCAnZmVCbGVuZCcsICdmZUNvbG9ybWF0cml4JywgJ2ZlQ29tcG9uZW50VHJhbnNmZXInLCAnZmVDb21wb3NpdGUnLCAnZmVDb252b2x2ZU1hdHJpeCcsICdmZURpZmZ1c2VMaWdodGluZycsICdmZURpc3BsYWNlbWVudE1hcCcsICdmZURpc3RhbnRMaWdodCcsICdmZUZsb29kJywgJ2ZlRnVuY0EnLCAnZmVGdW5jQicsICdmZUZ1bmNHJywgJ2ZlRnVuY1InLCAnZmVHYXVzc2lhbkJsdXInLCAnZmVJbWFnZScsICdmZU1lcmdlJywgJ2ZlTWVyZ2VOb2RlJywgJ2ZlTW9ycGhvbG9neScsICdmZU9mZnNldCcsICdmZVBvaW50TGlnaHQnLCAnZmVTcGVjdWxhckxpZ2h0aW5nJywgJ2ZlU3BvdExpZ2h0JywgJ2ZlVGlsZScsICdmZVR1cmJ1bGVuY2UnLCAnZmlsdGVyJywgJ2ZvbnQnLCAnZm9udC1mYWNlJywgJ2ZvbnQtZmFjZS1mb3JtYXQnLCAnZm9udC1mYWNlLW5hbWUnLCAnZm9udC1mYWNlLXVybCcsICdmb3JlaWduT2JqZWN0JywgJ2cnLCAnZ2x5cGgnLCAnZ2x5cGhSZWYnLCAnaGtlcm4nLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lR3JhZGllbnQnLCAnbWFya2VyJywgJ21hc2snLCAnbWV0YWRhdGEnLCAnbWlzc2luZy1nbHlwaCcsICdtcGF0aCcsICdwYXRoJywgJ3BhdHRlcm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcsICdyZWN0JywgJ3NjcmlwdCcsICdzZXQnLCAnc3RvcCcsICdzdHlsZScsICdzdmcnLCAnc3dpdGNoJywgJ3N5bWJvbCcsICd0ZXh0JywgJ3RleHRQYXRoJywgJ3RpdGxlJywgJ3RyZWYnLCAndHNwYW4nLCAndXNlJywgJ3ZpZXcnLCAndmtlcm4nXTtcblxudmFyIGlzU3ZnRWxlbWVudCA9IGZ1bmN0aW9uIGlzU3ZnRWxlbWVudChjaGlsZCkge1xuICByZXR1cm4gY2hpbGQgJiYgY2hpbGQudHlwZSAmJiBfaXNTdHJpbmcoY2hpbGQudHlwZSkgJiYgU1ZHX1RBR1MuaW5kZXhPZihjaGlsZC50eXBlKSA+PSAwO1xufTtcblxuLyoqXG4gKiBGaWx0ZXIgYWxsIHRoZSBzdmcgZWxlbWVudHMgb2YgY2hpbGRyZW5cbiAqIEBwYXJhbSAge0FycmF5fSBjaGlsZHJlbiBUaGUgY2hpbGRyZW4gb2YgYSByZWFjdCBlbGVtZW50XG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgQWxsIHRoZSBzdmcgZWxlbWVudHNcbiAqL1xuZXhwb3J0IHZhciBmaWx0ZXJTdmdFbGVtZW50cyA9IGZ1bmN0aW9uIGZpbHRlclN2Z0VsZW1lbnRzKGNoaWxkcmVuKSB7XG4gIHZhciBzdmdFbGVtZW50cyA9IFtdO1xuXG4gIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGlmIChlbnRyeSAmJiBlbnRyeS50eXBlICYmIF9pc1N0cmluZyhlbnRyeS50eXBlKSAmJiBTVkdfVEFHUy5pbmRleE9mKGVudHJ5LnR5cGUpID49IDApIHtcbiAgICAgIHN2Z0VsZW1lbnRzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN2Z0VsZW1lbnRzO1xufTtcblxuZXhwb3J0IHZhciBpc1NpbmdsZUNoaWxkRXF1YWwgPSBmdW5jdGlvbiBpc1NpbmdsZUNoaWxkRXF1YWwobmV4dENoaWxkLCBwcmV2Q2hpbGQpIHtcbiAgaWYgKF9pc05pbChuZXh0Q2hpbGQpICYmIF9pc05pbChwcmV2Q2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoIV9pc05pbChuZXh0Q2hpbGQpICYmICFfaXNOaWwocHJldkNoaWxkKSkge1xuICAgIHJldHVybiBzaGFsbG93RXF1YWwobmV4dENoaWxkLnByb3BzLCBwcmV2Q2hpbGQucHJvcHMpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICogV2V0aGVyIHByb3BzIG9mIGNoaWxkcmVuIGNoYW5nZWRcbiAqIEBwYXJhbSAge09iamVjdH0gbmV4dENoaWxkcmVuIFRoZSBsYXRlc3QgY2hpbGRyZW5cbiAqIEBwYXJhbSAge09iamVjdH0gcHJldkNoaWxkcmVuIFRoZSBwcmV2IGNoaWxkcmVuXG4gKiBAcmV0dXJuIHtCb29sZWFufSAgICAgICAgICAgICBlcXVhbCBvciBub3RcbiAqL1xuZXhwb3J0IHZhciBpc0NoaWxkcmVuRXF1YWwgPSBmdW5jdGlvbiBpc0NoaWxkcmVuRXF1YWwobmV4dENoaWxkcmVuLCBwcmV2Q2hpbGRyZW4pIHtcbiAgaWYgKG5leHRDaGlsZHJlbiA9PT0gcHJldkNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoQ2hpbGRyZW4uY291bnQobmV4dENoaWxkcmVuKSAhPT0gQ2hpbGRyZW4uY291bnQocHJldkNoaWxkcmVuKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgY291bnQgPSBDaGlsZHJlbi5jb3VudChuZXh0Q2hpbGRyZW4pO1xuXG4gIGlmIChjb3VudCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHJldHVybiBpc1NpbmdsZUNoaWxkRXF1YWwobmV4dENoaWxkcmVuLCBwcmV2Q2hpbGRyZW4pO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgdmFyIG5leHRDaGlsZCA9IG5leHRDaGlsZHJlbltpXTtcbiAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW2ldO1xuXG4gICAgaWYgKCFpc1NpbmdsZUNoaWxkRXF1YWwobmV4dENoaWxkLCBwcmV2Q2hpbGQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgdmFyIHJlbmRlckJ5T3JkZXIgPSBmdW5jdGlvbiByZW5kZXJCeU9yZGVyKGNoaWxkcmVuLCByZW5kZXJNYXApIHtcbiAgdmFyIGVsZW1lbnRzID0gW107XG4gIHZhciByZWNvcmQgPSB7fTtcblxuICBDaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgaWYgKGNoaWxkICYmIGlzU3ZnRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goY2hpbGQpO1xuICAgIH0gZWxzZSBpZiAoY2hpbGQgJiYgcmVuZGVyTWFwW2dldERpc3BsYXlOYW1lKGNoaWxkLnR5cGUpXSkge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gZ2V0RGlzcGxheU5hbWUoY2hpbGQudHlwZSk7XG4gICAgICB2YXIgX3JlbmRlck1hcCRkaXNwbGF5TmFtID0gcmVuZGVyTWFwW2Rpc3BsYXlOYW1lXSxcbiAgICAgICAgICBoYW5kbGVyID0gX3JlbmRlck1hcCRkaXNwbGF5TmFtLmhhbmRsZXIsXG4gICAgICAgICAgb25jZSA9IF9yZW5kZXJNYXAkZGlzcGxheU5hbS5vbmNlO1xuXG5cbiAgICAgIGlmIChvbmNlICYmICFyZWNvcmRbZGlzcGxheU5hbWVdIHx8ICFvbmNlKSB7XG4gICAgICAgIHZhciByZXN1bHRzID0gaGFuZGxlcihjaGlsZCwgZGlzcGxheU5hbWUsIGluZGV4KTtcblxuICAgICAgICBpZiAoX2lzQXJyYXkocmVzdWx0cykpIHtcbiAgICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50c10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHRzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudHMucHVzaChyZXN1bHRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlY29yZFtkaXNwbGF5TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufTtcblxuZXhwb3J0IHZhciBnZXRSZWFjdEV2ZW50QnlUeXBlID0gZnVuY3Rpb24gZ2V0UmVhY3RFdmVudEJ5VHlwZShlKSB7XG4gIHZhciB0eXBlID0gZSAmJiBlLnR5cGU7XG5cbiAgaWYgKHR5cGUgJiYgUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVBbdHlwZV0pIHtcbiAgICByZXR1cm4gUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVBbdHlwZV07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCB2YXIgcGFyc2VDaGlsZEluZGV4ID0gZnVuY3Rpb24gcGFyc2VDaGlsZEluZGV4KGNoaWxkLCBjaGlsZHJlbikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG4gIENoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICBpZiAoZW50cnkgPT09IGNoaWxkKSB7XG4gICAgICByZXN1bHQgPSBpbmRleDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWNoYXJ0cy9lczYvdXRpbC9SZWFjdFV0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVhY3QtdHlwZXdyaXRlci9+L2ZianMvbGliL2ludmFyaWFudC5qcz9iZjI4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBpbnZhcmlhbnRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KSk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtdHlwZXdyaXRlci9+L2ZianMvbGliL2ludmFyaWFudC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (immutable) */ __webpack_exports__["a"] = shallowEqual;\n/* harmony export (immutable) */ __webpack_exports__["b"] = pureRenderDecorator;\nfunction shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction shouldComponentUpdate(props, state) {\n return !shallowEqual(props, this.props) || !shallowEqual(state, this.state);\n}\n\nfunction pureRenderDecorator(component) {\n // eslint-disable-next-line no-param-reassign\n component.prototype.shouldComponentUpdate = shouldComponentUpdate;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVjaGFydHMvZXM2L3V0aWwvUHVyZVJlbmRlci5qcz9iZjdmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBzaGFsbG93RXF1YWwoYSwgYikge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuICBmb3IgKHZhciBrZXkgaW4gYSkge1xuICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGtleSkgJiYgKCF7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGtleSkgfHwgYVtrZXldICE9PSBiW2tleV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIF9rZXkgaW4gYikge1xuICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIF9rZXkpICYmICF7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIF9rZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUocHJvcHMsIHN0YXRlKSB7XG4gIHJldHVybiAhc2hhbGxvd0VxdWFsKHByb3BzLCB0aGlzLnByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKHN0YXRlLCB0aGlzLnN0YXRlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHVyZVJlbmRlckRlY29yYXRvcihjb21wb25lbnQpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbXBvbmVudC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gc2hvdWxkQ29tcG9uZW50VXBkYXRlO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWNoYXJ0cy9lczYvdXRpbC9QdXJlUmVuZGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n')},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(26);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vZmJqcy9saWIvd2FybmluZy5qcz84YTU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciB3YXJuaW5nID0gZW1wdHlGdW5jdGlvbjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay5cbiAgICB9XG5cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9mYmpzL2xpYi93YXJuaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanM/M2FmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBXQVJOSU5HOiBETyBOT1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS5cbiAqIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgYGludmFyaWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbVxuICogYW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVsIHBhc3MuXG4gKiBJdCBhbHdheXMgdGhyb3dzLlxuICovXG5cbmZ1bmN0aW9uIHJlYWN0UHJvZEludmFyaWFudChjb2RlKSB7XG4gIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuXG4gIHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZpc2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7XG5cbiAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7XG4gICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7XG4gIH1cblxuICBtZXNzYWdlICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJztcblxuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZhcmlhbnQncyBvd24gZnJhbWVcblxuICB0aHJvdyBlcnJvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LWRvbS9saWIvcmVhY3RQcm9kSW52YXJpYW50LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\treturn classNames;\n\t\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vY2xhc3NuYW1lcy9pbmRleC5qcz84ZTQzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NsYXNzbmFtZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///8\n")},function(module,exports,__webpack_require__){eval("var baseGetTag = __webpack_require__(46),\n isObject = __webpack_require__(34);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vbG9kYXNoL2lzRnVuY3Rpb24uanM/MmFhYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2xvZGFzaC9pc0Z1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\n\nvar emptyFunction = __webpack_require__(36);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n warning = function (condition, format) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n };\n}\n\nmodule.exports = warning;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXR5cGV3cml0ZXIvfi9mYmpzL2xpYi93YXJuaW5nLmpzPzJlMDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHByb3ZpZGVzTW9kdWxlIHdhcm5pbmdcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciB3YXJuaW5nID0gZW1wdHlGdW5jdGlvbjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgd2FybmluZyA9IGZ1bmN0aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMl0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay5cbiAgICB9XG5cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LXR5cGV3cml0ZXIvfi9mYmpzL2xpYi93YXJuaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXR5cGV3cml0ZXIvfi9yZWFjdC9saWIvT2JqZWN0LmFzc2lnbi5qcz9kYjU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBPYmplY3QuYXNzaWduXG4gKi9cblxuLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLW9iamVjdC5hc3NpZ25cblxuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2VzKSB7XG4gIGlmICh0YXJnZXQgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gdGFyZ2V0IGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICB9XG5cbiAgdmFyIHRvID0gT2JqZWN0KHRhcmdldCk7XG4gIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbiAgZm9yICh2YXIgbmV4dEluZGV4ID0gMTsgbmV4dEluZGV4IDwgYXJndW1lbnRzLmxlbmd0aDsgbmV4dEluZGV4KyspIHtcbiAgICB2YXIgbmV4dFNvdXJjZSA9IGFyZ3VtZW50c1tuZXh0SW5kZXhdO1xuICAgIGlmIChuZXh0U291cmNlID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBmcm9tID0gT2JqZWN0KG5leHRTb3VyY2UpO1xuXG4gICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgYWNjZXNzb3JzIG5vciBwcm94aWVzLiBUaGVyZWZvcmUgdGhpc1xuICAgIC8vIGNvcHkgY2Fubm90IHRocm93LiBJZiB3ZSBldmVyIHN1cHBvcnRlZCB0aGlzIHRoZW4gd2UgbXVzdCBoYW5kbGVcbiAgICAvLyBleGNlcHRpb25zIGFuZCBzaWRlLWVmZmVjdHMuIFdlIGRvbid0IHN1cHBvcnQgc3ltYm9scyBzbyB0aGV5IHdvbid0XG4gICAgLy8gYmUgdHJhbnNmZXJyZWQuXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuICAgICAgICB0b1trZXldID0gZnJvbVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ247XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LXR5cGV3cml0ZXIvfi9yZWFjdC9saWIvT2JqZWN0LmFzc2lnbi5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///11\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return mathSign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return isPercent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isNumOrStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return uniqueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getPercentValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getAnyElementOfObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return hasDuplicate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return interpolateNumber; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_isArray__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_isArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_isArray__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isNaN__ = __webpack_require__(712);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isNaN___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_isNaN__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_isNumber__ = __webpack_require__(324);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_isNumber___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_isNumber__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_isString__ = __webpack_require__(185);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_isString___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_lodash_isString__);\n\n\n\n\n\n\nvar mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\n\nvar isPercent = function isPercent(value) {\n return __WEBPACK_IMPORTED_MODULE_3_lodash_isString___default()(value) && value.indexOf(\'%\') === value.length - 1;\n};\n\nvar isNumber = function isNumber(value) {\n return __WEBPACK_IMPORTED_MODULE_2_lodash_isNumber___default()(value) && !__WEBPACK_IMPORTED_MODULE_1_lodash_isNaN___default()(value);\n};\n\nvar isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || __WEBPACK_IMPORTED_MODULE_3_lodash_isString___default()(value);\n};\n\nvar idCounter = 0;\nvar uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n\n return \'\' + (prefix || \'\') + id;\n};\n/**\n * Get percent value of a total value\n * @param {Number|String} percent A percent\n * @param {Number} totalValue Total value\n * @param {NUmber} defaultValue The value returned when percent is undefined or invalid\n * @param {Boolean} validate If set to be true, the result will be validated\n * @return {Number} value\n */\nvar getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isNumber(percent) && !__WEBPACK_IMPORTED_MODULE_3_lodash_isString___default()(percent)) {\n return defaultValue;\n }\n\n var value = void 0;\n\n if (isPercent(percent)) {\n var index = percent.indexOf(\'%\');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n\n if (isNaN(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\n\nvar getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n\n var keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\n\nvar hasDuplicate = function hasDuplicate(ary) {\n if (!__WEBPACK_IMPORTED_MODULE_0_lodash_isArray___default()(ary)) {\n return false;\n }\n\n var len = ary.length;\n var cache = {};\n\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\n\nvar interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n\n return function () {\n return numberB;\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlY2hhcnRzL2VzNi91dGlsL0RhdGFVdGlscy5qcz81ZjRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaXNBcnJheSBmcm9tICdsb2Rhc2gvaXNBcnJheSc7XG5pbXBvcnQgX2lzTmFOIGZyb20gJ2xvZGFzaC9pc05hTic7XG5pbXBvcnQgX2lzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5pbXBvcnQgX2lzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5cblxuZXhwb3J0IHZhciBtYXRoU2lnbiA9IGZ1bmN0aW9uIG1hdGhTaWduKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh2YWx1ZSA+IDApIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCB2YXIgaXNQZXJjZW50ID0gZnVuY3Rpb24gaXNQZXJjZW50KHZhbHVlKSB7XG4gIHJldHVybiBfaXNTdHJpbmcodmFsdWUpICYmIHZhbHVlLmluZGV4T2YoJyUnKSA9PT0gdmFsdWUubGVuZ3RoIC0gMTtcbn07XG5cbmV4cG9ydCB2YXIgaXNOdW1iZXIgPSBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gX2lzTnVtYmVyKHZhbHVlKSAmJiAhX2lzTmFOKHZhbHVlKTtcbn07XG5cbmV4cG9ydCB2YXIgaXNOdW1PclN0ciA9IGZ1bmN0aW9uIGlzTnVtT3JTdHIodmFsdWUpIHtcbiAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBfaXNTdHJpbmcodmFsdWUpO1xufTtcblxudmFyIGlkQ291bnRlciA9IDA7XG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KSB7XG4gIHZhciBpZCA9ICsraWRDb3VudGVyO1xuXG4gIHJldHVybiAnJyArIChwcmVmaXggfHwgJycpICsgaWQ7XG59O1xuLyoqXG4gKiBHZXQgcGVyY2VudCB2YWx1ZSBvZiBhIHRvdGFsIHZhbHVlXG4gKiBAcGFyYW0ge051bWJlcnxTdHJpbmd9IHBlcmNlbnQgQSBwZXJjZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdG90YWxWYWx1ZSAgICAgVG90YWwgdmFsdWVcbiAqIEBwYXJhbSB7TlVtYmVyfSBkZWZhdWx0VmFsdWUgICBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiBwZXJjZW50IGlzIHVuZGVmaW5lZCBvciBpbnZhbGlkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IHZhbGlkYXRlICAgICAgSWYgc2V0IHRvIGJlIHRydWUsIHRoZSByZXN1bHQgd2lsbCBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm4ge051bWJlcn0gdmFsdWVcbiAqL1xuZXhwb3J0IHZhciBnZXRQZXJjZW50VmFsdWUgPSBmdW5jdGlvbiBnZXRQZXJjZW50VmFsdWUocGVyY2VudCwgdG90YWxWYWx1ZSkge1xuICB2YXIgZGVmYXVsdFZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwO1xuICB2YXIgdmFsaWRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZhbHNlO1xuXG4gIGlmICghaXNOdW1iZXIocGVyY2VudCkgJiYgIV9pc1N0cmluZyhwZXJjZW50KSkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICB2YXIgdmFsdWUgPSB2b2lkIDA7XG5cbiAgaWYgKGlzUGVyY2VudChwZXJjZW50KSkge1xuICAgIHZhciBpbmRleCA9IHBlcmNlbnQuaW5kZXhPZignJScpO1xuICAgIHZhbHVlID0gdG90YWxWYWx1ZSAqIHBhcnNlRmxvYXQocGVyY2VudC5zbGljZSgwLCBpbmRleCkpIC8gMTAwO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gK3BlcmNlbnQ7XG4gIH1cblxuICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBpZiAodmFsaWRhdGUgJiYgdmFsdWUgPiB0b3RhbFZhbHVlKSB7XG4gICAgdmFsdWUgPSB0b3RhbFZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuZXhwb3J0IHZhciBnZXRBbnlFbGVtZW50T2ZPYmplY3QgPSBmdW5jdGlvbiBnZXRBbnlFbGVtZW50T2ZPYmplY3Qob2JqKSB7XG4gIGlmICghb2JqKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cbiAgaWYgKGtleXMgJiYga2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gb2JqW2tleXNbMF1dO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgdmFyIGhhc0R1cGxpY2F0ZSA9IGZ1bmN0aW9uIGhhc0R1cGxpY2F0ZShhcnkpIHtcbiAgaWYgKCFfaXNBcnJheShhcnkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGxlbiA9IGFyeS5sZW5ndGg7XG4gIHZhciBjYWNoZSA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoIWNhY2hlW2FyeVtpXV0pIHtcbiAgICAgIGNhY2hlW2FyeVtpXV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgdmFyIGludGVycG9sYXRlTnVtYmVyID0gZnVuY3Rpb24gaW50ZXJwb2xhdGVOdW1iZXIobnVtYmVyQSwgbnVtYmVyQikge1xuICBpZiAoaXNOdW1iZXIobnVtYmVyQSkgJiYgaXNOdW1iZXIobnVtYmVyQikpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHQpIHtcbiAgICAgIHJldHVybiBudW1iZXJBICsgdCAqIChudW1iZXJCIC0gbnVtYmVyQSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG51bWJlckI7XG4gIH07XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWNoYXJ0cy9lczYvdXRpbC9EYXRhVXRpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///12\n')},function(module,exports,__webpack_require__){"use strict";eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L29iamVjdC1hc3NpZ24vaW5kZXguanM/MjkyNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0dGVzdDJbJ18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0fSk7XG5cdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09XG5cdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L29iamVjdC1hc3NpZ24vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///13\n")},function(module,exports){eval("/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FycmF5LmpzPzBkMjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9sb2Rhc2gvaXNBcnJheS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///14\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(7);\n\nvar DOMProperty = __webpack_require__(67);\nvar ReactDOMComponentFlags = __webpack_require__(338);\n\nvar invariant = __webpack_require__(2);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnRUcmVlLmpzPzhmZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRFX05BTUU7XG52YXIgRmxhZ3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xuXG52YXIgaW50ZXJuYWxJbnN0YW5jZUtleSA9ICdfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBnaXZlbiBub2RlIHNob3VsZCBiZSBjYWNoZWQuXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFByZWNhY2hlTm9kZShub2RlLCBub2RlSUQpIHtcbiAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSA9PT0gU3RyaW5nKG5vZGVJRCkgfHwgbm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC10ZXh0OiAnICsgbm9kZUlEICsgJyAnIHx8IG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6ICcgKyBub2RlSUQgKyAnICc7XG59XG5cbi8qKlxuICogRHJpbGwgZG93biAodGhyb3VnaCBjb21wb3NpdGVzIGFuZCBlbXB0eSBjb21wb25lbnRzKSB1bnRpbCB3ZSBnZXQgYSBob3N0IG9yXG4gKiBob3N0IHRleHQgY29tcG9uZW50LlxuICpcbiAqIFRoaXMgaXMgcHJldHR5IHBvbHltb3JwaGljIGJ1dCB1bmF2b2lkYWJsZSB3aXRoIHRoZSBjdXJyZW50IHN0cnVjdHVyZSB3ZSBoYXZlXG4gKiBmb3IgYF9yZW5kZXJlZENoaWxkcmVuYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChjb21wb25lbnQpIHtcbiAgdmFyIHJlbmRlcmVkO1xuICB3aGlsZSAocmVuZGVyZWQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgY29tcG9uZW50ID0gcmVuZGVyZWQ7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiB0aGUgcmVuZGVyZWQgaG9zdC90ZXh0IGNvbXBvbmVudCB3aXRoIHRoZSBnaXZlblxuICogRE9NIG5vZGUuIFRoZSBwYXNzZWQgYGluc3RgIGNhbiBiZSBhIGNvbXBvc2l0ZS5cbiAqL1xuZnVuY3Rpb24gcHJlY2FjaGVOb2RlKGluc3QsIG5vZGUpIHtcbiAgdmFyIGhvc3RJbnN0ID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChpbnN0KTtcbiAgaG9zdEluc3QuX2hvc3ROb2RlID0gbm9kZTtcbiAgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IGhvc3RJbnN0O1xufVxuXG5mdW5jdGlvbiB1bmNhY2hlTm9kZShpbnN0KSB7XG4gIHZhciBub2RlID0gaW5zdC5faG9zdE5vZGU7XG4gIGlmIChub2RlKSB7XG4gICAgZGVsZXRlIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07XG4gICAgaW5zdC5faG9zdE5vZGUgPSBudWxsO1xuICB9XG59XG5cbi8qKlxuICogUG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gZWFjaCBjaGlsZCBvZiBgaW5zdGAsIGFzc3VtaW5nIHRoYXQgdGhlIGNoaWxkcmVuXG4gKiBtYXRjaCB1cCB3aXRoIHRoZSBET00gKGVsZW1lbnQpIGNoaWxkcmVuIG9mIGBub2RlYC5cbiAqXG4gKiBXZSBjYWNoZSBlbnRpcmUgbGV2ZWxzIGF0IG9uY2UgdG8gYXZvaWQgYW4gbl4yIHByb2JsZW0gd2hlcmUgd2UgYWNjZXNzIHRoZVxuICogY2hpbGRyZW4gb2YgYSBub2RlIHNlcXVlbnRpYWxseSBhbmQgaGF2ZSB0byB3YWxrIGZyb20gdGhlIHN0YXJ0IHRvIG91ciB0YXJnZXRcbiAqIG5vZGUgZXZlcnkgdGltZS5cbiAqXG4gKiBTaW5jZSB3ZSB1cGRhdGUgYF9yZW5kZXJlZENoaWxkcmVuYCBhbmQgdGhlIGFjdHVhbCBET00gYXQgKHNsaWdodGx5KVxuICogZGlmZmVyZW50IHRpbWVzLCB3ZSBjb3VsZCByYWNlIGhlcmUgYW5kIHNlZSBhIG5ld2VyIGBfcmVuZGVyZWRDaGlsZHJlbmAgdGhhblxuICogdGhlIERPTSBub2RlcyB3ZSBzZWUuIFRvIGF2b2lkIHRoaXMsIFJlYWN0TXVsdGlDaGlsZCBjYWxsc1xuICogYHByZXBhcmVUb01hbmFnZUNoaWxkcmVuYCBiZWZvcmUgd2UgY2hhbmdlIGBfcmVuZGVyZWRDaGlsZHJlbmAsIGF0IHdoaWNoXG4gKiB0aW1lIHRoZSBjb250YWluZXIncyBjaGlsZCBub2RlcyBhcmUgYWx3YXlzIGNhY2hlZCAodW50aWwgaXQgdW5tb3VudHMpLlxuICovXG5mdW5jdGlvbiBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgbm9kZSkge1xuICBpZiAoaW5zdC5fZmxhZ3MgJiBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBjaGlsZHJlbiA9IGluc3QuX3JlbmRlcmVkQ2hpbGRyZW47XG4gIHZhciBjaGlsZE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gIG91dGVyOiBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBjaGlsZEluc3QgPSBjaGlsZHJlbltuYW1lXTtcbiAgICB2YXIgY2hpbGRJRCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoY2hpbGRJbnN0KS5fZG9tSUQ7XG4gICAgaWYgKGNoaWxkSUQgPT09IDApIHtcbiAgICAgIC8vIFdlJ3JlIGN1cnJlbnRseSB1bm1vdW50aW5nIHRoaXMgY2hpbGQgaW4gUmVhY3RNdWx0aUNoaWxkOyBza2lwIGl0LlxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIFdlIGFzc3VtZSB0aGUgY2hpbGQgbm9kZXMgYXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjaGlsZCBpbnN0YW5jZXMuXG4gICAgZm9yICg7IGNoaWxkTm9kZSAhPT0gbnVsbDsgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICBpZiAoc2hvdWxkUHJlY2FjaGVOb2RlKGNoaWxkTm9kZSwgY2hpbGRJRCkpIHtcbiAgICAgICAgcHJlY2FjaGVOb2RlKGNoaWxkSW5zdCwgY2hpbGROb2RlKTtcbiAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgRE9NIGNoaWxkcmVuIHdpdGhvdXQgZmluZGluZyBhbiBJRCBtYXRjaC5cbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRoIElEICVzLicsIGNoaWxkSUQpIDogX3Byb2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2b2lkIDA7XG4gIH1cbiAgaW5zdC5fZmxhZ3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RET01Db21wb25lbnQgb3JcbiAqIFJlYWN0RE9NVGV4dENvbXBvbmVudCBpbnN0YW5jZSBhbmNlc3Rvci5cbiAqL1xuZnVuY3Rpb24gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICBpZiAobm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkge1xuICAgIHJldHVybiBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuICB9XG5cbiAgLy8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIGluc3RhbmNlIHdlIGhhdmUgY2FjaGVkLlxuICB2YXIgcGFyZW50cyA9IFtdO1xuICB3aGlsZSAoIW5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pIHtcbiAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVG9wIG9mIHRoZSB0cmVlLiBUaGlzIG5vZGUgbXVzdCBub3QgYmUgcGFydCBvZiBhIFJlYWN0IHRyZWUgKG9yIGlzXG4gICAgICAvLyB1bm1vdW50ZWQsIHBvdGVudGlhbGx5KS5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjbG9zZXN0O1xuICB2YXIgaW5zdDtcbiAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHtcbiAgICBjbG9zZXN0ID0gaW5zdDtcbiAgICBpZiAocGFyZW50cy5sZW5ndGgpIHtcbiAgICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xvc2VzdDtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVudFxuICogaW5zdGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2FzIG5vdCByZW5kZXJlZCBieSB0aGlzIFJlYWN0LlxuICovXG5mdW5jdGlvbiBnZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpIHtcbiAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKTtcbiAgaWYgKGluc3QgIT0gbnVsbCAmJiBpbnN0Ll9ob3N0Tm9kZSA9PT0gbm9kZSkge1xuICAgIHJldHVybiBpbnN0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnQsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZ1xuICogRE9NIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkge1xuICAvLyBXaXRob3V0IHRoaXMgZmlyc3QgaW52YXJpYW50LCBwYXNzaW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dlcnMgdGhlIG5leHRcbiAgLy8gaW52YXJpYW50IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGljaCBpcyBzdXBlciBjb25mdXNpbmcuXG4gICEoaW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwO1xuXG4gIGlmIChpbnN0Ll9ob3N0Tm9kZSkge1xuICAgIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcbiAgfVxuXG4gIC8vIFdhbGsgdXAgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBhbiBhbmNlc3RvciB3aG9zZSBET00gbm9kZSB3ZSBoYXZlIGNhY2hlZC5cbiAgdmFyIHBhcmVudHMgPSBbXTtcbiAgd2hpbGUgKCFpbnN0Ll9ob3N0Tm9kZSkge1xuICAgIHBhcmVudHMucHVzaChpbnN0KTtcbiAgICAhaW5zdC5faG9zdFBhcmVudCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdCBET00gdHJlZSByb290IHNob3VsZCBhbHdheXMgaGF2ZSBhIG5vZGUgcmVmZXJlbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzM0JykgOiB2b2lkIDA7XG4gICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG4gIH1cblxuICAvLyBOb3cgcGFyZW50cyBjb250YWlucyBlYWNoIGFuY2VzdG9yIHRoYXQgZG9lcyAqbm90KiBoYXZlIGEgY2FjaGVkIG5hdGl2ZVxuICAvLyBub2RlLCBhbmQgYGluc3RgIGlzIHRoZSBkZWVwZXN0IGFuY2VzdG9yIHRoYXQgZG9lcy5cbiAgZm9yICg7IHBhcmVudHMubGVuZ3RoOyBpbnN0ID0gcGFyZW50cy5wb3AoKSkge1xuICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBpbnN0Ll9ob3N0Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG59XG5cbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSB7XG4gIGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxcbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZ2V0SW5zdGFuY2VGcm9tTm9kZSxcbiAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0Tm9kZUZyb21JbnN0YW5jZSxcbiAgcHJlY2FjaGVDaGlsZE5vZGVzOiBwcmVjYWNoZUNoaWxkTm9kZXMsXG4gIHByZWNhY2hlTm9kZTogcHJlY2FjaGVOb2RlLFxuICB1bmNhY2hlTm9kZTogdW5jYWNoZU5vZGVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnRUcmVlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50VHJlZS5qc1xuLy8gbW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///15\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_classnames__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_classnames__);\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * @fileOverview Layer\n */\n\n\n\n\nvar propTypes = {\n className: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.string,\n children: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.arrayOf(__WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node), __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node])\n};\n\nfunction Layer(props) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, ['children', 'className']);\n\n var layerClass = __WEBPACK_IMPORTED_MODULE_2_classnames___default()('recharts-layer', className);\n\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(\n 'g',\n _extends({ className: layerClass }, others),\n children\n );\n}\n\nLayer.propTypes = propTypes;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Layer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlY2hhcnRzL2VzNi9jb250YWluZXIvTGF5ZXIuanM/YTkxMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbi8qKlxuICogQGZpbGVPdmVydmlldyBMYXllclxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG52YXIgcHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksIFByb3BUeXBlcy5ub2RlXSlcbn07XG5cbmZ1bmN0aW9uIExheWVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBbJ2NoaWxkcmVuJywgJ2NsYXNzTmFtZSddKTtcblxuICB2YXIgbGF5ZXJDbGFzcyA9IGNsYXNzTmFtZXMoJ3JlY2hhcnRzLWxheWVyJywgY2xhc3NOYW1lKTtcblxuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAnZycsXG4gICAgX2V4dGVuZHMoeyBjbGFzc05hbWU6IGxheWVyQ2xhc3MgfSwgb3RoZXJzKSxcbiAgICBjaGlsZHJlblxuICApO1xufVxuXG5MYXllci5wcm9wVHlwZXMgPSBwcm9wVHlwZXM7XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWNoYXJ0cy9lczYvY29udGFpbmVyL0xheWVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///16\n")},function(module,exports,__webpack_require__){eval("var global = __webpack_require__(152)\n , core = __webpack_require__(150)\n , hide = __webpack_require__(246)\n , redefine = __webpack_require__(461)\n , ctx = __webpack_require__(455)\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})\n , key, own, out, exp;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if(target)redefine(target, key, out, type & $export.U);\n // export\n if(exports[key] != out)hide(exports, key, exp);\n if(IS_PROTO && expProto[key] != out)expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzPzM4NzAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgID0gcmVxdWlyZSgnLi9fY29yZScpXG4gICwgaGlkZSAgICAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICwgcmVkZWZpbmUgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKVxuICAsIGN0eCAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgc291cmNlKXtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkZcbiAgICAsIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0LkdcbiAgICAsIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlNcbiAgICAsIElTX1BST1RPICA9IHR5cGUgJiAkZXhwb3J0LlBcbiAgICAsIElTX0JJTkQgICA9IHR5cGUgJiAkZXhwb3J0LkJcbiAgICAsIHRhcmdldCAgICA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXVxuICAgICwgZXhwb3J0cyAgID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSlcbiAgICAsIGV4cFByb3RvICA9IGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pXG4gICAgLCBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmKElTX0dMT0JBTClzb3VyY2UgPSBuYW1lO1xuICBmb3Ioa2V5IGluIHNvdXJjZSl7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IChvd24gPyB0YXJnZXQgOiBzb3VyY2UpW2tleV07XG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBleHAgPSBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgaWYodGFyZ2V0KXJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmKGV4cG9ydHNba2V5XSAhPSBvdXQpaGlkZShleHBvcnRzLCBrZXksIGV4cCk7XG4gICAgaWYoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpZXhwUHJvdG9ba2V5XSA9IG91dDtcbiAgfVxufTtcbmdsb2JhbC5jb3JlID0gY29yZTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWAgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///17\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return getValueByDataKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getDomainOfDataByKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return calculateActiveTickIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return getMainColorOfGraphicItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return getLegendProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return getBarSizeList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return getBarPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return appendOffsetOfLegend; });\n/* unused harmony export getDomainOfErrorBars */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return parseErrorBarsOfAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return getDomainOfItemsWithSameAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isCategorialAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return getCoordinatesOfGrid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return getTicksOfAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return combineEventHandlers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return parseScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return checkDomainOfScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return findPositionOfBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "z", function() { return truncateByDomain; });\n/* unused harmony export offsetSign */\n/* unused harmony export getStackedData */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return getStackGroupsByAxisId; });\n/* unused harmony export calculateDomainOfTicks */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getTicksOfScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "B", function() { return getCateCoordinateOfLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "A", function() { return getCateCoordinateOfBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return getBaseValueOfBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return detectReferenceElementsDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return getStackedDataOfItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return getDomainOfStackGroups; });\n/* unused harmony export MIN_VALUE_REG */\n/* unused harmony export MAX_VALUE_REG */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return parseSpecifiedDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "C", function() { return validateCoordinateInRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return getBandSizeOfAxis; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_sortBy__ = __webpack_require__(330);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_sortBy___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_sortBy__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isString__ = __webpack_require__(185);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_isString___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash_isString__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_max__ = __webpack_require__(714);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_max___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_lodash_max__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_min__ = __webpack_require__(328);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_min___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_lodash_min__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_isArray__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash_isArray__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_lodash_isFunction__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_lodash_get__ = __webpack_require__(322);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_lodash_get___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_lodash_get__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_lodash_isNil__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_lodash_isNil__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_recharts_scale__ = __webpack_require__(922);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_recharts_scale___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_recharts_scale__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_d3_scale__ = __webpack_require__(275);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_d3_shape__ = __webpack_require__(166);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__DataUtils__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__cartesian_ReferenceDot__ = __webpack_require__(409);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__cartesian_ReferenceLine__ = __webpack_require__(410);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__cartesian_ReferenceArea__ = __webpack_require__(408);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__cartesian_ErrorBar__ = __webpack_require__(103);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__component_Legend__ = __webpack_require__(231);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__ReactUtils__ = __webpack_require__(3);\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\n\n\n\n\n\n\n\n\n\n\nvar getValueByDataKey = function getValueByDataKey(obj, dataKey, defaultValue) {\n if (__WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(obj) || __WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(dataKey)) {\n return defaultValue;\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["a" /* isNumOrStr */])(dataKey)) {\n return __WEBPACK_IMPORTED_MODULE_6_lodash_get___default()(obj, dataKey, defaultValue);\n }\n\n if (__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(dataKey)) {\n return dataKey(obj);\n }\n\n return defaultValue;\n};\n/**\n * Get domain of data by key\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\nvar getDomainOfDataByKey = function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = data.reduce(function (result, entry) {\n var value = getValueByDataKey(entry, key);\n\n if (__WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default()(value)) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(value));\n }\n\n return [].concat(_toConsumableArray(result), [value]);\n }, []);\n\n if (type === \'number\') {\n var domain = flattenData.filter(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */]);\n\n return [Math.min.apply(null, domain), Math.max.apply(null, domain)];\n }\n\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !__WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(entry);\n }) : flattenData;\n\n return validateData.map(function (entry) {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["a" /* isNumOrStr */])(entry) ? entry : \'\';\n });\n};\n\nvar calculateActiveTickIndex = function calculateActiveTickIndex(coordinate, ticks) {\n var index = -1;\n var len = ticks.length;\n\n if (len > 1) {\n for (var i = 0; i < len; i++) {\n if (i === 0 && coordinate <= (ticks[i].coordinate + ticks[i + 1].coordinate) / 2 || i > 0 && i < len - 1 && coordinate > (ticks[i].coordinate + ticks[i - 1].coordinate) / 2 && coordinate <= (ticks[i].coordinate + ticks[i + 1].coordinate) / 2 || i === len - 1 && coordinate > (ticks[i].coordinate + ticks[i - 1].coordinate) / 2) {\n index = ticks[i].index;\n break;\n }\n }\n } else {\n index = 0;\n }\n\n return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\nvar getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var displayName = item.type.displayName;\n var result = void 0;\n\n switch (displayName) {\n case \'Line\':\n case \'Area\':\n case \'Radar\':\n result = item.props.stroke;\n break;\n default:\n result = item.props.fill;\n break;\n }\n\n return result;\n};\n\nvar getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children,\n formatedGraphicalItems = _ref.formatedGraphicalItems,\n legendWidth = _ref.legendWidth,\n legendHeight = _ref.legendHeight,\n legendContent = _ref.legendContent;\n\n var legendItem = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__ReactUtils__["a" /* findChildByType */])(children, __WEBPACK_IMPORTED_MODULE_16__component_Legend__["a" /* default */]);\n if (!legendItem) {\n return null;\n }\n\n var legendData = void 0;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === \'children\') {\n legendData = (formatedGraphicalItems || []).reduce(function (result, _ref2, i) {\n var item = _ref2.item,\n props = _ref2.props;\n var nameKey = item.props.nameKey;\n\n var data = props.sectors || props.data;\n\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formatedGraphicalItems || []).map(function (_ref3) {\n var item = _ref3.item,\n props = _ref3.props;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n name = _item$props.name,\n legendType = _item$props.legendType,\n hide = _item$props.hide;\n\n\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || \'square\',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n\n return _extends({}, legendItem.props, __WEBPACK_IMPORTED_MODULE_16__component_Legend__["a" /* default */].getWithHeight(legendItem, legendWidth), {\n payload: legendData\n });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\nvar getBarSizeList = function getBarSizeList(_ref4) {\n var globalSize = _ref4.barSize,\n _ref4$stackGroups = _ref4.stackGroups,\n stackGroups = _ref4$stackGroups === undefined ? {} : _ref4$stackGroups;\n\n if (!stackGroups) {\n return {};\n }\n\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n\n\n var barItems = items.filter(function (item) {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__ReactUtils__["b" /* getDisplayName */])(item.type).indexOf(\'Bar\') >= 0;\n });\n\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n\n var cateId = barItems[0].props[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: __WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n\n return result;\n};\n\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\nvar getBarPosition = function getBarPosition(_ref5) {\n var barGap = _ref5.barGap,\n barCategoryGap = _ref5.barCategoryGap,\n bandSize = _ref5.bandSize,\n _ref5$sizeList = _ref5.sizeList,\n sizeList = _ref5$sizeList === undefined ? [] : _ref5$sizeList,\n maxBarSize = _ref5.maxBarSize;\n\n var len = sizeList.length;\n if (len < 1) return null;\n\n var realBarGap = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["c" /* getPercentValue */])(barGap, bandSize, 0, true);\n var result = void 0;\n\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = { offset: offset - realBarGap, size: 0 };\n\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({ item: item, position: prev });\n });\n }\n return newRes;\n }, []);\n } else {\n var _offset = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["c" /* getPercentValue */])(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({ item: item, position: newRes[newRes.length - 1].position });\n });\n }\n return newRes;\n }, []);\n }\n\n return result;\n};\n\nvar appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n height = props.height,\n margin = props.margin;\n\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n var legendProps = getLegendProps({ children: children, items: items, legendWidth: legendWidth, legendHeight: legendHeight });\n var newOffset = offset;\n\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n\n\n if ((layout === \'vertical\' || layout === \'horizontal\' && verticalAlign === \'center\') && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(offset[align])) {\n newOffset = _extends({}, offset, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n\n if ((layout === \'horizontal\' || layout === \'vertical\' && align === \'center\') && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(offset[verticalAlign])) {\n newOffset = _extends({}, offset, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n\n return newOffset;\n};\n\nvar getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, axisType) {\n var children = item.props.children;\n\n var errorBars = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__ReactUtils__["c" /* findAllByType */])(children, __WEBPACK_IMPORTED_MODULE_15__cartesian_ErrorBar__["a" /* default */]).filter(function (errorBarChild) {\n var direction = errorBarChild.props.direction;\n\n\n return __WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(direction) || __WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(axisType) ? true : axisType.indexOf(direction) >= 0;\n });\n\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = __WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default()(entryValue) ? [__WEBPACK_IMPORTED_MODULE_3_lodash_min___default()(entryValue), __WEBPACK_IMPORTED_MODULE_2_lodash_max___default()(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(__WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default()(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(__WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default()(errorValue) ? errorValue[1] : errorValue);\n\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\nvar parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, axisType);\n }).filter(function (entry) {\n return !__WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(entry);\n });\n\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\nvar getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, filterNil) {\n var domains = items.map(function (item) {\n var _item$props2 = item.props,\n children = _item$props2.children,\n dataKey = _item$props2.dataKey;\n\n\n if (type === \'number\' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n\n if (type === \'number\') {\n // Calculate the domain of number axis\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\n\nvar isCategorialAxis = function isCategorialAxis(layout, axisType) {\n return layout === \'horizontal\' && axisType === \'xAxis\' || layout === \'vertical\' && axisType === \'yAxis\' || layout === \'centric\' && axisType === \'angleAxis\' || layout === \'radial\' && axisType === \'radiusAxis\';\n};\n/**\n* Calculate the Coordinates of grid\n* @param {Array} ticks The ticks in axis\n* @param {Number} min The minimun value of axis\n* @param {Number} max The maximun value of axis\n* @return {Array} Coordinates\n*/\nvar getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin = void 0,\n hasMax = void 0;\n\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n if (entry.coordinate === max) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(min);\n }\n if (!hasMax) {\n values.push(max);\n }\n\n return values;\n};\n\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\nvar getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type;\n\n var offset = (isGrid || isAll) && type === \'category\' && scale.bandwidth && axis.axisType !== \'angleAxis\' ? scale.bandwidth() / 2 : 0;\n\n // The ticks setted by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n return (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n\n return {\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n if (axis.isCategorial && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry),\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return { coordinate: scale(entry) + offset, value: entry, offset: offset };\n });\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\nvar combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler = void 0;\n\n if (__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(childHandler)) {\n customizedHandler = childHandler;\n } else if (__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(parentHandler)) {\n customizedHandler = parentHandler;\n }\n\n if (__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n\n if (__WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n\n return null;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @return {Function} The scale funcion\n */\nvar parseScale = function parseScale(axis, chartType) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n\n if (scale === \'auto\') {\n if (layout === \'radial\' && axisType === \'radiusAxis\') {\n return { scale: __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scaleBand"](), realScaleType: \'band\' };\n } else if (layout === \'radial\' && axisType === \'angleAxis\') {\n return { scale: __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scaleLinear"](), realScaleType: \'linear\' };\n }\n\n if (type === \'category\' && chartType && (chartType.indexOf(\'LineChart\') >= 0 || chartType.indexOf(\'AreaChart\') >= 0)) {\n return { scale: __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scalePoint"](), realScaleType: \'point\' };\n } else if (type === \'category\') {\n return { scale: __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scaleBand"](), realScaleType: \'band\' };\n }\n\n return { scale: __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scaleLinear"](), realScaleType: \'linear\' };\n } else if (__WEBPACK_IMPORTED_MODULE_1_lodash_isString___default()(scale)) {\n var name = \'scale\' + scale.slice(0, 1).toUpperCase() + scale.slice(1);\n\n return {\n scale: (__WEBPACK_IMPORTED_MODULE_9_d3_scale__[name] || __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scalePoint"])(),\n realScaleType: __WEBPACK_IMPORTED_MODULE_9_d3_scale__[name] ? name : \'point\'\n };\n }\n\n return __WEBPACK_IMPORTED_MODULE_5_lodash_isFunction___default()(scale) ? { scale: scale } : { scale: __WEBPACK_IMPORTED_MODULE_9_d3_scale__["scalePoint"](), realScaleType: \'point\' };\n};\nvar EPS = 1e-4;\nvar checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\n\nvar findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n\n return null;\n};\n\nvar truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(domain[0]) || !__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(domain[1])) {\n return value;\n }\n\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n var result = [value[0], value[1]];\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(value[0]) || value[0] < min) {\n result[0] = min;\n }\n\n if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(value[1]) || value[1] > max) {\n result[1] = max;\n }\n\n if (result[0] > max) {\n result[0] = max;\n }\n\n if (result[1] < min) {\n result[1] = min;\n }\n\n return result;\n};\n\n/* eslint no-param-reassign: 0 */\nvar offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n }\n }\n};\n\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: __WEBPACK_IMPORTED_MODULE_10_d3_shape__["a" /* stackOffsetExpand */],\n none: __WEBPACK_IMPORTED_MODULE_10_d3_shape__["b" /* stackOffsetNone */],\n silhouette: __WEBPACK_IMPORTED_MODULE_10_d3_shape__["c" /* stackOffsetSilhouette */],\n wiggle: __WEBPACK_IMPORTED_MODULE_10_d3_shape__["d" /* stackOffsetWiggle */]\n};\n\nvar getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_10_d3_shape__["e" /* stack */])().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(__WEBPACK_IMPORTED_MODULE_10_d3_shape__["f" /* stackOrderNone */]).offset(STACK_OFFSET_MAP[offsetType]);\n\n return stack(data);\n};\n\nvar getStackGroupsByAxisId = function getStackGroupsByAxisId(data, items, numericAxisId, cateAxisId, offsetType) {\n if (!data) {\n return null;\n }\n\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n\n\n if (hide) {\n return result;\n }\n\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || { hasStack: false, stackGroups: {} };\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["a" /* isNumOrStr */])(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId, cateAxisId: cateAxisId, items: []\n };\n\n childGroup.items.push(item);\n\n parentGroup.hasStack = true;\n\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["d" /* uniqueId */])(\'_stackId_\')] = {\n numericAxisId: numericAxisId, cateAxisId: cateAxisId, items: [item]\n };\n }\n\n return _extends({}, result, _defineProperty({}, axisId, parentGroup));\n }, {});\n\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n\n return _extends({}, res, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n\n return _extends({}, result, _defineProperty({}, axisId, group));\n }, {});\n};\n\n/**\n * get domain of ticks\n * @param {Array} ticks Ticks of axis\n * @param {String} type The type of axis\n * @return {Array} domain\n */\nvar calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n if (type === \'number\') {\n return [Math.min.apply(null, ticks), Math.max.apply(null, ticks)];\n }\n\n return ticks;\n};\n\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\nvar getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n\n var scaleType = realScaleType || opts.scale;\n\n if (scaleType !== \'auto\' && scaleType !== \'linear\') {\n return null;\n }\n\n if (tickCount && type === \'number\' && originalDomain && (originalDomain[0] === \'auto\' || originalDomain[1] === \'auto\')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n var tickValues = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_8_recharts_scale__["getNiceTickValues"])(domain, tickCount, allowDecimals);\n\n scale.domain(calculateDomainOfTicks(tickValues, type));\n\n return { niceTicks: tickValues };\n } else if (tickCount && type === \'number\') {\n var _domain = scale.domain();\n var _tickValues = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_8_recharts_scale__["getTickValuesFixedDomain"])(_domain, tickCount, allowDecimals);\n\n return { niceTicks: _tickValues };\n }\n\n return null;\n};\n\nvar getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref6) {\n var axis = _ref6.axis,\n ticks = _ref6.ticks,\n bandSize = _ref6.bandSize,\n entry = _ref6.entry,\n index = _ref6.index;\n\n if (axis.type === \'category\') {\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n\n var value = getValueByDataKey(entry, axis.dataKey);\n\n return !__WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(value) ? axis.scale(value) : null;\n};\n\nvar getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n offset = _ref7.offset,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index;\n\n if (axis.type === \'category\') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n\n return !__WEBPACK_IMPORTED_MODULE_7_lodash_isNil___default()(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\n\nvar getBaseValueOfBar = function getBaseValueOfBar(_ref8) {\n var numericAxis = _ref8.numericAxis;\n\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === \'number\') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n if (min <= 0 && max >= 0) {\n return 0;\n }\n if (max < 0) {\n return max;\n }\n\n return min;\n }\n\n return domain[0];\n};\n\nvar detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType) {\n var lines = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__ReactUtils__["c" /* findAllByType */])(children, __WEBPACK_IMPORTED_MODULE_13__cartesian_ReferenceLine__["a" /* default */]);\n var dots = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__ReactUtils__["c" /* findAllByType */])(children, __WEBPACK_IMPORTED_MODULE_12__cartesian_ReferenceDot__["a" /* default */]);\n var elements = lines.concat(dots);\n var areas = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_17__ReactUtils__["c" /* findAllByType */])(children, __WEBPACK_IMPORTED_MODULE_14__cartesian_ReferenceArea__["a" /* default */]);\n var idKey = axisType + \'Id\';\n var valueKey = axisType[0];\n var finalDomain = domain;\n\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && el.props.alwaysShow && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(el.props[valueKey])) {\n var value = el.props[valueKey];\n\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n return result;\n }, finalDomain);\n }\n\n if (areas.length) {\n var key1 = valueKey + \'1\';\n var key2 = valueKey + \'2\';\n\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && el.props.alwaysShow && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(el.props[key1]) && __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n return result;\n }, finalDomain);\n }\n\n return finalDomain;\n};\n\nvar getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["a" /* isNumOrStr */])(stackId)) {\n var group = stackGroups[stackId];\n\n if (group && group.items.length) {\n var itemIndex = -1;\n\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [Math.min.apply(null, entry.concat([result[0]]).filter(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])), Math.max.apply(null, entry.concat([result[1]]).filter(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */]))];\n }, [Infinity, -Infinity]);\n};\n\nvar getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\n\nvar MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nvar MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\n\nvar parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (!__WEBPACK_IMPORTED_MODULE_4_lodash_isArray___default()(specifiedDomain)) {\n return dataDomain;\n }\n\n var domain = [];\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n\n domain[0] = dataDomain[0] - value;\n } else {\n domain[0] = dataDomain[0];\n }\n\n if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_11__DataUtils__["b" /* isNumber */])(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\n domain[1] = dataDomain[1] + _value;\n } else {\n domain[1] = dataDomain[1];\n }\n\n return domain;\n};\n\nvar validateCoordinateInRange = function validateCoordinateInRange(coordinate, scale) {\n if (!scale) {\n return false;\n }\n\n var range = scale.range();\n var first = range[0];\n var last = range[range.length - 1];\n var isValidate = first <= last ? coordinate >= first && coordinate <= last : coordinate >= last && coordinate <= first;\n\n return isValidate;\n};\n\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @return {Number} Size\n */\nvar getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n return axis.scale.bandwidth();\n }\n\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = __WEBPACK_IMPORTED_MODULE_0_lodash_sortBy___default()(ticks, function (o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\n return bandSize === Infinity ? 0 : bandSize;\n }\n\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlY2hhcnRzL2VzNi91dGlsL0NoYXJ0VXRpbHMuanM/ZTYyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3NvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCBfaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBfbWF4IGZyb20gJ2xvZGFzaC9tYXgnO1xuaW1wb3J0IF9taW4gZnJvbSAnbG9kYXNoL21pbic7XG5pbXBvcnQgX2lzQXJyYXkgZnJvbSAnbG9kYXNoL2lzQXJyYXknO1xuaW1wb3J0IF9pc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBfZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IF9pc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblxuaW1wb3J0IHsgZ2V0TmljZVRpY2tWYWx1ZXMsIGdldFRpY2tWYWx1ZXNGaXhlZERvbWFpbiB9IGZyb20gJ3JlY2hhcnRzLXNjYWxlJztcbmltcG9ydCAqIGFzIGQzU2NhbGVzIGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7IHN0YWNrIGFzIHNoYXBlU3RhY2ssIHN0YWNrT3JkZXJOb25lLCBzdGFja09mZnNldEV4cGFuZCwgc3RhY2tPZmZzZXROb25lLCBzdGFja09mZnNldFNpbGhvdWV0dGUsIHN0YWNrT2Zmc2V0V2lnZ2xlIH0gZnJvbSAnZDMtc2hhcGUnO1xuaW1wb3J0IHsgaXNOdW1PclN0ciwgdW5pcXVlSWQsIGlzTnVtYmVyLCBnZXRQZXJjZW50VmFsdWUgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgUmVmZXJlbmNlRG90IGZyb20gJy4uL2NhcnRlc2lhbi9SZWZlcmVuY2VEb3QnO1xuaW1wb3J0IFJlZmVyZW5jZUxpbmUgZnJvbSAnLi4vY2FydGVzaWFuL1JlZmVyZW5jZUxpbmUnO1xuaW1wb3J0IFJlZmVyZW5jZUFyZWEgZnJvbSAnLi4vY2FydGVzaWFuL1JlZmVyZW5jZUFyZWEnO1xuaW1wb3J0IEVycm9yQmFyIGZyb20gJy4uL2NhcnRlc2lhbi9FcnJvckJhcic7XG5pbXBvcnQgTGVnZW5kIGZyb20gJy4uL2NvbXBvbmVudC9MZWdlbmQnO1xuaW1wb3J0IHsgZmluZEFsbEJ5VHlwZSwgZmluZENoaWxkQnlUeXBlLCBnZXREaXNwbGF5TmFtZSB9IGZyb20gJy4vUmVhY3RVdGlscyc7XG5cbmV4cG9ydCB2YXIgZ2V0VmFsdWVCeURhdGFLZXkgPSBmdW5jdGlvbiBnZXRWYWx1ZUJ5RGF0YUtleShvYmosIGRhdGFLZXksIGRlZmF1bHRWYWx1ZSkge1xuICBpZiAoX2lzTmlsKG9iaikgfHwgX2lzTmlsKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGlmIChpc051bU9yU3RyKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIF9nZXQob2JqLCBkYXRhS2V5LCBkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgaWYgKF9pc0Z1bmN0aW9uKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIGRhdGFLZXkob2JqKTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuLyoqXG4gKiBHZXQgZG9tYWluIG9mIGRhdGEgYnkga2V5XG4gKiBAcGFyYW0gIHtBcnJheX0gICBkYXRhICAgICAgVGhlIGRhdGEgZGlzcGxheWVkIGluIHRoZSBjaGFydFxuICogQHBhcmFtICB7U3RyaW5nfSAga2V5ICAgICAgIFRoZSB1bmlxdWUga2V5IG9mIGEgZ3JvdXAgb2YgZGF0YVxuICogQHBhcmFtICB7U3RyaW5nfSAgdHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXNcbiAqIEBwYXJhbSAge0Jvb2xlYW59IGZpbHRlck5pbCBXaGV0aGVyIG9yIG5vdCBmaWx0ZXIgbmlsIHZhbHVlc1xuICogQHJldHVybiB7QXJyYXl9IERvbWFpbiBvZiBkYXRhXG4gKi9cbmV4cG9ydCB2YXIgZ2V0RG9tYWluT2ZEYXRhQnlLZXkgPSBmdW5jdGlvbiBnZXREb21haW5PZkRhdGFCeUtleShkYXRhLCBrZXksIHR5cGUsIGZpbHRlck5pbCkge1xuICB2YXIgZmxhdHRlbkRhdGEgPSBkYXRhLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBrZXkpO1xuXG4gICAgaWYgKF9pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzdWx0KSwgX3RvQ29uc3VtYWJsZUFycmF5KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzdWx0KSwgW3ZhbHVlXSk7XG4gIH0sIFtdKTtcblxuICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YXIgZG9tYWluID0gZmxhdHRlbkRhdGEuZmlsdGVyKGlzTnVtYmVyKTtcblxuICAgIHJldHVybiBbTWF0aC5taW4uYXBwbHkobnVsbCwgZG9tYWluKSwgTWF0aC5tYXguYXBwbHkobnVsbCwgZG9tYWluKV07XG4gIH1cblxuICB2YXIgdmFsaWRhdGVEYXRhID0gZmlsdGVyTmlsID8gZmxhdHRlbkRhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiAhX2lzTmlsKGVudHJ5KTtcbiAgfSkgOiBmbGF0dGVuRGF0YTtcblxuICByZXR1cm4gdmFsaWRhdGVEYXRhLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gaXNOdW1PclN0cihlbnRyeSkgPyBlbnRyeSA6ICcnO1xuICB9KTtcbn07XG5cbmV4cG9ydCB2YXIgY2FsY3VsYXRlQWN0aXZlVGlja0luZGV4ID0gZnVuY3Rpb24gY2FsY3VsYXRlQWN0aXZlVGlja0luZGV4KGNvb3JkaW5hdGUsIHRpY2tzKSB7XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbGVuID0gdGlja3MubGVuZ3RoO1xuXG4gIGlmIChsZW4gPiAxKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGkgPT09IDAgJiYgY29vcmRpbmF0ZSA8PSAodGlja3NbaV0uY29vcmRpbmF0ZSArIHRpY2tzW2kgKyAxXS5jb29yZGluYXRlKSAvIDIgfHwgaSA+IDAgJiYgaSA8IGxlbiAtIDEgJiYgY29vcmRpbmF0ZSA+ICh0aWNrc1tpXS5jb29yZGluYXRlICsgdGlja3NbaSAtIDFdLmNvb3JkaW5hdGUpIC8gMiAmJiBjb29yZGluYXRlIDw9ICh0aWNrc1tpXS5jb29yZGluYXRlICsgdGlja3NbaSArIDFdLmNvb3JkaW5hdGUpIC8gMiB8fCBpID09PSBsZW4gLSAxICYmIGNvb3JkaW5hdGUgPiAodGlja3NbaV0uY29vcmRpbmF0ZSArIHRpY2tzW2kgLSAxXS5jb29yZGluYXRlKSAvIDIpIHtcbiAgICAgICAgaW5kZXggPSB0aWNrc1tpXS5pbmRleDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGluZGV4ID0gMDtcbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBtYWluIGNvbG9yIG9mIGVhY2ggZ3JhcGhpYyBpdGVtXG4gKiBAcGFyYW0gIHtSZWFjdEVsZW1lbnR9IGl0ZW0gQSBncmFwaGljIGl0ZW1cbiAqIEByZXR1cm4ge1N0cmluZ30gICAgICAgICAgICBDb2xvclxuICovXG5leHBvcnQgdmFyIGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0gPSBmdW5jdGlvbiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGl0ZW0pIHtcbiAgdmFyIGRpc3BsYXlOYW1lID0gaXRlbS50eXBlLmRpc3BsYXlOYW1lO1xuICB2YXIgcmVzdWx0ID0gdm9pZCAwO1xuXG4gIHN3aXRjaCAoZGlzcGxheU5hbWUpIHtcbiAgICBjYXNlICdMaW5lJzpcbiAgICBjYXNlICdBcmVhJzpcbiAgICBjYXNlICdSYWRhcic6XG4gICAgICByZXN1bHQgPSBpdGVtLnByb3BzLnN0cm9rZTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXN1bHQgPSBpdGVtLnByb3BzLmZpbGw7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgdmFyIGdldExlZ2VuZFByb3BzID0gZnVuY3Rpb24gZ2V0TGVnZW5kUHJvcHMoX3JlZikge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgZm9ybWF0ZWRHcmFwaGljYWxJdGVtcyA9IF9yZWYuZm9ybWF0ZWRHcmFwaGljYWxJdGVtcyxcbiAgICAgIGxlZ2VuZFdpZHRoID0gX3JlZi5sZWdlbmRXaWR0aCxcbiAgICAgIGxlZ2VuZEhlaWdodCA9IF9yZWYubGVnZW5kSGVpZ2h0LFxuICAgICAgbGVnZW5kQ29udGVudCA9IF9yZWYubGVnZW5kQ29udGVudDtcblxuICB2YXIgbGVnZW5kSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgTGVnZW5kKTtcbiAgaWYgKCFsZWdlbmRJdGVtKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbGVnZW5kRGF0YSA9IHZvaWQgMDtcbiAgaWYgKGxlZ2VuZEl0ZW0ucHJvcHMgJiYgbGVnZW5kSXRlbS5wcm9wcy5wYXlsb2FkKSB7XG4gICAgbGVnZW5kRGF0YSA9IGxlZ2VuZEl0ZW0ucHJvcHMgJiYgbGVnZW5kSXRlbS5wcm9wcy5wYXlsb2FkO1xuICB9IGVsc2UgaWYgKGxlZ2VuZENvbnRlbnQgPT09ICdjaGlsZHJlbicpIHtcbiAgICBsZWdlbmREYXRhID0gKGZvcm1hdGVkR3JhcGhpY2FsSXRlbXMgfHwgW10pLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBfcmVmMiwgaSkge1xuICAgICAgdmFyIGl0ZW0gPSBfcmVmMi5pdGVtLFxuICAgICAgICAgIHByb3BzID0gX3JlZjIucHJvcHM7XG4gICAgICB2YXIgbmFtZUtleSA9IGl0ZW0ucHJvcHMubmFtZUtleTtcblxuICAgICAgdmFyIGRhdGEgPSBwcm9wcy5zZWN0b3JzIHx8IHByb3BzLmRhdGE7XG5cbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGxlZ2VuZEl0ZW0ucHJvcHMuaWNvblR5cGUgfHwgaXRlbS5wcm9wcy5sZWdlbmRUeXBlLFxuICAgICAgICAgIHZhbHVlOiBlbnRyeS5uYW1lLFxuICAgICAgICAgIGNvbG9yOiBlbnRyeS5maWxsLFxuICAgICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICAgIH07XG4gICAgICB9KSk7XG4gICAgfSwgW10pO1xuICB9IGVsc2Uge1xuICAgIGxlZ2VuZERhdGEgPSAoZm9ybWF0ZWRHcmFwaGljYWxJdGVtcyB8fCBbXSkubWFwKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIGl0ZW0gPSBfcmVmMy5pdGVtLFxuICAgICAgICAgIHByb3BzID0gX3JlZjMucHJvcHM7XG4gICAgICB2YXIgX2l0ZW0kcHJvcHMgPSBpdGVtLnByb3BzLFxuICAgICAgICAgIGRhdGFLZXkgPSBfaXRlbSRwcm9wcy5kYXRhS2V5LFxuICAgICAgICAgIG5hbWUgPSBfaXRlbSRwcm9wcy5uYW1lLFxuICAgICAgICAgIGxlZ2VuZFR5cGUgPSBfaXRlbSRwcm9wcy5sZWdlbmRUeXBlLFxuICAgICAgICAgIGhpZGUgPSBfaXRlbSRwcm9wcy5oaWRlO1xuXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGluYWN0aXZlOiBoaWRlLFxuICAgICAgICBkYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICB0eXBlOiBsZWdlbmRJdGVtLnByb3BzLmljb25UeXBlIHx8IGxlZ2VuZFR5cGUgfHwgJ3NxdWFyZScsXG4gICAgICAgIGNvbG9yOiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGl0ZW0pLFxuICAgICAgICB2YWx1ZTogbmFtZSB8fCBkYXRhS2V5LFxuICAgICAgICBwYXlsb2FkOiBpdGVtLnByb3BzXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBsZWdlbmRJdGVtLnByb3BzLCBMZWdlbmQuZ2V0V2l0aEhlaWdodChsZWdlbmRJdGVtLCBsZWdlbmRXaWR0aCksIHtcbiAgICBwYXlsb2FkOiBsZWdlbmREYXRhXG4gIH0pO1xufTtcbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGFsbCBncm91cHMgZm9yIHN0YWNrZWQgYmFyIGdyYXBoXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN0YWNrR3JvdXBzIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgc2l6ZSBvZiBhbGwgZ3JvdXBzXG4gKi9cbmV4cG9ydCB2YXIgZ2V0QmFyU2l6ZUxpc3QgPSBmdW5jdGlvbiBnZXRCYXJTaXplTGlzdChfcmVmNCkge1xuICB2YXIgZ2xvYmFsU2l6ZSA9IF9yZWY0LmJhclNpemUsXG4gICAgICBfcmVmNCRzdGFja0dyb3VwcyA9IF9yZWY0LnN0YWNrR3JvdXBzLFxuICAgICAgc3RhY2tHcm91cHMgPSBfcmVmNCRzdGFja0dyb3VwcyA9PT0gdW5kZWZpbmVkID8ge30gOiBfcmVmNCRzdGFja0dyb3VwcztcblxuICBpZiAoIXN0YWNrR3JvdXBzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHt9O1xuICB2YXIgbnVtZXJpY0F4aXNJZHMgPSBPYmplY3Qua2V5cyhzdGFja0dyb3Vwcyk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG51bWVyaWNBeGlzSWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHNncyA9IHN0YWNrR3JvdXBzW251bWVyaWNBeGlzSWRzW2ldXS5zdGFja0dyb3VwcztcbiAgICB2YXIgc3RhY2tJZHMgPSBPYmplY3Qua2V5cyhzZ3MpO1xuXG4gICAgZm9yICh2YXIgaiA9IDAsIHNMZW4gPSBzdGFja0lkcy5sZW5ndGg7IGogPCBzTGVuOyBqKyspIHtcbiAgICAgIHZhciBfc2dzJHN0YWNrSWRzJGogPSBzZ3Nbc3RhY2tJZHNbal1dLFxuICAgICAgICAgIGl0ZW1zID0gX3NncyRzdGFja0lkcyRqLml0ZW1zLFxuICAgICAgICAgIGNhdGVBeGlzSWQgPSBfc2dzJHN0YWNrSWRzJGouY2F0ZUF4aXNJZDtcblxuXG4gICAgICB2YXIgYmFySXRlbXMgPSBpdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGl0ZW0udHlwZSkuaW5kZXhPZignQmFyJykgPj0gMDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYmFySXRlbXMgJiYgYmFySXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBzZWxmU2l6ZSA9IGJhckl0ZW1zWzBdLnByb3BzLmJhclNpemU7XG5cbiAgICAgICAgdmFyIGNhdGVJZCA9IGJhckl0ZW1zWzBdLnByb3BzW2NhdGVBeGlzSWRdO1xuXG4gICAgICAgIGlmICghcmVzdWx0W2NhdGVJZF0pIHtcbiAgICAgICAgICByZXN1bHRbY2F0ZUlkXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0W2NhdGVJZF0ucHVzaCh7XG4gICAgICAgICAgaXRlbTogYmFySXRlbXNbMF0sXG4gICAgICAgICAgc3RhY2tMaXN0OiBiYXJJdGVtcy5zbGljZSgxKSxcbiAgICAgICAgICBiYXJTaXplOiBfaXNOaWwoc2VsZlNpemUpID8gZ2xvYmFsU2l6ZSA6IHNlbGZTaXplXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAgICogQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGVhY2ggYmFyIGFuZCB0aGUgZ2FwIGJldHdlZW4gdHdvIGJhcnNcbiAgICogQHBhcmFtICB7TnVtYmVyfSBiYW5kU2l6ZSAgVGhlIHNpemUgb2YgZWFjaCBjYXRlZ29yeVxuICAgKiBAcGFyYW0gIHtzaXplTGlzdH0gc2l6ZUxpc3QgIFRoZSBzaXplIG9mIGFsbCBncm91cHNcbiAgICogQHBhcmFtICB7bWF4QmFyU2l6ZX0gbWF4QmFyU2l6ZSBUaGUgbWF4aW11bSBzaXplIG9mIGJhclxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBzaXplIG9mIGVhY2ggYmFyIGFuZCB0aGUgZ2FwIGJldHdlZW4gdHdvIGJhcnNcbiAgICovXG5leHBvcnQgdmFyIGdldEJhclBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0QmFyUG9zaXRpb24oX3JlZjUpIHtcbiAgdmFyIGJhckdhcCA9IF9yZWY1LmJhckdhcCxcbiAgICAgIGJhckNhdGVnb3J5R2FwID0gX3JlZjUuYmFyQ2F0ZWdvcnlHYXAsXG4gICAgICBiYW5kU2l6ZSA9IF9yZWY1LmJhbmRTaXplLFxuICAgICAgX3JlZjUkc2l6ZUxpc3QgPSBfcmVmNS5zaXplTGlzdCxcbiAgICAgIHNpemVMaXN0ID0gX3JlZjUkc2l6ZUxpc3QgPT09IHVuZGVmaW5lZCA/IFtdIDogX3JlZjUkc2l6ZUxpc3QsXG4gICAgICBtYXhCYXJTaXplID0gX3JlZjUubWF4QmFyU2l6ZTtcblxuICB2YXIgbGVuID0gc2l6ZUxpc3QubGVuZ3RoO1xuICBpZiAobGVuIDwgMSkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIHJlYWxCYXJHYXAgPSBnZXRQZXJjZW50VmFsdWUoYmFyR2FwLCBiYW5kU2l6ZSwgMCwgdHJ1ZSk7XG4gIHZhciByZXN1bHQgPSB2b2lkIDA7XG5cbiAgLy8gd2hldGhlciBvciBub3QgaXMgYmFyU2l6ZSBzZXR0ZWQgYnkgdXNlclxuICBpZiAoc2l6ZUxpc3RbMF0uYmFyU2l6ZSA9PT0gK3NpemVMaXN0WzBdLmJhclNpemUpIHtcbiAgICB2YXIgdXNlRnVsbCA9IGZhbHNlO1xuICAgIHZhciBmdWxsQmFyU2l6ZSA9IGJhbmRTaXplIC8gbGVuO1xuICAgIHZhciBzdW0gPSBzaXplTGlzdC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICAgIHJldHVybiByZXMgKyBlbnRyeS5iYXJTaXplIHx8IDA7XG4gICAgfSwgMCk7XG4gICAgc3VtICs9IChsZW4gLSAxKSAqIHJlYWxCYXJHYXA7XG5cbiAgICBpZiAoc3VtID49IGJhbmRTaXplKSB7XG4gICAgICBzdW0gLT0gKGxlbiAtIDEpICogcmVhbEJhckdhcDtcbiAgICAgIHJlYWxCYXJHYXAgPSAwO1xuICAgIH1cbiAgICBpZiAoc3VtID49IGJhbmRTaXplICYmIGZ1bGxCYXJTaXplID4gMCkge1xuICAgICAgdXNlRnVsbCA9IHRydWU7XG4gICAgICBmdWxsQmFyU2l6ZSAqPSAwLjk7XG4gICAgICBzdW0gPSBsZW4gKiBmdWxsQmFyU2l6ZTtcbiAgICB9XG5cbiAgICB2YXIgb2Zmc2V0ID0gKGJhbmRTaXplIC0gc3VtKSAvIDIgPj4gMDtcbiAgICB2YXIgcHJldiA9IHsgb2Zmc2V0OiBvZmZzZXQgLSByZWFsQmFyR2FwLCBzaXplOiAwIH07XG5cbiAgICByZXN1bHQgPSBzaXplTGlzdC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICAgIHZhciBuZXdSZXMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlcyksIFt7XG4gICAgICAgIGl0ZW06IGVudHJ5Lml0ZW0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgb2Zmc2V0OiBwcmV2Lm9mZnNldCArIHByZXYuc2l6ZSArIHJlYWxCYXJHYXAsXG4gICAgICAgICAgc2l6ZTogdXNlRnVsbCA/IGZ1bGxCYXJTaXplIDogZW50cnkuYmFyU2l6ZVxuICAgICAgICB9XG4gICAgICB9XSk7XG5cbiAgICAgIHByZXYgPSBuZXdSZXNbbmV3UmVzLmxlbmd0aCAtIDFdLnBvc2l0aW9uO1xuXG4gICAgICBpZiAoZW50cnkuc3RhY2tMaXN0ICYmIGVudHJ5LnN0YWNrTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgZW50cnkuc3RhY2tMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICBuZXdSZXMucHVzaCh7IGl0ZW06IGl0ZW0sIHBvc2l0aW9uOiBwcmV2IH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXdSZXM7XG4gICAgfSwgW10pO1xuICB9IGVsc2Uge1xuICAgIHZhciBfb2Zmc2V0ID0gZ2V0UGVyY2VudFZhbHVlKGJhckNhdGVnb3J5R2FwLCBiYW5kU2l6ZSwgMCwgdHJ1ZSk7XG5cbiAgICBpZiAoYmFuZFNpemUgLSAyICogX29mZnNldCAtIChsZW4gLSAxKSAqIHJlYWxCYXJHYXAgPD0gMCkge1xuICAgICAgcmVhbEJhckdhcCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIG9yaWdpbmFsU2l6ZSA9IChiYW5kU2l6ZSAtIDIgKiBfb2Zmc2V0IC0gKGxlbiAtIDEpICogcmVhbEJhckdhcCkgLyBsZW47XG4gICAgaWYgKG9yaWdpbmFsU2l6ZSA+IDEpIHtcbiAgICAgIG9yaWdpbmFsU2l6ZSA+Pj0gMDtcbiAgICB9XG4gICAgdmFyIHNpemUgPSBtYXhCYXJTaXplID09PSArbWF4QmFyU2l6ZSA/IE1hdGgubWluKG9yaWdpbmFsU2l6ZSwgbWF4QmFyU2l6ZSkgOiBvcmlnaW5hbFNpemU7XG5cbiAgICByZXN1bHQgPSBzaXplTGlzdC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnksIGkpIHtcbiAgICAgIHZhciBuZXdSZXMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlcyksIFt7XG4gICAgICAgIGl0ZW06IGVudHJ5Lml0ZW0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgb2Zmc2V0OiBfb2Zmc2V0ICsgKG9yaWdpbmFsU2l6ZSArIHJlYWxCYXJHYXApICogaSArIChvcmlnaW5hbFNpemUgLSBzaXplKSAvIDIsXG4gICAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgICB9XG4gICAgICB9XSk7XG5cbiAgICAgIGlmIChlbnRyeS5zdGFja0xpc3QgJiYgZW50cnkuc3RhY2tMaXN0Lmxlbmd0aCkge1xuICAgICAgICBlbnRyeS5zdGFja0xpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIG5ld1Jlcy5wdXNoKHsgaXRlbTogaXRlbSwgcG9zaXRpb246IG5ld1Jlc1tuZXdSZXMubGVuZ3RoIC0gMV0ucG9zaXRpb24gfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1JlcztcbiAgICB9LCBbXSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IHZhciBhcHBlbmRPZmZzZXRPZkxlZ2VuZCA9IGZ1bmN0aW9uIGFwcGVuZE9mZnNldE9mTGVnZW5kKG9mZnNldCwgaXRlbXMsIHByb3BzLCBsZWdlbmRCb3gpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgICAgbWFyZ2luID0gcHJvcHMubWFyZ2luO1xuXG4gIHZhciBsZWdlbmRXaWR0aCA9IHdpZHRoIC0gKG1hcmdpbi5sZWZ0IHx8IDApIC0gKG1hcmdpbi5yaWdodCB8fCAwKTtcbiAgdmFyIGxlZ2VuZEhlaWdodCA9IGhlaWdodCAtIChtYXJnaW4udG9wIHx8IDApIC0gKG1hcmdpbi5ib3R0b20gfHwgMCk7XG4gIHZhciBsZWdlbmRQcm9wcyA9IGdldExlZ2VuZFByb3BzKHsgY2hpbGRyZW46IGNoaWxkcmVuLCBpdGVtczogaXRlbXMsIGxlZ2VuZFdpZHRoOiBsZWdlbmRXaWR0aCwgbGVnZW5kSGVpZ2h0OiBsZWdlbmRIZWlnaHQgfSk7XG4gIHZhciBuZXdPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgaWYgKGxlZ2VuZFByb3BzKSB7XG4gICAgdmFyIGJveCA9IGxlZ2VuZEJveCB8fCB7fTtcbiAgICB2YXIgYWxpZ24gPSBsZWdlbmRQcm9wcy5hbGlnbixcbiAgICAgICAgdmVydGljYWxBbGlnbiA9IGxlZ2VuZFByb3BzLnZlcnRpY2FsQWxpZ24sXG4gICAgICAgIGxheW91dCA9IGxlZ2VuZFByb3BzLmxheW91dDtcblxuXG4gICAgaWYgKChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgfHwgbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgJiYgdmVydGljYWxBbGlnbiA9PT0gJ2NlbnRlcicpICYmIGlzTnVtYmVyKG9mZnNldFthbGlnbl0pKSB7XG4gICAgICBuZXdPZmZzZXQgPSBfZXh0ZW5kcyh7fSwgb2Zmc2V0LCBfZGVmaW5lUHJvcGVydHkoe30sIGFsaWduLCBuZXdPZmZzZXRbYWxpZ25dICsgKGJveC53aWR0aCB8fCAwKSkpO1xuICAgIH1cblxuICAgIGlmICgobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgfHwgbGF5b3V0ID09PSAndmVydGljYWwnICYmIGFsaWduID09PSAnY2VudGVyJykgJiYgaXNOdW1iZXIob2Zmc2V0W3ZlcnRpY2FsQWxpZ25dKSkge1xuICAgICAgbmV3T2Zmc2V0ID0gX2V4dGVuZHMoe30sIG9mZnNldCwgX2RlZmluZVByb3BlcnR5KHt9LCB2ZXJ0aWNhbEFsaWduLCBuZXdPZmZzZXRbdmVydGljYWxBbGlnbl0gKyAoYm94LmhlaWdodCB8fCAwKSkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdPZmZzZXQ7XG59O1xuXG5leHBvcnQgdmFyIGdldERvbWFpbk9mRXJyb3JCYXJzID0gZnVuY3Rpb24gZ2V0RG9tYWluT2ZFcnJvckJhcnMoZGF0YSwgaXRlbSwgZGF0YUtleSwgYXhpc1R5cGUpIHtcbiAgdmFyIGNoaWxkcmVuID0gaXRlbS5wcm9wcy5jaGlsZHJlbjtcblxuICB2YXIgZXJyb3JCYXJzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgRXJyb3JCYXIpLmZpbHRlcihmdW5jdGlvbiAoZXJyb3JCYXJDaGlsZCkge1xuICAgIHZhciBkaXJlY3Rpb24gPSBlcnJvckJhckNoaWxkLnByb3BzLmRpcmVjdGlvbjtcblxuXG4gICAgcmV0dXJuIF9pc05pbChkaXJlY3Rpb24pIHx8IF9pc05pbChheGlzVHlwZSkgPyB0cnVlIDogYXhpc1R5cGUuaW5kZXhPZihkaXJlY3Rpb24pID49IDA7XG4gIH0pO1xuXG4gIGlmIChlcnJvckJhcnMgJiYgZXJyb3JCYXJzLmxlbmd0aCkge1xuICAgIHZhciBrZXlzID0gZXJyb3JCYXJzLm1hcChmdW5jdGlvbiAoZXJyb3JCYXJDaGlsZCkge1xuICAgICAgcmV0dXJuIGVycm9yQmFyQ2hpbGQucHJvcHMuZGF0YUtleTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgdmFyIGVudHJ5VmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgZGF0YUtleSwgMCk7XG4gICAgICB2YXIgbWFpblZhbHVlID0gX2lzQXJyYXkoZW50cnlWYWx1ZSkgPyBbX21pbihlbnRyeVZhbHVlKSwgX21heChlbnRyeVZhbHVlKV0gOiBbZW50cnlWYWx1ZSwgZW50cnlWYWx1ZV07XG4gICAgICB2YXIgZXJyb3JEb21haW4gPSBrZXlzLnJlZHVjZShmdW5jdGlvbiAocHJldkVycm9yQXJyLCBrKSB7XG4gICAgICAgIHZhciBlcnJvclZhbHVlID0gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGssIDApO1xuICAgICAgICB2YXIgbG93ZXJWYWx1ZSA9IG1haW5WYWx1ZVswXSAtIE1hdGguYWJzKF9pc0FycmF5KGVycm9yVmFsdWUpID8gZXJyb3JWYWx1ZVswXSA6IGVycm9yVmFsdWUpO1xuICAgICAgICB2YXIgdXBwZXJWYWx1ZSA9IG1haW5WYWx1ZVsxXSArIE1hdGguYWJzKF9pc0FycmF5KGVycm9yVmFsdWUpID8gZXJyb3JWYWx1ZVsxXSA6IGVycm9yVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBbTWF0aC5taW4obG93ZXJWYWx1ZSwgcHJldkVycm9yQXJyWzBdKSwgTWF0aC5tYXgodXBwZXJWYWx1ZSwgcHJldkVycm9yQXJyWzFdKV07XG4gICAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuXG4gICAgICByZXR1cm4gW01hdGgubWluKGVycm9yRG9tYWluWzBdLCByZXN1bHRbMF0pLCBNYXRoLm1heChlcnJvckRvbWFpblsxXSwgcmVzdWx0WzFdKV07XG4gICAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCB2YXIgcGFyc2VFcnJvckJhcnNPZkF4aXMgPSBmdW5jdGlvbiBwYXJzZUVycm9yQmFyc09mQXhpcyhkYXRhLCBpdGVtcywgZGF0YUtleSwgYXhpc1R5cGUpIHtcbiAgdmFyIGRvbWFpbnMgPSBpdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICByZXR1cm4gZ2V0RG9tYWluT2ZFcnJvckJhcnMoZGF0YSwgaXRlbSwgZGF0YUtleSwgYXhpc1R5cGUpO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuICFfaXNOaWwoZW50cnkpO1xuICB9KTtcblxuICBpZiAoZG9tYWlucyAmJiBkb21haW5zLmxlbmd0aCkge1xuICAgIHJldHVybiBkb21haW5zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIGVudHJ5WzBdKSwgTWF0aC5tYXgocmVzdWx0WzFdLCBlbnRyeVsxXSldO1xuICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4vKipcbiAqIEdldCBkb21haW4gb2YgZGF0YSBieSB0aGUgY29uZmlndXJhdGlvbiBvZiBpdGVtIGVsZW1lbnRcbiAqIEBwYXJhbSAge0FycmF5fSAgIGRhdGEgICAgICBUaGUgZGF0YSBkaXNwbGF5ZWQgaW4gdGhlIGNoYXJ0XG4gKiBAcGFyYW0gIHtBcnJheX0gICBpdGVtcyAgICAgVGhlIGluc3RhbmNlcyBvZiBpdGVtXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICB0eXBlICAgICAgVGhlIHR5cGUgb2YgYXhpcywgbnVtYmVyIC0gTnVtYmVyIEF4aXMsIGNhdGVnb3J5IC0gQ2F0ZWdvcnkgQXhpc1xuICogQHBhcmFtICB7Qm9vbGVhbn0gZmlsdGVyTmlsIFdoZXRoZXIgb3Igbm90IGZpbHRlciBuaWwgdmFsdWVzXG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgIERvbWFpblxuICovXG5leHBvcnQgdmFyIGdldERvbWFpbk9mSXRlbXNXaXRoU2FtZUF4aXMgPSBmdW5jdGlvbiBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzKGRhdGEsIGl0ZW1zLCB0eXBlLCBmaWx0ZXJOaWwpIHtcbiAgdmFyIGRvbWFpbnMgPSBpdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgX2l0ZW0kcHJvcHMyID0gaXRlbS5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW4gPSBfaXRlbSRwcm9wczIuY2hpbGRyZW4sXG4gICAgICAgIGRhdGFLZXkgPSBfaXRlbSRwcm9wczIuZGF0YUtleTtcblxuXG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGRhdGFLZXkpIHtcbiAgICAgIHJldHVybiBnZXREb21haW5PZkVycm9yQmFycyhkYXRhLCBpdGVtLCBkYXRhS2V5KSB8fCBnZXREb21haW5PZkRhdGFCeUtleShkYXRhLCBkYXRhS2V5LCB0eXBlLCBmaWx0ZXJOaWwpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGF0YSwgZGF0YUtleSwgdHlwZSwgZmlsdGVyTmlsKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBkb21haW4gb2YgbnVtYmVyIGF4aXNcbiAgICByZXR1cm4gZG9tYWlucy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgIHJldHVybiBbTWF0aC5taW4ocmVzdWx0WzBdLCBlbnRyeVswXSksIE1hdGgubWF4KHJlc3VsdFsxXSwgZW50cnlbMV0pXTtcbiAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICB9XG5cbiAgdmFyIHRhZyA9IHt9O1xuICAvLyBHZXQgdGhlIHVuaW9uIHNldCBvZiBjYXRlZ29yeSBheGlzXG4gIHJldHVybiBkb21haW5zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlbnRyeS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKCF0YWdbZW50cnlbaV1dKSB7XG4gICAgICAgIHRhZ1tlbnRyeVtpXV0gPSB0cnVlO1xuXG4gICAgICAgIHJlc3VsdC5wdXNoKGVudHJ5W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW10pO1xufTtcblxuZXhwb3J0IHZhciBpc0NhdGVnb3JpYWxBeGlzID0gZnVuY3Rpb24gaXNDYXRlZ29yaWFsQXhpcyhsYXlvdXQsIGF4aXNUeXBlKSB7XG4gIHJldHVybiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyAmJiBheGlzVHlwZSA9PT0gJ3hBeGlzJyB8fCBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgJiYgYXhpc1R5cGUgPT09ICd5QXhpcycgfHwgbGF5b3V0ID09PSAnY2VudHJpYycgJiYgYXhpc1R5cGUgPT09ICdhbmdsZUF4aXMnIHx8IGxheW91dCA9PT0gJ3JhZGlhbCcgJiYgYXhpc1R5cGUgPT09ICdyYWRpdXNBeGlzJztcbn07XG4vKipcbiogQ2FsY3VsYXRlIHRoZSBDb29yZGluYXRlcyBvZiBncmlkXG4qIEBwYXJhbSAge0FycmF5fSB0aWNrcyBUaGUgdGlja3MgaW4gYXhpc1xuKiBAcGFyYW0ge051bWJlcn0gbWluICAgVGhlIG1pbmltdW4gdmFsdWUgb2YgYXhpc1xuKiBAcGFyYW0ge051bWJlcn0gbWF4ICAgVGhlIG1heGltdW4gdmFsdWUgb2YgYXhpc1xuKiBAcmV0dXJuIHtBcnJheX0gICAgICAgQ29vcmRpbmF0ZXNcbiovXG5leHBvcnQgdmFyIGdldENvb3JkaW5hdGVzT2ZHcmlkID0gZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXNPZkdyaWQodGlja3MsIG1pbiwgbWF4KSB7XG4gIHZhciBoYXNNaW4gPSB2b2lkIDAsXG4gICAgICBoYXNNYXggPSB2b2lkIDA7XG5cbiAgdmFyIHZhbHVlcyA9IHRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBpZiAoZW50cnkuY29vcmRpbmF0ZSA9PT0gbWluKSB7XG4gICAgICBoYXNNaW4gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZW50cnkuY29vcmRpbmF0ZSA9PT0gbWF4KSB7XG4gICAgICBoYXNNYXggPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRyeS5jb29yZGluYXRlO1xuICB9KTtcblxuICBpZiAoIWhhc01pbikge1xuICAgIHZhbHVlcy5wdXNoKG1pbik7XG4gIH1cbiAgaWYgKCFoYXNNYXgpIHtcbiAgICB2YWx1ZXMucHVzaChtYXgpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlcztcbn07XG5cbi8qKlxuICogR2V0IHRoZSB0aWNrcyBvZiBhbiBheGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9ICBheGlzIFRoZSBjb25maWd1cmF0aW9uIG9mIGFuIGF4aXNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNHcmlkIFdoZXRoZXIgb3Igbm90IGFyZSB0aGUgdGlja3MgaW4gZ3JpZFxuICogQHBhcmFtIHtCb29sZWFufSBpc0FsbCBSZXR1cm4gdGhlIHRpY2tzIG9mIGFsbCB0aGUgcG9pbnRzIG9yIG5vdFxuICogQHJldHVybiB7QXJyYXl9ICBUaWNrc1xuICovXG5leHBvcnQgdmFyIGdldFRpY2tzT2ZBeGlzID0gZnVuY3Rpb24gZ2V0VGlja3NPZkF4aXMoYXhpcywgaXNHcmlkLCBpc0FsbCkge1xuICBpZiAoIWF4aXMpIHJldHVybiBudWxsO1xuICB2YXIgc2NhbGUgPSBheGlzLnNjYWxlO1xuICB2YXIgZHVwbGljYXRlRG9tYWluID0gYXhpcy5kdXBsaWNhdGVEb21haW4sXG4gICAgICB0eXBlID0gYXhpcy50eXBlO1xuXG4gIHZhciBvZmZzZXQgPSAoaXNHcmlkIHx8IGlzQWxsKSAmJiB0eXBlID09PSAnY2F0ZWdvcnknICYmIHNjYWxlLmJhbmR3aWR0aCAmJiBheGlzLmF4aXNUeXBlICE9PSAnYW5nbGVBeGlzJyA/IHNjYWxlLmJhbmR3aWR0aCgpIC8gMiA6IDA7XG5cbiAgLy8gVGhlIHRpY2tzIHNldHRlZCBieSB1c2VyIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgdGlja3MgYWRqYWNlbnQgdG8gYXhpcyBsaW5lXG4gIGlmIChpc0dyaWQgJiYgKGF4aXMudGlja3MgfHwgYXhpcy5uaWNlVGlja3MpKSB7XG4gICAgcmV0dXJuIChheGlzLnRpY2tzIHx8IGF4aXMubmljZVRpY2tzKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICB2YXIgc2NhbGVDb250ZW50ID0gZHVwbGljYXRlRG9tYWluID8gZHVwbGljYXRlRG9tYWluLmluZGV4T2YoZW50cnkpIDogZW50cnk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvb3JkaW5hdGU6IHNjYWxlKHNjYWxlQ29udGVudCkgKyBvZmZzZXQsXG4gICAgICAgIHZhbHVlOiBlbnRyeSxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBpZiAoYXhpcy5pc0NhdGVnb3JpYWwgJiYgYXhpcy5jYXRlZ29yaWNhbERvbWFpbikge1xuICAgIHJldHVybiBheGlzLmNhdGVnb3JpY2FsRG9tYWluLm1hcChmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb29yZGluYXRlOiBzY2FsZShlbnRyeSksXG4gICAgICAgIHZhbHVlOiBlbnRyeSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChzY2FsZS50aWNrcyAmJiAhaXNBbGwpIHtcbiAgICByZXR1cm4gc2NhbGUudGlja3MoYXhpcy50aWNrQ291bnQpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHJldHVybiB7IGNvb3JkaW5hdGU6IHNjYWxlKGVudHJ5KSArIG9mZnNldCwgdmFsdWU6IGVudHJ5LCBvZmZzZXQ6IG9mZnNldCB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiBheGlzIGhhcyBkdXBsaWNhdGVkIHRleHQsIHNlcmlhbCBudW1iZXJzIGFyZSB1c2VkIHRvIGdlbmVyYXRlIHNjYWxlXG4gIHJldHVybiBzY2FsZS5kb21haW4oKS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb29yZGluYXRlOiBzY2FsZShlbnRyeSkgKyBvZmZzZXQsXG4gICAgICB2YWx1ZTogZHVwbGljYXRlRG9tYWluID8gZHVwbGljYXRlRG9tYWluW2VudHJ5XSA6IGVudHJ5LFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICB9O1xuICB9KTtcbn07XG5cbi8qKlxuICogY29tYmluZSB0aGUgaGFuZGxlcnNcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBkZWZhdWx0SGFuZGxlciBJbnRlcm5hbCBwcml2YXRlIGhhbmRsZXJcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBwYXJlbnRIYW5kbGVyICBIYW5kbGVyIGZ1bmN0aW9uIHNwZWNpZmllZCBpbiBwYXJlbnQgY29tcG9uZW50XG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2hpbGRIYW5kbGVyICAgSGFuZGxlciBmdW5jdGlvbiBzcGVjaWZpZWQgaW4gY2hpbGQgY29tcG9uZW50XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gICAgICAgICAgICAgICAgVGhlIGNvbWJpbmVkIGhhbmRsZXJcbiAqL1xuZXhwb3J0IHZhciBjb21iaW5lRXZlbnRIYW5kbGVycyA9IGZ1bmN0aW9uIGNvbWJpbmVFdmVudEhhbmRsZXJzKGRlZmF1bHRIYW5kbGVyLCBwYXJlbnRIYW5kbGVyLCBjaGlsZEhhbmRsZXIpIHtcbiAgdmFyIGN1c3RvbWl6ZWRIYW5kbGVyID0gdm9pZCAwO1xuXG4gIGlmIChfaXNGdW5jdGlvbihjaGlsZEhhbmRsZXIpKSB7XG4gICAgY3VzdG9taXplZEhhbmRsZXIgPSBjaGlsZEhhbmRsZXI7XG4gIH0gZWxzZSBpZiAoX2lzRnVuY3Rpb24ocGFyZW50SGFuZGxlcikpIHtcbiAgICBjdXN0b21pemVkSGFuZGxlciA9IHBhcmVudEhhbmRsZXI7XG4gIH1cblxuICBpZiAoX2lzRnVuY3Rpb24oZGVmYXVsdEhhbmRsZXIpIHx8IGN1c3RvbWl6ZWRIYW5kbGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcxLCBhcmcyLCBhcmczLCBhcmc0KSB7XG4gICAgICBpZiAoX2lzRnVuY3Rpb24oZGVmYXVsdEhhbmRsZXIpKSB7XG4gICAgICAgIGRlZmF1bHRIYW5kbGVyKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoX2lzRnVuY3Rpb24oY3VzdG9taXplZEhhbmRsZXIpKSB7XG4gICAgICAgIGN1c3RvbWl6ZWRIYW5kbGVyKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4vKipcbiAqIFBhcnNlIHRoZSBzY2FsZSBmdW5jdGlvbiBvZiBheGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgYXhpcyAgICAgICAgICBUaGUgb3B0aW9uIG9mIGF4aXNcbiAqIEBwYXJhbSAge1N0cmluZ30gICBjaGFydFR5cGUgICAgIFRoZSBkaXNwbGF5TmFtZSBvZiBjaGFydFxuICogQHJldHVybiB7RnVuY3Rpb259ICAgICAgICAgICAgICAgVGhlIHNjYWxlIGZ1bmNpb25cbiAqL1xuZXhwb3J0IHZhciBwYXJzZVNjYWxlID0gZnVuY3Rpb24gcGFyc2VTY2FsZShheGlzLCBjaGFydFR5cGUpIHtcbiAgdmFyIHNjYWxlID0gYXhpcy5zY2FsZSxcbiAgICAgIHR5cGUgPSBheGlzLnR5cGUsXG4gICAgICBsYXlvdXQgPSBheGlzLmxheW91dCxcbiAgICAgIGF4aXNUeXBlID0gYXhpcy5heGlzVHlwZTtcblxuICBpZiAoc2NhbGUgPT09ICdhdXRvJykge1xuICAgIGlmIChsYXlvdXQgPT09ICdyYWRpYWwnICYmIGF4aXNUeXBlID09PSAncmFkaXVzQXhpcycpIHtcbiAgICAgIHJldHVybiB7IHNjYWxlOiBkM1NjYWxlcy5zY2FsZUJhbmQoKSwgcmVhbFNjYWxlVHlwZTogJ2JhbmQnIH07XG4gICAgfSBlbHNlIGlmIChsYXlvdXQgPT09ICdyYWRpYWwnICYmIGF4aXNUeXBlID09PSAnYW5nbGVBeGlzJykge1xuICAgICAgcmV0dXJuIHsgc2NhbGU6IGQzU2NhbGVzLnNjYWxlTGluZWFyKCksIHJlYWxTY2FsZVR5cGU6ICdsaW5lYXInIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScgJiYgY2hhcnRUeXBlICYmIChjaGFydFR5cGUuaW5kZXhPZignTGluZUNoYXJ0JykgPj0gMCB8fCBjaGFydFR5cGUuaW5kZXhPZignQXJlYUNoYXJ0JykgPj0gMCkpIHtcbiAgICAgIHJldHVybiB7IHNjYWxlOiBkM1NjYWxlcy5zY2FsZVBvaW50KCksIHJlYWxTY2FsZVR5cGU6ICdwb2ludCcgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgIHJldHVybiB7IHNjYWxlOiBkM1NjYWxlcy5zY2FsZUJhbmQoKSwgcmVhbFNjYWxlVHlwZTogJ2JhbmQnIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc2NhbGU6IGQzU2NhbGVzLnNjYWxlTGluZWFyKCksIHJlYWxTY2FsZVR5cGU6ICdsaW5lYXInIH07XG4gIH0gZWxzZSBpZiAoX2lzU3RyaW5nKHNjYWxlKSkge1xuICAgIHZhciBuYW1lID0gJ3NjYWxlJyArIHNjYWxlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBzY2FsZS5zbGljZSgxKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzY2FsZTogKGQzU2NhbGVzW25hbWVdIHx8IGQzU2NhbGVzLnNjYWxlUG9pbnQpKCksXG4gICAgICByZWFsU2NhbGVUeXBlOiBkM1NjYWxlc1tuYW1lXSA/IG5hbWUgOiAncG9pbnQnXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfaXNGdW5jdGlvbihzY2FsZSkgPyB7IHNjYWxlOiBzY2FsZSB9IDogeyBzY2FsZTogZDNTY2FsZXMuc2NhbGVQb2ludCgpLCByZWFsU2NhbGVUeXBlOiAncG9pbnQnIH07XG59O1xudmFyIEVQUyA9IDFlLTQ7XG5leHBvcnQgdmFyIGNoZWNrRG9tYWluT2ZTY2FsZSA9IGZ1bmN0aW9uIGNoZWNrRG9tYWluT2ZTY2FsZShzY2FsZSkge1xuICB2YXIgZG9tYWluID0gc2NhbGUuZG9tYWluKCk7XG5cbiAgaWYgKCFkb21haW4gfHwgZG9tYWluLmxlbmd0aCA8PSAyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGxlbiA9IGRvbWFpbi5sZW5ndGg7XG4gIHZhciByYW5nZSA9IHNjYWxlLnJhbmdlKCk7XG4gIHZhciBtaW4gPSBNYXRoLm1pbihyYW5nZVswXSwgcmFuZ2VbMV0pIC0gRVBTO1xuICB2YXIgbWF4ID0gTWF0aC5tYXgocmFuZ2VbMF0sIHJhbmdlWzFdKSArIEVQUztcbiAgdmFyIGZpcnN0ID0gc2NhbGUoZG9tYWluWzBdKTtcbiAgdmFyIGxhc3QgPSBzY2FsZShkb21haW5bbGVuIC0gMV0pO1xuXG4gIGlmIChmaXJzdCA8IG1pbiB8fCBmaXJzdCA+IG1heCB8fCBsYXN0IDwgbWluIHx8IGxhc3QgPiBtYXgpIHtcbiAgICBzY2FsZS5kb21haW4oW2RvbWFpblswXSwgZG9tYWluW2xlbiAtIDFdXSk7XG4gIH1cbn07XG5cbmV4cG9ydCB2YXIgZmluZFBvc2l0aW9uT2ZCYXIgPSBmdW5jdGlvbiBmaW5kUG9zaXRpb25PZkJhcihiYXJQb3NpdGlvbiwgY2hpbGQpIHtcbiAgaWYgKCFiYXJQb3NpdGlvbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGJhclBvc2l0aW9uLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGJhclBvc2l0aW9uW2ldLml0ZW0gPT09IGNoaWxkKSB7XG4gICAgICByZXR1cm4gYmFyUG9zaXRpb25baV0ucG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgdmFyIHRydW5jYXRlQnlEb21haW4gPSBmdW5jdGlvbiB0cnVuY2F0ZUJ5RG9tYWluKHZhbHVlLCBkb21haW4pIHtcbiAgaWYgKCFkb21haW4gfHwgZG9tYWluLmxlbmd0aCAhPT0gMiB8fCAhaXNOdW1iZXIoZG9tYWluWzBdKSB8fCAhaXNOdW1iZXIoZG9tYWluWzFdKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHZhciBtaW4gPSBNYXRoLm1pbihkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gIHZhciBtYXggPSBNYXRoLm1heChkb21haW5bMF0sIGRvbWFpblsxXSk7XG5cbiAgdmFyIHJlc3VsdCA9IFt2YWx1ZVswXSwgdmFsdWVbMV1dO1xuICBpZiAoIWlzTnVtYmVyKHZhbHVlWzBdKSB8fCB2YWx1ZVswXSA8IG1pbikge1xuICAgIHJlc3VsdFswXSA9IG1pbjtcbiAgfVxuXG4gIGlmICghaXNOdW1iZXIodmFsdWVbMV0pIHx8IHZhbHVlWzFdID4gbWF4KSB7XG4gICAgcmVzdWx0WzFdID0gbWF4O1xuICB9XG5cbiAgaWYgKHJlc3VsdFswXSA+IG1heCkge1xuICAgIHJlc3VsdFswXSA9IG1heDtcbiAgfVxuXG4gIGlmIChyZXN1bHRbMV0gPCBtaW4pIHtcbiAgICByZXN1bHRbMV0gPSBtaW47XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiAwICovXG5leHBvcnQgdmFyIG9mZnNldFNpZ24gPSBmdW5jdGlvbiBvZmZzZXRTaWduKHNlcmllcykge1xuICB2YXIgbiA9IHNlcmllcy5sZW5ndGg7XG4gIGlmIChuIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKHZhciBqID0gMCwgbSA9IHNlcmllc1swXS5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICB2YXIgcG9zaXRpdmUgPSAwO1xuICAgIHZhciBuZWdhdGl2ZSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIHZhbHVlID0gaXNOYU4oc2VyaWVzW2ldW2pdWzFdKSA/IHNlcmllc1tpXVtqXVswXSA6IHNlcmllc1tpXVtqXVsxXTtcblxuICAgICAgaWYgKHZhbHVlID49IDApIHtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzBdID0gcG9zaXRpdmU7XG4gICAgICAgIHNlcmllc1tpXVtqXVsxXSA9IHBvc2l0aXZlICsgdmFsdWU7XG4gICAgICAgIHBvc2l0aXZlID0gc2VyaWVzW2ldW2pdWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzBdID0gbmVnYXRpdmU7XG4gICAgICAgIHNlcmllc1tpXVtqXVsxXSA9IG5lZ2F0aXZlICsgdmFsdWU7XG4gICAgICAgIG5lZ2F0aXZlID0gc2VyaWVzW2ldW2pdWzFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFyIFNUQUNLX09GRlNFVF9NQVAgPSB7XG4gIHNpZ246IG9mZnNldFNpZ24sXG4gIGV4cGFuZDogc3RhY2tPZmZzZXRFeHBhbmQsXG4gIG5vbmU6IHN0YWNrT2Zmc2V0Tm9uZSxcbiAgc2lsaG91ZXR0ZTogc3RhY2tPZmZzZXRTaWxob3VldHRlLFxuICB3aWdnbGU6IHN0YWNrT2Zmc2V0V2lnZ2xlXG59O1xuXG5leHBvcnQgdmFyIGdldFN0YWNrZWREYXRhID0gZnVuY3Rpb24gZ2V0U3RhY2tlZERhdGEoZGF0YSwgc3RhY2tJdGVtcywgb2Zmc2V0VHlwZSkge1xuICB2YXIgZGF0YUtleXMgPSBzdGFja0l0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnByb3BzLmRhdGFLZXk7XG4gIH0pO1xuICB2YXIgc3RhY2sgPSBzaGFwZVN0YWNrKCkua2V5cyhkYXRhS2V5cykudmFsdWUoZnVuY3Rpb24gKGQsIGtleSkge1xuICAgIHJldHVybiArZ2V0VmFsdWVCeURhdGFLZXkoZCwga2V5LCAwKTtcbiAgfSkub3JkZXIoc3RhY2tPcmRlck5vbmUpLm9mZnNldChTVEFDS19PRkZTRVRfTUFQW29mZnNldFR5cGVdKTtcblxuICByZXR1cm4gc3RhY2soZGF0YSk7XG59O1xuXG5leHBvcnQgdmFyIGdldFN0YWNrR3JvdXBzQnlBeGlzSWQgPSBmdW5jdGlvbiBnZXRTdGFja0dyb3Vwc0J5QXhpc0lkKGRhdGEsIGl0ZW1zLCBudW1lcmljQXhpc0lkLCBjYXRlQXhpc0lkLCBvZmZzZXRUeXBlKSB7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIHN0YWNrR3JvdXBzID0gaXRlbXMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGl0ZW0pIHtcbiAgICB2YXIgX2l0ZW0kcHJvcHMzID0gaXRlbS5wcm9wcyxcbiAgICAgICAgc3RhY2tJZCA9IF9pdGVtJHByb3BzMy5zdGFja0lkLFxuICAgICAgICBoaWRlID0gX2l0ZW0kcHJvcHMzLmhpZGU7XG5cblxuICAgIGlmIChoaWRlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHZhciBheGlzSWQgPSBpdGVtLnByb3BzW251bWVyaWNBeGlzSWRdO1xuICAgIHZhciBwYXJlbnRHcm91cCA9IHJlc3VsdFtheGlzSWRdIHx8IHsgaGFzU3RhY2s6IGZhbHNlLCBzdGFja0dyb3Vwczoge30gfTtcblxuICAgIGlmIChpc051bU9yU3RyKHN0YWNrSWQpKSB7XG4gICAgICB2YXIgY2hpbGRHcm91cCA9IHBhcmVudEdyb3VwLnN0YWNrR3JvdXBzW3N0YWNrSWRdIHx8IHtcbiAgICAgICAgbnVtZXJpY0F4aXNJZDogbnVtZXJpY0F4aXNJZCwgY2F0ZUF4aXNJZDogY2F0ZUF4aXNJZCwgaXRlbXM6IFtdXG4gICAgICB9O1xuXG4gICAgICBjaGlsZEdyb3VwLml0ZW1zLnB1c2goaXRlbSk7XG5cbiAgICAgIHBhcmVudEdyb3VwLmhhc1N0YWNrID0gdHJ1ZTtcblxuICAgICAgcGFyZW50R3JvdXAuc3RhY2tHcm91cHNbc3RhY2tJZF0gPSBjaGlsZEdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRHcm91cC5zdGFja0dyb3Vwc1t1bmlxdWVJZCgnX3N0YWNrSWRfJyldID0ge1xuICAgICAgICBudW1lcmljQXhpc0lkOiBudW1lcmljQXhpc0lkLCBjYXRlQXhpc0lkOiBjYXRlQXhpc0lkLCBpdGVtczogW2l0ZW1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdWx0LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgcGFyZW50R3JvdXApKTtcbiAgfSwge30pO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhzdGFja0dyb3VwcykucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGF4aXNJZCkge1xuICAgIHZhciBncm91cCA9IHN0YWNrR3JvdXBzW2F4aXNJZF07XG5cbiAgICBpZiAoZ3JvdXAuaGFzU3RhY2spIHtcbiAgICAgIGdyb3VwLnN0YWNrR3JvdXBzID0gT2JqZWN0LmtleXMoZ3JvdXAuc3RhY2tHcm91cHMpLnJlZHVjZShmdW5jdGlvbiAocmVzLCBzdGFja0lkKSB7XG4gICAgICAgIHZhciBnID0gZ3JvdXAuc3RhY2tHcm91cHNbc3RhY2tJZF07XG5cbiAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXMsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgc3RhY2tJZCwge1xuICAgICAgICAgIG51bWVyaWNBeGlzSWQ6IG51bWVyaWNBeGlzSWQsXG4gICAgICAgICAgY2F0ZUF4aXNJZDogY2F0ZUF4aXNJZCxcbiAgICAgICAgICBpdGVtczogZy5pdGVtcyxcbiAgICAgICAgICBzdGFja2VkRGF0YTogZ2V0U3RhY2tlZERhdGEoZGF0YSwgZy5pdGVtcywgb2Zmc2V0VHlwZSlcbiAgICAgICAgfSkpO1xuICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdWx0LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgZ3JvdXApKTtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBnZXQgZG9tYWluIG9mIHRpY2tzXG4gKiBAcGFyYW0gIHtBcnJheX0gdGlja3MgVGlja3Mgb2YgYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSB0eXBlICBUaGUgdHlwZSBvZiBheGlzXG4gKiBAcmV0dXJuIHtBcnJheX0gZG9tYWluXG4gKi9cbmV4cG9ydCB2YXIgY2FsY3VsYXRlRG9tYWluT2ZUaWNrcyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZURvbWFpbk9mVGlja3ModGlja3MsIHR5cGUpIHtcbiAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIFtNYXRoLm1pbi5hcHBseShudWxsLCB0aWNrcyksIE1hdGgubWF4LmFwcGx5KG51bGwsIHRpY2tzKV07XG4gIH1cblxuICByZXR1cm4gdGlja3M7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyZSB0aGUgc2NhbGUgZnVuY3Rpb24gb2YgYXhpc1xuICogQHBhcmFtIHtPYmplY3R9IHNjYWxlIFRoZSBzY2FsZSBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgIFRoZSBjb25maWd1cmF0aW9uIG9mIGF4aXNcbiAqIEByZXR1cm4ge09iamVjdH0gICAgICBudWxsXG4gKi9cbmV4cG9ydCB2YXIgZ2V0VGlja3NPZlNjYWxlID0gZnVuY3Rpb24gZ2V0VGlja3NPZlNjYWxlKHNjYWxlLCBvcHRzKSB7XG4gIHZhciByZWFsU2NhbGVUeXBlID0gb3B0cy5yZWFsU2NhbGVUeXBlLFxuICAgICAgdHlwZSA9IG9wdHMudHlwZSxcbiAgICAgIHRpY2tDb3VudCA9IG9wdHMudGlja0NvdW50LFxuICAgICAgb3JpZ2luYWxEb21haW4gPSBvcHRzLm9yaWdpbmFsRG9tYWluLFxuICAgICAgYWxsb3dEZWNpbWFscyA9IG9wdHMuYWxsb3dEZWNpbWFscztcblxuICB2YXIgc2NhbGVUeXBlID0gcmVhbFNjYWxlVHlwZSB8fCBvcHRzLnNjYWxlO1xuXG4gIGlmIChzY2FsZVR5cGUgIT09ICdhdXRvJyAmJiBzY2FsZVR5cGUgIT09ICdsaW5lYXInKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodGlja0NvdW50ICYmIHR5cGUgPT09ICdudW1iZXInICYmIG9yaWdpbmFsRG9tYWluICYmIChvcmlnaW5hbERvbWFpblswXSA9PT0gJ2F1dG8nIHx8IG9yaWdpbmFsRG9tYWluWzFdID09PSAnYXV0bycpKSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSB0aWNrcyBieSB0aGUgbnVtYmVyIG9mIGdyaWQgd2hlbiB0aGUgYXhpcyBpcyBhIG51bWJlciBheGlzXG4gICAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICAgIHZhciB0aWNrVmFsdWVzID0gZ2V0TmljZVRpY2tWYWx1ZXMoZG9tYWluLCB0aWNrQ291bnQsIGFsbG93RGVjaW1hbHMpO1xuXG4gICAgc2NhbGUuZG9tYWluKGNhbGN1bGF0ZURvbWFpbk9mVGlja3ModGlja1ZhbHVlcywgdHlwZSkpO1xuXG4gICAgcmV0dXJuIHsgbmljZVRpY2tzOiB0aWNrVmFsdWVzIH07XG4gIH0gZWxzZSBpZiAodGlja0NvdW50ICYmIHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgdmFyIF9kb21haW4gPSBzY2FsZS5kb21haW4oKTtcbiAgICB2YXIgX3RpY2tWYWx1ZXMgPSBnZXRUaWNrVmFsdWVzRml4ZWREb21haW4oX2RvbWFpbiwgdGlja0NvdW50LCBhbGxvd0RlY2ltYWxzKTtcblxuICAgIHJldHVybiB7IG5pY2VUaWNrczogX3RpY2tWYWx1ZXMgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IHZhciBnZXRDYXRlQ29vcmRpbmF0ZU9mTGluZSA9IGZ1bmN0aW9uIGdldENhdGVDb29yZGluYXRlT2ZMaW5lKF9yZWY2KSB7XG4gIHZhciBheGlzID0gX3JlZjYuYXhpcyxcbiAgICAgIHRpY2tzID0gX3JlZjYudGlja3MsXG4gICAgICBiYW5kU2l6ZSA9IF9yZWY2LmJhbmRTaXplLFxuICAgICAgZW50cnkgPSBfcmVmNi5lbnRyeSxcbiAgICAgIGluZGV4ID0gX3JlZjYuaW5kZXg7XG5cbiAgaWYgKGF4aXMudHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgIHJldHVybiB0aWNrc1tpbmRleF0gPyB0aWNrc1tpbmRleF0uY29vcmRpbmF0ZSArIGJhbmRTaXplIC8gMiA6IG51bGw7XG4gIH1cblxuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgYXhpcy5kYXRhS2V5KTtcblxuICByZXR1cm4gIV9pc05pbCh2YWx1ZSkgPyBheGlzLnNjYWxlKHZhbHVlKSA6IG51bGw7XG59O1xuXG5leHBvcnQgdmFyIGdldENhdGVDb29yZGluYXRlT2ZCYXIgPSBmdW5jdGlvbiBnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyKF9yZWY3KSB7XG4gIHZhciBheGlzID0gX3JlZjcuYXhpcyxcbiAgICAgIHRpY2tzID0gX3JlZjcudGlja3MsXG4gICAgICBvZmZzZXQgPSBfcmVmNy5vZmZzZXQsXG4gICAgICBiYW5kU2l6ZSA9IF9yZWY3LmJhbmRTaXplLFxuICAgICAgZW50cnkgPSBfcmVmNy5lbnRyeSxcbiAgICAgIGluZGV4ID0gX3JlZjcuaW5kZXg7XG5cbiAgaWYgKGF4aXMudHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgIHJldHVybiB0aWNrc1tpbmRleF0gPyB0aWNrc1tpbmRleF0uY29vcmRpbmF0ZSArIG9mZnNldCA6IG51bGw7XG4gIH1cbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGF4aXMuZGF0YUtleSwgYXhpcy5kb21haW5baW5kZXhdKTtcblxuICByZXR1cm4gIV9pc05pbCh2YWx1ZSkgPyBheGlzLnNjYWxlKHZhbHVlKSAtIGJhbmRTaXplIC8gMiArIG9mZnNldCA6IG51bGw7XG59O1xuXG5leHBvcnQgdmFyIGdldEJhc2VWYWx1ZU9mQmFyID0gZnVuY3Rpb24gZ2V0QmFzZVZhbHVlT2ZCYXIoX3JlZjgpIHtcbiAgdmFyIG51bWVyaWNBeGlzID0gX3JlZjgubnVtZXJpY0F4aXM7XG5cbiAgdmFyIGRvbWFpbiA9IG51bWVyaWNBeGlzLnNjYWxlLmRvbWFpbigpO1xuXG4gIGlmIChudW1lcmljQXhpcy50eXBlID09PSAnbnVtYmVyJykge1xuICAgIHZhciBtaW4gPSBNYXRoLm1pbihkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gICAgdmFyIG1heCA9IE1hdGgubWF4KGRvbWFpblswXSwgZG9tYWluWzFdKTtcblxuICAgIGlmIChtaW4gPD0gMCAmJiBtYXggPj0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChtYXggPCAwKSB7XG4gICAgICByZXR1cm4gbWF4O1xuICAgIH1cblxuICAgIHJldHVybiBtaW47XG4gIH1cblxuICByZXR1cm4gZG9tYWluWzBdO1xufTtcblxuZXhwb3J0IHZhciBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbiA9IGZ1bmN0aW9uIGRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluKGNoaWxkcmVuLCBkb21haW4sIGF4aXNJZCwgYXhpc1R5cGUpIHtcbiAgdmFyIGxpbmVzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlTGluZSk7XG4gIHZhciBkb3RzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlRG90KTtcbiAgdmFyIGVsZW1lbnRzID0gbGluZXMuY29uY2F0KGRvdHMpO1xuICB2YXIgYXJlYXMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBSZWZlcmVuY2VBcmVhKTtcbiAgdmFyIGlkS2V5ID0gYXhpc1R5cGUgKyAnSWQnO1xuICB2YXIgdmFsdWVLZXkgPSBheGlzVHlwZVswXTtcbiAgdmFyIGZpbmFsRG9tYWluID0gZG9tYWluO1xuXG4gIGlmIChlbGVtZW50cy5sZW5ndGgpIHtcbiAgICBmaW5hbERvbWFpbiA9IGVsZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbCkge1xuICAgICAgaWYgKGVsLnByb3BzW2lkS2V5XSA9PT0gYXhpc0lkICYmIGVsLnByb3BzLmFsd2F5c1Nob3cgJiYgaXNOdW1iZXIoZWwucHJvcHNbdmFsdWVLZXldKSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBlbC5wcm9wc1t2YWx1ZUtleV07XG5cbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHZhbHVlKSwgTWF0aC5tYXgocmVzdWx0WzFdLCB2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBmaW5hbERvbWFpbik7XG4gIH1cblxuICBpZiAoYXJlYXMubGVuZ3RoKSB7XG4gICAgdmFyIGtleTEgPSB2YWx1ZUtleSArICcxJztcbiAgICB2YXIga2V5MiA9IHZhbHVlS2V5ICsgJzInO1xuXG4gICAgZmluYWxEb21haW4gPSBhcmVhcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZWwpIHtcbiAgICAgIGlmIChlbC5wcm9wc1tpZEtleV0gPT09IGF4aXNJZCAmJiBlbC5wcm9wcy5hbHdheXNTaG93ICYmIGlzTnVtYmVyKGVsLnByb3BzW2tleTFdKSAmJiBpc051bWJlcihlbC5wcm9wc1trZXkyXSkpIHtcbiAgICAgICAgdmFyIHZhbHVlMSA9IGVsLnByb3BzW2tleTFdO1xuICAgICAgICB2YXIgdmFsdWUyID0gZWwucHJvcHNba2V5Ml07XG5cbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHZhbHVlMSwgdmFsdWUyKSwgTWF0aC5tYXgocmVzdWx0WzFdLCB2YWx1ZTEsIHZhbHVlMildO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBmaW5hbERvbWFpbik7XG4gIH1cblxuICByZXR1cm4gZmluYWxEb21haW47XG59O1xuXG5leHBvcnQgdmFyIGdldFN0YWNrZWREYXRhT2ZJdGVtID0gZnVuY3Rpb24gZ2V0U3RhY2tlZERhdGFPZkl0ZW0oaXRlbSwgc3RhY2tHcm91cHMpIHtcbiAgdmFyIHN0YWNrSWQgPSBpdGVtLnByb3BzLnN0YWNrSWQ7XG5cblxuICBpZiAoaXNOdW1PclN0cihzdGFja0lkKSkge1xuICAgIHZhciBncm91cCA9IHN0YWNrR3JvdXBzW3N0YWNrSWRdO1xuXG4gICAgaWYgKGdyb3VwICYmIGdyb3VwLml0ZW1zLmxlbmd0aCkge1xuICAgICAgdmFyIGl0ZW1JbmRleCA9IC0xO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZ3JvdXAuaXRlbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGdyb3VwLml0ZW1zW2ldID09PSBpdGVtKSB7XG4gICAgICAgICAgaXRlbUluZGV4ID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW1JbmRleCA+PSAwID8gZ3JvdXAuc3RhY2tlZERhdGFbaXRlbUluZGV4XSA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgZ2V0RG9tYWluT2ZTaW5nbGUgPSBmdW5jdGlvbiBnZXREb21haW5PZlNpbmdsZShkYXRhKSB7XG4gIHJldHVybiBkYXRhLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgIHJldHVybiBbTWF0aC5taW4uYXBwbHkobnVsbCwgZW50cnkuY29uY2F0KFtyZXN1bHRbMF1dKS5maWx0ZXIoaXNOdW1iZXIpKSwgTWF0aC5tYXguYXBwbHkobnVsbCwgZW50cnkuY29uY2F0KFtyZXN1bHRbMV1dKS5maWx0ZXIoaXNOdW1iZXIpKV07XG4gIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG59O1xuXG5leHBvcnQgdmFyIGdldERvbWFpbk9mU3RhY2tHcm91cHMgPSBmdW5jdGlvbiBnZXREb21haW5PZlN0YWNrR3JvdXBzKHN0YWNrR3JvdXBzLCBzdGFydEluZGV4LCBlbmRJbmRleCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3RhY2tHcm91cHMpLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBzdGFja0lkKSB7XG4gICAgdmFyIGdyb3VwID0gc3RhY2tHcm91cHNbc3RhY2tJZF07XG4gICAgdmFyIHN0YWNrZWREYXRhID0gZ3JvdXAuc3RhY2tlZERhdGE7XG5cbiAgICB2YXIgZG9tYWluID0gc3RhY2tlZERhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5KSB7XG4gICAgICB2YXIgcyA9IGdldERvbWFpbk9mU2luZ2xlKGVudHJ5LnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSkpO1xuXG4gICAgICByZXR1cm4gW01hdGgubWluKHJlc1swXSwgc1swXSksIE1hdGgubWF4KHJlc1sxXSwgc1sxXSldO1xuICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG5cbiAgICByZXR1cm4gW01hdGgubWluKGRvbWFpblswXSwgcmVzdWx0WzBdKSwgTWF0aC5tYXgoZG9tYWluWzFdLCByZXN1bHRbMV0pXTtcbiAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKS5tYXAoZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIHJldHVybiByZXN1bHQgPT09IEluZmluaXR5IHx8IHJlc3VsdCA9PT0gLUluZmluaXR5ID8gMCA6IHJlc3VsdDtcbiAgfSk7XG59O1xuXG5leHBvcnQgdmFyIE1JTl9WQUxVRV9SRUcgPSAvXmRhdGFNaW5bXFxzXSotW1xcc10qKFswLTldKyhbLl17MX1bMC05XSspezAsMX0pJC87XG5leHBvcnQgdmFyIE1BWF9WQUxVRV9SRUcgPSAvXmRhdGFNYXhbXFxzXSpcXCtbXFxzXSooWzAtOV0rKFsuXXsxfVswLTldKyl7MCwxfSkkLztcblxuZXhwb3J0IHZhciBwYXJzZVNwZWNpZmllZERvbWFpbiA9IGZ1bmN0aW9uIHBhcnNlU3BlY2lmaWVkRG9tYWluKHNwZWNpZmllZERvbWFpbiwgZGF0YURvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3cpIHtcbiAgaWYgKCFfaXNBcnJheShzcGVjaWZpZWREb21haW4pKSB7XG4gICAgcmV0dXJuIGRhdGFEb21haW47XG4gIH1cblxuICB2YXIgZG9tYWluID0gW107XG5cbiAgaWYgKGlzTnVtYmVyKHNwZWNpZmllZERvbWFpblswXSkpIHtcbiAgICBkb21haW5bMF0gPSBhbGxvd0RhdGFPdmVyZmxvdyA/IHNwZWNpZmllZERvbWFpblswXSA6IE1hdGgubWluKHNwZWNpZmllZERvbWFpblswXSwgZGF0YURvbWFpblswXSk7XG4gIH0gZWxzZSBpZiAoTUlOX1ZBTFVFX1JFRy50ZXN0KHNwZWNpZmllZERvbWFpblswXSkpIHtcbiAgICB2YXIgdmFsdWUgPSArTUlOX1ZBTFVFX1JFRy5leGVjKHNwZWNpZmllZERvbWFpblswXSlbMV07XG5cbiAgICBkb21haW5bMF0gPSBkYXRhRG9tYWluWzBdIC0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgZG9tYWluWzBdID0gZGF0YURvbWFpblswXTtcbiAgfVxuXG4gIGlmIChpc051bWJlcihzcGVjaWZpZWREb21haW5bMV0pKSB7XG4gICAgZG9tYWluWzFdID0gYWxsb3dEYXRhT3ZlcmZsb3cgPyBzcGVjaWZpZWREb21haW5bMV0gOiBNYXRoLm1heChzcGVjaWZpZWREb21haW5bMV0sIGRhdGFEb21haW5bMV0pO1xuICB9IGVsc2UgaWYgKE1BWF9WQUxVRV9SRUcudGVzdChzcGVjaWZpZWREb21haW5bMV0pKSB7XG4gICAgdmFyIF92YWx1ZSA9ICtNQVhfVkFMVUVfUkVHLmV4ZWMoc3BlY2lmaWVkRG9tYWluWzFdKVsxXTtcblxuICAgIGRvbWFpblsxXSA9IGRhdGFEb21haW5bMV0gKyBfdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgZG9tYWluWzFdID0gZGF0YURvbWFpblsxXTtcbiAgfVxuXG4gIHJldHVybiBkb21haW47XG59O1xuXG5leHBvcnQgdmFyIHZhbGlkYXRlQ29vcmRpbmF0ZUluUmFuZ2UgPSBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGVJblJhbmdlKGNvb3JkaW5hdGUsIHNjYWxlKSB7XG4gIGlmICghc2NhbGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcmFuZ2UgPSBzY2FsZS5yYW5nZSgpO1xuICB2YXIgZmlyc3QgPSByYW5nZVswXTtcbiAgdmFyIGxhc3QgPSByYW5nZVtyYW5nZS5sZW5ndGggLSAxXTtcbiAgdmFyIGlzVmFsaWRhdGUgPSBmaXJzdCA8PSBsYXN0ID8gY29vcmRpbmF0ZSA+PSBmaXJzdCAmJiBjb29yZGluYXRlIDw9IGxhc3QgOiBjb29yZGluYXRlID49IGxhc3QgJiYgY29vcmRpbmF0ZSA8PSBmaXJzdDtcblxuICByZXR1cm4gaXNWYWxpZGF0ZTtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzaXplIGJldHdlZW4gdHdvIGNhdGVnb3J5XG4gKiBAcGFyYW0gIHtPYmplY3R9IGF4aXMgIFRoZSBvcHRpb25zIG9mIGF4aXNcbiAqIEBwYXJhbSAge0FycmF5fSAgdGlja3MgVGhlIHRpY2tzIG9mIGF4aXNcbiAqIEByZXR1cm4ge051bWJlcn0gU2l6ZVxuICovXG5leHBvcnQgdmFyIGdldEJhbmRTaXplT2ZBeGlzID0gZnVuY3Rpb24gZ2V0QmFuZFNpemVPZkF4aXMoYXhpcywgdGlja3MpIHtcbiAgaWYgKGF4aXMgJiYgYXhpcy5zY2FsZSAmJiBheGlzLnNjYWxlLmJhbmR3aWR0aCkge1xuICAgIHJldHVybiBheGlzLnNjYWxlLmJhbmR3aWR0aCgpO1xuICB9XG5cbiAgaWYgKGF4aXMgJiYgdGlja3MgJiYgdGlja3MubGVuZ3RoID49IDIpIHtcbiAgICB2YXIgb3JkZXJlZFRpY2tzID0gX3NvcnRCeSh0aWNrcywgZnVuY3Rpb24gKG8pIHtcbiAgICAgIHJldHVybiBvLmNvb3JkaW5hdGU7XG4gICAgfSk7XG4gICAgdmFyIGJhbmRTaXplID0gSW5maW5pdHk7XG5cbiAgICBmb3IgKHZhciBpID0gMSwgbGVuID0gb3JkZXJlZFRpY2tzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgY3VyID0gb3JkZXJlZFRpY2tzW2ldO1xuICAgICAgdmFyIHByZXYgPSBvcmRlcmVkVGlja3NbaSAtIDFdO1xuXG4gICAgICBiYW5kU2l6ZSA9IE1hdGgubWluKChjdXIuY29vcmRpbmF0ZSB8fCAwKSAtIChwcmV2LmNvb3JkaW5hdGUgfHwgMCksIGJhbmRTaXplKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmFuZFNpemUgPT09IEluZmluaXR5ID8gMCA6IGJhbmRTaXplO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWNoYXJ0cy9lczYvdXRpbC9DaGFydFV0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///18\n')},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (immutable) */ __webpack_exports__["a"] = newInterval;\nvar t0 = new Date,\n t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2QzLXRpbWUvc3JjL2ludGVydmFsLmpzP2U5NmYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHQwID0gbmV3IERhdGUsXG4gICAgdDEgPSBuZXcgRGF0ZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV3SW50ZXJ2YWwoZmxvb3JpLCBvZmZzZXRpLCBjb3VudCwgZmllbGQpIHtcblxuICBmdW5jdGlvbiBpbnRlcnZhbChkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfVxuXG4gIGludGVydmFsLmZsb29yID0gaW50ZXJ2YWw7XG5cbiAgaW50ZXJ2YWwuY2VpbCA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZShkYXRlIC0gMSkpLCBvZmZzZXRpKGRhdGUsIDEpLCBmbG9vcmkoZGF0ZSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwucm91bmQgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgdmFyIGQwID0gaW50ZXJ2YWwoZGF0ZSksXG4gICAgICAgIGQxID0gaW50ZXJ2YWwuY2VpbChkYXRlKTtcbiAgICByZXR1cm4gZGF0ZSAtIGQwIDwgZDEgLSBkYXRlID8gZDAgOiBkMTtcbiAgfTtcblxuICBpbnRlcnZhbC5vZmZzZXQgPSBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgcmV0dXJuIG9mZnNldGkoZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKSwgc3RlcCA9PSBudWxsID8gMSA6IE1hdGguZmxvb3Ioc3RlcCkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICB2YXIgcmFuZ2UgPSBbXTtcbiAgICBzdGFydCA9IGludGVydmFsLmNlaWwoc3RhcnQpO1xuICAgIHN0ZXAgPSBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKTtcbiAgICBpZiAoIShzdGFydCA8IHN0b3ApIHx8ICEoc3RlcCA+IDApKSByZXR1cm4gcmFuZ2U7IC8vIGFsc28gaGFuZGxlcyBJbnZhbGlkIERhdGVcbiAgICBkbyByYW5nZS5wdXNoKG5ldyBEYXRlKCtzdGFydCkpOyB3aGlsZSAob2Zmc2V0aShzdGFydCwgc3RlcCksIGZsb29yaShzdGFydCksIHN0YXJ0IDwgc3RvcClcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH07XG5cbiAgaW50ZXJ2YWwuZmlsdGVyID0gZnVuY3Rpb24odGVzdCkge1xuICAgIHJldHVybiBuZXdJbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoZmxvb3JpKGRhdGUpLCAhdGVzdChkYXRlKSkgZGF0ZS5zZXRUaW1lKGRhdGUgLSAxKTtcbiAgICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB7XG4gICAgICAgIGlmIChzdGVwIDwgMCkgd2hpbGUgKCsrc3RlcCA8PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgLTEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9IGVsc2Ugd2hpbGUgKC0tc3RlcCA+PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgKzEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKGNvdW50KSB7XG4gICAgaW50ZXJ2YWwuY291bnQgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICB0MC5zZXRUaW1lKCtzdGFydCksIHQxLnNldFRpbWUoK2VuZCk7XG4gICAgICBmbG9vcmkodDApLCBmbG9vcmkodDEpO1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY291bnQodDAsIHQxKSk7XG4gICAgfTtcblxuICAgIGludGVydmFsLmV2ZXJ5ID0gZnVuY3Rpb24oc3RlcCkge1xuICAgICAgc3RlcCA9IE1hdGguZmxvb3Ioc3RlcCk7XG4gICAgICByZXR1cm4gIWlzRmluaXRlKHN0ZXApIHx8ICEoc3RlcCA+IDApID8gbnVsbFxuICAgICAgICAgIDogIShzdGVwID4gMSkgPyBpbnRlcnZhbFxuICAgICAgICAgIDogaW50ZXJ2YWwuZmlsdGVyKGZpZWxkXG4gICAgICAgICAgICAgID8gZnVuY3Rpb24oZCkgeyByZXR1cm4gZmllbGQoZCkgJSBzdGVwID09PSAwOyB9XG4gICAgICAgICAgICAgIDogZnVuY3Rpb24oZCkgeyByZXR1cm4gaW50ZXJ2YWwuY291bnQoMCwgZCkgJSBzdGVwID09PSAwOyB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGludGVydmFsO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2QzLXRpbWUvc3JjL2ludGVydmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///19\n')},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXR5cGV3cml0ZXIvfi9mYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudC5qcz9iZThhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEBwcm92aWRlc01vZHVsZSBFeGVjdXRpb25FbnZpcm9ubWVudFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbi8qKlxuICogU2ltcGxlLCBsaWdodHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBhbmQgY29udGV4dCBvZlxuICogV29ya2VyLiBIZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYW5kIGFsbG93cyBjb2RlIHRvIHJlYXNvbiBhYm91dFxuICogd2hldGhlciBvciBub3QgdGhleSBhcmUgaW4gYSBXb3JrZXIsIGV2ZW4gaWYgdGhleSBuZXZlciBpbmNsdWRlIHRoZSBtYWluXG4gKiBgUmVhY3RXb3JrZXJgIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHtcblxuICBjYW5Vc2VET006IGNhblVzZURPTSxcblxuICBjYW5Vc2VXb3JrZXJzOiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxcblxuICBjYW5Vc2VFdmVudExpc3RlbmVyczogY2FuVXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVudCksXG5cbiAgY2FuVXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3JlZW4sXG5cbiAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtdHlwZXdyaXRlci9+L2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzP2YwNjYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG4vKipcbiAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQgbW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2ZcbiAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXRcbiAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2ZXIgaW5jbHVkZSB0aGUgbWFpblxuICogYFJlYWN0V29ya2VyYCBkZXBlbmRlbmN5LlxuICovXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7XG5cbiAgY2FuVXNlRE9NOiBjYW5Vc2VET00sXG5cbiAgY2FuVXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsXG5cbiAgY2FuVXNlRXZlbnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCB3aW5kb3cuYXR0YWNoRXZlbnQpLFxuXG4gIGNhblVzZVZpZXdwb3J0OiBjYW5Vc2VET00gJiYgISF3aW5kb3cuc2NyZWVuLFxuXG4gIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00gLy8gRm9yIG5vdywgdGhpcyBpcyB0cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///21\n")},function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMount\n */\n\n\n\nvar DOMProperty = __webpack_require__(69);\nvar ReactBrowserEventEmitter = __webpack_require__(133);\nvar ReactCurrentOwner = __webpack_require__(43);\nvar ReactDOMFeatureFlags = __webpack_require__(379);\nvar ReactElement = __webpack_require__(24);\nvar ReactEmptyComponentRegistry = __webpack_require__(386);\nvar ReactInstanceHandles = __webpack_require__(70);\nvar ReactInstanceMap = __webpack_require__(100);\nvar ReactMarkupChecksum = __webpack_require__(389);\nvar ReactPerf = __webpack_require__(30);\nvar ReactReconciler = __webpack_require__(55);\nvar ReactUpdateQueue = __webpack_require__(214);\nvar ReactUpdates = __webpack_require__(31);\n\nvar assign = __webpack_require__(11);\nvar emptyObject = __webpack_require__(97);\nvar containsNode = __webpack_require__(368);\nvar instantiateReactComponent = __webpack_require__(221);\nvar invariant = __webpack_require__(4);\nvar setInnerHTML = __webpack_require__(140);\nvar shouldUpdateReactComponent = __webpack_require__(224);\nvar validateDOMNesting = __webpack_require__(226);\nvar warning = __webpack_require__(10);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar nodeCache = {};\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar ownerDocumentContextKey = '__ReactMount_ownerDocument$' + Math.random().toString(36).slice(2);\n\n/** Mapping from reactRootID to React component instance. */\nvar instancesByReactRootID = {};\n\n/** Mapping from reactRootID to `container` nodes. */\nvar containersByReactRootID = {};\n\nif (false) {\n /** __DEV__-only mapping from reactRootID to root elements. */\n var rootElementsByReactRootID = {};\n}\n\n// Used to store breadth-first search state in findComponentRoot.\nvar findComponentRootReusableArray = [];\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\n/**\n * @param {DOMElement} container DOM element that may contain a React component.\n * @return {?string} A \"reactRoot\" ID, if a React component is rendered.\n */\nfunction getReactRootID(container) {\n var rootElement = getReactRootElementInContainer(container);\n return rootElement && ReactMount.getID(rootElement);\n}\n\n/**\n * Accessing node[ATTR_NAME] or calling getAttribute(ATTR_NAME) on a form\n * element can return its control whose name or ID equals ATTR_NAME. All\n * DOM nodes support `getAttributeNode` but this can also get called on\n * other objects so just return '' if we're given something other than a\n * DOM node (such as window).\n *\n * @param {?DOMElement|DOMWindow|DOMDocument|DOMTextNode} node DOM node.\n * @return {string} ID of the supplied `domNode`.\n */\nfunction getID(node) {\n var id = internalGetID(node);\n if (id) {\n if (nodeCache.hasOwnProperty(id)) {\n var cached = nodeCache[id];\n if (cached !== node) {\n !!isValid(cached, id) ? false ? invariant(false, 'ReactMount: Two valid but unequal nodes with the same `%s`: %s', ATTR_NAME, id) : invariant(false) : undefined;\n\n nodeCache[id] = node;\n }\n } else {\n nodeCache[id] = node;\n }\n }\n\n return id;\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node && node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Sets the React-specific ID of the given node.\n *\n * @param {DOMElement} node The DOM node whose ID will be set.\n * @param {string} id The value of the ID attribute.\n */\nfunction setID(node, id) {\n var oldID = internalGetID(node);\n if (oldID !== id) {\n delete nodeCache[oldID];\n }\n node.setAttribute(ATTR_NAME, id);\n nodeCache[id] = node;\n}\n\n/**\n * Finds the node with the supplied React-generated DOM ID.\n *\n * @param {string} id A React-generated DOM ID.\n * @return {DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNode(id) {\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * Finds the node with the supplied public React instance.\n *\n * @param {*} instance A public React instance.\n * @return {?DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNodeFromInstance(instance) {\n var id = ReactInstanceMap.get(instance)._rootNodeID;\n if (ReactEmptyComponentRegistry.isNullComponentID(id)) {\n return null;\n }\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * A node is \"valid\" if it is contained by a currently mounted container.\n *\n * This means that the node does not have to be contained by a document in\n * order to be considered valid.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @param {string} id The expected ID of the node.\n * @return {boolean} Whether the node is contained by a mounted container.\n */\nfunction isValid(node, id) {\n if (node) {\n !(internalGetID(node) === id) ? false ? invariant(false, 'ReactMount: Unexpected modification of `%s`', ATTR_NAME) : invariant(false) : undefined;\n\n var container = ReactMount.findReactContainerForID(id);\n if (container && containsNode(container, node)) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Causes the cache to forget about one React-specific ID.\n *\n * @param {string} id The ID to forget.\n */\nfunction purgeID(id) {\n delete nodeCache[id];\n}\n\nvar deepestNodeSoFar = null;\nfunction findDeepestCachedAncestorImpl(ancestorID) {\n var ancestor = nodeCache[ancestorID];\n if (ancestor && isValid(ancestor, ancestorID)) {\n deepestNodeSoFar = ancestor;\n } else {\n // This node isn't populated in the cache, so presumably none of its\n // descendants are. Break out of the loop.\n return false;\n }\n}\n\n/**\n * Return the deepest cached node whose ID is a prefix of `targetID`.\n */\nfunction findDeepestCachedAncestor(targetID) {\n deepestNodeSoFar = null;\n ReactInstanceHandles.traverseAncestors(targetID, findDeepestCachedAncestorImpl);\n\n var foundNode = deepestNodeSoFar;\n deepestNodeSoFar = null;\n return foundNode;\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(componentInstance, rootID, container, transaction, shouldReuseMarkup, context) {\n if (ReactDOMFeatureFlags.useCreateElement) {\n context = assign({}, context);\n if (container.nodeType === DOC_NODE_TYPE) {\n context[ownerDocumentContextKey] = container;\n } else {\n context[ownerDocumentContextKey] = container.ownerDocument;\n }\n }\n if (false) {\n if (context === emptyObject) {\n context = {};\n }\n var tag = container.nodeName.toLowerCase();\n context[validateDOMNesting.ancestorInfoContextKey] = validateDOMNesting.updatedAncestorInfo(null, tag, null);\n }\n var markup = ReactReconciler.mountComponent(componentInstance, rootID, transaction, context);\n componentInstance._renderedComponent._topLevelWrapper = componentInstance;\n ReactMount._mountImageIntoNode(markup, container, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, rootID, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* forceHTML */shouldReuseMarkup);\n transaction.perform(mountComponentIntoNode, null, componentInstance, rootID, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container) {\n ReactReconciler.unmountComponent(instance);\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(node) {\n var reactRootID = getReactRootID(node);\n return reactRootID ? reactRootID !== ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID) : false;\n}\n\n/**\n * Returns the first (deepest) ancestor of a node which is rendered by this copy\n * of React.\n */\nfunction findFirstReactDOMImpl(node) {\n // This node might be from another React instance, so we make sure not to\n // examine the node cache here\n for (; node && node.parentNode !== node; node = node.parentNode) {\n if (node.nodeType !== 1) {\n // Not a DOMElement, therefore not a React component\n continue;\n }\n var nodeID = internalGetID(node);\n if (!nodeID) {\n continue;\n }\n var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(nodeID);\n\n // If containersByReactRootID contains the container we find by crawling up\n // the tree, we know that this instance of React rendered the node.\n // nb. isValid's strategy (with containsNode) does not work because render\n // trees may be nested and we don't want a false positive in that case.\n var current = node;\n var lastID;\n do {\n lastID = internalGetID(current);\n current = current.parentNode;\n if (current == null) {\n // The passed-in node has been detached from the container it was\n // originally rendered into.\n return null;\n }\n } while (lastID !== reactRootID);\n\n if (current === containersByReactRootID[reactRootID]) {\n return node;\n }\n }\n return null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar TopLevelWrapper = function () {};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (false) {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n // this.props is actually a ReactElement\n return this.props;\n};\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n *
<-- Supplied `container`.\n *
<-- Rendered reactRoot of React\n * // ... component.\n *
\n *
\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /** Exposed for debugging purposes **/\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n if (false) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[getReactRootID(container)] = getReactRootElementInContainer(container);\n }\n\n return prevComponent;\n },\n\n /**\n * Register a component into the instance map and starts scroll value\n * monitoring\n * @param {ReactComponent} nextComponent component instance to render\n * @param {DOMElement} container container to render into\n * @return {string} reactRoot ID prefix\n */\n _registerComponent: function (nextComponent, container) {\n !(container && (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE || container.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)) ? false ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : invariant(false) : undefined;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\n var reactRootID = ReactMount.registerContainer(container);\n instancesByReactRootID[reactRootID] = nextComponent;\n return reactRootID;\n },\n\n /**\n * Render a new component into the DOM.\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n false ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : undefined;\n\n var componentInstance = instantiateReactComponent(nextElement, null);\n var reactRootID = ReactMount._registerComponent(componentInstance, container);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, reactRootID, container, shouldReuseMarkup, context);\n\n if (false) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[reactRootID] = getReactRootElementInContainer(container);\n }\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && parentComponent._reactInternalInstance != null) ? false ? invariant(false, 'parentComponent must be a valid React Component') : invariant(false) : undefined;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !ReactElement.isValidElement(nextElement) ? false ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing an element string, make sure to instantiate ' + 'it by passing it to React.createElement.' : typeof nextElement === 'function' ? ' Instead of passing a component class, make sure to instantiate ' + 'it by passing it to React.createElement.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : invariant(false) : undefined;\n\n false ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : undefined;\n\n var nextWrappedElement = new ReactElement(TopLevelWrapper, null, null, null, null, null, nextElement);\n\n var prevComponent = instancesByReactRootID[getReactRootID(container)];\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : undefined;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : undefined;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, parentComponent != null ? parentComponent._reactInternalInstance._processChildContext(parentComponent._reactInternalInstance._context) : emptyObject)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Registers a container node into which React components will be rendered.\n * This also creates the \"reactRoot\" ID that will be assigned to the element\n * rendered within.\n *\n * @param {DOMElement} container DOM element to register as a container.\n * @return {string} The \"reactRoot\" ID of elements rendered within.\n */\n registerContainer: function (container) {\n var reactRootID = getReactRootID(container);\n if (reactRootID) {\n // If one exists, make sure it is a valid \"reactRoot\" ID.\n reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);\n }\n if (!reactRootID) {\n // No valid \"reactRoot\" ID found, create one.\n reactRootID = ReactInstanceHandles.createReactRootID();\n }\n containersByReactRootID[reactRootID] = container;\n return reactRootID;\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n false ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : undefined;\n\n !(container && (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE || container.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)) ? false ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : invariant(false) : undefined;\n\n var reactRootID = getReactRootID(container);\n var component = instancesByReactRootID[reactRootID];\n if (!component) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var containerID = internalGetID(container);\n var isContainerReactRoot = containerID && containerID === ReactInstanceHandles.getReactRootIDFromNodeID(containerID);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : undefined;\n }\n\n return false;\n }\n ReactUpdates.batchedUpdates(unmountComponentFromNode, component, container);\n delete instancesByReactRootID[reactRootID];\n delete containersByReactRootID[reactRootID];\n if (false) {\n delete rootElementsByReactRootID[reactRootID];\n }\n return true;\n },\n\n /**\n * Finds the container DOM element that contains React component to which the\n * supplied DOM `id` belongs.\n *\n * @param {string} id The ID of an element rendered by a React component.\n * @return {?DOMElement} DOM element that contains the `id`.\n */\n findReactContainerForID: function (id) {\n var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(id);\n var container = containersByReactRootID[reactRootID];\n\n if (false) {\n var rootElement = rootElementsByReactRootID[reactRootID];\n if (rootElement && rootElement.parentNode !== container) {\n process.env.NODE_ENV !== 'production' ? warning(\n // Call internalGetID here because getID calls isValid which calls\n // findReactContainerForID (this function).\n internalGetID(rootElement) === reactRootID, 'ReactMount: Root element ID differed from reactRootID.') : undefined;\n var containerChild = container.firstChild;\n if (containerChild && reactRootID === internalGetID(containerChild)) {\n // If the container has a new child with the same ID as the old\n // root element, then rootElementsByReactRootID[reactRootID] is\n // just stale and needs to be updated. The case that deserves a\n // warning is when the container is empty.\n rootElementsByReactRootID[reactRootID] = containerChild;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'ReactMount: Root element has been removed from its original ' + 'container. New container: %s', rootElement.parentNode) : undefined;\n }\n }\n }\n\n return container;\n },\n\n /**\n * Finds an element rendered by React with the supplied ID.\n *\n * @param {string} id ID of a DOM node in the React component.\n * @return {DOMElement} Root DOM node of the React component.\n */\n findReactNodeByID: function (id) {\n var reactRoot = ReactMount.findReactContainerForID(id);\n return ReactMount.findComponentRoot(reactRoot, id);\n },\n\n /**\n * Traverses up the ancestors of the supplied node to find a node that is a\n * DOM representation of a React component rendered by this copy of React.\n *\n * @param {*} node\n * @return {?DOMEventTarget}\n * @internal\n */\n getFirstReactDOM: function (node) {\n return findFirstReactDOMImpl(node);\n },\n\n /**\n * Finds a node with the supplied `targetID` inside of the supplied\n * `ancestorNode`. Exploits the ID naming scheme to perform the search\n * quickly.\n *\n * @param {DOMEventTarget} ancestorNode Search from this root.\n * @pararm {string} targetID ID of the DOM representation of the component.\n * @return {DOMEventTarget} DOM node with the supplied `targetID`.\n * @internal\n */\n findComponentRoot: function (ancestorNode, targetID) {\n var firstChildren = findComponentRootReusableArray;\n var childIndex = 0;\n\n var deepestAncestor = findDeepestCachedAncestor(targetID) || ancestorNode;\n\n if (false) {\n // This will throw on the next line; give an early warning\n process.env.NODE_ENV !== 'production' ? warning(deepestAncestor != null, 'React can\\'t find the root component node for data-reactid value ' + '`%s`. If you\\'re seeing this message, it probably means that ' + 'you\\'ve loaded two copies of React on the page. At this time, only ' + 'a single copy of React can be loaded at a time.', targetID) : undefined;\n }\n\n firstChildren[0] = deepestAncestor.firstChild;\n firstChildren.length = 1;\n\n while (childIndex < firstChildren.length) {\n var child = firstChildren[childIndex++];\n var targetChild;\n\n while (child) {\n var childID = ReactMount.getID(child);\n if (childID) {\n // Even if we find the node we're looking for, we finish looping\n // through its siblings to ensure they're cached so that we don't have\n // to revisit this node again. Otherwise, we make n^2 calls to getID\n // when visiting the many children of a single node in order.\n\n if (targetID === childID) {\n targetChild = child;\n } else if (ReactInstanceHandles.isAncestorIDOf(childID, targetID)) {\n // If we find a child whose ID is an ancestor of the given ID,\n // then we can be sure that we only want to search the subtree\n // rooted at this child, so we can throw out the rest of the\n // search state.\n firstChildren.length = childIndex = 0;\n firstChildren.push(child.firstChild);\n }\n } else {\n // If this child had no ID, then there's a chance that it was\n // injected automatically by the browser, as when a ``\n // element sprouts an extra `` child as a side effect of\n // `.innerHTML` parsing. Optimistically continue down this\n // branch, but not before examining the other siblings.\n firstChildren.push(child.firstChild);\n }\n\n child = child.nextSibling;\n }\n\n if (targetChild) {\n // Emptying firstChildren/findComponentRootReusableArray is\n // not necessary for correctness, but it helps the GC reclaim\n // any nodes that were left at the end of the search.\n firstChildren.length = 0;\n\n return targetChild;\n }\n }\n\n firstChildren.length = 0;\n\n true ? false ? invariant(false, 'findComponentRoot(..., %s): Unable to find element. This probably ' + 'means the DOM was unexpectedly mutated (e.g., by the browser), ' + 'usually due to forgetting a when using tables, nesting tags ' + 'like ,

, or , or using non-SVG elements in an ' + 'parent. ' + 'Try inspecting the child nodes of the element with React ID `%s`.', targetID, ReactMount.getID(ancestorNode)) : invariant(false) : undefined;\n },\n\n _mountImageIntoNode: function (markup, container, shouldReuseMarkup, transaction) {\n !(container && (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE || container.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)) ? false ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : invariant(false) : undefined;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (false) {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a

or