-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1517.d65820e6.iframe.bundle.js
3 lines (3 loc) · 54.2 KB
/
1517.d65820e6.iframe.bundle.js
1
2
3
/*! For license information please see 1517.d65820e6.iframe.bundle.js.LICENSE.txt */
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[1517],{"./src/commonStyles.js":(module,__unused_webpack_exports,__webpack_require__)=>{var commonStyles=module.exports,styleConstants=__webpack_require__("./src/styleConstants.js"),color=__webpack_require__("./src/util/color.js");commonStyles.hidden={display:"none"},commonStyles.purpleHeader={height:styleConstants["workspace-headers-height"],backgroundColor:color.purple,color:color.white,overflowY:"hidden",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",userSelect:"none"},commonStyles.purpleHeaderUnfocused={backgroundColor:color.lighter_purple,color:color.neutral_white},commonStyles.teacherBlueHeader={backgroundColor:color.cyan,color:color.lightest_cyan},commonStyles.teacherHeaderUnfocused={color:color.dark_charcoal},commonStyles.minecraftHeader={backgroundColor:"#3b3b3b",color:color.white},commonStyles.button={paddingTop:5,paddingBottom:5,fontSize:14},commonStyles.bubble={color:color.black,marginBottom:10,position:"relative",cursor:"pointer"}},"./src/styleConstants.js":module=>{module.exports={"workspace-headers-height":30,"resize-bar-width":13,"delete-opacity":"0.5","content-width":970}},"./src/templates/GameButtons.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedGameButtons=exports.RunButton=exports.ResetButton=exports.FinishButton=void 0;var _classnames=_interopRequireDefault(__webpack_require__("./node_modules/classnames/index.js")),_propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_radium=_interopRequireDefault(__webpack_require__("./node_modules/radium/es/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_reactRedux=__webpack_require__("./node_modules/react-redux/es/index.js"),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_x=_interopRequireDefault(__webpack_require__("./static/common_images/1x1.gif")),_commonStyles=_interopRequireDefault(__webpack_require__("./src/commonStyles.js")),_ProtectedStatefulDiv=_interopRequireDefault(__webpack_require__("./src/templates/ProtectedStatefulDiv.jsx")),_SkipButton=_interopRequireDefault(__webpack_require__("./src/templates/SkipButton.jsx"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var FinishButton=exports.FinishButton=function FinishButton(){return _react.default.createElement("button",{type:"button",id:"finishButton",className:"share"},_react.default.createElement("img",{src:"/blockly/media/1x1.gif",alt:""}),_locale.default.finish())},RunButton=exports.RunButton=(0,_radium.default)((function(props){return _react.default.createElement("button",{type:"button",id:"runButton",className:(0,_classnames.default)(["launch","blocklyLaunch",props.hidden&&"hide"]),style:props.style},_react.default.createElement("div",null,props.runButtonText||_locale.default.runProgram()),_react.default.createElement("img",{src:_x.default,className:"run26",alt:""}))}));RunButton.propTypes={hidden:_propTypes.default.bool,style:_propTypes.default.object,runButtonText:_propTypes.default.string},RunButton.displayName="RunButton";var ResetButton=exports.ResetButton=(0,_radium.default)((function(props){return _react.default.createElement("button",{type:"button",id:"resetButton",className:(0,_classnames.default)(["launch","blocklyLaunch",props.hideText&&"hideText",props.hidden&&"hide"]),style:[_commonStyles.default.hidden,props.style]},_react.default.createElement("div",null,!props.hideText&&_locale.default.resetProgram()),_react.default.createElement("img",{src:_x.default,className:"reset26",alt:""}))}));ResetButton.propTypes={hidden:_propTypes.default.bool,style:_propTypes.default.object,hideText:_propTypes.default.bool},ResetButton.displayName="ResetButton";var UnconnectedGameButtons=exports.UnconnectedGameButtons=function UnconnectedGameButtons(props){return _react.default.createElement("div",null,_react.default.createElement(_ProtectedStatefulDiv.default,{id:"gameButtons"},!props.noRunResetButton&&_react.default.createElement(_react.default.Fragment,null,_react.default.createElement(RunButton,{hidden:props.hideRunButton,runButtonText:props.runButtonText}),_react.default.createElement(ResetButton,{hidden:props.hideResetButton}))," ",props.children),_react.default.createElement("div",{id:"gameButtonExtras"},props.showSkipButton&&_react.default.createElement(_SkipButton.default,{nextLevelUrl:props.nextLevelUrl}),props.showFinishButton&&_react.default.createElement(FinishButton,null)))};UnconnectedGameButtons.propTypes={hideRunButton:_propTypes.default.bool,hideResetButton:_propTypes.default.bool,runButtonText:_propTypes.default.string,nextLevelUrl:_propTypes.default.string,showSkipButton:_propTypes.default.bool,widgetMode:_propTypes.default.bool,showFinishButton:_propTypes.default.bool,children:_propTypes.default.node,noRunResetButton:_propTypes.default.bool},UnconnectedGameButtons.displayName="GameButtons";exports.default=(0,_reactRedux.connect)((function(state){return{hideRunButton:state.pageConstants.hideRunButton,hideResetButton:state.pageConstants.hideResetButton,runButtonText:state.pageConstants.runButtonText,nextLevelUrl:state.pageConstants.nextLevelUrl,showSkipButton:state.pageConstants.isChallengeLevel,widgetMode:state.pageConstants.widgetMode}}))(UnconnectedGameButtons)},"./src/templates/ProtectedStatefulDiv.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _lodash=_interopRequireDefault(__webpack_require__("./node_modules/lodash/lodash.js")),_propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_radium=_interopRequireDefault(__webpack_require__("./node_modules/radium/es/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var ProtectedStatefulDiv=function(_React$Component){function ProtectedStatefulDiv(){return _React$Component.apply(this,arguments)||this}!function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(ProtectedStatefulDiv,_React$Component);var _proto=ProtectedStatefulDiv.prototype;return _proto.shouldComponentUpdate=function shouldComponentUpdate(){return this.props.canUpdate},_proto.componentDidMount=function componentDidMount(){"function"==typeof this.props.contentFunction&&(this.refs.root.innerHTML=this.props.contentFunction())},_proto.getRoot=function getRoot(){return this.refs.root},_proto.componentWillUnmount=function componentWillUnmount(){0},_proto.render=function render(){return _react.default.createElement("div",_extends({},_lodash.default.omit(this.props,["contentFunction","radiumConfigContext","styleKeeperContext","canUpdate","canUnmount"]),{ref:"root"}))},ProtectedStatefulDiv}(_react.default.Component);_defineProperty(ProtectedStatefulDiv,"propTypes",{contentFunction:_propTypes.default.func,children:_propTypes.default.node,canUpdate:_propTypes.default.bool,canUnmount:_propTypes.default.bool}),_defineProperty(ProtectedStatefulDiv,"defaultProps",{canUpdate:!1});exports.default=(0,_radium.default)(ProtectedStatefulDiv);module.exports=exports.default},"./src/templates/SkipButton.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}!function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}(exports.default=function(_React$Component){function SkipButton(){return _React$Component.apply(this,arguments)||this}return function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(SkipButton,_React$Component),SkipButton.prototype.render=function render(){return _react.default.createElement("button",{type:"button",id:"skipButton",className:"launch"},_locale.default.skipPuzzle())},SkipButton}(_react.default.Component),"propTypes",{nextLevelUrl:_propTypes.default.string.isRequired}),module.exports=exports.default},"./src/util/color.js":module=>{module.exports={black:"#000",background_black:"#121416",dark_gray:"#2D3139",darkest_gray:"#292F36",dark_slate_gray:"#282c34",darkest_slate_gray:"#25292d",dark_charcoal:"#4d575f",charcoal:"#5b6770",light_gray:"#949ca2",lighter_gray:"#c6cacd",lightest_gray:"#e7e8ea",background_gray:"#f2f2f2",dimgray:"#696969",white:"#fff",default_blue:"#3670b3",dark_teal:"#0094a3",teal:"#0093a4",applab_button_teal:"#1abc9c",light_teal:"#59cad3",lightish_teal:"#80d6de",lighter_teal:"#a6e3e8",lightest_teal:"#d9f3f5",ai_rubric_cyan:"#3cfff8",purple:"#8c52ba",light_purple:"#a69bc1",lighter_purple:"#cfc9de",lightest_purple:"#ebe8f1",cyan:"#0094ca",light_cyan:"#59b9dc",lighter_cyan:"#a6daed",lightest_cyan:"#d9eff7",almost_white_cyan:"#f5fcff",orange:"#ffa400",light_orange:"#ffc459",lighter_orange:"#ffe0a6",lightest_orange:"#fff2d9",dark_orange:"#ff8600",green:"#b9bf15",light_green:"#d1d567",lighter_green:"#e7e9ad",lightest_green:"#f5f5dc",highlight_green:"#8afc9b",yellow:"#ffb81d",light_yellow:"#ffdb74",lighter_yellow:"#ffebb5",lightest_yellow:"#fff7df",goldenrod:"#daa520",header_text:"#fff",bkgnd_color:"#0093a4",inset_color:"#c6cacd",dark_color:"#8c52ba",hdr_color:"#8c52ba",red:"#c00",lightest_red:"#fcc",dark_red:"#d62911",realgreen:"#008000",realyellow:"#ff0",mustardyellow:"#efcd1c",twitter_blue:"#00aced",facebook_blue:"#3b5998",linkedin_blue:"#0077B5",dark_blue:"#00647f",blockly_flyout_gray:"#ddd",default_text:"#333",border_gray:"#bbb",border_light_gray:"#d8d8d8",table_header:"#ececec",table_light_row:"#fcfcfc",table_dark_row:"#f4f4f4",level_submitted:"#8c52ba",level_perfect:"rgb(14, 190, 14)",level_passed:"rgb(159, 212, 159)",level_attempted:"#ff0",level_not_tried:"#fefefe",level_current:"#ffa400",level_review_rejected:"#c00",level_review_accepted:"rgb(11, 142, 11)",assessment:"#0094ca",workspace_running_background:"#e5e5e5",dark_purple:"#682A77",bright_green:"#0ebe0e",neon_pink:"#e9118f",link_color:"#0596ce",shadow:"rgba(0, 0, 0, 0.3)",bootstrap_button_blue:"#337ab7",bootstrap_button_red:"#d9534f",bootstrap_error_background:"#f2dede",bootstrap_error_text:"#b94a48",bootstrap_v3_error_text:"#a94442",bootstrap_error_border:"#ebccd1",bootstrap_warning_background:"#fcf8e3",bootstrap_warning_text:"#c09853",bootstrap_warning_border:"#faebcc",bootstrap_border_color:"#cccccc",bootstrap_success_background:"#dff0d8",bootstrap_success_text:"#468847",bootstrap_success_border:"#d6e9c6",droplet_light_green:"#d3e965",droplet_blue:"#64b5f6",droplet_bright_blue:"#19c3e1",droplet_yellow:"#fff176",droplet_orange:"#ffb74d",droplet_red:"#f78183",droplet_cyan:"#4dd0e1",droplet_pink:"#f57ac6",droplet_purple:"#bb77c7",droplet_green:"#68d995",droplet_white:"#fff",oceans_deep_blue:"rgb(2, 0, 28)",dark_black:"#121212",brand_primary_light:"#E0F8F9",brand_primary_default:"#009EB0",brand_primary_dark:"#007785",brand_secondary_light:"#E0D1EC",brand_secondary_default:"#8C52BA",brand_secondary_dark:"#6C468A",brand_accent_default:"#ED6060",brand_teal_5:"#DFF2F4",product_affirmative_default:"#3EA33E",product_negative_light:"#FDEBE9",product_negative_default:"#E5311A",product_negative_dark:"#AA2513",product_caution_default:"#F9CB28",product_information_default:"#007ACC",neutral_white:"#FFFFFF",neutral_light:"#F7F8FA",neutral_gray10:"#EAEBEB",neutral_dark10:"#EAECEF",neutral_dark20:"#D1D4D8",neutral_dark30:"#BEC2C7",neutral_dark40:"#ABB0B6",neutral_dark50:"#989EA5",neutral_dark60:"#858C94",neutral_dark70:"#727A83",neutral_dark80:"#5F6872",neutral_dark90:"#4C5661",neutral_dark:"#292F36",google_brand_color:"#0F9D58",microsoft_brand_color:"#FFB900",facebook_brand_color:"#3B5998",clever_brand_color:"#1464FF",light_primary_100:"#BFE4E8",light_primary_500:"#0093A4",light_primary_700:"#007785",light_secondary_100:"#E2D4EE",light_secondary_500:"#8C52BA",light_secondary_700:"#6C468A",light_gray_50:"#F7F8FA",light_gray_100:"#EAECEF",light_gray_200:"#D1D4D8",light_gray_300:"#BEC2C7",light_gray_400:"#ABB0B6",light_gray_500:"#989EA5",light_gray_600:"#858C94",light_gray_700:"#727A83",light_gray_800:"#5F6872",light_gray_900:"#4C5661",light_gray_950:"#394450",light_affirmative_100:"#E2F1E2",light_affirmative_500:"#3EA33E",light_affirmative_700:"#2D742D",light_negative_100:"#FBE0DD",light_negative_500:"#E5311A",light_negative_700:"#B24949",light_caution_100:"#FEF7DF",light_caution_500:"#F9CB28",light_caution_700:"#C7A220",light_accent_100:"#FAD7D7",light_accent_500:"#ED6060",light_accent_700:"#D84C4C",light_aqua_100:"#CEFFFD",light_aqua_500:"#3CFFF8",light_aqua_700:"#30CCC6",light_orange_100:"#FFEDCC",light_orange_500:"#FFA400",light_orange_700:"#CC8300",light_info_100:"#DCEFFB",light_info_500:"#1892E3",light_info_700:"#1375B6",light_white:"#FFFFFF",light_black:"#292F36",light_black_opacity_90:"rgba(41, 47, 54, 0.90)","light_black_opacity-80":"rgba(41, 47, 54, 0.80)","light_black_opacity-70":"rgba(41, 47, 54, 0.70)","light_black_opacity-60":"rgba(41, 47, 54, 0.60)","light_black_opacity-50":"rgba(41, 47, 54, 0.50)","light_black_opacity-40":"rgba(41, 47, 54, 0.40)","light_black_opacity-30":"rgba(41, 47, 54, 0.30)","light_black_opacity-20":"rgba(41, 47, 54, 0.20)","light_black_opacity-10":"rgba(41, 47, 54, 0.10)"}},"./node_modules/classnames/index.js":(module,exports)=>{var __WEBPACK_AMD_DEFINE_RESULT__;!function(){"use strict";var hasOwn={}.hasOwnProperty;function classNames(){for(var classes=[],i=0;i<arguments.length;i++){var arg=arguments[i];if(arg){var argType=typeof arg;if("string"===argType||"number"===argType)classes.push(arg);else if(Array.isArray(arg)){if(arg.length){var inner=classNames.apply(null,arg);inner&&classes.push(inner)}}else if("object"===argType){if(arg.toString!==Object.prototype.toString&&!arg.toString.toString().includes("[native code]")){classes.push(arg.toString());continue}for(var key in arg)hasOwn.call(arg,key)&&arg[key]&&classes.push(key)}}}return classes.join(" ")}module.exports?(classNames.default=classNames,module.exports=classNames):void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return classNames}.apply(exports,[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)}()},"./static/common_images/1x1.gif":module=>{"use strict";module.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAkAAAEALAAAAAABAAEAAAICTAEAOw=="}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUZBLElBQUk0RixRQUFVLEdBRUx2QyxFQUFJLEVBQUdBLEVBQUlaLFVBQVVDLE9BQVFXLElBQUssQ0FDMUMsSUFBSXdDLElBQU1wRCxVQUFVWSxHQUNwQixHQUFLd0MsSUFBTCxDQUVBLElBQUlDLGVBQWlCRCxJQUVyQixHQUFnQixXQUFaQyxTQUFvQyxXQUFaQSxRQUMzQkYsUUFBUUcsS0FBS0YsVUFDUCxHQUFJRyxNQUFNQyxRQUFRSixNQUN4QixHQUFJQSxJQUFJbkQsT0FBUSxDQUNmLElBQUl3RCxNQUFRbEcsV0FBVytDLE1BQU0sS0FBTThDLEtBQy9CSyxPQUNITixRQUFRRyxLQUFLRyxNQUVmLE9BQ00sR0FBZ0IsV0FBWkosUUFBc0IsQ0FDaEMsR0FBSUQsSUFBSU0sV0FBYTlELE9BQU9GLFVBQVVnRSxXQUFhTixJQUFJTSxTQUFTQSxXQUFXQyxTQUFTLGlCQUFrQixDQUNyR1IsUUFBUUcsS0FBS0YsSUFBSU0sWUFDakIsUUFDRCxDQUVBLElBQUssSUFBSUUsT0FBT1IsSUFDWEYsT0FBTzdDLEtBQUsrQyxJQUFLUSxNQUFRUixJQUFJUSxNQUNoQ1QsUUFBUUcsS0FBS00sSUFHaEIsQ0F4QmtCLENBeUJuQixDQUVBLE9BQU9ULFFBQVFVLEtBQUssSUFDckIsQ0FFcUNsSyxPQUFPQyxTQUMzQzJELFdBQVd1RixRQUFVdkYsV0FDckI1RCxPQUFPQyxRQUFVMkQsaUJBS2hCLEtBRndCLDhCQUFGLFdBQ3RCLE9BQU9BLFVBQ1AsZ0JBRm9CLE9BRXBCLDZDQUlILENBcERBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL2NvbW1vblN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvc3R5bGVDb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9HYW1lQnV0dG9ucy5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9Qcm90ZWN0ZWRTdGF0ZWZ1bERpdi5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9Ta2lwQnV0dG9uLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdXRpbC9jb2xvci5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBcyB3ZSBtb3ZlIGZyb20gaW5saW5lIGNzcyB0byBjc3MgbW9kdWxlcyB3ZSBhcmUgdGVtcG9yYXJpbHkgZHVwbGljYXRpbmcgdGhpc1xuLy8gaW50byB0aGUgY3NzIG1vZHVsZSBjb21tb24tc3R5bGVzLm1vZHVsZS5zY3NzLlxuLy8gQW55IGNoYW5nZXMgaW4gb25lIHNob3VsZCBiZSBtYWRlIGluIHRoZSBvdGhlciB0byBhcHBseSB0byBhbGwgY29tcG9uZW50cy5cbnZhciBjb21tb25TdHlsZXMgPSBtb2R1bGUuZXhwb3J0cztcbnZhciBzdHlsZUNvbnN0YW50cyA9IHJlcXVpcmUoJy4vc3R5bGVDb25zdGFudHMnKTtcbnZhciBjb2xvciA9IHJlcXVpcmUoJy4vdXRpbC9jb2xvcicpO1xuXG5jb21tb25TdHlsZXMuaGlkZGVuID0ge1xuICBkaXNwbGF5OiAnbm9uZScsXG59O1xuXG5jb21tb25TdHlsZXMucHVycGxlSGVhZGVyID0ge1xuICBoZWlnaHQ6IHN0eWxlQ29uc3RhbnRzWyd3b3Jrc3BhY2UtaGVhZGVycy1oZWlnaHQnXSxcbiAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5wdXJwbGUsXG4gIGNvbG9yOiBjb2xvci53aGl0ZSxcbiAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgV2Via2l0VXNlclNlbGVjdDogJ25vbmUnLFxuICBNb3pVc2VyU2VsZWN0OiAnbm9uZScsXG4gIG1zVXNlclNlbGVjdDogJ25vbmUnLFxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG59O1xuXG5jb21tb25TdHlsZXMucHVycGxlSGVhZGVyVW5mb2N1c2VkID0ge1xuICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmxpZ2h0ZXJfcHVycGxlLFxuICBjb2xvcjogY29sb3IubmV1dHJhbF93aGl0ZSxcbn07XG5cbmNvbW1vblN0eWxlcy50ZWFjaGVyQmx1ZUhlYWRlciA9IHtcbiAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5jeWFuLFxuICBjb2xvcjogY29sb3IubGlnaHRlc3RfY3lhbixcbn07XG5cbmNvbW1vblN0eWxlcy50ZWFjaGVySGVhZGVyVW5mb2N1c2VkID0ge1xuICBjb2xvcjogY29sb3IuZGFya19jaGFyY29hbCxcbn07XG5cbmNvbW1vblN0eWxlcy5taW5lY3JhZnRIZWFkZXIgPSB7XG4gIGJhY2tncm91bmRDb2xvcjogJyMzYjNiM2InLFxuICBjb2xvcjogY29sb3Iud2hpdGUsXG59O1xuXG5jb21tb25TdHlsZXMuYnV0dG9uID0ge1xuICBwYWRkaW5nVG9wOiA1LFxuICBwYWRkaW5nQm90dG9tOiA1LFxuICBmb250U2l6ZTogMTQsXG59O1xuXG4vLyBEaXYgY29udGFpbiBpbnN0cnVjdGlvbnMsIGVpdGhlciBiZWxvdyB2aXN1YWxpemF0aW9uIG9yIGluIHRvcCBpbnN0cnVjdGlvbnNcbi8vIE1heSBub3QgbmVlZCBhIGNvbW1vbiBsb2NhdGlvbiBvbmNlIGV2ZXJ5dGhpbmcgaXMgaW4gdG9wIGluc3RydWN0aW9uc1xuY29tbW9uU3R5bGVzLmJ1YmJsZSA9IHtcbiAgY29sb3I6IGNvbG9yLmJsYWNrLFxuICBtYXJnaW5Cb3R0b206IDEwLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cblxuLy8gYXBwcy9zcmMvc3R5bGVDb25zdGFudHMuanNcbi8vIEdFTkVSQVRFRCBGSUxFOiBETyBOT1QgTU9ESUZZIERJUkVDVExZXG4vLyBUaGlzIGdlbmVyYXRlZCBmaWxlIGV4cG9ydHMgYWxsIHZhcmlhYmxlcyBkZWZpbmVkIGluIHNoYXJlZC9jc3Mvc3R5bGUtY29uc3RhbnRzLnNjc3Ncbi8vIGZvciB1c2UgaW4gSmF2YVNjcmlwdC4gVGhlIGdlbmVyYXRvciBzY3JpcHQgaXMgY29udmVydC1zY3NzLXZhcmlhYmxlcy5qc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFwid29ya3NwYWNlLWhlYWRlcnMtaGVpZ2h0XCI6IDMwLFxuICBcInJlc2l6ZS1iYXItd2lkdGhcIjogMTMsXG4gIFwiZGVsZXRlLW9wYWNpdHlcIjogXCIwLjVcIixcbiAgXCJjb250ZW50LXdpZHRoXCI6IDk3MCxcbn07XG4iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBtc2cgZnJvbSAnQGNkby9sb2NhbGUnO1xuXG5pbXBvcnQgYmxhbmtJbWcgZnJvbSAnLi4vLi4vc3RhdGljL2NvbW1vbl9pbWFnZXMvMXgxLmdpZic7XG5pbXBvcnQgY29tbW9uU3R5bGVzIGZyb20gJy4uL2NvbW1vblN0eWxlcyc7XG5cbmltcG9ydCBQcm90ZWN0ZWRTdGF0ZWZ1bERpdiBmcm9tICcuL1Byb3RlY3RlZFN0YXRlZnVsRGl2JztcbmltcG9ydCBTa2lwQnV0dG9uIGZyb20gJy4vU2tpcEJ1dHRvbic7XG5cbmV4cG9ydCBjb25zdCBGaW5pc2hCdXR0b24gPSAoKSA9PiAoXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiZmluaXNoQnV0dG9uXCIgY2xhc3NOYW1lPVwic2hhcmVcIj5cbiAgICA8aW1nIHNyYz1cIi9ibG9ja2x5L21lZGlhLzF4MS5naWZcIiBhbHQ9XCJcIiAvPlxuICAgIHttc2cuZmluaXNoKCl9XG4gIDwvYnV0dG9uPlxuKTtcblxuZXhwb3J0IGNvbnN0IFJ1bkJ1dHRvbiA9IFJhZGl1bShwcm9wcyA9PiAoXG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBpZD1cInJ1bkJ1dHRvblwiXG4gICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFsnbGF1bmNoJywgJ2Jsb2NrbHlMYXVuY2gnLCBwcm9wcy5oaWRkZW4gJiYgJ2hpZGUnXSl9XG4gICAgc3R5bGU9e3Byb3BzLnN0eWxlfVxuICA+XG4gICAgPGRpdj57cHJvcHMucnVuQnV0dG9uVGV4dCB8fCBtc2cucnVuUHJvZ3JhbSgpfTwvZGl2PlxuICAgIDxpbWcgc3JjPXtibGFua0ltZ30gY2xhc3NOYW1lPVwicnVuMjZcIiBhbHQ9XCJcIiAvPlxuICA8L2J1dHRvbj5cbikpO1xuUnVuQnV0dG9uLnByb3BUeXBlcyA9IHtcbiAgaGlkZGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJ1bkJ1dHRvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuUnVuQnV0dG9uLmRpc3BsYXlOYW1lID0gJ1J1bkJ1dHRvbic7XG5cbi8vIFRoZSByZXNldCBidXR0b24gaXMgaGlkZGVuIGJ5IGRlZmF1bHQsXG4vLyB0aGVuIHNob3duIGVpdGhlciBieSBwYXNzaW5nIGluIHN0eWxlIHByb3BzIHRvIG92ZXJyaWRlXG4vLyBvciBpbXBlcmF0aXZlbHkgYnkgc2VsZWN0aW5nIHRoZSBET00gbm9kZSBieSBJRFxuLy8gZWxzZXdoZXJlIGluIG91ciBjb2RlIGJhc2UgKGVnLCBTdHVkaW9BcHApXG5leHBvcnQgY29uc3QgUmVzZXRCdXR0b24gPSBSYWRpdW0ocHJvcHMgPT4gKFxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgaWQ9XCJyZXNldEJ1dHRvblwiXG4gICAgLy8gU2VlIGFwcHMvc3R5bGUvY29tbW9uLnNjc3MgZm9yIHRoZXNlIGNsYXNzIGRlZmluaXRpb25zXG4gICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFtcbiAgICAgICdsYXVuY2gnLFxuICAgICAgJ2Jsb2NrbHlMYXVuY2gnLFxuICAgICAgcHJvcHMuaGlkZVRleHQgJiYgJ2hpZGVUZXh0JyxcbiAgICAgIHByb3BzLmhpZGRlbiAmJiAnaGlkZScsXG4gICAgXSl9XG4gICAgc3R5bGU9e1tjb21tb25TdHlsZXMuaGlkZGVuLCBwcm9wcy5zdHlsZV19XG4gID5cbiAgICA8ZGl2PnshcHJvcHMuaGlkZVRleHQgJiYgbXNnLnJlc2V0UHJvZ3JhbSgpfTwvZGl2PlxuICAgIDxpbWcgc3JjPXtibGFua0ltZ30gY2xhc3NOYW1lPVwicmVzZXQyNlwiIGFsdD1cIlwiIC8+XG4gIDwvYnV0dG9uPlxuKSk7XG5SZXNldEJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGhpZGRlbjogUHJvcFR5cGVzLmJvb2wsXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBoaWRlVGV4dDogUHJvcFR5cGVzLmJvb2wsXG59O1xuUmVzZXRCdXR0b24uZGlzcGxheU5hbWUgPSAnUmVzZXRCdXR0b24nO1xuXG4vKipcbiAqIEEgc2V0IG9mIGdhbWUgYnV0dG9ucyB0aGF0IGNvbnNpc3Qgb2YgYSBydW4vcmVzZXQgYnV0dG9uLCBhbmQgcG90ZW50aWFsbHkgYVxuICogc2V0IG9mIGNoaWxkcmVuIHRoYXQgd2UgZXhwZWN0IHRvIGJlIGFkZGl0aW9uYWwgYnV0dG9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IFVuY29ubmVjdGVkR2FtZUJ1dHRvbnMgPSBwcm9wcyA9PiAoXG4gIDxkaXY+XG4gICAgPFByb3RlY3RlZFN0YXRlZnVsRGl2IGlkPVwiZ2FtZUJ1dHRvbnNcIj5cbiAgICAgIHshcHJvcHMubm9SdW5SZXNldEJ1dHRvbiAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFJ1bkJ1dHRvblxuICAgICAgICAgICAgaGlkZGVuPXtwcm9wcy5oaWRlUnVuQnV0dG9ufVxuICAgICAgICAgICAgcnVuQnV0dG9uVGV4dD17cHJvcHMucnVuQnV0dG9uVGV4dH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxSZXNldEJ1dHRvbiBoaWRkZW49e3Byb3BzLmhpZGVSZXNldEJ1dHRvbn0gLz5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge1xuICAgICAgICAnICcgLyogRXhwbGljaXRseSBpbnNlcnQgd2hpdGVzcGFjZSBzbyB0aGF0IHRoaXMgYmVoYXZlcyBsaWtlIG91ciBlanMgZmlsZSovXG4gICAgICB9XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9Qcm90ZWN0ZWRTdGF0ZWZ1bERpdj5cbiAgICA8ZGl2IGlkPVwiZ2FtZUJ1dHRvbkV4dHJhc1wiPlxuICAgICAge3Byb3BzLnNob3dTa2lwQnV0dG9uICYmIDxTa2lwQnV0dG9uIG5leHRMZXZlbFVybD17cHJvcHMubmV4dExldmVsVXJsfSAvPn1cbiAgICAgIHtwcm9wcy5zaG93RmluaXNoQnV0dG9uICYmIDxGaW5pc2hCdXR0b24gLz59XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuKTtcblVuY29ubmVjdGVkR2FtZUJ1dHRvbnMucHJvcFR5cGVzID0ge1xuICBoaWRlUnVuQnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGlkZVJlc2V0QnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgcnVuQnV0dG9uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbmV4dExldmVsVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzaG93U2tpcEJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZGdldE1vZGU6IFByb3BUeXBlcy5ib29sLFxuICBzaG93RmluaXNoQnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBub1J1blJlc2V0QnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5VbmNvbm5lY3RlZEdhbWVCdXR0b25zLmRpc3BsYXlOYW1lID0gJ0dhbWVCdXR0b25zJztcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChzdGF0ZSA9PiAoe1xuICBoaWRlUnVuQnV0dG9uOiBzdGF0ZS5wYWdlQ29uc3RhbnRzLmhpZGVSdW5CdXR0b24sXG4gIGhpZGVSZXNldEJ1dHRvbjogc3RhdGUucGFnZUNvbnN0YW50cy5oaWRlUmVzZXRCdXR0b24sXG4gIHJ1bkJ1dHRvblRleHQ6IHN0YXRlLnBhZ2VDb25zdGFudHMucnVuQnV0dG9uVGV4dCxcbiAgbmV4dExldmVsVXJsOiBzdGF0ZS5wYWdlQ29uc3RhbnRzLm5leHRMZXZlbFVybCxcbiAgc2hvd1NraXBCdXR0b246IHN0YXRlLnBhZ2VDb25zdGFudHMuaXNDaGFsbGVuZ2VMZXZlbCxcbiAgd2lkZ2V0TW9kZTogc3RhdGUucGFnZUNvbnN0YW50cy53aWRnZXRNb2RlLFxufSkpKFVuY29ubmVjdGVkR2FtZUJ1dHRvbnMpO1xuIiwiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vKipcbiAqIEEgZGl2IERPTSBlbGVtZW50IHRoYXQgd2lsbCBuZXZlciB1cGRhdGUgaXRzIGNvbnRlbnRzIHVubGVzcyBjYW5VcGRhdGVcbiAqIGlzIGFzc2lnbmVkIHRydWUuIEl0IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGl0IGlzIGV2ZXIgdW5tb3VudGVkLFxuICogZW5mb3JjaW5nIHRoYXQgaXQgbXVzdCBhbHdheXMgYmUgcmVuZGVyZWQgYmVjYXVzZSBpdHMgY29udGVudHMgbWF5XG4gKiBjb250YWluIHN0YXRlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGlzIGRlcGVuZGluZyBvbi5cbiAqXG4gKiBVc2VmdWwgd2hlbiBSZWFjdCBpcyB3cmFwcGluZyBleHRlcm5hbCBsaWJyYXJpZXMgb3IgcGFydHMgb2Ygb3VyIFVJIHRoYXQgYXJlXG4gKiBub3QgeWV0IGRyaXZlbiBieSBSZWFjdC5cbiAqL1xuY2xhc3MgUHJvdGVjdGVkU3RhdGVmdWxEaXYgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNvbnRlbnRGdW5jdGlvbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIGNhblVwZGF0ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2FuVW5tb3VudDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjYW5VcGRhdGU6IGZhbHNlLFxuICB9O1xuXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jYW5VcGRhdGU7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuY29udGVudEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnJlZnMucm9vdC5pbm5lckhUTUwgPSB0aGlzLnByb3BzLmNvbnRlbnRGdW5jdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmcy5yb290O1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgLy8gd2hlbiB1c2luZyB0aGUgc3Rvcnlib29rIHN0eWxlZ3VpZGUsIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHByb3RlY3RcbiAgICAvLyBhbnl0aGluZywgYW5kIGFjdHVhbGx5IHdlIHdhbnQgdG8gdW5tb3VudC9yZW1vdW50IHN0dWZmIGFsbCB0aGUgdGltZVxuICAgIC8vIHdoZW4gdGhlIHBhZ2UgaXMgaG90LXJlbG9hZGVkXG4gICAgaWYgKCFJTl9TVE9SWUJPT0sgJiYgIXRoaXMucHJvcHMuY2FuVW5tb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbm1vdW50aW5nIGEgUHJvdGVjdGVkU3RhdGVmdWxEaXYgaXMgbm90IGFsbG93ZWQuJyk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5fLm9taXQodGhpcy5wcm9wcywgW1xuICAgICAgICAgICdjb250ZW50RnVuY3Rpb24nLFxuICAgICAgICAgICdyYWRpdW1Db25maWdDb250ZXh0JyxcbiAgICAgICAgICAnc3R5bGVLZWVwZXJDb250ZXh0JyxcbiAgICAgICAgICAnY2FuVXBkYXRlJyxcbiAgICAgICAgICAnY2FuVW5tb3VudCcsXG4gICAgICAgIF0pfVxuICAgICAgICByZWY9XCJyb290XCJcbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSYWRpdW0oUHJvdGVjdGVkU3RhdGVmdWxEaXYpO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBtc2cgZnJvbSAnQGNkby9sb2NhbGUnO1xuXG5jb25zdCBMQVVOQ0hfQ0xBU1MgPSAnbGF1bmNoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2tpcEJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbmV4dExldmVsVXJsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cInNraXBCdXR0b25cIiBjbGFzc05hbWU9e0xBVU5DSF9DTEFTU30+XG4gICAgICAgIHttc2cuc2tpcFB1enpsZSgpfVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgKi9cblxuLy8gYXBwcy9zcmMvdXRpbC9jb2xvci5qc1xuLy8gR0VORVJBVEVEIEZJTEU6IERPIE5PVCBNT0RJRlkgRElSRUNUTFlcbi8vIFRoaXMgZ2VuZXJhdGVkIGZpbGUgZXhwb3J0cyBhbGwgdmFyaWFibGVzIGRlZmluZWQgaW4gc2hhcmVkL2Nzcy9jb2xvci5zY3NzXG4vLyBmb3IgdXNlIGluIEphdmFTY3JpcHQuIFRoZSBnZW5lcmF0b3Igc2NyaXB0IGlzIGNvbnZlcnQtc2Nzcy12YXJpYWJsZXMuanNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBcImJsYWNrXCI6IFwiIzAwMFwiLFxuICBcImJhY2tncm91bmRfYmxhY2tcIjogXCIjMTIxNDE2XCIsXG4gIFwiZGFya19ncmF5XCI6IFwiIzJEMzEzOVwiLFxuICBcImRhcmtlc3RfZ3JheVwiOiBcIiMyOTJGMzZcIixcbiAgXCJkYXJrX3NsYXRlX2dyYXlcIjogXCIjMjgyYzM0XCIsXG4gIFwiZGFya2VzdF9zbGF0ZV9ncmF5XCI6IFwiIzI1MjkyZFwiLFxuICBcImRhcmtfY2hhcmNvYWxcIjogXCIjNGQ1NzVmXCIsXG4gIFwiY2hhcmNvYWxcIjogXCIjNWI2NzcwXCIsXG4gIFwibGlnaHRfZ3JheVwiOiBcIiM5NDljYTJcIixcbiAgXCJsaWdodGVyX2dyYXlcIjogXCIjYzZjYWNkXCIsXG4gIFwibGlnaHRlc3RfZ3JheVwiOiBcIiNlN2U4ZWFcIixcbiAgXCJiYWNrZ3JvdW5kX2dyYXlcIjogXCIjZjJmMmYyXCIsXG4gIFwiZGltZ3JheVwiOiBcIiM2OTY5NjlcIixcbiAgXCJ3aGl0ZVwiOiBcIiNmZmZcIixcbiAgXCJkZWZhdWx0X2JsdWVcIjogXCIjMzY3MGIzXCIsXG4gIFwiZGFya190ZWFsXCI6IFwiIzAwOTRhM1wiLFxuICBcInRlYWxcIjogXCIjMDA5M2E0XCIsXG4gIFwiYXBwbGFiX2J1dHRvbl90ZWFsXCI6IFwiIzFhYmM5Y1wiLFxuICBcImxpZ2h0X3RlYWxcIjogXCIjNTljYWQzXCIsXG4gIFwibGlnaHRpc2hfdGVhbFwiOiBcIiM4MGQ2ZGVcIixcbiAgXCJsaWdodGVyX3RlYWxcIjogXCIjYTZlM2U4XCIsXG4gIFwibGlnaHRlc3RfdGVhbFwiOiBcIiNkOWYzZjVcIixcbiAgXCJhaV9ydWJyaWNfY3lhblwiOiBcIiMzY2ZmZjhcIixcbiAgXCJwdXJwbGVcIjogXCIjOGM1MmJhXCIsXG4gIFwibGlnaHRfcHVycGxlXCI6IFwiI2E2OWJjMVwiLFxuICBcImxpZ2h0ZXJfcHVycGxlXCI6IFwiI2NmYzlkZVwiLFxuICBcImxpZ2h0ZXN0X3B1cnBsZVwiOiBcIiNlYmU4ZjFcIixcbiAgXCJjeWFuXCI6IFwiIzAwOTRjYVwiLFxuICBcImxpZ2h0X2N5YW5cIjogXCIjNTliOWRjXCIsXG4gIFwibGlnaHRlcl9jeWFuXCI6IFwiI2E2ZGFlZFwiLFxuICBcImxpZ2h0ZXN0X2N5YW5cIjogXCIjZDllZmY3XCIsXG4gIFwiYWxtb3N0X3doaXRlX2N5YW5cIjogXCIjZjVmY2ZmXCIsXG4gIFwib3JhbmdlXCI6IFwiI2ZmYTQwMFwiLFxuICBcImxpZ2h0X29yYW5nZVwiOiBcIiNmZmM0NTlcIixcbiAgXCJsaWdodGVyX29yYW5nZVwiOiBcIiNmZmUwYTZcIixcbiAgXCJsaWdodGVzdF9vcmFuZ2VcIjogXCIjZmZmMmQ5XCIsXG4gIFwiZGFya19vcmFuZ2VcIjogXCIjZmY4NjAwXCIsXG4gIFwiZ3JlZW5cIjogXCIjYjliZjE1XCIsXG4gIFwibGlnaHRfZ3JlZW5cIjogXCIjZDFkNTY3XCIsXG4gIFwibGlnaHRlcl9ncmVlblwiOiBcIiNlN2U5YWRcIixcbiAgXCJsaWdodGVzdF9ncmVlblwiOiBcIiNmNWY1ZGNcIixcbiAgXCJoaWdobGlnaHRfZ3JlZW5cIjogXCIjOGFmYzliXCIsXG4gIFwieWVsbG93XCI6IFwiI2ZmYjgxZFwiLFxuICBcImxpZ2h0X3llbGxvd1wiOiBcIiNmZmRiNzRcIixcbiAgXCJsaWdodGVyX3llbGxvd1wiOiBcIiNmZmViYjVcIixcbiAgXCJsaWdodGVzdF95ZWxsb3dcIjogXCIjZmZmN2RmXCIsXG4gIFwiZ29sZGVucm9kXCI6IFwiI2RhYTUyMFwiLFxuICBcImhlYWRlcl90ZXh0XCI6IFwiI2ZmZlwiLFxuICBcImJrZ25kX2NvbG9yXCI6IFwiIzAwOTNhNFwiLFxuICBcImluc2V0X2NvbG9yXCI6IFwiI2M2Y2FjZFwiLFxuICBcImRhcmtfY29sb3JcIjogXCIjOGM1MmJhXCIsXG4gIFwiaGRyX2NvbG9yXCI6IFwiIzhjNTJiYVwiLFxuICBcInJlZFwiOiBcIiNjMDBcIixcbiAgXCJsaWdodGVzdF9yZWRcIjogXCIjZmNjXCIsXG4gIFwiZGFya19yZWRcIjogXCIjZDYyOTExXCIsXG4gIFwicmVhbGdyZWVuXCI6IFwiIzAwODAwMFwiLFxuICBcInJlYWx5ZWxsb3dcIjogXCIjZmYwXCIsXG4gIFwibXVzdGFyZHllbGxvd1wiOiBcIiNlZmNkMWNcIixcbiAgXCJ0d2l0dGVyX2JsdWVcIjogXCIjMDBhY2VkXCIsXG4gIFwiZmFjZWJvb2tfYmx1ZVwiOiBcIiMzYjU5OThcIixcbiAgXCJsaW5rZWRpbl9ibHVlXCI6IFwiIzAwNzdCNVwiLFxuICBcImRhcmtfYmx1ZVwiOiBcIiMwMDY0N2ZcIixcbiAgXCJibG9ja2x5X2ZseW91dF9ncmF5XCI6IFwiI2RkZFwiLFxuICBcImRlZmF1bHRfdGV4dFwiOiBcIiMzMzNcIixcbiAgXCJib3JkZXJfZ3JheVwiOiBcIiNiYmJcIixcbiAgXCJib3JkZXJfbGlnaHRfZ3JheVwiOiBcIiNkOGQ4ZDhcIixcbiAgXCJ0YWJsZV9oZWFkZXJcIjogXCIjZWNlY2VjXCIsXG4gIFwidGFibGVfbGlnaHRfcm93XCI6IFwiI2ZjZmNmY1wiLFxuICBcInRhYmxlX2Rhcmtfcm93XCI6IFwiI2Y0ZjRmNFwiLFxuICBcImxldmVsX3N1Ym1pdHRlZFwiOiBcIiM4YzUyYmFcIixcbiAgXCJsZXZlbF9wZXJmZWN0XCI6IFwicmdiKDE0LCAxOTAsIDE0KVwiLFxuICBcImxldmVsX3Bhc3NlZFwiOiBcInJnYigxNTksIDIxMiwgMTU5KVwiLFxuICBcImxldmVsX2F0dGVtcHRlZFwiOiBcIiNmZjBcIixcbiAgXCJsZXZlbF9ub3RfdHJpZWRcIjogXCIjZmVmZWZlXCIsXG4gIFwibGV2ZWxfY3VycmVudFwiOiBcIiNmZmE0MDBcIixcbiAgXCJsZXZlbF9yZXZpZXdfcmVqZWN0ZWRcIjogXCIjYzAwXCIsXG4gIFwibGV2ZWxfcmV2aWV3X2FjY2VwdGVkXCI6IFwicmdiKDExLCAxNDIsIDExKVwiLFxuICBcImFzc2Vzc21lbnRcIjogXCIjMDA5NGNhXCIsXG4gIFwid29ya3NwYWNlX3J1bm5pbmdfYmFja2dyb3VuZFwiOiBcIiNlNWU1ZTVcIixcbiAgXCJkYXJrX3B1cnBsZVwiOiBcIiM2ODJBNzdcIixcbiAgXCJicmlnaHRfZ3JlZW5cIjogXCIjMGViZTBlXCIsXG4gIFwibmVvbl9waW5rXCI6IFwiI2U5MTE4ZlwiLFxuICBcImxpbmtfY29sb3JcIjogXCIjMDU5NmNlXCIsXG4gIFwic2hhZG93XCI6IFwicmdiYSgwLCAwLCAwLCAwLjMpXCIsXG4gIFwiYm9vdHN0cmFwX2J1dHRvbl9ibHVlXCI6IFwiIzMzN2FiN1wiLFxuICBcImJvb3RzdHJhcF9idXR0b25fcmVkXCI6IFwiI2Q5NTM0ZlwiLFxuICBcImJvb3RzdHJhcF9lcnJvcl9iYWNrZ3JvdW5kXCI6IFwiI2YyZGVkZVwiLFxuICBcImJvb3RzdHJhcF9lcnJvcl90ZXh0XCI6IFwiI2I5NGE0OFwiLFxuICBcImJvb3RzdHJhcF92M19lcnJvcl90ZXh0XCI6IFwiI2E5NDQ0MlwiLFxuICBcImJvb3RzdHJhcF9lcnJvcl9ib3JkZXJcIjogXCIjZWJjY2QxXCIsXG4gIFwiYm9vdHN0cmFwX3dhcm5pbmdfYmFja2dyb3VuZFwiOiBcIiNmY2Y4ZTNcIixcbiAgXCJib290c3RyYXBfd2FybmluZ190ZXh0XCI6IFwiI2MwOTg1M1wiLFxuICBcImJvb3RzdHJhcF93YXJuaW5nX2JvcmRlclwiOiBcIiNmYWViY2NcIixcbiAgXCJib290c3RyYXBfYm9yZGVyX2NvbG9yXCI6IFwiI2NjY2NjY1wiLFxuICBcImJvb3RzdHJhcF9zdWNjZXNzX2JhY2tncm91bmRcIjogXCIjZGZmMGQ4XCIsXG4gIFwiYm9vdHN0cmFwX3N1Y2Nlc3NfdGV4dFwiOiBcIiM0Njg4NDdcIixcbiAgXCJib290c3RyYXBfc3VjY2Vzc19ib3JkZXJcIjogXCIjZDZlOWM2XCIsXG4gIFwiZHJvcGxldF9saWdodF9ncmVlblwiOiBcIiNkM2U5NjVcIixcbiAgXCJkcm9wbGV0X2JsdWVcIjogXCIjNjRiNWY2XCIsXG4gIFwiZHJvcGxldF9icmlnaHRfYmx1ZVwiOiBcIiMxOWMzZTFcIixcbiAgXCJkcm9wbGV0X3llbGxvd1wiOiBcIiNmZmYxNzZcIixcbiAgXCJkcm9wbGV0X29yYW5nZVwiOiBcIiNmZmI3NGRcIixcbiAgXCJkcm9wbGV0X3JlZFwiOiBcIiNmNzgxODNcIixcbiAgXCJkcm9wbGV0X2N5YW5cIjogXCIjNGRkMGUxXCIsXG4gIFwiZHJvcGxldF9waW5rXCI6IFwiI2Y1N2FjNlwiLFxuICBcImRyb3BsZXRfcHVycGxlXCI6IFwiI2JiNzdjN1wiLFxuICBcImRyb3BsZXRfZ3JlZW5cIjogXCIjNjhkOTk1XCIsXG4gIFwiZHJvcGxldF93aGl0ZVwiOiBcIiNmZmZcIixcbiAgXCJvY2VhbnNfZGVlcF9ibHVlXCI6IFwicmdiKDIsIDAsIDI4KVwiLFxuICBcImRhcmtfYmxhY2tcIjogXCIjMTIxMjEyXCIsXG4gIFwiYnJhbmRfcHJpbWFyeV9saWdodFwiOiBcIiNFMEY4RjlcIixcbiAgXCJicmFuZF9wcmltYXJ5X2RlZmF1bHRcIjogXCIjMDA5RUIwXCIsXG4gIFwiYnJhbmRfcHJpbWFyeV9kYXJrXCI6IFwiIzAwNzc4NVwiLFxuICBcImJyYW5kX3NlY29uZGFyeV9saWdodFwiOiBcIiNFMEQxRUNcIixcbiAgXCJicmFuZF9zZWNvbmRhcnlfZGVmYXVsdFwiOiBcIiM4QzUyQkFcIixcbiAgXCJicmFuZF9zZWNvbmRhcnlfZGFya1wiOiBcIiM2QzQ2OEFcIixcbiAgXCJicmFuZF9hY2NlbnRfZGVmYXVsdFwiOiBcIiNFRDYwNjBcIixcbiAgXCJicmFuZF90ZWFsXzVcIjogXCIjREZGMkY0XCIsXG4gIFwicHJvZHVjdF9hZmZpcm1hdGl2ZV9kZWZhdWx0XCI6IFwiIzNFQTMzRVwiLFxuICBcInByb2R1Y3RfbmVnYXRpdmVfbGlnaHRcIjogXCIjRkRFQkU5XCIsXG4gIFwicHJvZHVjdF9uZWdhdGl2ZV9kZWZhdWx0XCI6IFwiI0U1MzExQVwiLFxuICBcInByb2R1Y3RfbmVnYXRpdmVfZGFya1wiOiBcIiNBQTI1MTNcIixcbiAgXCJwcm9kdWN0X2NhdXRpb25fZGVmYXVsdFwiOiBcIiNGOUNCMjhcIixcbiAgXCJwcm9kdWN0X2luZm9ybWF0aW9uX2RlZmF1bHRcIjogXCIjMDA3QUNDXCIsXG4gIFwibmV1dHJhbF93aGl0ZVwiOiBcIiNGRkZGRkZcIixcbiAgXCJuZXV0cmFsX2xpZ2h0XCI6IFwiI0Y3RjhGQVwiLFxuICBcIm5ldXRyYWxfZ3JheTEwXCI6IFwiI0VBRUJFQlwiLFxuICBcIm5ldXRyYWxfZGFyazEwXCI6IFwiI0VBRUNFRlwiLFxuICBcIm5ldXRyYWxfZGFyazIwXCI6IFwiI0QxRDREOFwiLFxuICBcIm5ldXRyYWxfZGFyazMwXCI6IFwiI0JFQzJDN1wiLFxuICBcIm5ldXRyYWxfZGFyazQwXCI6IFwiI0FCQjBCNlwiLFxuICBcIm5ldXRyYWxfZGFyazUwXCI6IFwiIzk4OUVBNVwiLFxuICBcIm5ldXRyYWxfZGFyazYwXCI6IFwiIzg1OEM5NFwiLFxuICBcIm5ldXRyYWxfZGFyazcwXCI6IFwiIzcyN0E4M1wiLFxuICBcIm5ldXRyYWxfZGFyazgwXCI6IFwiIzVGNjg3MlwiLFxuICBcIm5ldXRyYWxfZGFyazkwXCI6IFwiIzRDNTY2MVwiLFxuICBcIm5ldXRyYWxfZGFya1wiOiBcIiMyOTJGMzZcIixcbiAgXCJnb29nbGVfYnJhbmRfY29sb3JcIjogXCIjMEY5RDU4XCIsXG4gIFwibWljcm9zb2Z0X2JyYW5kX2NvbG9yXCI6IFwiI0ZGQjkwMFwiLFxuICBcImZhY2Vib29rX2JyYW5kX2NvbG9yXCI6IFwiIzNCNTk5OFwiLFxuICBcImNsZXZlcl9icmFuZF9jb2xvclwiOiBcIiMxNDY0RkZcIixcbiAgXCJsaWdodF9wcmltYXJ5XzEwMFwiOiBcIiNCRkU0RThcIixcbiAgXCJsaWdodF9wcmltYXJ5XzUwMFwiOiBcIiMwMDkzQTRcIixcbiAgXCJsaWdodF9wcmltYXJ5XzcwMFwiOiBcIiMwMDc3ODVcIixcbiAgXCJsaWdodF9zZWNvbmRhcnlfMTAwXCI6IFwiI0UyRDRFRVwiLFxuICBcImxpZ2h0X3NlY29uZGFyeV81MDBcIjogXCIjOEM1MkJBXCIsXG4gIFwibGlnaHRfc2Vjb25kYXJ5XzcwMFwiOiBcIiM2QzQ2OEFcIixcbiAgXCJsaWdodF9ncmF5XzUwXCI6IFwiI0Y3RjhGQVwiLFxuICBcImxpZ2h0X2dyYXlfMTAwXCI6IFwiI0VBRUNFRlwiLFxuICBcImxpZ2h0X2dyYXlfMjAwXCI6IFwiI0QxRDREOFwiLFxuICBcImxpZ2h0X2dyYXlfMzAwXCI6IFwiI0JFQzJDN1wiLFxuICBcImxpZ2h0X2dyYXlfNDAwXCI6IFwiI0FCQjBCNlwiLFxuICBcImxpZ2h0X2dyYXlfNTAwXCI6IFwiIzk4OUVBNVwiLFxuICBcImxpZ2h0X2dyYXlfNjAwXCI6IFwiIzg1OEM5NFwiLFxuICBcImxpZ2h0X2dyYXlfNzAwXCI6IFwiIzcyN0E4M1wiLFxuICBcImxpZ2h0X2dyYXlfODAwXCI6IFwiIzVGNjg3MlwiLFxuICBcImxpZ2h0X2dyYXlfOTAwXCI6IFwiIzRDNTY2MVwiLFxuICBcImxpZ2h0X2dyYXlfOTUwXCI6IFwiIzM5NDQ1MFwiLFxuICBcImxpZ2h0X2FmZmlybWF0aXZlXzEwMFwiOiBcIiNFMkYxRTJcIixcbiAgXCJsaWdodF9hZmZpcm1hdGl2ZV81MDBcIjogXCIjM0VBMzNFXCIsXG4gIFwibGlnaHRfYWZmaXJtYXRpdmVfNzAwXCI6IFwiIzJENzQyRFwiLFxuICBcImxpZ2h0X25lZ2F0aXZlXzEwMFwiOiBcIiNGQkUwRERcIixcbiAgXCJsaWdodF9uZWdhdGl2ZV81MDBcIjogXCIjRTUzMTFBXCIsXG4gIFwibGlnaHRfbmVnYXRpdmVfNzAwXCI6IFwiI0IyNDk0OVwiLFxuICBcImxpZ2h0X2NhdXRpb25fMTAwXCI6IFwiI0ZFRjdERlwiLFxuICBcImxpZ2h0X2NhdXRpb25fNTAwXCI6IFwiI0Y5Q0IyOFwiLFxuICBcImxpZ2h0X2NhdXRpb25fNzAwXCI6IFwiI0M3QTIyMFwiLFxuICBcImxpZ2h0X2FjY2VudF8xMDBcIjogXCIjRkFEN0Q3XCIsXG4gIFwibGlnaHRfYWNjZW50XzUwMFwiOiBcIiNFRDYwNjBcIixcbiAgXCJsaWdodF9hY2NlbnRfNzAwXCI6IFwiI0Q4NEM0Q1wiLFxuICBcImxpZ2h0X2FxdWFfMTAwXCI6IFwiI0NFRkZGRFwiLFxuICBcImxpZ2h0X2FxdWFfNTAwXCI6IFwiIzNDRkZGOFwiLFxuICBcImxpZ2h0X2FxdWFfNzAwXCI6IFwiIzMwQ0NDNlwiLFxuICBcImxpZ2h0X29yYW5nZV8xMDBcIjogXCIjRkZFRENDXCIsXG4gIFwibGlnaHRfb3JhbmdlXzUwMFwiOiBcIiNGRkE0MDBcIixcbiAgXCJsaWdodF9vcmFuZ2VfNzAwXCI6IFwiI0NDODMwMFwiLFxuICBcImxpZ2h0X2luZm9fMTAwXCI6IFwiI0RDRUZGQlwiLFxuICBcImxpZ2h0X2luZm9fNTAwXCI6IFwiIzE4OTJFM1wiLFxuICBcImxpZ2h0X2luZm9fNzAwXCI6IFwiIzEzNzVCNlwiLFxuICBcImxpZ2h0X3doaXRlXCI6IFwiI0ZGRkZGRlwiLFxuICBcImxpZ2h0X2JsYWNrXCI6IFwiIzI5MkYzNlwiLFxuICBcImxpZ2h0X2JsYWNrX29wYWNpdHlfOTBcIjogXCJyZ2JhKDQxLCA0NywgNTQsIDAuOTApXCIsXG4gIFwibGlnaHRfYmxhY2tfb3BhY2l0eS04MFwiOiBcInJnYmEoNDEsIDQ3LCA1NCwgMC44MClcIixcbiAgXCJsaWdodF9ibGFja19vcGFjaXR5LTcwXCI6IFwicmdiYSg0MSwgNDcsIDU0LCAwLjcwKVwiLFxuICBcImxpZ2h0X2JsYWNrX29wYWNpdHktNjBcIjogXCJyZ2JhKDQxLCA0NywgNTQsIDAuNjApXCIsXG4gIFwibGlnaHRfYmxhY2tfb3BhY2l0eS01MFwiOiBcInJnYmEoNDEsIDQ3LCA1NCwgMC41MClcIixcbiAgXCJsaWdodF9ibGFja19vcGFjaXR5LTQwXCI6IFwicmdiYSg0MSwgNDcsIDU0LCAwLjQwKVwiLFxuICBcImxpZ2h0X2JsYWNrX29wYWNpdHktMzBcIjogXCJyZ2JhKDQxLCA0NywgNTQsIDAuMzApXCIsXG4gIFwibGlnaHRfYmxhY2tfb3BhY2l0eS0yMFwiOiBcInJnYmEoNDEsIDQ3LCA1NCwgMC4yMClcIixcbiAgXCJsaWdodF9ibGFja19vcGFjaXR5LTEwXCI6IFwicmdiYSg0MSwgNDcsIDU0LCAwLjEwKVwiLFxufTtcbiIsIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIG5hdGl2ZUNvZGVTdHJpbmcgPSAnW25hdGl2ZSBjb2RlXSc7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcygpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0aWYgKGFyZy5sZW5ndGgpIHtcblx0XHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goaW5uZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAoYXJnLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICYmICFhcmcudG9TdHJpbmcudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZy50b1N0cmluZygpKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iXSwibmFtZXMiOlsiY29tbW9uU3R5bGVzIiwibW9kdWxlIiwiZXhwb3J0cyIsInN0eWxlQ29uc3RhbnRzIiwicmVxdWlyZSIsImNvbG9yIiwiaGlkZGVuIiwiZGlzcGxheSIsInB1cnBsZUhlYWRlciIsImhlaWdodCIsImJhY2tncm91bmRDb2xvciIsInB1cnBsZSIsIndoaXRlIiwib3ZlcmZsb3dZIiwiV2Via2l0VXNlclNlbGVjdCIsIk1velVzZXJTZWxlY3QiLCJtc1VzZXJTZWxlY3QiLCJ1c2VyU2VsZWN0IiwicHVycGxlSGVhZGVyVW5mb2N1c2VkIiwibGlnaHRlcl9wdXJwbGUiLCJuZXV0cmFsX3doaXRlIiwidGVhY2hlckJsdWVIZWFkZXIiLCJjeWFuIiwibGlnaHRlc3RfY3lhbiIsInRlYWNoZXJIZWFkZXJVbmZvY3VzZWQiLCJkYXJrX2NoYXJjb2FsIiwibWluZWNyYWZ0SGVhZGVyIiwiYnV0dG9uIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJmb250U2l6ZSIsImJ1YmJsZSIsImJsYWNrIiwibWFyZ2luQm90dG9tIiwicG9zaXRpb24iLCJjdXJzb3IiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcHJvcFR5cGVzIiwiX3JhZGl1bSIsIl9yZWFjdCIsIl9yZWFjdFJlZHV4IiwiX2xvY2FsZSIsIl94IiwiX2NvbW1vblN0eWxlcyIsIl9Qcm90ZWN0ZWRTdGF0ZWZ1bERpdiIsIl9Ta2lwQnV0dG9uIiwiZSIsIl9fZXNNb2R1bGUiLCJGaW5pc2hCdXR0b24iLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImlkIiwiY2xhc3NOYW1lIiwic3JjIiwiYWx0IiwibXNnIiwiZmluaXNoIiwiUnVuQnV0dG9uIiwiUmFkaXVtIiwicHJvcHMiLCJjbGFzc05hbWVzIiwic3R5bGUiLCJydW5CdXR0b25UZXh0IiwicnVuUHJvZ3JhbSIsImJsYW5rSW1nIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYm9vbCIsIm9iamVjdCIsInN0cmluZyIsImRpc3BsYXlOYW1lIiwiUmVzZXRCdXR0b24iLCJoaWRlVGV4dCIsInJlc2V0UHJvZ3JhbSIsIlVuY29ubmVjdGVkR2FtZUJ1dHRvbnMiLCJub1J1blJlc2V0QnV0dG9uIiwiRnJhZ21lbnQiLCJoaWRlUnVuQnV0dG9uIiwiaGlkZVJlc2V0QnV0dG9uIiwiY2hpbGRyZW4iLCJzaG93U2tpcEJ1dHRvbiIsIm5leHRMZXZlbFVybCIsInNob3dGaW5pc2hCdXR0b24iLCJ3aWRnZXRNb2RlIiwibm9kZSIsImNvbm5lY3QiLCJzdGF0ZSIsInBhZ2VDb25zdGFudHMiLCJpc0NoYWxsZW5nZUxldmVsIiwiX2xvZGFzaCIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJQcm90ZWN0ZWRTdGF0ZWZ1bERpdiIsIl9SZWFjdCRDb21wb25lbnQiLCJfaW5oZXJpdHNMb29zZSIsImNyZWF0ZSIsIl9wcm90byIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsInRoaXMiLCJjYW5VcGRhdGUiLCJjb21wb25lbnREaWRNb3VudCIsImNvbnRlbnRGdW5jdGlvbiIsInJlZnMiLCJyb290IiwiaW5uZXJIVE1MIiwiZ2V0Um9vdCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVuZGVyIiwiXyIsIm9taXQiLCJyZWYiLCJSZWFjdCIsIkNvbXBvbmVudCIsImZ1bmMiLCJjYW5Vbm1vdW50IiwiZGVmYXVsdCIsIlNraXBCdXR0b24iLCJza2lwUHV6emxlIiwiaXNSZXF1aXJlZCIsImhhc093biIsImNsYXNzZXMiLCJhcmciLCJhcmdUeXBlIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsImlubmVyIiwidG9TdHJpbmciLCJpbmNsdWRlcyIsImtleSIsImpvaW4iXSwic291cmNlUm9vdCI6IiJ9