From 4af3174089e482d25e631308362f51fa0e5685ed Mon Sep 17 00:00:00 2001 From: Circle CI Date: Fri, 17 Jan 2025 23:01:27 +0000 Subject: [PATCH] Update GitHub Pages: 3721c7e8d6f7c8c1813d8f8443c4c060ecb1b363 --- ...e9377cb.iframe.bundle.js => 1242.faf03649.iframe.bundle.js | 2 +- 3419.ecbee334.iframe.bundle.js | 2 -- 3419.fb81e269.iframe.bundle.js | 2 ++ ...7d427e5.iframe.bundle.js => 5113.c2566c54.iframe.bundle.js | 2 +- ...ca5f5b5.iframe.bundle.js => 5422.f17f22ea.iframe.bundle.js | 4 ++-- ....LICENSE.txt => 5422.f17f22ea.iframe.bundle.js.LICENSE.txt | 0 ...ts-progress-LessonProgress-story.f548d646.iframe.bundle.js | 4 ++-- ...LessonProgress-story.f548d646.iframe.bundle.js.LICENSE.txt | 0 css/application.css | 2 +- iframe.html | 2 +- project.json | 2 +- ...iframe.bundle.js => runtime~main.74e63587.iframe.bundle.js | 4 ++-- ...ogress-DetailProgressTable-story.3cc47be7.iframe.bundle.js | 2 -- ...ogress-DetailProgressTable-story.b3fb7111.iframe.bundle.js | 2 ++ ...lates-progress-LessonGroup-story.166f9aaa.iframe.bundle.js | 2 -- ...lates-progress-LessonGroup-story.e8d08ddc.iframe.bundle.js | 2 ++ ...ress-ProgressLessonContent-story.14ca798c.iframe.bundle.js | 3 +++ ...sLessonContent-story.14ca798c.iframe.bundle.js.LICENSE.txt | 0 ...ress-ProgressLessonContent-story.ebcbd046.iframe.bundle.js | 3 --- ...-ProgressLessonTeacherInfo-story.23fbe5b2.iframe.bundle.js | 2 +- 20 files changed, 21 insertions(+), 21 deletions(-) rename 1242.8e9377cb.iframe.bundle.js => 1242.faf03649.iframe.bundle.js (99%) delete mode 100644 3419.ecbee334.iframe.bundle.js create mode 100644 3419.fb81e269.iframe.bundle.js rename 5113.a7d427e5.iframe.bundle.js => 5113.c2566c54.iframe.bundle.js (99%) rename 5422.bca5f5b5.iframe.bundle.js => 5422.f17f22ea.iframe.bundle.js (99%) rename 5422.bca5f5b5.iframe.bundle.js.LICENSE.txt => 5422.f17f22ea.iframe.bundle.js.LICENSE.txt (100%) rename code-studio-components-progress-LessonProgress-story.c331e4fc.iframe.bundle.js => code-studio-components-progress-LessonProgress-story.f548d646.iframe.bundle.js (99%) rename code-studio-components-progress-LessonProgress-story.c331e4fc.iframe.bundle.js.LICENSE.txt => code-studio-components-progress-LessonProgress-story.f548d646.iframe.bundle.js.LICENSE.txt (100%) rename runtime~main.4fd6fbc6.iframe.bundle.js => runtime~main.74e63587.iframe.bundle.js (98%) delete mode 100644 templates-progress-DetailProgressTable-story.3cc47be7.iframe.bundle.js create mode 100644 templates-progress-DetailProgressTable-story.b3fb7111.iframe.bundle.js delete mode 100644 templates-progress-LessonGroup-story.166f9aaa.iframe.bundle.js create mode 100644 templates-progress-LessonGroup-story.e8d08ddc.iframe.bundle.js create mode 100644 templates-progress-ProgressLessonContent-story.14ca798c.iframe.bundle.js rename templates-progress-ProgressLessonContent-story.ebcbd046.iframe.bundle.js.LICENSE.txt => templates-progress-ProgressLessonContent-story.14ca798c.iframe.bundle.js.LICENSE.txt (100%) delete mode 100644 templates-progress-ProgressLessonContent-story.ebcbd046.iframe.bundle.js rename templates-progress-ProgressLessonTeacherInfo-story.4e1eecdb.iframe.bundle.js => templates-progress-ProgressLessonTeacherInfo-story.23fbe5b2.iframe.bundle.js (99%) diff --git a/1242.8e9377cb.iframe.bundle.js b/1242.faf03649.iframe.bundle.js similarity index 99% rename from 1242.8e9377cb.iframe.bundle.js rename to 1242.faf03649.iframe.bundle.js index 6656f8c0..bc86fc3f 100644 --- a/1242.8e9377cb.iframe.bundle.js +++ b/1242.faf03649.iframe.bundle.js @@ -1,2 +1,2 @@ (self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[1242],{"./src/code-studio/isRtlRedux.js":(__unused_webpack_module,exports)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function locale(){var state=arguments.length>0&&void 0!==arguments[0]&&arguments[0],action=arguments.length>1?arguments[1]:void 0;if(action.type===SET_RTL)return action.isRtl;return state},exports.isRtlFromDOM=isRtlFromDOM,exports.setRtlFromDOM=exports.setRtl=void 0;var SET_RTL="isRtl/SET_RTL",setRtl=exports.setRtl=function setRtl(isRtl){return{type:SET_RTL,isRtl}};exports.setRtlFromDOM=function setRtlFromDOM(){return setRtl(isRtlFromDOM())};function isRtlFromDOM(){var head=document.getElementsByTagName("head")[0];if(head&&head.parentElement){var dir=head.parentElement.getAttribute("dir");return!(!dir||"rtl"!==dir.toLowerCase())}return!1}},"./src/code-studio/responsiveRedux.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ResponsiveSize=void 0,exports.default=function reducer(){var state=arguments.length>0&&void 0!==arguments[0]?arguments[0]:initialState,action=arguments.length>1?arguments[1]:void 0;if(action.type===SET_RESPONSIVE_SIZE&&state.responsiveSize!==action.responsiveSize)return _objectSpread(_objectSpread({},state),{},{responsiveSize:action.responsiveSize});return state},exports.getResponsiveBreakpoint=getResponsiveBreakpoint,exports.setResponsiveSize=void 0;var _utils=__webpack_require__("./src/utils.js");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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;rbreakpoint}));return void 0===responsiveSize?(console.error("No responsive size found for width ".concat(width,", defaulting to xs")),ResponsiveSize.xs):responsiveSize.responsiveSize}var initialState={responsiveSize:getResponsiveBreakpoint(window.innerWidth)}},"./src/templates/ToggleButton.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")),_radium=_interopRequireDefault(__webpack_require__("./node_modules/radium/es/index.js")),_react=function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}(__webpack_require__("./node_modules/react/index.js")),_ToggleButtonStyles=_interopRequireDefault(__webpack_require__("./src/templates/ToggleButtonStyles.js"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}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)}var ToggleButton=function(_Component){function ToggleButton(){return _Component.apply(this,arguments)||this}!function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(ToggleButton,_Component);var _proto=ToggleButton.prototype;return _proto.render=function render(){return _react.default.createElement("button",{type:"button",id:this.props.id,style:this.getStyle(),className:"no-outline "+(this.props.className||""),title:this.props.title,onClick:this.props.onClick},this.props.children)},_proto.getStyle=function getStyle(){return Object.assign({},{":focus":{outline:"none"}},_ToggleButtonStyles.default.buttonStyle,_ToggleButtonStyles.default.toggleButtonStyle,this.props.active?_ToggleButtonStyles.default.activeStyle:_ToggleButtonStyles.default.inactiveStyle,this.props.active&&this.props.activeColor&&{backgroundColor:this.props.activeColor},this.props.first?_ToggleButtonStyles.default.firstButtonStyle:null,this.props.last?_ToggleButtonStyles.default.lastButtonStyle:null,this.props.useRebrandedLikeStyles?_ToggleButtonStyles.default.rebrandedLikeButtonStyle:null,this.props.style)},ToggleButton}(_react.Component);!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}(ToggleButton,"propTypes",{id:_propTypes.default.string,className:_propTypes.default.string,active:_propTypes.default.bool.isRequired,first:_propTypes.default.bool,last:_propTypes.default.bool,activeColor:_propTypes.default.string,title:_propTypes.default.string,style:_propTypes.default.object,onClick:_propTypes.default.func,children:_propTypes.default.node,useRebrandedLikeStyles:_propTypes.default.bool});exports.default=(0,_radium.default)(ToggleButton);module.exports=exports.default},"./src/templates/ToggleButtonStyles.js":(module,__unused_webpack_exports,__webpack_require__)=>{var color=__webpack_require__("./src/util/color.js");module.exports={buttonStyle:{display:"inline-block",verticalAlign:"top",borderStyle:"solid",borderColor:color.light_gray,borderTopWidth:1,borderRightWidth:1,borderBottomWidth:1,borderLeftWidth:1,margin:"0 0 8px 0",padding:"2px 6px",fontSize:14},toggleButtonStyle:{borderRightWidth:"0 !important",borderTopLeftRadius:0,borderTopRightRadius:0,borderBottomRightRadius:0,borderBottomLeftRadius:0},firstButtonStyle:{borderBottomLeftRadius:4,borderTopLeftRadius:4},lastButtonStyle:{borderRightWidth:"1px !important",borderBottomRightRadius:4,borderTopRightRadius:4},activeStyle:{backgroundColor:color.orange,color:color.white,boxShadow:"2px 2px 5px "+color.shadow+" inset"},rebrandedLikeButtonStyle:{boxShadow:"none",padding:"7px 16px",fontWeight:600,fontSize:"0.875rem",lineHeight:"unset"},inactiveStyle:{backgroundColor:color.white,color:color.light_black,boxShadow:"0px 1px 5px "+color.shadow},hiddenStyle:{display:"none"},iconStyle:{margin:"0 0.3em"}}},"./src/templates/ToggleGroup.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedToggleGroup=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}(__webpack_require__("./node_modules/react/index.js")),_reactRedux=__webpack_require__("./node_modules/react-redux/es/index.js"),_ToggleButton=_interopRequireDefault(__webpack_require__("./src/templates/ToggleButton.jsx"));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}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)}var ToggleGroup=function(_Component){function ToggleGroup(){return _Component.apply(this,arguments)||this}!function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(ToggleGroup,_Component);var _proto=ToggleGroup.prototype;return _proto.setSelected=function setSelected(selected){this.props.onChange(selected)},_proto.render=function render(){var _this$props=this.props,isRtl=_this$props.isRtl,flex=_this$props.flex,spanStyle=isRtl?styles.flexButtonReverse:flex&&styles.flexButtons;return _react.default.createElement("span",{style:spanStyle},this.renderChildren())},_proto.renderChildren=function renderChildren(){var _this=this,children=_react.default.Children.toArray(this.props.children).filter((function(child){return!!child}));return children.map((function(child,index){var isSelected=child.props.value===_this.props.selected;return _react.default.createElement(_ToggleButton.default,{id:child.props.id,className:child.props.className,key:child.key,active:isSelected,first:0===index,last:index===children.length-1,activeColor:_this.props.activeColor,title:child.props.title,style:child.props.style,useRebrandedLikeStyles:_this.props.useRebrandedLikeStyles,onClick:isSelected?void 0:_this.setSelected.bind(_this,child.props.value)},child.props.children)}))},ToggleGroup}(_react.Component);!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}(ToggleGroup,"propTypes",{selected:_propTypes.default.string,activeColor:_propTypes.default.string,useRebrandedLikeStyles:_propTypes.default.bool,onChange:_propTypes.default.func.isRequired,flex:_propTypes.default.bool,children:function children(props,propName,componentName){var error,prop=props[propName];return _react.default.Children.count(prop)<1&&(error=new Error("".concat(componentName," must have at least one child button."))),_react.default.Children.forEach(prop,(function(child){child&&"button"!==child.type&&(error=new Error("".concat(componentName," should only have buttons as ")+"child elements."))})),error},isRtl:_propTypes.default.bool});var styles={flexButtons:{display:"flex"},flexButtonReverse:{display:"flex",flexDirection:"row-reverse"}};exports.UnconnectedToggleGroup=ToggleGroup,exports.default=(0,_reactRedux.connect)((function(state){return{isRtl:state.isRtl}}))(ToggleGroup)},"./src/templates/progress/ProgressDetailToggle.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedProgressDetailToggle=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_reactRedux=__webpack_require__("./node_modules/react-redux/es/index.js"),_progressRedux=__webpack_require__("./src/code-studio/progressRedux.ts"),_progressReduxSelectors=__webpack_require__("./src/code-studio/progressReduxSelectors.js"),_firehose=_interopRequireDefault(__webpack_require__("./src/metrics/firehose.js")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_ToggleGroup=_interopRequireDefault(__webpack_require__("./src/templates/ToggleGroup.jsx")),_groupToggleDetailActive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/groupToggleDetailActive.png")),_groupToggleDetailInactive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/groupToggleDetailInactive.png")),_groupToggleSummaryActive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/groupToggleSummaryActive.png")),_groupToggleSummaryInactive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/groupToggleSummaryInactive.png")),_toggleDetailActive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/toggleDetailActive.png")),_toggleDetailInactive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/toggleDetailInactive.png")),_toggleSummaryActive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/toggleSummaryActive.png")),_toggleSummaryInactive=_interopRequireDefault(__webpack_require__("./src/templates/progress/images/toggleSummaryInactive.png"));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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAAWElEQVR4AWP4//9/GxD//E8lADWrDWTw5//UB59p52I4GAXH9t6tOLb33oNje+49pQYGmQUykwHZUGoazgBi0AKPGjxqMCamZTq+W0mTnAcDo2C0zoO7GAAwoh96Y8e3+QAAAABJRU5ErkJggg=="},"./src/templates/progress/images/groupToggleDetailInactive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAAYUlEQVR4AWOoSF3UVp6y8GdZyoL/1MAgs0BmMpSnLvwMEqAmBplJOxfDwSg4tvduxbG99x4c23PvKTUwyCyQmQzIhlLTcAYQgxZ41OBRgzExLdPx3Uqa5DwYGAWjdR7cxQDMOFgjH064QwAAAABJRU5ErkJggg=="},"./src/templates/progress/images/groupToggleSummaryActive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QICFAQd3UBbHQAAAKtJREFUOMvtlCEOwkAQRd+OqIKDcA0sZwEDCt91NXAVsIRbEM5BTSv2I9iWZiFpKghmn/w/M5NMfj78CkleUqM3jSQ/8MvEH6OR5J2kBzBL7tXOuXlc/M0fozbgCLQDsY1aR+qP0QIHMh3ucr55Alug6H9kVMvVYg9wPd3LoLAb+OM/NipzgXUyVEQtxi1sJizt5032mYqovRbb9FQ4ZzkVuStyV+Su+G9XPAEHR/tdHoJiGAAAAABJRU5ErkJggg=="},"./src/templates/progress/images/groupToggleSummaryInactive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXBAMAAAD9xqKtAAAAIVBMVEUAAAB4ZaJ3ZKF2ZKB3ZqF3ZaG+tde+s9e+s9fAtNm/s9cBl+tXAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhAgIUAzNO18AVAAAAQElEQVQY02NgQAJCxooMTsYgoMgQbGwKxCBgChYXArNVGIgB6R1lDNM7QKCMYUVHFxCDQBdYPB3MriTKnAFyDwAcICqBavjlqwAAAABJRU5ErkJggg=="},"./src/templates/progress/images/toggleDetailActive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAAWklEQVR4AWP4//9/GxD//E8lADWrDWTw5//UB59p52I4GAULHzxrXXj/6c8F95/+pwYGmQUykwHZUGoazgBi0AKPGjxqMCamXTpe9PBZG01yHgyMgtE6D+5iAJNEO6l4m/U/AAAAAElFTkSuQmCC"},"./src/templates/progress/images/toggleDetailInactive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAAXklEQVR4AWNgWLunDYh/AvF/amCoWW1Ag/d+BglQE4PMpJ2L4WAULHzwrHXh/ac/F9x/+p8aGGQWyEwGZEOpaTgDiEELPGrwqMGYmHbpeNHDZ200yXkwMApG6zy4iwHRcmtODj8COgAAAABJRU5ErkJggg=="},"./src/templates/progress/images/toggleSummaryActive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QEfBicvUU//cAAAAKtJREFUOMvtlLENwjAURN93kQoWoGEzNggNVPRxl4ZMAJNBkwVIExccTaJYFpLTIBq/8p/vbMlfB79Ckpc0amGU5CO9SfQcoyRvkl7AJrlvMLPtFPxNzzE4oANCNAzTbCbVcwTgSmHG7s/e662ToAIwCOasPex3F4Dbo2+QzrOeDZz8TqKOTYJKoo7OHteGxn5nRmfRrxsEs2UrUn3Ni8tWlK4oXVG64u9d8QEqLgOqdcEqDwAAAABJRU5ErkJggg=="},"./src/templates/progress/images/toggleSummaryInactive.png":module=>{"use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAYAAAAP6L+eAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QEfBjoS9kvffQAAALhJREFUOMvtlLERglAQRN/9gCJMbMYOzO0AEojIISORCjTXChxr0YQiCFgDAf9gAASOyd/s397+u5nbWfgRjMutBFIg6mstULHf5QBc7wXqMo+fQwtUDiyeiKK+9oaUrPh01DtQ3U/xJqr+PL/4+Y3NjgSMrjg/m1KdUvUHMmjNWXXYbnKA06MpkDItPOCgdxKxLxJEErHXm2iFKwa9M6M27+oGrRmjK6b8ko2B4IqQFSErQlb8NyteNvx30d8zRqcAAAAASUVORK5CYII="}}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RyxVQUFXM0csV0FBQUEsUUFBVUUsS0FBS0MsV0FDMUI4RixpQkFBa0JqRyxXQUFBQSxRQUFVSyxLQUFLRixhQXdFckMsSUFBTWxCLE9BQVMsQ0FDYnlILFlBQWEsQ0FDWFksWUFBYSxFQUNiekcsWUFBYSxRQUNiQyxZQUFhSixPQUFBQSxRQUFNa0IsT0FFckJtRixhQUFjLENBQ1pRLGFBQWMsR0FFaEJOLEtBQU0sQ0FDSjNGLFNBQVUsR0FDVmtHLFlBQWEsRUFDYkMsYUFBYyxFQUNkQyxXQUFZLEVBQ1pDLGNBQWUsRUFFZkMsUUFBUyxJQUkrQnRQLFFBQUFBLGdDQUFHbU4scUJBQXFCbk4sUUFBQUEsU0FFckQsRUFBQXlMLFlBQUFBLFVBQ2IsU0FBQWxNLE9BQUssTUFBSyxDQUNSK08sUUFBUy9PLE1BQU1nUSxTQUFTQyxxQkFDeEIvQixjQUFlbE8sTUFBTWdRLFNBQVM5QixjQUM5QlksV0FBVyxFQUFBQSx3QkFBQUEsV0FBVTlPLE1BQU1nUSxVQUM1QixHQUNELENBQUM1QixpQkFBQUEsZUFBQUEsa0JBTlksQ0FPYlIscUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvY29kZS1zdHVkaW8vaXNSdGxSZWR1eC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvY29kZS1zdHVkaW8vcmVzcG9uc2l2ZVJlZHV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvVG9nZ2xlQnV0dG9uLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL1RvZ2dsZUJ1dHRvblN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL1RvZ2dsZUdyb3VwLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3Byb2dyZXNzL1Byb2dyZXNzRGV0YWlsVG9nZ2xlLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTRVRfUlRMID0gJ2lzUnRsL1NFVF9SVEwnO1xuZXhwb3J0IGNvbnN0IHNldFJ0bCA9IGlzUnRsID0+ICh7dHlwZTogU0VUX1JUTCwgaXNSdGx9KTtcbmV4cG9ydCBjb25zdCBzZXRSdGxGcm9tRE9NID0gKCkgPT4gc2V0UnRsKGlzUnRsRnJvbURPTSgpKTtcblxuLy8gRGFzaGJvYXJkIHNpZ25hbHMgd2hldGhlciBvciBub3Qgd2UncmUgaW4gcnRsIGJ5IHNldHRpbmcgXCJkaXJcIiBvbiB0aGUgcm9vdFxuLy8gZWxlbWVudC4gSW4gYW4gaWRlYWwgd29ybGQsIHJlZHV4IHdvdWxkIGJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGgsIGJ1dCB3ZSBoYXZlXG4vLyBDU1Mgc2VsZWN0b3JzIHRoYXQgZGVwZW5kIG9uIHRoaXMgRE9NIHN0YXRlLCBzb21lIG9mIHdoaWNoIGFyZSB1c2VkIGluIGNhc2VzXG4vLyB3aGVyZSB3ZSBkb24ndCBoYXZlIHJlZHV4LlxuLy8gSW5zdGVhZCB3ZSBoYXZlIHRoZSBET00gY29udGludWUgdG8gYmUgdGhlIHNvdXJjZSBvZiB0cnV0aCwgYW5kIHNldCBvdXIgc3RvcmVcbi8vIHN0YXRlIGFjY29yZGluZ2x5IHNvIHRoYXQgY29tcG9uZW50cyBjYW4gYWNjZXNzIHRoaXMgaW5mby5cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBsb29rcyBhdCB0aGUgRE9NIGFuZCBkZWNpZGVzIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGluIFJUTCBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSdGxGcm9tRE9NKCkge1xuICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgaWYgKGhlYWQgJiYgaGVhZC5wYXJlbnRFbGVtZW50KSB7XG4gICAgY29uc3QgZGlyID0gaGVhZC5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJyk7XG4gICAgcmV0dXJuICEhKGRpciAmJiBkaXIudG9Mb3dlckNhc2UoKSA9PT0gJ3J0bCcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2NhbGUoc3RhdGUgPSBmYWxzZSwgYWN0aW9uKSB7XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU0VUX1JUTCkge1xuICAgIHJldHVybiBhY3Rpb24uaXNSdGw7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuIiwiaW1wb3J0IHttYWtlRW51bX0gZnJvbSAnQGNkby9hcHBzL3V0aWxzJztcblxuY29uc3QgU0VUX1JFU1BPTlNJVkVfU0laRSA9ICdyZXNwb25zaXZlL1NFVF9SRVNQT05TSVZFX1NJWkUnO1xuZXhwb3J0IGNvbnN0IHNldFJlc3BvbnNpdmVTaXplID0gcmVzcG9uc2l2ZVNpemUgPT4gKHtcbiAgdHlwZTogU0VUX1JFU1BPTlNJVkVfU0laRSxcbiAgcmVzcG9uc2l2ZVNpemUsXG59KTtcblxuZXhwb3J0IGNvbnN0IFJlc3BvbnNpdmVTaXplID0gbWFrZUVudW0oJ2xnJywgJ21kJywgJ3NtJywgJ3hzJyk7XG5cbi8vIERlZmF1bHQgd2luZG93IHdpZHRocyB0aGF0IGFyZSB0aGUgc3RhcnRpbmcgcG9pbnRzIGZvciBlYWNoIHdpZHRoIGNhdGVnb3J5LlxuY29uc3QgQnJlYWtwb2ludHMgPSBbXG4gIHticmVha3BvaW50OiA5OTIsIHJlc3BvbnNpdmVTaXplOiBSZXNwb25zaXZlU2l6ZS5sZ30sXG4gIHticmVha3BvaW50OiA3MjAsIHJlc3BvbnNpdmVTaXplOiBSZXNwb25zaXZlU2l6ZS5tZH0sXG4gIHticmVha3BvaW50OiA2NTAsIHJlc3BvbnNpdmVTaXplOiBSZXNwb25zaXZlU2l6ZS5zbX0sXG4gIHticmVha3BvaW50OiAwLCByZXNwb25zaXZlU2l6ZTogUmVzcG9uc2l2ZVNpemUueHN9LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3BvbnNpdmVCcmVha3BvaW50KHdpZHRoKSB7XG4gIGNvbnN0IHJlc3BvbnNpdmVTaXplID0gQnJlYWtwb2ludHMuZmluZCgoe2JyZWFrcG9pbnR9KSA9PiB3aWR0aCA+IGJyZWFrcG9pbnQpO1xuICBpZiAocmVzcG9uc2l2ZVNpemUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgTm8gcmVzcG9uc2l2ZSBzaXplIGZvdW5kIGZvciB3aWR0aCAke3dpZHRofSwgZGVmYXVsdGluZyB0byB4c2BcbiAgICApO1xuICAgIHJldHVybiBSZXNwb25zaXZlU2l6ZS54cztcbiAgfVxuICByZXR1cm4gcmVzcG9uc2l2ZVNpemUucmVzcG9uc2l2ZVNpemU7XG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgcmVzcG9uc2l2ZVNpemU6IGdldFJlc3BvbnNpdmVCcmVha3BvaW50KHdpbmRvdy5pbm5lcldpZHRoKSxcbn07XG5cbi8qKlxuICogUmVkdWNlciBmb3IgcmVzcG9uc2l2ZSBzaXplcy4gT25seSByZXR1cm4gYSBuZXcgc3RhdGUgaWYgd2UndmUgYWN0dWFsbHlcbiAqIGNyb3NzZWQgaW50byBhIG5ldyBicmVha3BvaW50IHdpZHRoLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWR1Y2VyKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24pIHtcbiAgaWYgKFxuICAgIGFjdGlvbi50eXBlID09PSBTRVRfUkVTUE9OU0lWRV9TSVpFICYmXG4gICAgc3RhdGUucmVzcG9uc2l2ZVNpemUgIT09IGFjdGlvbi5yZXNwb25zaXZlU2l6ZVxuICApIHtcbiAgICByZXR1cm4gey4uLnN0YXRlLCByZXNwb25zaXZlU2l6ZTogYWN0aW9uLnJlc3BvbnNpdmVTaXplfTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG4iLCIvKiogQGZpbGUgQnV0dG9uIHRoYXQgY2FuIGJlIGFjdGl2ZSBvciBpbmFjdGl2ZSwgZm9yIHVzZSBpbnNpZGUgVG9nZ2xlR3JvdXAgKi9cbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHN0eWxlcyBmcm9tICcuL1RvZ2dsZUJ1dHRvblN0eWxlcyc7XG5cbmNsYXNzIFRvZ2dsZUJ1dHRvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmaXJzdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbGFzdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIHVzZVJlYnJhbmRlZExpa2VTdHlsZXM6IFByb3BUeXBlcy5ib29sLFxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgaWQ9e3RoaXMucHJvcHMuaWR9XG4gICAgICAgIHN0eWxlPXt0aGlzLmdldFN0eWxlKCl9XG4gICAgICAgIGNsYXNzTmFtZT17J25vLW91dGxpbmUgJyArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCAnJyl9XG4gICAgICAgIHRpdGxlPXt0aGlzLnByb3BzLnRpdGxlfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIGdldFN0eWxlKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgICc6Zm9jdXMnOiB7XG4gICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0eWxlcy5idXR0b25TdHlsZSxcbiAgICAgIHN0eWxlcy50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgIHRoaXMucHJvcHMuYWN0aXZlID8gc3R5bGVzLmFjdGl2ZVN0eWxlIDogc3R5bGVzLmluYWN0aXZlU3R5bGUsXG4gICAgICB0aGlzLnByb3BzLmFjdGl2ZSAmJlxuICAgICAgICB0aGlzLnByb3BzLmFjdGl2ZUNvbG9yICYmIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMucHJvcHMuYWN0aXZlQ29sb3IsXG4gICAgICAgIH0sXG4gICAgICB0aGlzLnByb3BzLmZpcnN0ID8gc3R5bGVzLmZpcnN0QnV0dG9uU3R5bGUgOiBudWxsLFxuICAgICAgdGhpcy5wcm9wcy5sYXN0ID8gc3R5bGVzLmxhc3RCdXR0b25TdHlsZSA6IG51bGwsXG4gICAgICB0aGlzLnByb3BzLnVzZVJlYnJhbmRlZExpa2VTdHlsZXNcbiAgICAgICAgPyBzdHlsZXMucmVicmFuZGVkTGlrZUJ1dHRvblN0eWxlXG4gICAgICAgIDogbnVsbCxcbiAgICAgIC8vIHVzZWQgdG8gb3ZlcnJpZGUgYW55IHN0eWxlIHByb3BlcnRpZXNcbiAgICAgIHRoaXMucHJvcHMuc3R5bGVcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGl1bShUb2dnbGVCdXR0b24pO1xuIiwiLyoqIEBmaWxlIFJldXNhYmxlIHN0eWxlcyBmb3IgaW50ZXJmYWNlIG1vZGUgdG9nZ2xlIGJ1dHRvbnMuICovXG5cbnZhciBjb2xvciA9IHJlcXVpcmUoJy4uL3V0aWwvY29sb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ1dHRvblN0eWxlOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyQ29sb3I6IGNvbG9yLmxpZ2h0X2dyYXksXG4gICAgYm9yZGVyVG9wV2lkdGg6IDEsXG4gICAgYm9yZGVyUmlnaHRXaWR0aDogMSxcbiAgICBib3JkZXJCb3R0b21XaWR0aDogMSxcbiAgICBib3JkZXJMZWZ0V2lkdGg6IDEsXG4gICAgbWFyZ2luOiAnMCAwIDhweCAwJyxcbiAgICBwYWRkaW5nOiAnMnB4IDZweCcsXG4gICAgZm9udFNpemU6IDE0LFxuICB9LFxuICB0b2dnbGVCdXR0b25TdHlsZToge1xuICAgIGJvcmRlclJpZ2h0V2lkdGg6ICcwICFpbXBvcnRhbnQnLFxuICAgIGJvcmRlclRvcExlZnRSYWRpdXM6IDAsXG4gICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IDAsXG4gICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IDAsXG4gICAgYm9yZGVyQm90dG9tTGVmdFJhZGl1czogMCxcbiAgfSxcbiAgZmlyc3RCdXR0b25TdHlsZToge1xuICAgIGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IDQsXG4gICAgYm9yZGVyVG9wTGVmdFJhZGl1czogNCxcbiAgfSxcbiAgbGFzdEJ1dHRvblN0eWxlOiB7XG4gICAgYm9yZGVyUmlnaHRXaWR0aDogJzFweCAhaW1wb3J0YW50JyxcbiAgICBib3JkZXJCb3R0b21SaWdodFJhZGl1czogNCxcbiAgICBib3JkZXJUb3BSaWdodFJhZGl1czogNCxcbiAgfSxcbiAgYWN0aXZlU3R5bGU6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLm9yYW5nZSxcbiAgICBjb2xvcjogY29sb3Iud2hpdGUsXG4gICAgYm94U2hhZG93OiAnMnB4IDJweCA1cHggJyArIGNvbG9yLnNoYWRvdyArICcgaW5zZXQnLFxuICB9LFxuICAvL1RPRE86IFtEZXNpZ24yLTUzXSByZW1vdmUgdGhpcyBvbmNlIHdlIGhhdmUgYSBTZWdtZW50ZWRCdXR0b24gY29tcG9uZW50IGFuZCB1c2UgdGhhdCBpbnN0ZWFkXG4gIHJlYnJhbmRlZExpa2VCdXR0b25TdHlsZToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgIHBhZGRpbmc6ICc3cHggMTZweCcsXG4gICAgZm9udFdlaWdodDogNjAwLFxuICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLFxuICAgIGxpbmVIZWlnaHQ6ICd1bnNldCcsXG4gIH0sXG4gIGluYWN0aXZlU3R5bGU6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLndoaXRlLFxuICAgIGNvbG9yOiBjb2xvci5saWdodF9ibGFjayxcbiAgICBib3hTaGFkb3c6ICcwcHggMXB4IDVweCAnICsgY29sb3Iuc2hhZG93LFxuICB9LFxuICBoaWRkZW5TdHlsZToge1xuICAgIGRpc3BsYXk6ICdub25lJyxcbiAgfSxcbiAgaWNvblN0eWxlOiB7XG4gICAgbWFyZ2luOiAnMCAwLjNlbScsXG4gIH0sXG59O1xuIiwiLyoqIEBmaWxlIFJvdyBvZiBidXR0b25zIGZvciBzd2l0Y2hpbmcgZWRpdG9yIG1vZGVzLiAqL1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBUb2dnbGVCdXR0b24gZnJvbSAnLi9Ub2dnbGVCdXR0b24nO1xuXG5jbGFzcyBUb2dnbGVHcm91cCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdXNlUmVicmFuZGVkTGlrZVN0eWxlczogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZmxleDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2hpbGRyZW4ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgbGV0IGVycm9yO1xuICAgICAgaWYgKFJlYWN0LkNoaWxkcmVuLmNvdW50KHByb3ApIDwgMSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtjb21wb25lbnROYW1lfSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNoaWxkIGJ1dHRvbi5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2gocHJvcCwgY2hpbGQgPT4ge1xuICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgLy8gZmFsc3kgY2hpbGRyZW4gYXJlIG9rIGFuZCB3aWxsIGJlIG9taXR0ZWQgYnkgcmVhY3QgcmVuZGVyaW5nXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZC50eXBlICE9PSAnYnV0dG9uJykge1xuICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgYCR7Y29tcG9uZW50TmFtZX0gc2hvdWxkIG9ubHkgaGF2ZSBidXR0b25zIGFzIGAgKyAnY2hpbGQgZWxlbWVudHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgLy8gUmVkdXhcbiAgICBpc1J0bDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc2V0U2VsZWN0ZWQoc2VsZWN0ZWQpIHtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHNlbGVjdGVkKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvLyBSZXZlcnNlIGNoaWxkcmVuIG9yZGVyIGlmIGxvY2FsZSBpcyBSVExcbiAgICBjb25zdCB7aXNSdGwsIGZsZXh9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBzcGFuU3R5bGUgPSBpc1J0bFxuICAgICAgPyBzdHlsZXMuZmxleEJ1dHRvblJldmVyc2VcbiAgICAgIDogZmxleCAmJiBzdHlsZXMuZmxleEJ1dHRvbnM7XG5cbiAgICByZXR1cm4gPHNwYW4gc3R5bGU9e3NwYW5TdHlsZX0+e3RoaXMucmVuZGVyQ2hpbGRyZW4oKX08L3NwYW4+O1xuICB9XG5cbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XG4gICAgLy8gUmVtb3ZlIGZhbHN5IGNoaWxkcmVuIHRvIG1ha2Ugc3VyZSBmaXJzdCBhbmQgbGFzdCBidXR0b25zIGFyZSByb3VuZGVkIHByb3Blcmx5LlxuICAgIGNvbnN0IGNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICBjaGlsZCA9PiAhIWNoaWxkXG4gICAgKTtcbiAgICByZXR1cm4gY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBjaGlsZC5wcm9wcy52YWx1ZSA9PT0gdGhpcy5wcm9wcy5zZWxlY3RlZDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUb2dnbGVCdXR0b25cbiAgICAgICAgICBpZD17Y2hpbGQucHJvcHMuaWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjaGlsZC5wcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAga2V5PXtjaGlsZC5rZXl9XG4gICAgICAgICAgYWN0aXZlPXtpc1NlbGVjdGVkfVxuICAgICAgICAgIGZpcnN0PXtpbmRleCA9PT0gMH1cbiAgICAgICAgICBsYXN0PXtpbmRleCA9PT0gY2hpbGRyZW4ubGVuZ3RoIC0gMX1cbiAgICAgICAgICBhY3RpdmVDb2xvcj17dGhpcy5wcm9wcy5hY3RpdmVDb2xvcn1cbiAgICAgICAgICB0aXRsZT17Y2hpbGQucHJvcHMudGl0bGV9XG4gICAgICAgICAgc3R5bGU9e2NoaWxkLnByb3BzLnN0eWxlfVxuICAgICAgICAgIC8qXG4gICAgICAgICAgIFRPRE86IFtEZXNpZ24yLTUzXSBSZW1vdmUgdGhpcyBwcm9wIGFuZCB1c2UgU2VnbWVudGVkIGJ1dHRvbiBpbnN0ZWFkLCBpZGVhbGx5IGFsc28gcmVtb3ZlIHRoaXMgY29tcG9uZW50IGFuZFxuICAgICAgICAgICAgcmVwbGFjZSBpdCB3aXRoIFNlZ21lbnRlZEJ1dHRvbnMgZXZlcnl3aGVyZSBvbmNlIHdlIGltcGxlbWVudCBTZWdtZW50ZWRCdXR0b24gRFNDTyBjb21wb25lbnQuXG4gICAgICAgICAgICBUZW1wb3Jhcnkgd29ya2Fyb3VuZCB1bnRpbCB3ZSBpbXBsZW1lbnQgU2VnbWVudGVkQnV0dG9uIERTQ08gY29tcG9uZW50XG4gICAgICAgICAgKi9cbiAgICAgICAgICB1c2VSZWJyYW5kZWRMaWtlU3R5bGVzPXt0aGlzLnByb3BzLnVzZVJlYnJhbmRlZExpa2VTdHlsZXN9XG4gICAgICAgICAgb25DbGljaz17XG4gICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRTZWxlY3RlZC5iaW5kKHRoaXMsIGNoaWxkLnByb3BzLnZhbHVlKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZC5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9Ub2dnbGVCdXR0b24+XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleEJ1dHRvbnM6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gIH0sXG4gIGZsZXhCdXR0b25SZXZlcnNlOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdyb3ctcmV2ZXJzZScsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVW5jb25uZWN0ZWRUb2dnbGVHcm91cCA9IFRvZ2dsZUdyb3VwO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlID0+ICh7XG4gIGlzUnRsOiBzdGF0ZS5pc1J0bCxcbn0pKShUb2dnbGVHcm91cCk7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQge3NldElzU3VtbWFyeVZpZXd9IGZyb20gJ0BjZG8vYXBwcy9jb2RlLXN0dWRpby9wcm9ncmVzc1JlZHV4JztcbmltcG9ydCB7aGFzR3JvdXBzfSBmcm9tICdAY2RvL2FwcHMvY29kZS1zdHVkaW8vcHJvZ3Jlc3NSZWR1eFNlbGVjdG9ycyc7XG5pbXBvcnQgZmlyZWhvc2VDbGllbnQgZnJvbSAnQGNkby9hcHBzL21ldHJpY3MvZmlyZWhvc2UnO1xuaW1wb3J0IGNvbG9yIGZyb20gJ0BjZG8vYXBwcy91dGlsL2NvbG9yJztcbmltcG9ydCBpMThuIGZyb20gJ0BjZG8vbG9jYWxlJztcblxuaW1wb3J0IFRvZ2dsZUdyb3VwIGZyb20gJy4uL1RvZ2dsZUdyb3VwJztcblxuaW1wb3J0IGdyb3VwRGV0YWlsQWN0aXZlIGZyb20gJy4vaW1hZ2VzL2dyb3VwVG9nZ2xlRGV0YWlsQWN0aXZlLnBuZyc7XG5pbXBvcnQgZ3JvdXBEZXRhaWxJbmFjdGl2ZSBmcm9tICcuL2ltYWdlcy9ncm91cFRvZ2dsZURldGFpbEluYWN0aXZlLnBuZyc7XG5pbXBvcnQgZ3JvdXBTdW1tYXJ5QWN0aXZlIGZyb20gJy4vaW1hZ2VzL2dyb3VwVG9nZ2xlU3VtbWFyeUFjdGl2ZS5wbmcnO1xuaW1wb3J0IGdyb3VwU3VtbWFyeUluYWN0aXZlIGZyb20gJy4vaW1hZ2VzL2dyb3VwVG9nZ2xlU3VtbWFyeUluYWN0aXZlLnBuZyc7XG5pbXBvcnQgZGV0YWlsQWN0aXZlIGZyb20gJy4vaW1hZ2VzL3RvZ2dsZURldGFpbEFjdGl2ZS5wbmcnO1xuaW1wb3J0IGRldGFpbEluYWN0aXZlIGZyb20gJy4vaW1hZ2VzL3RvZ2dsZURldGFpbEluYWN0aXZlLnBuZyc7XG5pbXBvcnQgc3VtbWFyeUFjdGl2ZSBmcm9tICcuL2ltYWdlcy90b2dnbGVTdW1tYXJ5QWN0aXZlLnBuZyc7XG5pbXBvcnQgc3VtbWFyeUluYWN0aXZlIGZyb20gJy4vaW1hZ2VzL3RvZ2dsZVN1bW1hcnlJbmFjdGl2ZS5wbmcnO1xuXG5jb25zdCBpbWFnZVNldHMgPSB7XG4gIHRlYWw6IHtcbiAgICBzdW1tYXJ5QWN0aXZlLFxuICAgIHN1bW1hcnlJbmFjdGl2ZSxcbiAgICBkZXRhaWxBY3RpdmUsXG4gICAgZGV0YWlsSW5hY3RpdmUsXG4gIH0sXG4gIHB1cnBsZToge1xuICAgIHN1bW1hcnlBY3RpdmU6IGdyb3VwU3VtbWFyeUFjdGl2ZSxcbiAgICBzdW1tYXJ5SW5hY3RpdmU6IGdyb3VwU3VtbWFyeUluYWN0aXZlLFxuICAgIGRldGFpbEFjdGl2ZTogZ3JvdXBEZXRhaWxBY3RpdmUsXG4gICAgZGV0YWlsSW5hY3RpdmU6IGdyb3VwRGV0YWlsSW5hY3RpdmUsXG4gIH0sXG59O1xuXG4vKipcbiAqIEEgdG9nZ2xlIHRoYXQgcHJvdmlkZXMgYSB3YXkgdG8gc3dpdGNoIGJldHdlZW4gZGV0YWlsIGFuZCBzdW1tYXJ5IHZpZXdzIG9mXG4gKiBvdXIgY291cnNlIHByb2dyZXNzLlxuICovXG5jbGFzcyBQcm9ncmVzc0RldGFpbFRvZ2dsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgd2hpdGVCb3JkZXI6IFByb3BUeXBlcy5ib29sLFxuICAgIHRvZ2dsZVN0dWR5R3JvdXA6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgICAvLyByZWR1eCBiYWNrZWRcbiAgICBpc1BsYzogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpc1N1bW1hcnlWaWV3OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGhhc0dyb3VwczogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzZXRJc1N1bW1hcnlWaWV3OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgIGNvbnN0IGlzU3VtbWFyeVZpZXcgPSAhdGhpcy5wcm9wcy5pc1N1bW1hcnlWaWV3O1xuICAgIHRoaXMucmVjb3JkRXZlbnQoaXNTdW1tYXJ5Vmlldyk7XG4gICAgdGhpcy5wcm9wcy5zZXRJc1N1bW1hcnlWaWV3KGlzU3VtbWFyeVZpZXcpO1xuICB9O1xuXG4gIHJlY29yZEV2ZW50ID0gaXNTdW1tYXJ5ID0+IHtcbiAgICBmaXJlaG9zZUNsaWVudC5wdXRSZWNvcmQoXG4gICAgICB7XG4gICAgICAgIHN0dWR5OiAncHJvZ3Jlc3MtZGV0YWlsLXRvZ2dsZScsXG4gICAgICAgIHN0dWR5X2dyb3VwOiB0aGlzLnByb3BzLnRvZ2dsZVN0dWR5R3JvdXAsXG4gICAgICAgIGV2ZW50OiBpc1N1bW1hcnkgPyAnc2VlLXN1bW1hcnknIDogJ3NlZS1kZXRhaWwnLFxuICAgICAgfSxcbiAgICAgIHtpbmNsdWRlVXNlcklkOiB0cnVlfVxuICAgICk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHt3aGl0ZUJvcmRlciwgaXNTdW1tYXJ5VmlldywgaGFzR3JvdXBzLCBpc1BsY30gPSB0aGlzLnByb3BzO1xuXG4gICAgbGV0IGFjdGl2ZUNvbG9yID0gdGhpcy5wcm9wcy5hY3RpdmVDb2xvcjtcbiAgICBpZiAoIWFjdGl2ZUNvbG9yKSB7XG4gICAgICBhY3RpdmVDb2xvciA9ICFpc1BsYyAmJiBoYXNHcm91cHMgPyBjb2xvci5wdXJwbGUgOiBjb2xvci5jeWFuO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlcyA9XG4gICAgICBhY3RpdmVDb2xvciA9PT0gY29sb3IucHVycGxlID8gaW1hZ2VTZXRzLnB1cnBsZSA6IGltYWdlU2V0cy50ZWFsO1xuICAgIHJldHVybiAoXG4gICAgICA8VG9nZ2xlR3JvdXBcbiAgICAgICAgc2VsZWN0ZWQ9e2lzU3VtbWFyeVZpZXcgPyAnc3VtbWFyeScgOiAnZGV0YWlsJ31cbiAgICAgICAgYWN0aXZlQ29sb3I9e2FjdGl2ZUNvbG9yfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX1cbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHZhbHVlPVwic3VtbWFyeVwiXG4gICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgd2hpdGVCb3JkZXJcbiAgICAgICAgICAgICAgPyB7Li4uc3R5bGVzLndoaXRlQm9yZGVyLCAuLi5zdHlsZXMuYnV0dG9uU3R5bGVzfVxuICAgICAgICAgICAgICA6IHN0eWxlcy5idXR0b25TdHlsZXNcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9e2lzU3VtbWFyeVZpZXcgPyBpbWFnZXMuc3VtbWFyeUFjdGl2ZSA6IGltYWdlcy5zdW1tYXJ5SW5hY3RpdmV9XG4gICAgICAgICAgICBzdHlsZT17c3R5bGVzLmljb259XG4gICAgICAgICAgICBhbHQ9e2kxOG4uc3VtbWFyeVZpZXcoKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHZhbHVlPVwiZGV0YWlsXCJcbiAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICB3aGl0ZUJvcmRlclxuICAgICAgICAgICAgICA/IHsuLi5zdHlsZXMud2hpdGVCb3JkZXIsIC4uLnN0eWxlcy5idXR0b25TdHlsZXN9XG4gICAgICAgICAgICAgIDogc3R5bGVzLmJ1dHRvblN0eWxlc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ1aXRlc3QtdG9nZ2xlLWRldGFpbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9e2lzU3VtbWFyeVZpZXcgPyBpbWFnZXMuZGV0YWlsSW5hY3RpdmUgOiBpbWFnZXMuZGV0YWlsQWN0aXZlfVxuICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pY29ufVxuICAgICAgICAgICAgYWx0PXtpMThuLmRldGFpbFZpZXcoKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvVG9nZ2xlR3JvdXA+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSB7XG4gIHdoaXRlQm9yZGVyOiB7XG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyQ29sb3I6IGNvbG9yLndoaXRlLFxuICB9LFxuICBidXR0b25TdHlsZXM6IHtcbiAgICBtYXJnaW5Cb3R0b206IDUsXG4gIH0sXG4gIGljb246IHtcbiAgICBmb250U2l6ZTogMjAsXG4gICAgcGFkZGluZ0xlZnQ6IDMsXG4gICAgcGFkZGluZ1JpZ2h0OiAzLFxuICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgcGFkZGluZ0JvdHRvbTogMyxcbiAgICAvLyBJZiBub3Qgc2V0IGV4cGxpY2l0bHksIGNzcyBzZXRzIFwiYnV0dG9uID4gaW1nXCIgdG8gMC42XG4gICAgb3BhY2l0eTogMSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBVbmNvbm5lY3RlZFByb2dyZXNzRGV0YWlsVG9nZ2xlID0gUHJvZ3Jlc3NEZXRhaWxUb2dnbGU7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QoXG4gIHN0YXRlID0+ICh7XG4gICAgaXNQbGM6ICEhc3RhdGUucHJvZ3Jlc3MuZGVlcGVyTGVhcm5pbmdDb3Vyc2UsXG4gICAgaXNTdW1tYXJ5Vmlldzogc3RhdGUucHJvZ3Jlc3MuaXNTdW1tYXJ5VmlldyxcbiAgICBoYXNHcm91cHM6IGhhc0dyb3VwcyhzdGF0ZS5wcm9ncmVzcyksXG4gIH0pLFxuICB7c2V0SXNTdW1tYXJ5Vmlld31cbikoUHJvZ3Jlc3NEZXRhaWxUb2dnbGUpO1xuIl0sIm5hbWVzIjpbImxvY2FsZSIsInN0YXRlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwidHlwZSIsIlNFVF9SVEwiLCJpc1J0bCIsInNldFJ0bCIsImV4cG9ydHMiLCJzZXRSdGxGcm9tRE9NIiwiaXNSdGxGcm9tRE9NIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJwYXJlbnRFbGVtZW50IiwiZGlyIiwiZ2V0QXR0cmlidXRlIiwidG9Mb3dlckNhc2UiLCJyZWR1Y2VyIiwiaW5pdGlhbFN0YXRlIiwiU0VUX1JFU1BPTlNJVkVfU0laRSIsInJlc3BvbnNpdmVTaXplIiwiX29iamVjdFNwcmVhZCIsIl91dGlscyIsInJlcXVpcmUiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwiaSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJSZXNwb25zaXZlU2l6ZSIsInNldFJlc3BvbnNpdmVTaXplIiwibWFrZUVudW0iLCJCcmVha3BvaW50cyIsImJyZWFrcG9pbnQiLCJsZyIsIm1kIiwic20iLCJ4cyIsImdldFJlc3BvbnNpdmVCcmVha3BvaW50Iiwid2lkdGgiLCJmaW5kIiwiX3JlZiIsImNvbnNvbGUiLCJlcnJvciIsImNvbmNhdCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yYWRpdW0iLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsInNldCIsIl9Ub2dnbGVCdXR0b25TdHlsZXMiLCJXZWFrTWFwIiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiVG9nZ2xlQnV0dG9uIiwiX0NvbXBvbmVudCIsIl9pbmhlcml0c0xvb3NlIiwiY3JlYXRlIiwiX3Byb3RvIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImlkIiwidGhpcyIsInByb3BzIiwic3R5bGUiLCJnZXRTdHlsZSIsImNsYXNzTmFtZSIsInRpdGxlIiwib25DbGljayIsImNoaWxkcmVuIiwiYXNzaWduIiwib3V0bGluZSIsInN0eWxlcyIsImJ1dHRvblN0eWxlIiwidG9nZ2xlQnV0dG9uU3R5bGUiLCJhY3RpdmUiLCJhY3RpdmVTdHlsZSIsImluYWN0aXZlU3R5bGUiLCJhY3RpdmVDb2xvciIsImJhY2tncm91bmRDb2xvciIsImZpcnN0IiwiZmlyc3RCdXR0b25TdHlsZSIsImxhc3QiLCJsYXN0QnV0dG9uU3R5bGUiLCJ1c2VSZWJyYW5kZWRMaWtlU3R5bGVzIiwicmVicmFuZGVkTGlrZUJ1dHRvblN0eWxlIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJmdW5jIiwibm9kZSIsIlJhZGl1bSIsIm1vZHVsZSIsImRlZmF1bHQiLCJjb2xvciIsImRpc3BsYXkiLCJ2ZXJ0aWNhbEFsaWduIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJDb2xvciIsImxpZ2h0X2dyYXkiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRXaWR0aCIsIm1hcmdpbiIsInBhZGRpbmciLCJmb250U2l6ZSIsImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsIm9yYW5nZSIsIndoaXRlIiwiYm94U2hhZG93Iiwic2hhZG93IiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJsaWdodF9ibGFjayIsImhpZGRlblN0eWxlIiwiaWNvblN0eWxlIiwiX3JlYWN0UmVkdXgiLCJfVG9nZ2xlQnV0dG9uIiwiVG9nZ2xlR3JvdXAiLCJzZXRTZWxlY3RlZCIsInNlbGVjdGVkIiwib25DaGFuZ2UiLCJfdGhpcyRwcm9wcyIsImZsZXgiLCJzcGFuU3R5bGUiLCJmbGV4QnV0dG9uUmV2ZXJzZSIsImZsZXhCdXR0b25zIiwicmVuZGVyQ2hpbGRyZW4iLCJfdGhpcyIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY2hpbGQiLCJtYXAiLCJpbmRleCIsImlzU2VsZWN0ZWQiLCJrZXkiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJwcm9wIiwiY291bnQiLCJFcnJvciIsImZsZXhEaXJlY3Rpb24iLCJjb25uZWN0IiwiX3Byb2dyZXNzUmVkdXgiLCJfcHJvZ3Jlc3NSZWR1eFNlbGVjdG9ycyIsIl9maXJlaG9zZSIsIl9jb2xvciIsIl9sb2NhbGUiLCJfVG9nZ2xlR3JvdXAiLCJfZ3JvdXBUb2dnbGVEZXRhaWxBY3RpdmUiLCJfZ3JvdXBUb2dnbGVEZXRhaWxJbmFjdGl2ZSIsIl9ncm91cFRvZ2dsZVN1bW1hcnlBY3RpdmUiLCJfZ3JvdXBUb2dnbGVTdW1tYXJ5SW5hY3RpdmUiLCJfdG9nZ2xlRGV0YWlsQWN0aXZlIiwiX3RvZ2dsZURldGFpbEluYWN0aXZlIiwiX3RvZ2dsZVN1bW1hcnlBY3RpdmUiLCJfdG9nZ2xlU3VtbWFyeUluYWN0aXZlIiwiaW1hZ2VTZXRzIiwidGVhbCIsInN1bW1hcnlBY3RpdmUiLCJzdW1tYXJ5SW5hY3RpdmUiLCJkZXRhaWxBY3RpdmUiLCJkZXRhaWxJbmFjdGl2ZSIsInB1cnBsZSIsImdyb3VwU3VtbWFyeUFjdGl2ZSIsImdyb3VwU3VtbWFyeUluYWN0aXZlIiwiZ3JvdXBEZXRhaWxBY3RpdmUiLCJncm91cERldGFpbEluYWN0aXZlIiwiUHJvZ3Jlc3NEZXRhaWxUb2dnbGUiLCJfUmVhY3QkQ29tcG9uZW50IiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJpc1N1bW1hcnlWaWV3IiwicmVjb3JkRXZlbnQiLCJzZXRJc1N1bW1hcnlWaWV3IiwiaXNTdW1tYXJ5IiwiZmlyZWhvc2VDbGllbnQiLCJwdXRSZWNvcmQiLCJzdHVkeSIsInN0dWR5X2dyb3VwIiwidG9nZ2xlU3R1ZHlHcm91cCIsImV2ZW50IiwiaW5jbHVkZVVzZXJJZCIsIndoaXRlQm9yZGVyIiwiaGFzR3JvdXBzIiwiaXNQbGMiLCJjeWFuIiwiaW1hZ2VzIiwiYnV0dG9uU3R5bGVzIiwic3JjIiwiaWNvbiIsImFsdCIsImkxOG4iLCJzdW1tYXJ5VmlldyIsImRldGFpbFZpZXciLCJib3JkZXJXaWR0aCIsIm1hcmdpbkJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJvcGFjaXR5IiwicHJvZ3Jlc3MiLCJkZWVwZXJMZWFybmluZ0NvdXJzZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RyxVQUFXM0csV0FBQUEsUUFBVUUsS0FBS0MsV0FDMUI4RixpQkFBa0JqRyxXQUFBQSxRQUFVSyxLQUFLRixhQXdFckMsSUFBTWxCLE9BQVMsQ0FDYnlILFlBQWEsQ0FDWFksWUFBYSxFQUNiekcsWUFBYSxRQUNiQyxZQUFhSixPQUFBQSxRQUFNa0IsT0FFckJtRixhQUFjLENBQ1pRLGFBQWMsR0FFaEJOLEtBQU0sQ0FDSjNGLFNBQVUsR0FDVmtHLFlBQWEsRUFDYkMsYUFBYyxFQUNkQyxXQUFZLEVBQ1pDLGNBQWUsRUFFZkMsUUFBUyxJQUkrQnRQLFFBQUFBLGdDQUFHbU4scUJBQXFCbk4sUUFBQUEsU0FFckQsRUFBQXlMLFlBQUFBLFVBQ2IsU0FBQWxNLE9BQUssTUFBSyxDQUNSK08sUUFBUy9PLE1BQU1nUSxTQUFTQyxxQkFDeEIvQixjQUFlbE8sTUFBTWdRLFNBQVM5QixjQUM5QlksV0FBVyxFQUFBQSx3QkFBQUEsV0FBVTlPLE1BQU1nUSxVQUM1QixHQUNELENBQUM1QixpQkFBQUEsZUFBQUEsa0JBTlksQ0FPYlIscUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvY29kZS1zdHVkaW8vaXNSdGxSZWR1eC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvY29kZS1zdHVkaW8vcmVzcG9uc2l2ZVJlZHV4LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvVG9nZ2xlQnV0dG9uLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL1RvZ2dsZUJ1dHRvblN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL1RvZ2dsZUdyb3VwLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3Byb2dyZXNzL1Byb2dyZXNzRGV0YWlsVG9nZ2xlLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTRVRfUlRMID0gJ2lzUnRsL1NFVF9SVEwnO1xuZXhwb3J0IGNvbnN0IHNldFJ0bCA9IGlzUnRsID0+ICh7dHlwZTogU0VUX1JUTCwgaXNSdGx9KTtcbmV4cG9ydCBjb25zdCBzZXRSdGxGcm9tRE9NID0gKCkgPT4gc2V0UnRsKGlzUnRsRnJvbURPTSgpKTtcblxuLy8gRGFzaGJvYXJkIHNpZ25hbHMgd2hldGhlciBvciBub3Qgd2UncmUgaW4gcnRsIGJ5IHNldHRpbmcgXCJkaXJcIiBvbiB0aGUgcm9vdFxuLy8gZWxlbWVudC4gSW4gYW4gaWRlYWwgd29ybGQsIHJlZHV4IHdvdWxkIGJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGgsIGJ1dCB3ZSBoYXZlXG4vLyBDU1Mgc2VsZWN0b3JzIHRoYXQgZGVwZW5kIG9uIHRoaXMgRE9NIHN0YXRlLCBzb21lIG9mIHdoaWNoIGFyZSB1c2VkIGluIGNhc2VzXG4vLyB3aGVyZSB3ZSBkb24ndCBoYXZlIHJlZHV4LlxuLy8gSW5zdGVhZCB3ZSBoYXZlIHRoZSBET00gY29udGludWUgdG8gYmUgdGhlIHNvdXJjZSBvZiB0cnV0aCwgYW5kIHNldCBvdXIgc3RvcmVcbi8vIHN0YXRlIGFjY29yZGluZ2x5IHNvIHRoYXQgY29tcG9uZW50cyBjYW4gYWNjZXNzIHRoaXMgaW5mby5cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBsb29rcyBhdCB0aGUgRE9NIGFuZCBkZWNpZGVzIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGluIFJUTCBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSdGxGcm9tRE9NKCkge1xuICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgaWYgKGhlYWQgJiYgaGVhZC5wYXJlbnRFbGVtZW50KSB7XG4gICAgY29uc3QgZGlyID0gaGVhZC5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJyk7XG4gICAgcmV0dXJuICEhKGRpciAmJiBkaXIudG9Mb3dlckNhc2UoKSA9PT0gJ3J0bCcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2NhbGUoc3RhdGUgPSBmYWxzZSwgYWN0aW9uKSB7XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gU0VUX1JUTCkge1xuICAgIHJldHVybiBhY3Rpb24uaXNSdGw7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuIiwiaW1wb3J0IHttYWtlRW51bX0gZnJvbSAnQGNkby9hcHBzL3V0aWxzJztcblxuY29uc3QgU0VUX1JFU1BPTlNJVkVfU0laRSA9ICdyZXNwb25zaXZlL1NFVF9SRVNQT05TSVZFX1NJWkUnO1xuZXhwb3J0IGNvbnN0IHNldFJlc3BvbnNpdmVTaXplID0gcmVzcG9uc2l2ZVNpemUgPT4gKHtcbiAgdHlwZTogU0VUX1JFU1BPTlNJVkVfU0laRSxcbiAgcmVzcG9uc2l2ZVNpemUsXG59KTtcblxuZXhwb3J0IGNvbnN0IFJlc3BvbnNpdmVTaXplID0gbWFrZUVudW0oJ2xnJywgJ21kJywgJ3NtJywgJ3hzJyk7XG5cbi8vIERlZmF1bHQgd2luZG93IHdpZHRocyB0aGF0IGFyZSB0aGUgc3RhcnRpbmcgcG9pbnRzIGZvciBlYWNoIHdpZHRoIGNhdGVnb3J5LlxuY29uc3QgQnJlYWtwb2ludHMgPSBbXG4gIHticmVha3BvaW50OiA5OTIsIHJlc3BvbnNpdmVTaXplOiBSZXNwb25zaXZlU2l6ZS5sZ30sXG4gIHticmVha3BvaW50OiA3MjAsIHJlc3BvbnNpdmVTaXplOiBSZXNwb25zaXZlU2l6ZS5tZH0sXG4gIHticmVha3BvaW50OiA2NTAsIHJlc3BvbnNpdmVTaXplOiBSZXNwb25zaXZlU2l6ZS5zbX0sXG4gIHticmVha3BvaW50OiAwLCByZXNwb25zaXZlU2l6ZTogUmVzcG9uc2l2ZVNpemUueHN9LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3BvbnNpdmVCcmVha3BvaW50KHdpZHRoKSB7XG4gIGNvbnN0IHJlc3BvbnNpdmVTaXplID0gQnJlYWtwb2ludHMuZmluZCgoe2JyZWFrcG9pbnR9KSA9PiB3aWR0aCA+IGJyZWFrcG9pbnQpO1xuICBpZiAocmVzcG9uc2l2ZVNpemUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgTm8gcmVzcG9uc2l2ZSBzaXplIGZvdW5kIGZvciB3aWR0aCAke3dpZHRofSwgZGVmYXVsdGluZyB0byB4c2BcbiAgICApO1xuICAgIHJldHVybiBSZXNwb25zaXZlU2l6ZS54cztcbiAgfVxuICByZXR1cm4gcmVzcG9uc2l2ZVNpemUucmVzcG9uc2l2ZVNpemU7XG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgcmVzcG9uc2l2ZVNpemU6IGdldFJlc3BvbnNpdmVCcmVha3BvaW50KHdpbmRvdy5pbm5lcldpZHRoKSxcbn07XG5cbi8qKlxuICogUmVkdWNlciBmb3IgcmVzcG9uc2l2ZSBzaXplcy4gT25seSByZXR1cm4gYSBuZXcgc3RhdGUgaWYgd2UndmUgYWN0dWFsbHlcbiAqIGNyb3NzZWQgaW50byBhIG5ldyBicmVha3BvaW50IHdpZHRoLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWR1Y2VyKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24pIHtcbiAgaWYgKFxuICAgIGFjdGlvbi50eXBlID09PSBTRVRfUkVTUE9OU0lWRV9TSVpFICYmXG4gICAgc3RhdGUucmVzcG9uc2l2ZVNpemUgIT09IGFjdGlvbi5yZXNwb25zaXZlU2l6ZVxuICApIHtcbiAgICByZXR1cm4gey4uLnN0YXRlLCByZXNwb25zaXZlU2l6ZTogYWN0aW9uLnJlc3BvbnNpdmVTaXplfTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG4iLCIvKiogQGZpbGUgQnV0dG9uIHRoYXQgY2FuIGJlIGFjdGl2ZSBvciBpbmFjdGl2ZSwgZm9yIHVzZSBpbnNpZGUgVG9nZ2xlR3JvdXAgKi9cbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHN0eWxlcyBmcm9tICcuL1RvZ2dsZUJ1dHRvblN0eWxlcyc7XG5cbmNsYXNzIFRvZ2dsZUJ1dHRvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmaXJzdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbGFzdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIHVzZVJlYnJhbmRlZExpa2VTdHlsZXM6IFByb3BUeXBlcy5ib29sLFxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgaWQ9e3RoaXMucHJvcHMuaWR9XG4gICAgICAgIHN0eWxlPXt0aGlzLmdldFN0eWxlKCl9XG4gICAgICAgIGNsYXNzTmFtZT17J25vLW91dGxpbmUgJyArICh0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCAnJyl9XG4gICAgICAgIHRpdGxlPXt0aGlzLnByb3BzLnRpdGxlfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIGdldFN0eWxlKCkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgICc6Zm9jdXMnOiB7XG4gICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0eWxlcy5idXR0b25TdHlsZSxcbiAgICAgIHN0eWxlcy50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgIHRoaXMucHJvcHMuYWN0aXZlID8gc3R5bGVzLmFjdGl2ZVN0eWxlIDogc3R5bGVzLmluYWN0aXZlU3R5bGUsXG4gICAgICB0aGlzLnByb3BzLmFjdGl2ZSAmJlxuICAgICAgICB0aGlzLnByb3BzLmFjdGl2ZUNvbG9yICYmIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMucHJvcHMuYWN0aXZlQ29sb3IsXG4gICAgICAgIH0sXG4gICAgICB0aGlzLnByb3BzLmZpcnN0ID8gc3R5bGVzLmZpcnN0QnV0dG9uU3R5bGUgOiBudWxsLFxuICAgICAgdGhpcy5wcm9wcy5sYXN0ID8gc3R5bGVzLmxhc3RCdXR0b25TdHlsZSA6IG51bGwsXG4gICAgICB0aGlzLnByb3BzLnVzZVJlYnJhbmRlZExpa2VTdHlsZXNcbiAgICAgICAgPyBzdHlsZXMucmVicmFuZGVkTGlrZUJ1dHRvblN0eWxlXG4gICAgICAgIDogbnVsbCxcbiAgICAgIC8vIHVzZWQgdG8gb3ZlcnJpZGUgYW55IHN0eWxlIHByb3BlcnRpZXNcbiAgICAgIHRoaXMucHJvcHMuc3R5bGVcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGl1bShUb2dnbGVCdXR0b24pO1xuIiwiLyoqIEBmaWxlIFJldXNhYmxlIHN0eWxlcyBmb3IgaW50ZXJmYWNlIG1vZGUgdG9nZ2xlIGJ1dHRvbnMuICovXG5cbnZhciBjb2xvciA9IHJlcXVpcmUoJy4uL3V0aWwvY29sb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ1dHRvblN0eWxlOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyQ29sb3I6IGNvbG9yLmxpZ2h0X2dyYXksXG4gICAgYm9yZGVyVG9wV2lkdGg6IDEsXG4gICAgYm9yZGVyUmlnaHRXaWR0aDogMSxcbiAgICBib3JkZXJCb3R0b21XaWR0aDogMSxcbiAgICBib3JkZXJMZWZ0V2lkdGg6IDEsXG4gICAgbWFyZ2luOiAnMCAwIDhweCAwJyxcbiAgICBwYWRkaW5nOiAnMnB4IDZweCcsXG4gICAgZm9udFNpemU6IDE0LFxuICB9LFxuICB0b2dnbGVCdXR0b25TdHlsZToge1xuICAgIGJvcmRlclJpZ2h0V2lkdGg6ICcwICFpbXBvcnRhbnQnLFxuICAgIGJvcmRlclRvcExlZnRSYWRpdXM6IDAsXG4gICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IDAsXG4gICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IDAsXG4gICAgYm9yZGVyQm90dG9tTGVmdFJhZGl1czogMCxcbiAgfSxcbiAgZmlyc3RCdXR0b25TdHlsZToge1xuICAgIGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IDQsXG4gICAgYm9yZGVyVG9wTGVmdFJhZGl1czogNCxcbiAgfSxcbiAgbGFzdEJ1dHRvblN0eWxlOiB7XG4gICAgYm9yZGVyUmlnaHRXaWR0aDogJzFweCAhaW1wb3J0YW50JyxcbiAgICBib3JkZXJCb3R0b21SaWdodFJhZGl1czogNCxcbiAgICBib3JkZXJUb3BSaWdodFJhZGl1czogNCxcbiAgfSxcbiAgYWN0aXZlU3R5bGU6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLm9yYW5nZSxcbiAgICBjb2xvcjogY29sb3Iud2hpdGUsXG4gICAgYm94U2hhZG93OiAnMnB4IDJweCA1cHggJyArIGNvbG9yLnNoYWRvdyArICcgaW5zZXQnLFxuICB9LFxuICAvL1RPRE86IFtEZXNpZ24yLTUzXSByZW1vdmUgdGhpcyBvbmNlIHdlIGhhdmUgYSBTZWdtZW50ZWRCdXR0b24gY29tcG9uZW50IGFuZCB1c2UgdGhhdCBpbnN0ZWFkXG4gIHJlYnJhbmRlZExpa2VCdXR0b25TdHlsZToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgIHBhZGRpbmc6ICc3cHggMTZweCcsXG4gICAgZm9udFdlaWdodDogNjAwLFxuICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLFxuICAgIGxpbmVIZWlnaHQ6ICd1bnNldCcsXG4gIH0sXG4gIGluYWN0aXZlU3R5bGU6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLndoaXRlLFxuICAgIGNvbG9yOiBjb2xvci5saWdodF9ibGFjayxcbiAgICBib3hTaGFkb3c6ICcwcHggMXB4IDVweCAnICsgY29sb3Iuc2hhZG93LFxuICB9LFxuICBoaWRkZW5TdHlsZToge1xuICAgIGRpc3BsYXk6ICdub25lJyxcbiAgfSxcbiAgaWNvblN0eWxlOiB7XG4gICAgbWFyZ2luOiAnMCAwLjNlbScsXG4gIH0sXG59O1xuIiwiLyoqIEBmaWxlIFJvdyBvZiBidXR0b25zIGZvciBzd2l0Y2hpbmcgZWRpdG9yIG1vZGVzLiAqL1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBUb2dnbGVCdXR0b24gZnJvbSAnLi9Ub2dnbGVCdXR0b24nO1xuXG5jbGFzcyBUb2dnbGVHcm91cCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdXNlUmVicmFuZGVkTGlrZVN0eWxlczogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZmxleDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2hpbGRyZW4ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgbGV0IGVycm9yO1xuICAgICAgaWYgKFJlYWN0LkNoaWxkcmVuLmNvdW50KHByb3ApIDwgMSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtjb21wb25lbnROYW1lfSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNoaWxkIGJ1dHRvbi5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2gocHJvcCwgY2hpbGQgPT4ge1xuICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgLy8gZmFsc3kgY2hpbGRyZW4gYXJlIG9rIGFuZCB3aWxsIGJlIG9taXR0ZWQgYnkgcmVhY3QgcmVuZGVyaW5nXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZC50eXBlICE9PSAnYnV0dG9uJykge1xuICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgYCR7Y29tcG9uZW50TmFtZX0gc2hvdWxkIG9ubHkgaGF2ZSBidXR0b25zIGFzIGAgKyAnY2hpbGQgZWxlbWVudHMuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgLy8gUmVkdXhcbiAgICBpc1J0bDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc2V0U2VsZWN0ZWQoc2VsZWN0ZWQpIHtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHNlbGVjdGVkKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvLyBSZXZlcnNlIGNoaWxkcmVuIG9yZGVyIGlmIGxvY2FsZSBpcyBSVExcbiAgICBjb25zdCB7aXNSdGwsIGZsZXh9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBzcGFuU3R5bGUgPSBpc1J0bFxuICAgICAgPyBzdHlsZXMuZmxleEJ1dHRvblJldmVyc2VcbiAgICAgIDogZmxleCAmJiBzdHlsZXMuZmxleEJ1dHRvbnM7XG5cbiAgICByZXR1cm4gPHNwYW4gc3R5bGU9e3NwYW5TdHlsZX0+e3RoaXMucmVuZGVyQ2hpbGRyZW4oKX08L3NwYW4+O1xuICB9XG5cbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XG4gICAgLy8gUmVtb3ZlIGZhbHN5IGNoaWxkcmVuIHRvIG1ha2Ugc3VyZSBmaXJzdCBhbmQgbGFzdCBidXR0b25zIGFyZSByb3VuZGVkIHByb3Blcmx5LlxuICAgIGNvbnN0IGNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICBjaGlsZCA9PiAhIWNoaWxkXG4gICAgKTtcbiAgICByZXR1cm4gY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBjaGlsZC5wcm9wcy52YWx1ZSA9PT0gdGhpcy5wcm9wcy5zZWxlY3RlZDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUb2dnbGVCdXR0b25cbiAgICAgICAgICBpZD17Y2hpbGQucHJvcHMuaWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjaGlsZC5wcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAga2V5PXtjaGlsZC5rZXl9XG4gICAgICAgICAgYWN0aXZlPXtpc1NlbGVjdGVkfVxuICAgICAgICAgIGZpcnN0PXtpbmRleCA9PT0gMH1cbiAgICAgICAgICBsYXN0PXtpbmRleCA9PT0gY2hpbGRyZW4ubGVuZ3RoIC0gMX1cbiAgICAgICAgICBhY3RpdmVDb2xvcj17dGhpcy5wcm9wcy5hY3RpdmVDb2xvcn1cbiAgICAgICAgICB0aXRsZT17Y2hpbGQucHJvcHMudGl0bGV9XG4gICAgICAgICAgc3R5bGU9e2NoaWxkLnByb3BzLnN0eWxlfVxuICAgICAgICAgIC8qXG4gICAgICAgICAgIFRPRE86IFtEZXNpZ24yLTUzXSBSZW1vdmUgdGhpcyBwcm9wIGFuZCB1c2UgU2VnbWVudGVkIGJ1dHRvbiBpbnN0ZWFkLCBpZGVhbGx5IGFsc28gcmVtb3ZlIHRoaXMgY29tcG9uZW50IGFuZFxuICAgICAgICAgICAgcmVwbGFjZSBpdCB3aXRoIFNlZ21lbnRlZEJ1dHRvbnMgZXZlcnl3aGVyZSBvbmNlIHdlIGltcGxlbWVudCBTZWdtZW50ZWRCdXR0b24gRFNDTyBjb21wb25lbnQuXG4gICAgICAgICAgICBUZW1wb3Jhcnkgd29ya2Fyb3VuZCB1bnRpbCB3ZSBpbXBsZW1lbnQgU2VnbWVudGVkQnV0dG9uIERTQ08gY29tcG9uZW50XG4gICAgICAgICAgKi9cbiAgICAgICAgICB1c2VSZWJyYW5kZWRMaWtlU3R5bGVzPXt0aGlzLnByb3BzLnVzZVJlYnJhbmRlZExpa2VTdHlsZXN9XG4gICAgICAgICAgb25DbGljaz17XG4gICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRTZWxlY3RlZC5iaW5kKHRoaXMsIGNoaWxkLnByb3BzLnZhbHVlKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZC5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9Ub2dnbGVCdXR0b24+XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleEJ1dHRvbnM6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gIH0sXG4gIGZsZXhCdXR0b25SZXZlcnNlOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdyb3ctcmV2ZXJzZScsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVW5jb25uZWN0ZWRUb2dnbGVHcm91cCA9IFRvZ2dsZUdyb3VwO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlID0+ICh7XG4gIGlzUnRsOiBzdGF0ZS5pc1J0bCxcbn0pKShUb2dnbGVHcm91cCk7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQge3NldElzU3VtbWFyeVZpZXd9IGZyb20gJ0BjZG8vYXBwcy9jb2RlLXN0dWRpby9wcm9ncmVzc1JlZHV4JztcbmltcG9ydCB7aGFzR3JvdXBzfSBmcm9tICdAY2RvL2FwcHMvY29kZS1zdHVkaW8vcHJvZ3Jlc3NSZWR1eFNlbGVjdG9ycyc7XG5pbXBvcnQgZmlyZWhvc2VDbGllbnQgZnJvbSAnQGNkby9hcHBzL21ldHJpY3MvZmlyZWhvc2UnO1xuaW1wb3J0IGNvbG9yIGZyb20gJ0BjZG8vYXBwcy91dGlsL2NvbG9yJztcbmltcG9ydCBpMThuIGZyb20gJ0BjZG8vbG9jYWxlJztcblxuaW1wb3J0IFRvZ2dsZUdyb3VwIGZyb20gJy4uL1RvZ2dsZUdyb3VwJztcblxuaW1wb3J0IGdyb3VwRGV0YWlsQWN0aXZlIGZyb20gJy4vaW1hZ2VzL2dyb3VwVG9nZ2xlRGV0YWlsQWN0aXZlLnBuZyc7XG5pbXBvcnQgZ3JvdXBEZXRhaWxJbmFjdGl2ZSBmcm9tICcuL2ltYWdlcy9ncm91cFRvZ2dsZURldGFpbEluYWN0aXZlLnBuZyc7XG5pbXBvcnQgZ3JvdXBTdW1tYXJ5QWN0aXZlIGZyb20gJy4vaW1hZ2VzL2dyb3VwVG9nZ2xlU3VtbWFyeUFjdGl2ZS5wbmcnO1xuaW1wb3J0IGdyb3VwU3VtbWFyeUluYWN0aXZlIGZyb20gJy4vaW1hZ2VzL2dyb3VwVG9nZ2xlU3VtbWFyeUluYWN0aXZlLnBuZyc7XG5pbXBvcnQgZGV0YWlsQWN0aXZlIGZyb20gJy4vaW1hZ2VzL3RvZ2dsZURldGFpbEFjdGl2ZS5wbmcnO1xuaW1wb3J0IGRldGFpbEluYWN0aXZlIGZyb20gJy4vaW1hZ2VzL3RvZ2dsZURldGFpbEluYWN0aXZlLnBuZyc7XG5pbXBvcnQgc3VtbWFyeUFjdGl2ZSBmcm9tICcuL2ltYWdlcy90b2dnbGVTdW1tYXJ5QWN0aXZlLnBuZyc7XG5pbXBvcnQgc3VtbWFyeUluYWN0aXZlIGZyb20gJy4vaW1hZ2VzL3RvZ2dsZVN1bW1hcnlJbmFjdGl2ZS5wbmcnO1xuXG5jb25zdCBpbWFnZVNldHMgPSB7XG4gIHRlYWw6IHtcbiAgICBzdW1tYXJ5QWN0aXZlLFxuICAgIHN1bW1hcnlJbmFjdGl2ZSxcbiAgICBkZXRhaWxBY3RpdmUsXG4gICAgZGV0YWlsSW5hY3RpdmUsXG4gIH0sXG4gIHB1cnBsZToge1xuICAgIHN1bW1hcnlBY3RpdmU6IGdyb3VwU3VtbWFyeUFjdGl2ZSxcbiAgICBzdW1tYXJ5SW5hY3RpdmU6IGdyb3VwU3VtbWFyeUluYWN0aXZlLFxuICAgIGRldGFpbEFjdGl2ZTogZ3JvdXBEZXRhaWxBY3RpdmUsXG4gICAgZGV0YWlsSW5hY3RpdmU6IGdyb3VwRGV0YWlsSW5hY3RpdmUsXG4gIH0sXG59O1xuXG4vKipcbiAqIEEgdG9nZ2xlIHRoYXQgcHJvdmlkZXMgYSB3YXkgdG8gc3dpdGNoIGJldHdlZW4gZGV0YWlsIGFuZCBzdW1tYXJ5IHZpZXdzIG9mXG4gKiBvdXIgY291cnNlIHByb2dyZXNzLlxuICovXG5jbGFzcyBQcm9ncmVzc0RldGFpbFRvZ2dsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgd2hpdGVCb3JkZXI6IFByb3BUeXBlcy5ib29sLFxuICAgIHRvZ2dsZVN0dWR5R3JvdXA6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgICAvLyByZWR1eCBiYWNrZWRcbiAgICBpc1BsYzogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpc1N1bW1hcnlWaWV3OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGhhc0dyb3VwczogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzZXRJc1N1bW1hcnlWaWV3OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgIGNvbnN0IGlzU3VtbWFyeVZpZXcgPSAhdGhpcy5wcm9wcy5pc1N1bW1hcnlWaWV3O1xuICAgIHRoaXMucmVjb3JkRXZlbnQoaXNTdW1tYXJ5Vmlldyk7XG4gICAgdGhpcy5wcm9wcy5zZXRJc1N1bW1hcnlWaWV3KGlzU3VtbWFyeVZpZXcpO1xuICB9O1xuXG4gIHJlY29yZEV2ZW50ID0gaXNTdW1tYXJ5ID0+IHtcbiAgICBmaXJlaG9zZUNsaWVudC5wdXRSZWNvcmQoXG4gICAgICB7XG4gICAgICAgIHN0dWR5OiAncHJvZ3Jlc3MtZGV0YWlsLXRvZ2dsZScsXG4gICAgICAgIHN0dWR5X2dyb3VwOiB0aGlzLnByb3BzLnRvZ2dsZVN0dWR5R3JvdXAsXG4gICAgICAgIGV2ZW50OiBpc1N1bW1hcnkgPyAnc2VlLXN1bW1hcnknIDogJ3NlZS1kZXRhaWwnLFxuICAgICAgfSxcbiAgICAgIHtpbmNsdWRlVXNlcklkOiB0cnVlfVxuICAgICk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHt3aGl0ZUJvcmRlciwgaXNTdW1tYXJ5VmlldywgaGFzR3JvdXBzLCBpc1BsY30gPSB0aGlzLnByb3BzO1xuXG4gICAgbGV0IGFjdGl2ZUNvbG9yID0gdGhpcy5wcm9wcy5hY3RpdmVDb2xvcjtcbiAgICBpZiAoIWFjdGl2ZUNvbG9yKSB7XG4gICAgICBhY3RpdmVDb2xvciA9ICFpc1BsYyAmJiBoYXNHcm91cHMgPyBjb2xvci5wdXJwbGUgOiBjb2xvci5jeWFuO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlcyA9XG4gICAgICBhY3RpdmVDb2xvciA9PT0gY29sb3IucHVycGxlID8gaW1hZ2VTZXRzLnB1cnBsZSA6IGltYWdlU2V0cy50ZWFsO1xuICAgIHJldHVybiAoXG4gICAgICA8VG9nZ2xlR3JvdXBcbiAgICAgICAgc2VsZWN0ZWQ9e2lzU3VtbWFyeVZpZXcgPyAnc3VtbWFyeScgOiAnZGV0YWlsJ31cbiAgICAgICAgYWN0aXZlQ29sb3I9e2FjdGl2ZUNvbG9yfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX1cbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHZhbHVlPVwic3VtbWFyeVwiXG4gICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgd2hpdGVCb3JkZXJcbiAgICAgICAgICAgICAgPyB7Li4uc3R5bGVzLndoaXRlQm9yZGVyLCAuLi5zdHlsZXMuYnV0dG9uU3R5bGVzfVxuICAgICAgICAgICAgICA6IHN0eWxlcy5idXR0b25TdHlsZXNcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9e2lzU3VtbWFyeVZpZXcgPyBpbWFnZXMuc3VtbWFyeUFjdGl2ZSA6IGltYWdlcy5zdW1tYXJ5SW5hY3RpdmV9XG4gICAgICAgICAgICBzdHlsZT17c3R5bGVzLmljb259XG4gICAgICAgICAgICBhbHQ9e2kxOG4uc3VtbWFyeVZpZXcoKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHZhbHVlPVwiZGV0YWlsXCJcbiAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICB3aGl0ZUJvcmRlclxuICAgICAgICAgICAgICA/IHsuLi5zdHlsZXMud2hpdGVCb3JkZXIsIC4uLnN0eWxlcy5idXR0b25TdHlsZXN9XG4gICAgICAgICAgICAgIDogc3R5bGVzLmJ1dHRvblN0eWxlc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ1aXRlc3QtdG9nZ2xlLWRldGFpbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9e2lzU3VtbWFyeVZpZXcgPyBpbWFnZXMuZGV0YWlsSW5hY3RpdmUgOiBpbWFnZXMuZGV0YWlsQWN0aXZlfVxuICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pY29ufVxuICAgICAgICAgICAgYWx0PXtpMThuLmRldGFpbFZpZXcoKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvVG9nZ2xlR3JvdXA+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSB7XG4gIHdoaXRlQm9yZGVyOiB7XG4gICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyQ29sb3I6IGNvbG9yLndoaXRlLFxuICB9LFxuICBidXR0b25TdHlsZXM6IHtcbiAgICBtYXJnaW5Cb3R0b206IDUsXG4gIH0sXG4gIGljb246IHtcbiAgICBmb250U2l6ZTogMjAsXG4gICAgcGFkZGluZ0xlZnQ6IDMsXG4gICAgcGFkZGluZ1JpZ2h0OiAzLFxuICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgcGFkZGluZ0JvdHRvbTogMyxcbiAgICAvLyBJZiBub3Qgc2V0IGV4cGxpY2l0bHksIGNzcyBzZXRzIFwiYnV0dG9uID4gaW1nXCIgdG8gMC42XG4gICAgb3BhY2l0eTogMSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBVbmNvbm5lY3RlZFByb2dyZXNzRGV0YWlsVG9nZ2xlID0gUHJvZ3Jlc3NEZXRhaWxUb2dnbGU7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QoXG4gIHN0YXRlID0+ICh7XG4gICAgaXNQbGM6ICEhc3RhdGUucHJvZ3Jlc3MuZGVlcGVyTGVhcm5pbmdDb3Vyc2UsXG4gICAgaXNTdW1tYXJ5Vmlldzogc3RhdGUucHJvZ3Jlc3MuaXNTdW1tYXJ5VmlldyxcbiAgICBoYXNHcm91cHM6IGhhc0dyb3VwcyhzdGF0ZS5wcm9ncmVzcyksXG4gIH0pLFxuICB7c2V0SXNTdW1tYXJ5Vmlld31cbikoUHJvZ3Jlc3NEZXRhaWxUb2dnbGUpO1xuIl0sIm5hbWVzIjpbImxvY2FsZSIsInN0YXRlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYWN0aW9uIiwidHlwZSIsIlNFVF9SVEwiLCJpc1J0bCIsInNldFJ0bCIsImV4cG9ydHMiLCJzZXRSdGxGcm9tRE9NIiwiaXNSdGxGcm9tRE9NIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJwYXJlbnRFbGVtZW50IiwiZGlyIiwiZ2V0QXR0cmlidXRlIiwidG9Mb3dlckNhc2UiLCJyZWR1Y2VyIiwiaW5pdGlhbFN0YXRlIiwiU0VUX1JFU1BPTlNJVkVfU0laRSIsInJlc3BvbnNpdmVTaXplIiwiX29iamVjdFNwcmVhZCIsIl91dGlscyIsInJlcXVpcmUiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwiaSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJSZXNwb25zaXZlU2l6ZSIsInNldFJlc3BvbnNpdmVTaXplIiwibWFrZUVudW0iLCJCcmVha3BvaW50cyIsImJyZWFrcG9pbnQiLCJsZyIsIm1kIiwic20iLCJ4cyIsImdldFJlc3BvbnNpdmVCcmVha3BvaW50Iiwid2lkdGgiLCJmaW5kIiwiX3JlZiIsImNvbnNvbGUiLCJlcnJvciIsImNvbmNhdCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yYWRpdW0iLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsInNldCIsIl9Ub2dnbGVCdXR0b25TdHlsZXMiLCJXZWFrTWFwIiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiVG9nZ2xlQnV0dG9uIiwiX0NvbXBvbmVudCIsIl9pbmhlcml0c0xvb3NlIiwiY3JlYXRlIiwiX3Byb3RvIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImlkIiwidGhpcyIsInByb3BzIiwic3R5bGUiLCJnZXRTdHlsZSIsImNsYXNzTmFtZSIsInRpdGxlIiwib25DbGljayIsImNoaWxkcmVuIiwiYXNzaWduIiwib3V0bGluZSIsInN0eWxlcyIsImJ1dHRvblN0eWxlIiwidG9nZ2xlQnV0dG9uU3R5bGUiLCJhY3RpdmUiLCJhY3RpdmVTdHlsZSIsImluYWN0aXZlU3R5bGUiLCJhY3RpdmVDb2xvciIsImJhY2tncm91bmRDb2xvciIsImZpcnN0IiwiZmlyc3RCdXR0b25TdHlsZSIsImxhc3QiLCJsYXN0QnV0dG9uU3R5bGUiLCJ1c2VSZWJyYW5kZWRMaWtlU3R5bGVzIiwicmVicmFuZGVkTGlrZUJ1dHRvblN0eWxlIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJmdW5jIiwibm9kZSIsIlJhZGl1bSIsIm1vZHVsZSIsImRlZmF1bHQiLCJjb2xvciIsImRpc3BsYXkiLCJ2ZXJ0aWNhbEFsaWduIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJDb2xvciIsImxpZ2h0X2dyYXkiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRXaWR0aCIsIm1hcmdpbiIsInBhZGRpbmciLCJmb250U2l6ZSIsImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsIm9yYW5nZSIsIndoaXRlIiwiYm94U2hhZG93Iiwic2hhZG93IiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJsaWdodF9ibGFjayIsImhpZGRlblN0eWxlIiwiaWNvblN0eWxlIiwiX3JlYWN0UmVkdXgiLCJfVG9nZ2xlQnV0dG9uIiwiVG9nZ2xlR3JvdXAiLCJzZXRTZWxlY3RlZCIsInNlbGVjdGVkIiwib25DaGFuZ2UiLCJfdGhpcyRwcm9wcyIsImZsZXgiLCJzcGFuU3R5bGUiLCJmbGV4QnV0dG9uUmV2ZXJzZSIsImZsZXhCdXR0b25zIiwicmVuZGVyQ2hpbGRyZW4iLCJfdGhpcyIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY2hpbGQiLCJtYXAiLCJpbmRleCIsImlzU2VsZWN0ZWQiLCJrZXkiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJwcm9wIiwiY291bnQiLCJFcnJvciIsImZsZXhEaXJlY3Rpb24iLCJjb25uZWN0IiwiX3Byb2dyZXNzUmVkdXgiLCJfcHJvZ3Jlc3NSZWR1eFNlbGVjdG9ycyIsIl9maXJlaG9zZSIsIl9jb2xvciIsIl9sb2NhbGUiLCJfVG9nZ2xlR3JvdXAiLCJfZ3JvdXBUb2dnbGVEZXRhaWxBY3RpdmUiLCJfZ3JvdXBUb2dnbGVEZXRhaWxJbmFjdGl2ZSIsIl9ncm91cFRvZ2dsZVN1bW1hcnlBY3RpdmUiLCJfZ3JvdXBUb2dnbGVTdW1tYXJ5SW5hY3RpdmUiLCJfdG9nZ2xlRGV0YWlsQWN0aXZlIiwiX3RvZ2dsZURldGFpbEluYWN0aXZlIiwiX3RvZ2dsZVN1bW1hcnlBY3RpdmUiLCJfdG9nZ2xlU3VtbWFyeUluYWN0aXZlIiwiaW1hZ2VTZXRzIiwidGVhbCIsInN1bW1hcnlBY3RpdmUiLCJzdW1tYXJ5SW5hY3RpdmUiLCJkZXRhaWxBY3RpdmUiLCJkZXRhaWxJbmFjdGl2ZSIsInB1cnBsZSIsImdyb3VwU3VtbWFyeUFjdGl2ZSIsImdyb3VwU3VtbWFyeUluYWN0aXZlIiwiZ3JvdXBEZXRhaWxBY3RpdmUiLCJncm91cERldGFpbEluYWN0aXZlIiwiUHJvZ3Jlc3NEZXRhaWxUb2dnbGUiLCJfUmVhY3QkQ29tcG9uZW50IiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJpc1N1bW1hcnlWaWV3IiwicmVjb3JkRXZlbnQiLCJzZXRJc1N1bW1hcnlWaWV3IiwiaXNTdW1tYXJ5IiwiZmlyZWhvc2VDbGllbnQiLCJwdXRSZWNvcmQiLCJzdHVkeSIsInN0dWR5X2dyb3VwIiwidG9nZ2xlU3R1ZHlHcm91cCIsImV2ZW50IiwiaW5jbHVkZVVzZXJJZCIsIndoaXRlQm9yZGVyIiwiaGFzR3JvdXBzIiwiaXNQbGMiLCJjeWFuIiwiaW1hZ2VzIiwiYnV0dG9uU3R5bGVzIiwic3JjIiwiaWNvbiIsImFsdCIsImkxOG4iLCJzdW1tYXJ5VmlldyIsImRldGFpbFZpZXciLCJib3JkZXJXaWR0aCIsIm1hcmdpbkJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJvcGFjaXR5IiwicHJvZ3Jlc3MiLCJkZWVwZXJMZWFybmluZ0NvdXJzZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/3419.ecbee334.iframe.bundle.js b/3419.ecbee334.iframe.bundle.js deleted file mode 100644 index d6c78d51..00000000 --- a/3419.ecbee334.iframe.bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[3419],{"./src/code-studio/browserNavigation.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.canChangeLevelInPage=function canChangeLevelInPage(currentLevel,newLevel){if(new URL(document.location).pathname.split("/").includes("summary"))return!1;return(null==currentLevel?void 0:currentLevel.usesLab2)&&(null==newLevel?void 0:newLevel.usesLab2)},exports.setWindowTitle=setWindowTitle,exports.setupNavigationHandler=function setupNavigationHandler(initialLevelId){window.history.replaceState({levelId:initialLevelId},""),window.addEventListener("popstate",(function(event){var _event$state,levelId=null===(_event$state=event.state)||void 0===_event$state?void 0:_event$state.levelId;levelId&&((0,_notifyLevelChange.default)(null,levelId),(0,_redux.getStore)().dispatch((0,_progressRedux.setCurrentLevelId)(levelId)))}))},exports.updateBrowserForLevelNavigation=function updateBrowserForLevelNavigation(progressStoreState,levelPath,levelId){window.history.pushState({levelId},"",levelPath+window.location.search),setWindowTitle(progressStoreState,levelId)};var _progressRedux=__webpack_require__("./src/code-studio/progressRedux.ts"),_notifyLevelChange=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(__webpack_require__("./src/lab2/utils/notifyLevelChange.ts")),_redux=__webpack_require__("./src/redux.js");function setWindowTitle(progressStoreState,newLevelId){var lesson=progressStoreState.lessons.find((function(lesson){return lesson.id===progressStoreState.currentLessonId})),numLessons=lesson.num_script_lessons,lessonName=lesson.name,lessonIndex=lesson.levels.findIndex((function(level){return level.activeId===newLevelId}))+1,scriptDisplayName=progressStoreState.scriptDisplayName;document.title=numLessons>1?"".concat(lessonName," #").concat(lessonIndex," | ").concat(scriptDisplayName," - Code.org"):"".concat(lessonName," #").concat(lessonIndex," - Code.org")}},"./src/code-studio/progressReduxSelectors.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.progressionsFromLevels=exports.nextLevelId=exports.levelsForLessonId=exports.levelsByLesson=exports.levelCount=exports.levelById=exports.lessons=exports.lessonExtrasUrl=exports.isPerfect=exports.hasLockableLessons=exports.hasGroups=exports.groupedLessons=exports.getUserAppOptionsPath=exports.getProgressLevelType=exports.getLevelPropertiesPath=exports.getCurrentScriptLevelId=exports.getCurrentLevels=exports.getCurrentLevel=exports.__testonly__=exports.ProgressLevelType=void 0;var _lodash=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(__webpack_require__("./node_modules/lodash/lodash.js")),_constants=__webpack_require__("./src/constants.js"),_progressHelpers=__webpack_require__("./src/templates/progress/progressHelpers.js"),_sharedConstants=__webpack_require__("./generated-scripts/sharedConstants.ts"),_activityUtils=__webpack_require__("./src/code-studio/activityUtils.js");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 _toConsumableArray(r){return function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}(r)||function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e1};var lessonFromLessonAtIndex=function lessonFromLessonAtIndex(state,lessonIndex){return _objectSpread(_objectSpread({},lessonFromLesson(state.lessons[lessonIndex])),{},{isFocusArea:state.focusAreaLessonIds.includes(state.lessons[lessonIndex].id)})},lessonFromLesson=function lessonFromLesson(lesson){return _lodash.default.pick(lesson,["name","id","lockable","lessonNumber","lessonStartUrl","lesson_plan_html_url","lesson_feedback_url","student_lesson_plan_html_url","description_student","description_teacher"])},peerReviewLesson=(exports.lessons=function lessons(state){return state.lessons.map((function(_,index){return lessonFromLessonAtIndex(state,index)}))},function peerReviewLesson(state){return _objectSpread(_objectSpread({},lessonFromLesson(state.peerReviewLessonInfo)),{},{id:-1,lockable:!1,isFocusArea:!1})}),peerReviewLevels=function peerReviewLevels(state){return state.peerReviewLessonInfo.levels.map((function(level,index){return _objectSpread(_objectSpread({},level),{},{id:(-1).toString(),isLocked:level.locked,status:level.status||_sharedConstants.LevelStatus.not_tried,levelNumber:index+1})}))},ProgressLevelType=exports.ProgressLevelType={SCRIPT_LEVEL:"script_level",LEVEL:"level"},getProgressLevelType=exports.getProgressLevelType=function getProgressLevelType(state){return state.progress.lessons?ProgressLevelType.SCRIPT_LEVEL:state.progress.currentLevelId?ProgressLevelType.LEVEL:void 0},_levelWithProgress=(exports.getLevelPropertiesPath=function getLevelPropertiesPath(state){if(state.progress.lessons){var _state$progress$lesso,levelPosition,sublevelPosition,scriptName=state.progress.scriptName,lessonPosition=null===(_state$progress$lesso=state.progress.lessons)||void 0===_state$progress$lesso?void 0:_state$progress$lesso.find((function(lesson){return lesson.id===state.progress.currentLessonId})).relative_position,currentLevel=getCurrentLevel(state);if(levelPosition=currentLevel.levelNumber,currentLevel.parentLevelId)levelPosition=levelById(state.progress,state.progress.currentLessonId,currentLevel.parentLevelId).levelNumber,sublevelPosition=currentLevel.levelNumber;return"/s/".concat(scriptName,"/lessons/").concat(lessonPosition,"/levels/").concat(levelPosition,"/").concat(void 0===sublevelPosition?"":"sublevel/".concat(sublevelPosition,"/"),"level_properties")}if(null!==state.progress.currentLevelId){var levelId=state.progress.currentLevelId;return"/levels/".concat(levelId,"/level_properties")}},exports.getUserAppOptionsPath=function getUserAppOptionsPath(state){if(state.progress.lessons){var _state$progress$lesso2,scriptName=state.progress.scriptName,lessonPosition=null===(_state$progress$lesso2=state.progress.lessons)||void 0===_state$progress$lesso2?void 0:_state$progress$lesso2.find((function(lesson){return lesson.id===state.progress.currentLessonId})).relative_position,levelPosition=getCurrentLevel(state).levelNumber,levelId=state.progress.currentLevelId;return"/api/user_app_options/".concat(scriptName,"/").concat(lessonPosition,"/").concat(levelPosition,"/").concat(levelId)}},function levelWithProgress(_ref,level,isLockable,parentLevelId){var _levelProgress,_level$ids,_level$sublevels,levelResults=_ref.levelResults,unitProgress=_ref.unitProgress,_ref$levelPairing=_ref.levelPairing,levelPairing=void 0===_ref$levelPairing?{}:_ref$levelPairing,currentLevelId=_ref.currentLevelId,normalizedLevel=(0,_progressHelpers.processedLevel)(level,parentLevelId);level.ids&&(normalizedLevel.id=function bestResultLevelId(levelIds,progressData){if(1===levelIds.length)return levelIds[0];var attemptedIds=levelIds.filter((function(id){return progressData[id]}));if(0===attemptedIds.length)return levelIds[0];var bestId=attemptedIds[0],bestResult=progressData[bestId];return attemptedIds.forEach((function(id){var result=progressData[id];result>bestResult&&(bestId=id,bestResult=result)})),bestId}(level.ids,levelResults));var status=_sharedConstants.LevelStatus.not_tried,locked=isLockable,teacherFeedbackReviewState=null,levelProgress=unitProgress[normalizedLevel.id];null!==(_levelProgress=levelProgress)&&void 0!==_levelProgress&&_levelProgress.pages&&(levelProgress=levelProgress.pages[normalizedLevel.pageNumber-1]),levelProgress?(status=levelProgress.status,locked=levelProgress.locked,teacherFeedbackReviewState=levelProgress.teacherFeedbackReviewState):level.kind!==_sharedConstants.LevelKind.assessment&&(status=(0,_activityUtils.activityCssClass)(levelResults[normalizedLevel.id]));var isCurrent=normalizedLevel.id===currentLevelId||!(null===(_level$ids=level.ids)||void 0===_level$ids||!_level$ids.includes[currentLevelId]);return _objectSpread(_objectSpread({},normalizedLevel),{},{status,isCurrentLevel:isCurrent,paired:levelPairing[level.activeId],isLocked:locked,teacherFeedbackReviewState,sublevels:null===(_level$sublevels=level.sublevels)||void 0===_level$sublevels?void 0:_level$sublevels.map((function(sublevel){return _levelWithProgress({levelResults,unitProgress,levelPairing,currentLevelId},sublevel,isLockable,normalizedLevel.id)}))})}),levelsByLesson=exports.levelsByLesson=function levelsByLesson(_ref2){var lessons=_ref2.lessons,levelResults=_ref2.levelResults,unitProgress=_ref2.unitProgress,levelPairing=_ref2.levelPairing,currentLevelId=_ref2.currentLevelId;return lessons.map((function(lesson){return lesson.levels.map((function(level){return _levelWithProgress({levelResults,unitProgress,levelPairing,currentLevelId},level,lesson.lockable)}))}))},levelsForLessonId=exports.levelsForLessonId=function levelsForLessonId(state,lessonId){var _state$lessons,lesson=null===(_state$lessons=state.lessons)||void 0===_state$lessons?void 0:_state$lessons.find((function(lesson){return lesson.id===lessonId}));return null==lesson?void 0:lesson.levels.map((function(level){return _levelWithProgress(state,level,lesson.lockable)}))},levelById=exports.levelById=function levelById(state,lessonId,levelId){var _levelsForLessonId,_levelsForLessonId$fl;return null===(_levelsForLessonId=levelsForLessonId(state,lessonId))||void 0===_levelsForLessonId||null===(_levelsForLessonId$fl=_levelsForLessonId.flatMap((function(level){return[level].concat(_toConsumableArray((null==level?void 0:level.sublevels)||[]))})))||void 0===_levelsForLessonId$fl?void 0:_levelsForLessonId$fl.find((function(level){return level.id===levelId}))},getCurrentLevel=exports.getCurrentLevel=function getCurrentLevel(state){var _getCurrentLevels,_getCurrentLevels$fla;return null===(_getCurrentLevels=getCurrentLevels(state))||void 0===_getCurrentLevels||null===(_getCurrentLevels$fla=_getCurrentLevels.flatMap((function(level){return[level].concat(_toConsumableArray((null==level?void 0:level.sublevels)||[]))})))||void 0===_getCurrentLevels$fla?void 0:_getCurrentLevels$fla.find((function(level){return level.isCurrentLevel}))},getCurrentLevels=exports.getCurrentLevels=function getCurrentLevels(state){return levelsForLessonId(state.progress,state.progress.currentLessonId)},groupedLessons=(exports.getCurrentScriptLevelId=function getCurrentScriptLevelId(state){var _levelById,currentLevel=getCurrentLevel(state);if(currentLevel)return currentLevel.parentLevelId?null===(_levelById=levelById(state.progress,state.progress.currentLessonId,currentLevel.parentLevelId))||void 0===_levelById?void 0:_levelById.scriptLevelId:currentLevel.scriptLevelId},exports.nextLevelId=function nextLevelId(state){if(getProgressLevelType(state)===ProgressLevelType.SCRIPT_LEVEL){var levels=levelsForLessonId(state.progress,state.progress.currentLessonId),currentLevel=getCurrentLevel(state);if(currentLevel.parentLevelId)return currentLevel.parentLevelId;var currentLevelIndex=currentLevel.levelNumber-1;if(currentLevelIndex!==levels.length-1)return levels[currentLevelIndex+1].id}},exports.levelCount=function levelCount(state){return getProgressLevelType(state)===ProgressLevelType.LEVEL?1:getProgressLevelType(state)===ProgressLevelType.SCRIPT_LEVEL?getCurrentLevels(state).length:0},exports.lessonExtrasUrl=function lessonExtrasUrl(state,lessonId){return state.lessonExtrasEnabled?state.lessons.find((function(lesson){return lesson.id===lessonId})).lesson_extras_level_url:""},exports.isPerfect=function isPerfect(state,levelId){return!!state.levelResults&&state.levelResults[levelId]>=_constants.TestResults.MINIMUM_OPTIMAL_RESULT},exports.groupedLessons=function groupedLessons(state){var includeBonusLevels=arguments.length>1&&void 0!==arguments[1]&&arguments[1],byGroup={},allLevels=levelsByLesson(state);return state.lessonGroups.forEach((function(lessonGroup){byGroup[lessonGroup.display_name]={lessonGroup:{id:lessonGroup.id,userFacing:lessonGroup.user_facing,displayName:lessonGroup.display_name,description:lessonGroup.description,bigQuestions:lessonGroup.big_questions},lessons:[],levelsByLesson:[]}})),state.lessons.forEach((function(lesson,index){var group=lesson.lesson_group_display_name,lessonAtIndex=lessonFromLessonAtIndex(state,index),lessonLevels=allLevels[index];includeBonusLevels||(lessonLevels=lessonLevels.filter((function(level){return!level.bonus}))),byGroup[group]&&(byGroup[group].lessons.push(lessonAtIndex),byGroup[group].levelsByLesson.push(lessonLevels))})),state.peerReviewLessonInfo&&(byGroup[state.peerReviewLessonInfo.lesson_group_display_name]={group:state.peerReviewLessonInfo.lesson_group_display_name,lessonGroup:{id:null,displayName:state.peerReviewLessonInfo.lesson_group_display_name,description:null,bigQuestions:null},lessons:[peerReviewLesson(state)],levelsByLesson:[peerReviewLevels(state)]}),_lodash.default.values(byGroup)});exports.progressionsFromLevels=function progressionsFromLevels(levels){var progressions=[];if(0===levels.length)return progressions;var currentProgression={start:0,name:levels[0].progression||levels[0].name,displayName:levels[0].progressionDisplayName||levels[0].name,levels:[levels[0]]};return levels.slice(1).forEach((function(level,index){(level.progression||level.name)===currentProgression.name?currentProgression.levels.push(level):(progressions.push(currentProgression),currentProgression={start:index+1,name:level.progression||level.name,displayName:level.progressionDisplayName||level.name,levels:[level]})})),progressions.push(currentProgression),progressions};exports.__testonly__={}},"./src/code-studio/verifiedInstructorRedux.js":(__unused_webpack_module,exports)=>{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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:initialState,action=arguments.length>1?arguments[1]:void 0;if(action.type===SET_VERIFIED)return _objectSpread(_objectSpread({},state),{},{isVerified:!0});if(action.type===SET_VERIFIED_RESOURCES)return _objectSpread(_objectSpread({},state),{},{hasVerifiedResources:!0});return _objectSpread({},state)},exports.setVerifiedResources=exports.setVerified=void 0;var SET_VERIFIED="verifiedInstructor/SET_VERIFIED",SET_VERIFIED_RESOURCES="verifiedInstructor/SET_VERIFIED_RESOURCES",initialState=(exports.setVerified=function setVerified(){return{type:SET_VERIFIED}},exports.setVerifiedResources=function setVerifiedResources(hasVerifiedResources){return{type:SET_VERIFIED_RESOURCES}},{isVerified:!1,hasVerifiedResources:!1})},"./src/util/browser-detector.js":(__unused_webpack_module,exports)=>{function isIE(){return-1!==navigator.userAgent.indexOf("MSIE")||isIE11()}function IEVersion(){return isIE11()?"11":navigator.userAgent.substring(navigator.userAgent.lastIndexOf("MSIE")+5).split(".")[0]}function isChrome(){return-1!==navigator.userAgent.lastIndexOf("Chrome/")}function chromeVersion(){return navigator.userAgent.substring(navigator.userAgent.lastIndexOf("Chrome/")+7).split(".")[0]}function isSafari(){return-1!==navigator.userAgent.indexOf("Safari/")}function safariVersion(){return navigator.userAgent.substring(navigator.userAgent.lastIndexOf("Version/")+8).split(".")[0]}function isFirefox(){return-1!==navigator.userAgent.indexOf("Firefox")}function firefoxVersion(){return navigator.userAgent.substring(navigator.userAgent.lastIndexOf("Firefox/")+8).split(".")[0]}function isIE11(){return!!window.MSInputMethodContext&&!!document.documentMode}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBrowserName=function getBrowserName(){var includeVersion=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(isChrome())return"Chrome"+(includeVersion?" ".concat(chromeVersion()):"");if(isIE())return"Internet Explorer"+(includeVersion?" ".concat(IEVersion()):"");if(isFirefox())return"Firefox"+(includeVersion?" ".concat(firefoxVersion()):"");if(isSafari())return"Safari"+(includeVersion?" ".concat(safariVersion()):"");return navigator.userAgent},exports.isIE11=isIE11,exports.isMobileDevice=function isMobileDevice(){var check=!1;return function(a){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))&&(check=!0)}(navigator.userAgent||navigator.vendor||window.opera),check},exports.isStorageAvailable=function isStorageAvailable(type){try{var storage=window[type],x="__storage_test__";return storage.setItem(x,x),storage.removeItem(x),!0}catch(e){return!1}},exports.isUnsupportedBrowser=function isUnsupportedBrowser(){return function isUnsupportedIE(){return isIE()&&IEVersion()<11}()||function isUnsupportedChrome(){return isChrome()&&chromeVersion()<33}()||function isUnsupportedSafari(){return isSafari()&&safariVersion()<7}()||function isUnsupportedFirefox(){return isFirefox()&&firefoxVersion()<25}()}},"./src/code-studio/progressRedux.ts":function(__unused_webpack_module,exports,__webpack_require__){var _a,_b,__assign=this&&this.__assign||function(){return __assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar},__spreadArray=this&&this.__spreadArray||function(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i0)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar},__spreadArray=this&&this.__spreadArray||function(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar},__spreadArray=this&&this.__spreadArray||function(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i18e5},MetricsReporter.prototype.setReportingDisabled=function(){this.lastCheckCanReportTime=Date.now(),localStorage.setItem("cdo-metrics-reporter-last-check-time",this.lastCheckCanReportTime.toString())},MetricsReporter.prototype.shouldReport=function(){return!(0,utils_1.isDevelopmentEnvironment)()},MetricsReporter}();exports.default=new MetricsReporter(new DashboardMetricsApi_1.default)},"./src/types/progressTypes.ts":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewType=exports.ReviewStates=exports.PUZZLE_PAGE_NONE=void 0,exports.PUZZLE_PAGE_NONE=-1,exports.ReviewStates={completed:"completed",keepWorking:"keepWorking",awaitingReview:"awaitingReview"},exports.ViewType={Participant:"Participant",Instructor:"Instructor"}},"./src/util/AuthenticityTokenStore.ts":function(__unused_webpack_module,exports){var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))},__generator=this&&this.__generator||function(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(1&t[0])throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),throw:verb(1),return:verb(2)},"function"==typeof Symbol&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return function step(op){if(f)throw new TypeError("Generator is already executing.");for(;g&&(g=0,op[0]&&(_=0)),_;)try{if(f=1,y&&(t=2&op[0]?y.return:op[0]?y.throw||((t=y.return)&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;switch(y=0,t&&(op=[2&op[0],t.value]),op[0]){case 0:case 1:t=op;break;case 4:return _.label++,{value:op[1],done:!1};case 5:_.label++,y=op[1],op=[0];continue;case 7:op=_.ops.pop(),_.trys.pop();continue;default:if(!(t=_.trys,(t=t.length>0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]{Object.defineProperty(exports,"__esModule",{value:!0}),exports.canChangeLevelInPage=function canChangeLevelInPage(currentLevel,newLevel){if(new URL(document.location).pathname.split("/").includes("summary"))return!1;return(null==currentLevel?void 0:currentLevel.usesLab2)&&(null==newLevel?void 0:newLevel.usesLab2)},exports.setWindowTitle=setWindowTitle,exports.setupNavigationHandler=function setupNavigationHandler(initialLevelId){window.history.replaceState({levelId:initialLevelId},""),window.addEventListener("popstate",(function(event){var _event$state,levelId=null===(_event$state=event.state)||void 0===_event$state?void 0:_event$state.levelId;levelId&&((0,_notifyLevelChange.default)(null,levelId),(0,_redux.getStore)().dispatch((0,_progressRedux.setCurrentLevelId)(levelId)))}))},exports.updateBrowserForLevelNavigation=function updateBrowserForLevelNavigation(progressStoreState,levelPath,levelId){window.history.pushState({levelId},"",levelPath+window.location.search),setWindowTitle(progressStoreState,levelId)};var _progressRedux=__webpack_require__("./src/code-studio/progressRedux.ts"),_notifyLevelChange=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(__webpack_require__("./src/lab2/utils/notifyLevelChange.ts")),_redux=__webpack_require__("./src/redux.js");function setWindowTitle(progressStoreState,newLevelId){var lesson=progressStoreState.lessons.find((function(lesson){return lesson.id===progressStoreState.currentLessonId})),numLessons=lesson.num_script_lessons,lessonName=lesson.name,lessonIndex=lesson.levels.findIndex((function(level){return level.activeId===newLevelId}))+1,scriptDisplayName=progressStoreState.scriptDisplayName;document.title=numLessons>1?"".concat(lessonName," #").concat(lessonIndex," | ").concat(scriptDisplayName," - Code.org"):"".concat(lessonName," #").concat(lessonIndex," - Code.org")}},"./src/code-studio/progressReduxSelectors.js":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.progressionsFromLevels=exports.nextLevelId=exports.levelsForLessonId=exports.levelsByLesson=exports.levelCount=exports.levelById=exports.lessons=exports.lessonExtrasUrl=exports.isPerfect=exports.hasLockableLessons=exports.hasGroups=exports.groupedLessons=exports.getUserAppOptionsPath=exports.getProgressLevelType=exports.getLevelPropertiesPath=exports.getCurrentScriptLevelId=exports.getCurrentLevels=exports.getCurrentLevel=exports.getCurrentLesson=exports.__testonly__=exports.ProgressLevelType=void 0;var _lodash=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(__webpack_require__("./node_modules/lodash/lodash.js")),_constants=__webpack_require__("./src/constants.js"),_progressHelpers=__webpack_require__("./src/templates/progress/progressHelpers.js"),_sharedConstants=__webpack_require__("./generated-scripts/sharedConstants.ts"),_activityUtils=__webpack_require__("./src/code-studio/activityUtils.js");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 _toConsumableArray(r){return function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}(r)||function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e1},exports.getCurrentLesson=function getCurrentLesson(state){var _state$progress$lesso;return null===(_state$progress$lesso=state.progress.lessons)||void 0===_state$progress$lesso?void 0:_state$progress$lesso.find((function(l){return l.id===state.progress.currentLessonId}))};var lessonFromLessonAtIndex=function lessonFromLessonAtIndex(state,lessonIndex){return _objectSpread(_objectSpread({},lessonFromLesson(state.lessons[lessonIndex])),{},{isFocusArea:state.focusAreaLessonIds.includes(state.lessons[lessonIndex].id)})},lessonFromLesson=function lessonFromLesson(lesson){return _lodash.default.pick(lesson,["name","id","lockable","lessonNumber","lessonStartUrl","lesson_plan_html_url","lesson_feedback_url","student_lesson_plan_html_url","description_student","description_teacher"])},peerReviewLesson=(exports.lessons=function lessons(state){return state.lessons.map((function(_,index){return lessonFromLessonAtIndex(state,index)}))},function peerReviewLesson(state){return _objectSpread(_objectSpread({},lessonFromLesson(state.peerReviewLessonInfo)),{},{id:-1,lockable:!1,isFocusArea:!1})}),peerReviewLevels=function peerReviewLevels(state){return state.peerReviewLessonInfo.levels.map((function(level,index){return _objectSpread(_objectSpread({},level),{},{id:(-1).toString(),isLocked:level.locked,status:level.status||_sharedConstants.LevelStatus.not_tried,levelNumber:index+1})}))},ProgressLevelType=exports.ProgressLevelType={SCRIPT_LEVEL:"script_level",LEVEL:"level"},getProgressLevelType=exports.getProgressLevelType=function getProgressLevelType(state){return state.progress.lessons?ProgressLevelType.SCRIPT_LEVEL:state.progress.currentLevelId?ProgressLevelType.LEVEL:void 0},_levelWithProgress=(exports.getLevelPropertiesPath=function getLevelPropertiesPath(state){if(state.progress.lessons){var _state$progress$lesso2,levelPosition,sublevelPosition,scriptName=state.progress.scriptName,lessonPosition=null===(_state$progress$lesso2=state.progress.lessons)||void 0===_state$progress$lesso2?void 0:_state$progress$lesso2.find((function(lesson){return lesson.id===state.progress.currentLessonId})).relative_position,currentLevel=getCurrentLevel(state);if(levelPosition=currentLevel.levelNumber,currentLevel.parentLevelId)levelPosition=levelById(state.progress,state.progress.currentLessonId,currentLevel.parentLevelId).levelNumber,sublevelPosition=currentLevel.levelNumber;return"/s/".concat(scriptName,"/lessons/").concat(lessonPosition,"/levels/").concat(levelPosition,"/").concat(void 0===sublevelPosition?"":"sublevel/".concat(sublevelPosition,"/"),"level_properties")}if(null!==state.progress.currentLevelId){var levelId=state.progress.currentLevelId;return"/levels/".concat(levelId,"/level_properties")}},exports.getUserAppOptionsPath=function getUserAppOptionsPath(state){if(state.progress.lessons){var _state$progress$lesso3,scriptName=state.progress.scriptName,lessonPosition=null===(_state$progress$lesso3=state.progress.lessons)||void 0===_state$progress$lesso3?void 0:_state$progress$lesso3.find((function(lesson){return lesson.id===state.progress.currentLessonId})).relative_position,levelPosition=getCurrentLevel(state).levelNumber,levelId=state.progress.currentLevelId;return"/api/user_app_options/".concat(scriptName,"/").concat(lessonPosition,"/").concat(levelPosition,"/").concat(levelId)}},function levelWithProgress(_ref,level,isLockable,parentLevelId){var _levelProgress,_level$ids,_level$sublevels,levelResults=_ref.levelResults,unitProgress=_ref.unitProgress,_ref$levelPairing=_ref.levelPairing,levelPairing=void 0===_ref$levelPairing?{}:_ref$levelPairing,currentLevelId=_ref.currentLevelId,normalizedLevel=(0,_progressHelpers.processedLevel)(level,parentLevelId);level.ids&&(normalizedLevel.id=function bestResultLevelId(levelIds,progressData){if(1===levelIds.length)return levelIds[0];var attemptedIds=levelIds.filter((function(id){return progressData[id]}));if(0===attemptedIds.length)return levelIds[0];var bestId=attemptedIds[0],bestResult=progressData[bestId];return attemptedIds.forEach((function(id){var result=progressData[id];result>bestResult&&(bestId=id,bestResult=result)})),bestId}(level.ids,levelResults));var status=_sharedConstants.LevelStatus.not_tried,locked=isLockable,teacherFeedbackReviewState=null,levelProgress=unitProgress[normalizedLevel.id];null!==(_levelProgress=levelProgress)&&void 0!==_levelProgress&&_levelProgress.pages&&(levelProgress=levelProgress.pages[normalizedLevel.pageNumber-1]),levelProgress?(status=levelProgress.status,locked=levelProgress.locked,teacherFeedbackReviewState=levelProgress.teacherFeedbackReviewState):level.kind!==_sharedConstants.LevelKind.assessment&&(status=(0,_activityUtils.activityCssClass)(levelResults[normalizedLevel.id]));var isCurrent=normalizedLevel.id===currentLevelId||!(null===(_level$ids=level.ids)||void 0===_level$ids||!_level$ids.includes[currentLevelId]);return _objectSpread(_objectSpread({},normalizedLevel),{},{status,isCurrentLevel:isCurrent,paired:levelPairing[level.activeId],isLocked:locked,teacherFeedbackReviewState,sublevels:null===(_level$sublevels=level.sublevels)||void 0===_level$sublevels?void 0:_level$sublevels.map((function(sublevel){return _levelWithProgress({levelResults,unitProgress,levelPairing,currentLevelId},sublevel,isLockable,normalizedLevel.id)}))})}),levelsByLesson=exports.levelsByLesson=function levelsByLesson(_ref2){var lessons=_ref2.lessons,levelResults=_ref2.levelResults,unitProgress=_ref2.unitProgress,levelPairing=_ref2.levelPairing,currentLevelId=_ref2.currentLevelId;return lessons.map((function(lesson){return lesson.levels.map((function(level){return _levelWithProgress({levelResults,unitProgress,levelPairing,currentLevelId},level,lesson.lockable)}))}))},levelsForLessonId=exports.levelsForLessonId=function levelsForLessonId(state,lessonId){var _state$lessons,lesson=null===(_state$lessons=state.lessons)||void 0===_state$lessons?void 0:_state$lessons.find((function(lesson){return lesson.id===lessonId}));return null==lesson?void 0:lesson.levels.map((function(level){return _levelWithProgress(state,level,lesson.lockable)}))},levelById=exports.levelById=function levelById(state,lessonId,levelId){var _levelsForLessonId,_levelsForLessonId$fl;return null===(_levelsForLessonId=levelsForLessonId(state,lessonId))||void 0===_levelsForLessonId||null===(_levelsForLessonId$fl=_levelsForLessonId.flatMap((function(level){return[level].concat(_toConsumableArray((null==level?void 0:level.sublevels)||[]))})))||void 0===_levelsForLessonId$fl?void 0:_levelsForLessonId$fl.find((function(level){return level.id===levelId}))},getCurrentLevel=exports.getCurrentLevel=function getCurrentLevel(state){var _getCurrentLevels,_getCurrentLevels$fla;return null===(_getCurrentLevels=getCurrentLevels(state))||void 0===_getCurrentLevels||null===(_getCurrentLevels$fla=_getCurrentLevels.flatMap((function(level){return[level].concat(_toConsumableArray((null==level?void 0:level.sublevels)||[]))})))||void 0===_getCurrentLevels$fla?void 0:_getCurrentLevels$fla.find((function(level){return level.isCurrentLevel}))},getCurrentLevels=exports.getCurrentLevels=function getCurrentLevels(state){return levelsForLessonId(state.progress,state.progress.currentLessonId)},groupedLessons=(exports.getCurrentScriptLevelId=function getCurrentScriptLevelId(state){var _levelById,currentLevel=getCurrentLevel(state);if(currentLevel)return currentLevel.parentLevelId?null===(_levelById=levelById(state.progress,state.progress.currentLessonId,currentLevel.parentLevelId))||void 0===_levelById?void 0:_levelById.scriptLevelId:currentLevel.scriptLevelId},exports.nextLevelId=function nextLevelId(state){if(getProgressLevelType(state)===ProgressLevelType.SCRIPT_LEVEL){var levels=levelsForLessonId(state.progress,state.progress.currentLessonId),currentLevel=getCurrentLevel(state);if(currentLevel.parentLevelId)return currentLevel.parentLevelId;var currentLevelIndex=currentLevel.levelNumber-1;if(currentLevelIndex!==levels.length-1)return levels[currentLevelIndex+1].id}},exports.levelCount=function levelCount(state){return getProgressLevelType(state)===ProgressLevelType.LEVEL?1:getProgressLevelType(state)===ProgressLevelType.SCRIPT_LEVEL?getCurrentLevels(state).length:0},exports.lessonExtrasUrl=function lessonExtrasUrl(state,lessonId){return state.lessonExtrasEnabled?state.lessons.find((function(lesson){return lesson.id===lessonId})).lesson_extras_level_url:""},exports.isPerfect=function isPerfect(state,levelId){return!!state.levelResults&&state.levelResults[levelId]>=_constants.TestResults.MINIMUM_OPTIMAL_RESULT},exports.groupedLessons=function groupedLessons(state){var includeBonusLevels=arguments.length>1&&void 0!==arguments[1]&&arguments[1],byGroup={},allLevels=levelsByLesson(state);return state.lessonGroups.forEach((function(lessonGroup){byGroup[lessonGroup.display_name]={lessonGroup:{id:lessonGroup.id,userFacing:lessonGroup.user_facing,displayName:lessonGroup.display_name,description:lessonGroup.description,bigQuestions:lessonGroup.big_questions},lessons:[],levelsByLesson:[]}})),state.lessons.forEach((function(lesson,index){var group=lesson.lesson_group_display_name,lessonAtIndex=lessonFromLessonAtIndex(state,index),lessonLevels=allLevels[index];includeBonusLevels||(lessonLevels=lessonLevels.filter((function(level){return!level.bonus}))),byGroup[group]&&(byGroup[group].lessons.push(lessonAtIndex),byGroup[group].levelsByLesson.push(lessonLevels))})),state.peerReviewLessonInfo&&(byGroup[state.peerReviewLessonInfo.lesson_group_display_name]={group:state.peerReviewLessonInfo.lesson_group_display_name,lessonGroup:{id:null,displayName:state.peerReviewLessonInfo.lesson_group_display_name,description:null,bigQuestions:null},lessons:[peerReviewLesson(state)],levelsByLesson:[peerReviewLevels(state)]}),_lodash.default.values(byGroup)});exports.progressionsFromLevels=function progressionsFromLevels(levels){var progressions=[];if(0===levels.length)return progressions;var currentProgression={start:0,name:levels[0].progression||levels[0].name,displayName:levels[0].progressionDisplayName||levels[0].name,levels:[levels[0]]};return levels.slice(1).forEach((function(level,index){(level.progression||level.name)===currentProgression.name?currentProgression.levels.push(level):(progressions.push(currentProgression),currentProgression={start:index+1,name:level.progression||level.name,displayName:level.progressionDisplayName||level.name,levels:[level]})})),progressions.push(currentProgression),progressions};exports.__testonly__={}},"./src/code-studio/verifiedInstructorRedux.js":(__unused_webpack_module,exports)=>{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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:initialState,action=arguments.length>1?arguments[1]:void 0;if(action.type===SET_VERIFIED)return _objectSpread(_objectSpread({},state),{},{isVerified:!0});if(action.type===SET_VERIFIED_RESOURCES)return _objectSpread(_objectSpread({},state),{},{hasVerifiedResources:!0});return _objectSpread({},state)},exports.setVerifiedResources=exports.setVerified=void 0;var SET_VERIFIED="verifiedInstructor/SET_VERIFIED",SET_VERIFIED_RESOURCES="verifiedInstructor/SET_VERIFIED_RESOURCES",initialState=(exports.setVerified=function setVerified(){return{type:SET_VERIFIED}},exports.setVerifiedResources=function setVerifiedResources(hasVerifiedResources){return{type:SET_VERIFIED_RESOURCES}},{isVerified:!1,hasVerifiedResources:!1})},"./src/util/browser-detector.js":(__unused_webpack_module,exports)=>{function isIE(){return-1!==navigator.userAgent.indexOf("MSIE")||isIE11()}function IEVersion(){return isIE11()?"11":navigator.userAgent.substring(navigator.userAgent.lastIndexOf("MSIE")+5).split(".")[0]}function isChrome(){return-1!==navigator.userAgent.lastIndexOf("Chrome/")}function chromeVersion(){return navigator.userAgent.substring(navigator.userAgent.lastIndexOf("Chrome/")+7).split(".")[0]}function isSafari(){return-1!==navigator.userAgent.indexOf("Safari/")}function safariVersion(){return navigator.userAgent.substring(navigator.userAgent.lastIndexOf("Version/")+8).split(".")[0]}function isFirefox(){return-1!==navigator.userAgent.indexOf("Firefox")}function firefoxVersion(){return navigator.userAgent.substring(navigator.userAgent.lastIndexOf("Firefox/")+8).split(".")[0]}function isIE11(){return!!window.MSInputMethodContext&&!!document.documentMode}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBrowserName=function getBrowserName(){var includeVersion=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(isChrome())return"Chrome"+(includeVersion?" ".concat(chromeVersion()):"");if(isIE())return"Internet Explorer"+(includeVersion?" ".concat(IEVersion()):"");if(isFirefox())return"Firefox"+(includeVersion?" ".concat(firefoxVersion()):"");if(isSafari())return"Safari"+(includeVersion?" ".concat(safariVersion()):"");return navigator.userAgent},exports.isIE11=isIE11,exports.isMobileDevice=function isMobileDevice(){var check=!1;return function(a){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))&&(check=!0)}(navigator.userAgent||navigator.vendor||window.opera),check},exports.isStorageAvailable=function isStorageAvailable(type){try{var storage=window[type],x="__storage_test__";return storage.setItem(x,x),storage.removeItem(x),!0}catch(e){return!1}},exports.isUnsupportedBrowser=function isUnsupportedBrowser(){return function isUnsupportedIE(){return isIE()&&IEVersion()<11}()||function isUnsupportedChrome(){return isChrome()&&chromeVersion()<33}()||function isUnsupportedSafari(){return isSafari()&&safariVersion()<7}()||function isUnsupportedFirefox(){return isFirefox()&&firefoxVersion()<25}()}},"./src/code-studio/progressRedux.ts":function(__unused_webpack_module,exports,__webpack_require__){var _a,_b,__assign=this&&this.__assign||function(){return __assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar},__spreadArray=this&&this.__spreadArray||function(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i0)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar},__spreadArray=this&&this.__spreadArray||function(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0)&&!(r=i.next()).done;)ar.push(r.value)}catch(error){e={error}}finally{try{r&&!r.done&&(m=i.return)&&m.call(i)}finally{if(e)throw e.error}}return ar},__spreadArray=this&&this.__spreadArray||function(to,from,pack){if(pack||2===arguments.length)for(var ar,i=0,l=from.length;i18e5},MetricsReporter.prototype.setReportingDisabled=function(){this.lastCheckCanReportTime=Date.now(),localStorage.setItem("cdo-metrics-reporter-last-check-time",this.lastCheckCanReportTime.toString())},MetricsReporter.prototype.shouldReport=function(){return!(0,utils_1.isDevelopmentEnvironment)()},MetricsReporter}();exports.default=new MetricsReporter(new DashboardMetricsApi_1.default)},"./src/types/progressTypes.ts":(__unused_webpack_module,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewType=exports.ReviewStates=exports.PUZZLE_PAGE_NONE=void 0,exports.PUZZLE_PAGE_NONE=-1,exports.ReviewStates={completed:"completed",keepWorking:"keepWorking",awaitingReview:"awaitingReview"},exports.ViewType={Participant:"Participant",Instructor:"Instructor"}},"./src/util/AuthenticityTokenStore.ts":function(__unused_webpack_module,exports){var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))},__generator=this&&this.__generator||function(thisArg,body){var f,y,t,g,_={label:0,sent:function(){if(1&t[0])throw t[1];return t[1]},trys:[],ops:[]};return g={next:verb(0),throw:verb(1),return:verb(2)},"function"==typeof Symbol&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return function step(op){if(f)throw new TypeError("Generator is already executing.");for(;g&&(g=0,op[0]&&(_=0)),_;)try{if(f=1,y&&(t=2&op[0]?y.return:op[0]?y.throw||((t=y.return)&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;switch(y=0,t&&(op=[2&op[0],t.value]),op[0]){case 0:case 1:t=op;break;case 4:return _.label++,{value:op[1],done:!1};case 5:_.label++,y=op[1],op=[0];continue;case 7:op=_.ops.pop(),_.trys.pop();continue;default:if(!(t=_.trys,(t=t.length>0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])||6!==op[0]&&2!==op[0])){_=0;continue}if(3===op[0]&&(!t||op[1]>t[0]&&op[1]{Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _redactableMarkdown=_interopRequireDefault(__webpack_require__("./node_modules/@code-dot-org/redactable-markdown/dist/main.js")),_remarkPlugins=__webpack_require__("./node_modules/@code-dot-org/remark-plugins/src/index.js"),_github=_interopRequireDefault(__webpack_require__("./node_modules/hast-util-sanitize/lib/github.json")),_propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_rehypeRaw=_interopRequireDefault(__webpack_require__("./node_modules/rehype-raw/index.js")),_rehypeReact=_interopRequireDefault(__webpack_require__("./node_modules/rehype-react/index.js")),_rehypeSanitize=_interopRequireDefault(__webpack_require__("./node_modules/rehype-sanitize/index.js")),_remarkRehype=_interopRequireDefault(__webpack_require__("./node_modules/remark-rehype/index.js")),_unified=_interopRequireDefault(__webpack_require__("./node_modules/unified/index.js")),_externalLinks=_interopRequireDefault(__webpack_require__("./src/templates/plugins/externalLinks.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{function isExternalLink(url){return!/https?:\/\/([^.]+\.)*code.org(:[0-9]+)?\//.test(function fullyQualified(path){return(a=a||document.createElement("a")).href=path,a.href}(url))}var a;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function externalLinks(){var options=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},tokenizers=this.Parser.prototype.inlineTokenizers,original=tokenizers.link,all="all"===options.links;tokenizers.link=function(eat,value,silent){var link=original.call(this,eat,value,silent);if(link&&"link"===link.type&&(all||isExternalLink(link.url))){link.data=link.data||{},link.data.hProperties=link.data.hProperties||{};var props=link.data.hProperties;props.target=props.target||"_blank",props.rel="noreferrer noopener"}return link},tokenizers.link.locator=original.locator},exports.isExternalLink=isExternalLink},"./src/templates/progress/FocusAreaIndicator.jsx":(module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _radium=_interopRequireDefault(__webpack_require__("./node_modules/radium/es/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_reactTooltip=_interopRequireDefault(__webpack_require__("./node_modules/react-tooltip/dist/index.js")),_FontAwesome=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/FontAwesome.jsx")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var styles={main:{display:"inline-block",position:"absolute",right:0,top:0,whiteSpace:"nowrap"},arrowContainer:{display:"inline-block",position:"relative",top:10},leftArrow:{display:"inline-block",width:0,height:0,borderStyle:"solid",borderWidth:"17px 20px 17px",borderColor:"transparent ".concat(_color.default.cyan," transparent transparent")},focusArea:{display:"inline-block",backgroundColor:_color.default.cyan,color:_color.default.white,height:34,lineHeight:"34px",position:"relative",top:-3},text:{display:"inline-block"},focusAreaIcon:{display:"inline-block",color:_color.default.white,lineHeight:"13px",padding:5,marginLeft:5,marginRight:5,borderRadius:4,":hover":{backgroundColor:_color.default.default_blue}}};exports.default=(0,_radium.default)((function FocusAreaIndicator(){return _react.default.createElement("div",{style:styles.main},_react.default.createElement("div",{style:styles.arrowContainer},_react.default.createElement("div",{style:styles.leftArrow})),_react.default.createElement("div",{style:styles.focusArea},_react.default.createElement("div",{style:styles.text},"Focus Area"),_react.default.createElement("a",{href:window.location.pathname+"/preview-assignments"},_react.default.createElement("div",{style:styles.focusAreaIcon,"data-tip":!0,"data-for":"focus-area"},_react.default.createElement(_FontAwesome.default,{icon:"pencil"})))),_react.default.createElement(_reactTooltip.default,{id:"focus-area",role:"tooltip",effect:"solid"},"Click to change your focus area."))}));module.exports=exports.default},"./src/templates/progress/ProgressBubbleSet.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedProgressBubbleSet=void 0;var _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"),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_ProgressBubble=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressBubble.jsx")),_progressStyles=__webpack_require__("./src/templates/progress/progressStyles.js"),_progressTypes=__webpack_require__("./src/templates/progress/progressTypes.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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r{Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedProgressLesson=void 0;var _lodash=_interopRequireDefault(__webpack_require__("./node_modules/lodash/lodash.js")),_propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_reactRedux=__webpack_require__("./node_modules/react-redux/es/index.js"),_reactTooltip=_interopRequireDefault(__webpack_require__("./node_modules/react-tooltip/dist/index.js")),_viewAsRedux=__webpack_require__("./src/code-studio/viewAsRedux.js"),_fontConstants=_interopRequireDefault(__webpack_require__("./src/fontConstants.js")),_Button=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/Button.jsx")),_firehose=_interopRequireDefault(__webpack_require__("./src/metrics/firehose.js")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_FontAwesome=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/FontAwesome.jsx")),_FocusAreaIndicator=_interopRequireDefault(__webpack_require__("./src/templates/progress/FocusAreaIndicator.jsx")),_progressHelpers=__webpack_require__("./src/templates/progress/progressHelpers.js"),_ProgressLessonContent=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressLessonContent.jsx")),_ProgressLessonTeacherInfo=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressLessonTeacherInfo.jsx")),_progressTypes=__webpack_require__("./src/templates/progress/progressTypes.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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r{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")),_progressReduxSelectors=__webpack_require__("./src/code-studio/progressReduxSelectors.js"),_fontConstants=_interopRequireDefault(__webpack_require__("./src/fontConstants.js")),_SafeMarkdown=_interopRequireDefault(__webpack_require__("./src/templates/SafeMarkdown.jsx")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_ProgressBubbleSet=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressBubbleSet.jsx")),_ProgressLevelSet=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressLevelSet.jsx")),_progressTypes=__webpack_require__("./src/templates/progress/progressTypes.js");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}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}_defineProperty(exports.default=function(_React$Component){function ProgressLessonContent(){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)}(ProgressLessonContent,_React$Component),ProgressLessonContent.prototype.render=function render(){var bubbles,_this$props=this.props,description=_this$props.description,levels=_this$props.levels,disabled=_this$props.disabled,selectedSectionId=_this$props.selectedSectionId,lessonName=_this$props.lessonName,progressions=(0,_progressReduxSelectors.progressionsFromLevels)(levels);return bubbles=0===progressions.length?_react.default.createElement("span",{style:styles.noLevelsWarning},_locale.default.lessonContainsNoLevels()):1!==progressions.length||progressions[0].name?progressions.map((function(progression,index){return _react.default.createElement(_ProgressLevelSet.default,{key:index,name:progression.displayName,lessonName,levels:progression.levels,disabled,selectedSectionId})})):_react.default.createElement(_ProgressBubbleSet.default,{levels:progressions[0].levels,disabled,selectedSectionId}),_react.default.createElement("div",null,description&&_react.default.createElement("div",{style:styles.summary},_react.default.createElement(_SafeMarkdown.default,{markdown:description})),_react.default.createElement("div",null," ",bubbles," "))},ProgressLessonContent}(_react.default.Component),"propTypes",{description:_propTypes.default.string,levels:_propTypes.default.arrayOf(_progressTypes.levelWithProgressType).isRequired,disabled:_propTypes.default.bool.isRequired,selectedSectionId:_propTypes.default.number,lessonName:_propTypes.default.string});var styles={summary:function _objectSpread(e){for(var r=1;r{Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedProgressLevelSet=void 0;var _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"),_fontConstants=_interopRequireDefault(__webpack_require__("./src/fontConstants.js")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_ProgressBubbleSet=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressBubbleSet.jsx")),_progressHelpers=__webpack_require__("./src/templates/progress/progressHelpers.js"),_ProgressPill=_interopRequireDefault(__webpack_require__("./src/templates/progress/ProgressPill.jsx")),_progressTypes=__webpack_require__("./src/templates/progress/progressTypes.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 ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r1,url=multiLevelStep||onBubbleClick?void 0:levels[0].url,onClick=multiLevelStep?void 0:function(){return onBubbleClick(levels[0])},col2Style=isRtl?styles.col2RTL:styles.col2,progressStyle=!1;return levels[0].isUnplugged||levels[levels.length-1].isUnplugged?multiLevelStep?(pillText="",icon=(0,_progressHelpers.getIconForLevel)(levels[0])):(pillText=_locale.default.unpluggedActivity(),progressStyle=!0):(pillText=levels[0].levelNumber.toString(),icon=(0,_progressHelpers.getIconForLevel)(levels[0]),multiLevelStep&&(pillText+="-".concat(levels[levels.length-1].levelNumber))),_react.default.createElement("table",{style:styles.table},_react.default.createElement("tbody",null,_react.default.createElement("tr",null,_react.default.createElement("td",{style:styles.col1},_react.default.createElement(_ProgressPill.default,{levels,icon,text:pillText,disabled,selectedSectionId,progressStyle,onSingleLevelClick:onBubbleClick})),_react.default.createElement("td",{style:col2Style},_react.default.createElement("a",{href:url,onClick},_react.default.createElement("div",{style:_objectSpread(_objectSpread({},styles.nameText),styles.text)},name)))),multiLevelStep&&_react.default.createElement("tr",null,_react.default.createElement("td",null,_react.default.createElement("div",{style:styles.linesAndDot},_react.default.createElement("div",{style:styles.verticalLine}),_react.default.createElement("div",{style:styles.horizontalLine}),_react.default.createElement("div",{style:styles.dot}))),_react.default.createElement("td",{style:styles.col2},_react.default.createElement(_ProgressBubbleSet.default,{levels,disabled,selectedSectionId,onBubbleClick,lessonName})))))},ProgressLevelSet}(_react.default.Component);_defineProperty(ProgressLevelSet,"propTypes",{name:_propTypes.default.string,lessonName:_propTypes.default.string,levels:_propTypes.default.arrayOf(_progressTypes.levelWithProgressType).isRequired,disabled:_propTypes.default.bool.isRequired,selectedSectionId:_propTypes.default.number,onBubbleClick:_propTypes.default.func,isRtl:_propTypes.default.bool});var styles={table:{marginTop:12},nameText:{color:_color.default.charcoal},text:_objectSpread(_objectSpread({display:"inline-block"},_fontConstants.default["main-font-semi-bold"]),{},{fontSize:14,letterSpacing:-.12}),col2:{paddingLeft:20},col2RTL:{paddingRight:20},linesAndDot:{whiteSpace:"nowrap",marginLeft:"50%",marginRight:14},verticalLine:{display:"inline-block",backgroundColor:_color.default.lighter_gray,height:15,width:3,position:"relative",bottom:2},horizontalLine:{display:"inline-block",backgroundColor:_color.default.lighter_gray,position:"relative",top:-2,height:3,width:"100%"},dot:{display:"inline-block",position:"relative",left:-2,top:1,backgroundColor:_color.default.lighter_gray,height:10,width:10,borderRadius:10}};exports.UnconnectedProgressLevelSet=ProgressLevelSet,exports.default=(0,_reactRedux.connect)((function(state){return{isRtl:state.isRtl}}))((0,_radium.default)(ProgressLevelSet))},"./src/templates/progress/ProgressPill.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.UnconnectedProgressPill=void 0;var _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"),_utils=__webpack_require__("./src/code-studio/utils.js"),_fontConstants=_interopRequireDefault(__webpack_require__("./src/fontConstants.js")),_types=__webpack_require__("./src/templates/feedback/types.js"),_BubbleBadge=function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}(__webpack_require__("./src/templates/progress/BubbleBadge.jsx")),_BubbleFactory=__webpack_require__("./src/templates/progress/BubbleFactory.jsx"),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_FontAwesome=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/FontAwesome.jsx")),_progressHelpers=__webpack_require__("./src/templates/progress/progressHelpers.js"),_progressStyles=__webpack_require__("./src/templates/progress/progressStyles.js"),_progressTypes=__webpack_require__("./src/templates/progress/progressTypes.js");function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}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;e1,url=this.getUrl(),onClick=multiLevelStep||disabled||url?void 0:function(){return onSingleLevelClick(firstLevel)},style=_objectSpread(_objectSpread(_objectSpread({},styles.levelPill),(url||onClick)&&_progressStyles.hoverStyle),!multiLevelStep&&(0,_progressStyles.levelProgressStyle)(firstLevel.status,firstLevel.kind)),iconMarginStyle=isRtl?styles.iconMarginRTL:styles.iconMargin,tooltipProps=this.getTooltipProps(),hasKeepWorkingFeedback=firstLevel.teacherFeedbackReviewState===_types.ReviewStates.keepWorking,displayBadge=!multiLevelStep&&(hasKeepWorkingFeedback||(0,_progressHelpers.isLevelAssessment)(firstLevel)),textStyle=progressStyle?styles.textProgressStyle:styles.text;return _react.default.createElement("a",{href:url,style:{textDecoration:"none"},className:"uitest-ProgressPill",onClick},_react.default.createElement("div",_extends({},tooltipProps,{style}),icon&&_react.default.createElement(_FontAwesome.default,{icon}),text&&_react.default.createElement("div",{className:"ProgressPillTextAndIcon",style:_objectSpread(_objectSpread({},textStyle),icon&&iconMarginStyle)},text),tooltip,displayBadge&&_react.default.createElement(_BubbleBadge.default,{badgeType:hasKeepWorkingFeedback?_BubbleBadge.BadgeType.keepWorking:_BubbleBadge.BadgeType.assessment,bubbleSize:_BubbleFactory.BubbleSize.full,bubbleShape:_BubbleFactory.BubbleShape.pill})))},ProgressPill}(_react.default.Component);_defineProperty(ProgressPill,"propTypes",{levels:_propTypes.default.arrayOf(_progressTypes.levelWithProgressType),icon:_propTypes.default.string,text:_propTypes.default.string,tooltip:_propTypes.default.element,disabled:_propTypes.default.bool,selectedSectionId:_propTypes.default.number,progressStyle:_propTypes.default.bool,onSingleLevelClick:_propTypes.default.func,isRtl:_propTypes.default.bool});var styles={levelPill:_objectSpread(_objectSpread({textAlign:"center",justifyContent:"center",borderWidth:2,borderStyle:"solid",borderColor:_color.default.lighter_gray,color:_color.default.charcoal,display:"flex",fontSize:16},_fontConstants.default["main-font-semi-bold"]),{},{borderRadius:20,paddingLeft:10,paddingRight:10,paddingTop:6,paddingBottom:6,minWidth:70,lineHeight:"18px",marginTop:3,marginBottom:3,position:"relative"}),text:_objectSpread(_objectSpread({display:"inline-block"},_fontConstants.default["main-font-semi-bold"]),{},{letterSpacing:-.12}),textProgressStyle:_objectSpread(_objectSpread({display:"inline-block"},_fontConstants.default["main-font-semi-bold"]),{},{fontSize:12,letterSpacing:-.12,width:120,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),iconMargin:{marginLeft:10},iconMarginRTL:{marginRight:10}};exports.UnconnectedProgressPill=ProgressPill,exports.default=(0,_reactRedux.connect)((function(state){return{isRtl:state.isRtl}}))((0,_radium.default)(ProgressPill))}}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFNBQVUsU0FDVkMsYUFBYyxhQUVoQnpCLFdBQVksQ0FDVi9QLFdBQVksSUFFZDhQLGNBQWUsQ0FDYjdQLFlBQWEsS0FJbUJ0RCxRQUFBQSx3QkFBR21TLGFBQWFuUyxRQUFBQSxTQUVyQyxFQUFBcUksWUFBQUEsVUFBUSxTQUFBQyxPQUFLLE1BQUssQ0FDL0I1QyxNQUFPNEMsTUFBTTVDLE1BQ2QsR0FGYyxFQUVYLEVBQUFqQyxRQUFBQSxTQUFPME8sYyIsInNvdXJjZXMiOlsid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvU2FmZU1hcmtkb3duLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3BsdWdpbnMvZXh0ZXJuYWxMaW5rcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3Byb2dyZXNzL0ZvY3VzQXJlYUluZGljYXRvci5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc0J1YmJsZVNldC5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc0xlc3Nvbi5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc0xlc3NvbkNvbnRlbnQuanN4Iiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvcHJvZ3Jlc3MvUHJvZ3Jlc3NMZXZlbFNldC5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc1BpbGwuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9jZXNzb3IgZnJvbSAnQGNvZGUtZG90LW9yZy9yZWRhY3RhYmxlLW1hcmtkb3duJztcbmltcG9ydCB7XG4gIGRldGFpbHMsXG4gIGNsaWNrYWJsZVRleHQsXG4gIGV4cGFuZGFibGVJbWFnZXMsXG4gIHZpc3VhbENvZGVCbG9jayxcbiAgeG1sQXNUb3BMZXZlbEJsb2NrLFxufSBmcm9tICdAY29kZS1kb3Qtb3JnL3JlbWFyay1wbHVnaW5zJztcbmltcG9ydCBkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hIGZyb20gJ2hhc3QtdXRpbC1zYW5pdGl6ZS9saWIvZ2l0aHViLmpzb24nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcmVoeXBlUmF3IGZyb20gJ3JlaHlwZS1yYXcnO1xuaW1wb3J0IHJlaHlwZVJlYWN0IGZyb20gJ3JlaHlwZS1yZWFjdCc7XG5pbXBvcnQgcmVoeXBlU2FuaXRpemUgZnJvbSAncmVoeXBlLXNhbml0aXplJztcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSc7XG5pbXBvcnQgdW5pZmllZCBmcm9tICd1bmlmaWVkJztcblxuaW1wb3J0IGV4dGVybmFsTGlua3MgZnJvbSAnLi9wbHVnaW5zL2V4dGVybmFsTGlua3MnO1xuXG4vKipcbiAqIEJhc2ljIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGEgbWFya2Rvd24gc3RyaW5nIGFzIEhUTUwsIHdpdGggc2FuaXRpemF0aW9uLlxuICogQ2FuIHNhZmVseSByZW5kZXIgbWFya2Rvd24gZXZlbiBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzLCB3aXRob3V0IHBvdGVudGlhbGx5XG4gKiBleHBvc2luZyB1cyB0byBhbiBYU1MgaW5qZWN0aW9uLlxuICovXG5jbGFzcyBTYWZlTWFya2Rvd24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG1hcmtkb3duOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3BlbkV4dGVybmFsTGlua3NJbk5ld1RhYjogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICAvLyBXZSBvbmx5IG9wZW4gZXh0ZXJuYWwgbGlua3MgaW4gYSBuZXcgdGFiIGlmIGl0J3MgZXhwbGljaXRseSBzcGVjaWZpZWRcbiAgICAvLyB0aGF0IHdlIGRvIHNvOyB0aGlzIGlzIGFic29sdXRlbHkgbm90IHNvbWV0aGluZyB3ZSB3YW50IHRvIGRvIGFzIGFcbiAgICAvLyBnZW5lcmFsIHByYWN0aWNlLCBidXQgdW5mb3J0dW5hdGVseSB0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIGluIHdoaWNoXG4gICAgLy8gaXQgaXMgY3VycmVudGx5IGEgcmVxdWlyZW1lbnQuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gdGhpcy5wcm9wcy5vcGVuRXh0ZXJuYWxMaW5rc0luTmV3VGFiXG4gICAgICA/IG1hcmtkb3duVG9SZWFjdEV4dGVybmFsTGlua3NcbiAgICAgIDogbWFya2Rvd25Ub1JlYWN0O1xuXG4gICAgY29uc3QgcmVuZGVyZWQgPSBPYmplY3QocHJvY2Vzc29yLnByb2Nlc3NTeW5jKHRoaXMucHJvcHMubWFya2Rvd24pLnJlc3VsdCk7XG5cbiAgICBjb25zdCBtYXJrZG93blByb3BzID0ge307XG4gICAgaWYgKHRoaXMucHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICBtYXJrZG93blByb3BzLmNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5pZCkge1xuICAgICAgbWFya2Rvd25Qcm9wcy5pZCA9IHRoaXMucHJvcHMuaWQ7XG4gICAgfVxuICAgIC8vIHJlaHlwZS1yZWFjdCB3aWxsIG9ubHkgd3JhcCB0aGUgY29tcGlsZWQgbWFya2Rvd24gaW4gYSA8ZGl2PiB0YWdcbiAgICAvLyBpZiBpdCBuZWVkcyB0byAoaWUsIGlmIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZSBtdWx0aXBsZSBlbGVtZW50c1xuICAgIC8vIHJldHVybmVkKSBvciB3ZSdyZSBhc3NpZ25pbmcgcHJvcHMuIFdlIHByZWZlciBjb25zaXN0ZW5jeSBvdmVyIGZsZXhpYmlsaXR5LFxuICAgIC8vIHNvIGhlcmUgd2Ugd3JhcCB0aGUgcmVzdWx0IGluIGEgZGl2IGlmIGl0IHdhc24ndCBhbHJlYWR5XG4gICAgaWYgKFxuICAgICAgcmVuZGVyZWQgJiZcbiAgICAgIHJlbmRlcmVkLnR5cGUgPT09ICdkaXYnICYmXG4gICAgICAhT2JqZWN0LmtleXMobWFya2Rvd25Qcm9wcykubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8ZGl2IHsuLi5tYXJrZG93blByb3BzfT57cmVuZGVyZWR9PC9kaXY+O1xuICAgIH1cbiAgfVxufVxuXG4vLyBjcmVhdGUgY3VzdG9tIHNhbml0aXphdGlvbiBzY2hlbWEgYXMgcGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvaGFzdC11dGlsLXNhbml0aXplI3NjaGVtYVxuLy8gdG8gc3VwcG9ydCBvdXIgY3VzdG9tIHN5bnRheGVzXG5jb25zdCBzY2hlbWEgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hKTtcblxuLy8gV2UgdXNlIGEgX2xvdF8gb2YgaW1hZ2UgZm9ybWF0dGluZyBzdHVmZiBpbiBvdXJcbi8vIGluc3RydWN0aW9ucywgcGFydGljdWxhcmx5IGluIENTUFxuc2NoZW1hLmF0dHJpYnV0ZXMuaW1nLnB1c2goJ2hlaWdodCcsICd3aWR0aCcpO1xuXG4vLyBBZGQgc3VwcG9ydCBmb3IgZXhwYW5kYWJsZUltYWdlc1xuc2NoZW1hLnRhZ05hbWVzLnB1c2goJ3NwYW4nKTtcbnNjaGVtYS5hdHRyaWJ1dGVzLnNwYW4gPSBbJ2RhdGFVcmwnLCAnY2xhc3NOYW1lJ107XG5cbi8vIEFkZCBzdXBwb3J0IGZvciBpbmxpbmUgc3R5bGVzIChncm9zcylcbi8vIFRPRE8gcmVwbGFjZSBhbGwgaW5saW5lIHN0eWxlcyBpbiBvdXIgY3VycmljdWx1bSBjb250ZW50IHdpdGhcbi8vIHNlbWFudGljYWxseS1zaWduaWZpY2FudCBjb250ZW50XG5zY2hlbWEuYXR0cmlidXRlc1snKiddLnB1c2goJ3N0eWxlJywgJ2NsYXNzTmFtZScpO1xuXG4vLyBDbGlja2FibGVUZXh0IHVzZXMgZGF0YS1pZCBvbiBhIGJvbGQgdGFnLlxuc2NoZW1hLmF0dHJpYnV0ZXNbJ2InXSA9IFsnZGF0YUlkJ107XG5cbi8vIEFkZCBzdXBwb3J0IGZvciBCbG9ja2x5IFhNTFxuc2NoZW1hLmNsb2JiZXIgPSBbXTtcbmNvbnN0IGJsb2NrbHlUYWdzID0gW1xuICAnYmxvY2snLFxuICAnZnVuY3Rpb25hbF9pbnB1dCcsXG4gICdtdXRhdGlvbicsXG4gICduZXh0JyxcbiAgJ3N0YXRlbWVudCcsXG4gICd0aXRsZScsXG4gICdmaWVsZCcsXG4gICd2YWx1ZScsXG4gICd4bWwnLFxuXTtcbnNjaGVtYS50YWdOYW1lcyA9IHNjaGVtYS50YWdOYW1lcy5jb25jYXQoYmxvY2tseVRhZ3MpO1xubGV0IGJsb2NrbHlDb21wb25lbnRXcmFwcGVycyA9IHt9O1xuYmxvY2tseVRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICBzY2hlbWEuYXR0cmlidXRlc1t0YWddID0gWydibG9ja190ZXh0JywgJ2lkJywgJ2lubGluZScsICduYW1lJywgJ3R5cGUnXTtcblxuICAvLyBDcmVhdGUgYSBSZWFjdCBjb21wb25lbnQgdG8gd3JhcCBlYWNoIEJsb2NrbHkgdGFnLiBTaW5jZSB0aGVzZSBlbGVtZW50cyB1bHRpbWF0ZWx5XG4gIC8vIHJlbmRlciBhcyBSZWFjdCBjb21wb25lbnRzLCBjcmVhdGluZyBhIHdyYXBwZXIgbWFrZXMgdGhlbSB2YWxpZCAod2hlcmVhcyA8eG1sPlxuICAvLyBpcyBub3QgYSB2YWxpZCBSZWFjdCB0YWcpLlxuICBibG9ja2x5Q29tcG9uZW50V3JhcHBlcnNbdGFnXSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIGNvbnN0IEJsb2NrbHlFbGVtZW50ID0gdGFnO1xuICAgIC8vIFRoZSBcImlzXCIgYXR0cmlidXRlIHByZXZlbnRzIFJlYWN0IGZyb20gd2FybmluZyBhYm91dCB1bnJlY29nbml6ZWQgdGFnczpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzExMTg0I2lzc3VlY29tbWVudC0zMzU5NDI0MzlcbiAgICByZXR1cm4gPEJsb2NrbHlFbGVtZW50IGlzPXt0YWd9IHsuLi5wcm9wc30gLz47XG4gIH07XG59KTtcbmNvbnN0IG1hcmtkb3duVG9SZWFjdCA9IHVuaWZpZWQoKVxuICAudXNlKFByb2Nlc3Nvci5nZXRQYXJzZXIoKSlcbiAgLy8gaW5jbHVkZSBjdXN0b20gcGx1Z2luc1xuICAudXNlKFtcbiAgICBjbGlja2FibGVUZXh0LFxuICAgIGV4cGFuZGFibGVJbWFnZXMsXG4gICAgdmlzdWFsQ29kZUJsb2NrLFxuICAgIHhtbEFzVG9wTGV2ZWxCbG9jayxcbiAgICBkZXRhaWxzLFxuICBdKVxuICAvLyBjb252ZXJ0IG1hcmtkb3duIHRvIGFuIEhUTUwgQWJzdHJhY3QgU3ludGF4IFRyZWUgKEhBU1QpXG4gIC51c2UocmVtYXJrUmVoeXBlLCB7XG4gICAgLy8gaW5jbHVkZSBhbnkgcmF3IEhUTUwgaW4gdGhlIG1hcmtkb3duIGFzIHJhdyBIVE1MIG5vZGVzIGluIHRoZSBIQVNUXG4gICAgYWxsb3dEYW5nZXJvdXNIdG1sOiB0cnVlLFxuICB9KVxuICAvLyBwYXJzZSB0aGUgcmF3IEhUTUwgbm9kZXMgaW4gdGhlIEhBU1QgdG8gYWN0dWFsIEhBU1Qgbm9kZXNcbiAgLnVzZShyZWh5cGVSYXcpXG4gIC8vIHNhbml0aXplIHRoZSBIQVNUXG4gIC51c2UocmVoeXBlU2FuaXRpemUsIHNjaGVtYSlcbiAgLy8gY29udmVydCB0aGUgSEFTVCB0byBSZWFjdFxuICAudXNlKHJlaHlwZVJlYWN0LCB7XG4gICAgY3JlYXRlRWxlbWVudDogUmVhY3QuY3JlYXRlRWxlbWVudCxcbiAgICAvLyBVc2UgUmVhY3QgY29tcG9uZW50IHdyYXBwZXJzIGZvciBCbG9ja2x5IFhNTCBlbGVtZW50cyB0byBwcmV2ZW50XG4gICAgLy8gUmVhY3QgZnJvbSB3YXJuaW5nIHVzIGFib3V0IGludmFsaWQgY29tcG9uZW50cy5cbiAgICBjb21wb25lbnRzOiBibG9ja2x5Q29tcG9uZW50V3JhcHBlcnMsXG4gIH0pO1xuXG5jb25zdCBtYXJrZG93blRvUmVhY3RFeHRlcm5hbExpbmtzID0gbWFya2Rvd25Ub1JlYWN0KCkudXNlKGV4dGVybmFsTGlua3MsIHtcbiAgbGlua3M6ICdhbGwnLFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVNYXJrZG93bjtcbiIsIi8qKlxuICogT3BlbiBleHRlcm5hbCBsaW5rcyBpbiBhIG5ldyB0YWIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVybmFsTGlua3Mob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IFBhcnNlciA9IHRoaXMuUGFyc2VyO1xuICBjb25zdCB0b2tlbml6ZXJzID0gUGFyc2VyLnByb3RvdHlwZS5pbmxpbmVUb2tlbml6ZXJzO1xuICBjb25zdCBvcmlnaW5hbCA9IHRva2VuaXplcnMubGluaztcbiAgY29uc3QgYWxsID0gb3B0aW9ucy5saW5rcyA9PT0gJ2FsbCc7XG5cbiAgdG9rZW5pemVycy5saW5rID0gZnVuY3Rpb24gKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIGNvbnN0IGxpbmsgPSBvcmlnaW5hbC5jYWxsKHRoaXMsIGVhdCwgdmFsdWUsIHNpbGVudCk7XG4gICAgaWYgKGxpbmsgJiYgbGluay50eXBlID09PSAnbGluaycgJiYgKGFsbCB8fCBpc0V4dGVybmFsTGluayhsaW5rLnVybCkpKSB7XG4gICAgICBsaW5rLmRhdGEgPSBsaW5rLmRhdGEgfHwge307XG4gICAgICBsaW5rLmRhdGEuaFByb3BlcnRpZXMgPSBsaW5rLmRhdGEuaFByb3BlcnRpZXMgfHwge307XG5cbiAgICAgIGNvbnN0IHByb3BzID0gbGluay5kYXRhLmhQcm9wZXJ0aWVzO1xuICAgICAgcHJvcHMudGFyZ2V0ID0gcHJvcHMudGFyZ2V0IHx8ICdfYmxhbmsnO1xuICAgICAgcHJvcHMucmVsID0gJ25vcmVmZXJyZXIgbm9vcGVuZXInO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rO1xuICB9O1xuICB0b2tlbml6ZXJzLmxpbmsubG9jYXRvciA9IG9yaWdpbmFsLmxvY2F0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh1cmwpIHtcbiAgcmV0dXJuICEvaHR0cHM/OlxcL1xcLyhbXi5dK1xcLikqY29kZS5vcmcoOlswLTldKyk/XFwvLy50ZXN0KGZ1bGx5UXVhbGlmaWVkKHVybCkpO1xufVxuXG5sZXQgYTtcbmZ1bmN0aW9uIGZ1bGx5UXVhbGlmaWVkKHBhdGgpIHtcbiAgYSA9IGEgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICBhLmhyZWYgPSBwYXRoO1xuICByZXR1cm4gYS5ocmVmO1xufVxuIiwiLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGFkZHMgYSByaWJib24gdG8gdGhlIHNpZGUgb2YgeW91ciByb3cgdG8gaW5kaWNhdGUgdGhhdCBpdCBpc1xuICogYSBmb2N1cyBhcmVhLiBOb3RlOiBUaGlzIGlzIEVuZ2xpc2ggb25seS5cbiAqL1xuXG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0VG9vbHRpcCBmcm9tICdyZWFjdC10b29sdGlwJztcblxuaW1wb3J0IEZvbnRBd2Vzb21lIGZyb20gJ0BjZG8vYXBwcy9sZWdhY3lTaGFyZWRDb21wb25lbnRzL0ZvbnRBd2Vzb21lJztcbmltcG9ydCBjb2xvciBmcm9tICdAY2RvL2FwcHMvdXRpbC9jb2xvcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgbWFpbjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHJpZ2h0OiAwLFxuICAgIHRvcDogMCxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgfSxcbiAgYXJyb3dDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IDEwLFxuICB9LFxuICBsZWZ0QXJyb3c6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6ICcxN3B4IDIwcHggMTdweCcsXG4gICAgYm9yZGVyQ29sb3I6IGB0cmFuc3BhcmVudCAke2NvbG9yLmN5YW59IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50YCxcbiAgfSxcbiAgZm9jdXNBcmVhOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5jeWFuLFxuICAgIGNvbG9yOiBjb2xvci53aGl0ZSxcbiAgICBoZWlnaHQ6IDM0LFxuICAgIGxpbmVIZWlnaHQ6ICczNHB4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IC0zLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gIH0sXG4gIGZvY3VzQXJlYUljb246IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBjb2xvcjogY29sb3Iud2hpdGUsXG4gICAgbGluZUhlaWdodDogJzEzcHgnLFxuICAgIHBhZGRpbmc6IDUsXG4gICAgbWFyZ2luTGVmdDogNSxcbiAgICBtYXJnaW5SaWdodDogNSxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuZGVmYXVsdF9ibHVlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5jb25zdCBGb2N1c0FyZWFJbmRpY2F0b3IgPSAoKSA9PiAoXG4gIDxkaXYgc3R5bGU9e3N0eWxlcy5tYWlufT5cbiAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuYXJyb3dDb250YWluZXJ9PlxuICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmxlZnRBcnJvd30gLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuZm9jdXNBcmVhfT5cbiAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy50ZXh0fT5Gb2N1cyBBcmVhPC9kaXY+XG4gICAgICA8YSBocmVmPXt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAnL3ByZXZpZXctYXNzaWdubWVudHMnfT5cbiAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmZvY3VzQXJlYUljb259IGRhdGEtdGlwIGRhdGEtZm9yPVwiZm9jdXMtYXJlYVwiPlxuICAgICAgICAgIDxGb250QXdlc29tZSBpY29uPVwicGVuY2lsXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPFJlYWN0VG9vbHRpcCBpZD1cImZvY3VzLWFyZWFcIiByb2xlPVwidG9vbHRpcFwiIGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICBDbGljayB0byBjaGFuZ2UgeW91ciBmb2N1cyBhcmVhLlxuICAgIDwvUmVhY3RUb29sdGlwPlxuICA8L2Rpdj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGl1bShGb2N1c0FyZWFJbmRpY2F0b3IpO1xuIiwiLyoqXG4gKiBBbiBvcmRlcmVkIHNldCBvZiBwcm9ncmVzcyBidWJibGVzLlxuICovXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJhZGl1bSBmcm9tICdyYWRpdW0nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQgY29sb3IgZnJvbSAnQGNkby9hcHBzL3V0aWwvY29sb3InO1xuXG5pbXBvcnQgUHJvZ3Jlc3NCdWJibGUgZnJvbSAnLi9Qcm9ncmVzc0J1YmJsZSc7XG5pbXBvcnQge0RPVF9TSVpFLCBESUFNT05EX0RPVF9TSVpFfSBmcm9tICcuL3Byb2dyZXNzU3R5bGVzJztcbmltcG9ydCB7bGV2ZWxXaXRoUHJvZ3Jlc3NUeXBlfSBmcm9tICcuL3Byb2dyZXNzVHlwZXMnO1xuXG4vLyBEZXByZWNhdGVkIGluIGZhdm9yIG9mIFByb2dyZXNzVGFibGVEZXRhaWxDZWxsXG4vLyBjb21wb25lbnQgd2lsbCBiZSByZW1vdmVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9jb2RlZG90b3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0xQLTE2MDZcbmNsYXNzIFByb2dyZXNzQnViYmxlU2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBsZXZlbHM6IFByb3BUeXBlcy5hcnJheU9mKGxldmVsV2l0aFByb2dyZXNzVHlwZSkuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzZWxlY3RlZFNlY3Rpb25JZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzZWxlY3RlZFN0dWRlbnRJZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgUHJvcFR5cGVzLm51bWJlcixcbiAgICBdKSxcbiAgICBoaWRlVG9vbFRpcHM6IFByb3BUeXBlcy5ib29sLFxuICAgIGxlc3NvbkV4dHJhc0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTdWJsZXZlbHM6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uQnViYmxlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAgIGxlc3Nvbk5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLy8gUmVkdXhcbiAgICBpc1J0bDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgcmVuZGVyQnViYmxlID0gKGxldmVsLCBpbmRleCwgaXNTdWJsZXZlbCkgPT4ge1xuICAgIGNvbnN0IHtsZXZlbHMsIHNlbGVjdGVkU2VjdGlvbklkLCBzZWxlY3RlZFN0dWRlbnRJZCwgaXNSdGx9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIEFkanVzdCBiYWNrZ3JvdW5kIHN0eWxlcyBpZiBsb2NhbGUgaXMgUlRMXG4gICAgY29uc3QgYmFja2dyb3VuZEZpcnN0U3R5bGUgPSBpc1J0bFxuICAgICAgPyBzdHlsZXMuYmFja2dyb3VuZExhc3RcbiAgICAgIDogc3R5bGVzLmJhY2tncm91bmRGaXJzdDtcbiAgICBjb25zdCBiYWNrZ3JvdW5kTGFzdFN0eWxlID0gaXNSdGxcbiAgICAgID8gc3R5bGVzLmJhY2tncm91bmRGaXJzdFxuICAgICAgOiBzdHlsZXMuYmFja2dyb3VuZExhc3Q7XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kU3R5bGVQcm9wID0ge1xuICAgICAgLi4uc3R5bGVzLmJhY2tncm91bmQsXG4gICAgICAuLi4obGV2ZWwuaXNDb25jZXB0TGV2ZWwgJiYgc3R5bGVzLmJhY2tncm91bmREaWFtb25kKSxcbiAgICAgIC4uLihpc1N1YmxldmVsICYmIHN0eWxlcy5iYWNrZ3JvdW5kU3VibGV2ZWwpLFxuICAgICAgLi4uKGxldmVsLmlzVW5wbHVnZ2VkICYmIHN0eWxlcy5iYWNrZ3JvdW5kUGlsbCksXG4gICAgICAuLi4oIWlzU3VibGV2ZWwgJiYgaW5kZXggPT09IDAgJiYgYmFja2dyb3VuZEZpcnN0U3R5bGUpLFxuICAgICAgLi4uKCFpc1N1YmxldmVsICYmXG4gICAgICAgICFsZXZlbC5zdWJsZXZlbHMgJiZcbiAgICAgICAgaW5kZXggPT09IGxldmVscy5sZW5ndGggLSAxICYmXG4gICAgICAgIGJhY2tncm91bmRMYXN0U3R5bGUpLFxuICAgIH07XG5cbiAgICBjb25zdCBjb250YWluZXJTdHlsZVByb3AgPSB7XG4gICAgICAuLi5zdHlsZXMuY29udGFpbmVyLFxuICAgICAgLi4uKGxldmVsLmlzVW5wbHVnZ2VkICYmIHN0eWxlcy5waWxsQ29udGFpbmVyKSxcbiAgICAgIC4uLihsZXZlbC5pc0NvbmNlcHRMZXZlbCAmJiBzdHlsZXMuZGlhbW9uZENvbnRhaW5lciksXG4gICAgICAuLi4oaXNTdWJsZXZlbCAmJiBzdHlsZXMuY29udGFpbmVyU3VibGV2ZWwpLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLndpdGhCYWNrZ3JvdW5kfSBrZXk9e2luZGV4fT5cbiAgICAgICAgPGRpdiBzdHlsZT17YmFja2dyb3VuZFN0eWxlUHJvcH0gLz5cbiAgICAgICAgPGRpdiBzdHlsZT17Y29udGFpbmVyU3R5bGVQcm9wfT5cbiAgICAgICAgICA8UHJvZ3Jlc3NCdWJibGVcbiAgICAgICAgICAgIGxldmVsPXtsZXZlbH1cbiAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgc21hbGxCdWJibGU9e2lzU3VibGV2ZWx9XG4gICAgICAgICAgICBzZWxlY3RlZFNlY3Rpb25JZD17c2VsZWN0ZWRTZWN0aW9uSWR9XG4gICAgICAgICAgICBzZWxlY3RlZFN0dWRlbnRJZD17c2VsZWN0ZWRTdHVkZW50SWR9XG4gICAgICAgICAgICBoaWRlVG9vbFRpcHM9e3RoaXMucHJvcHMuaGlkZVRvb2xUaXBzfVxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkJ1YmJsZUNsaWNrfVxuICAgICAgICAgICAgbGVzc29uTmFtZT17dGhpcy5wcm9wcy5sZXNzb25OYW1lfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2xldmVscywgc3R5bGUsIHNob3dTdWJsZXZlbHN9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17ey4uLnN0eWxlcy5tYWluLCAuLi5zdHlsZX19PlxuICAgICAgICB7bGV2ZWxzLm1hcCgobGV2ZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuIGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJCdWJibGUobGV2ZWwsIGluZGV4LCBmYWxzZSl9XG4gICAgICAgICAgICAgIHtzaG93U3VibGV2ZWxzICYmXG4gICAgICAgICAgICAgICAgbGV2ZWwuc3VibGV2ZWxzICYmXG4gICAgICAgICAgICAgICAgbGV2ZWwuc3VibGV2ZWxzLm1hcCgoc3VibGV2ZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJCdWJibGUoc3VibGV2ZWwsIGluZGV4LCB0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICBtYWluOiB7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gIH0sXG4gIHdpdGhCYWNrZ3JvdW5kOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIGJhY2tncm91bmQ6IHtcbiAgICBoZWlnaHQ6IDEwLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IubGlnaHRlcl9ncmF5LFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGxlZnQ6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgLy8gZG90IHNpemUsIHBsdXMgYm9yZGVycywgcGx1cyBtYXJnaW4sIG1pbnVzIG91ciBoZWlnaHQgb2YgXCJiYWNrZ3JvdW5kXCJcbiAgICB0b3A6IChET1RfU0laRSArIDQgKyA2IC0gMTApIC8gMixcbiAgfSxcbiAgYmFja2dyb3VuZERpYW1vbmQ6IHtcbiAgICB0b3A6IChESUFNT05EX0RPVF9TSVpFICsgNCArIDEyIC0gMTApIC8gMixcbiAgfSxcbiAgYmFja2dyb3VuZFBpbGw6IHtcbiAgICAvLyBwaWxsIGhhcyBoZWlnaHQgb2YgMTgsIGJvcmRlciBvZiAyLCBwYWRkaW5nIG9mIDYsIG1hcmdpbiBvZiAzXG4gICAgdG9wOiAoMTggKyA0ICsgMTIgKyA2IC0gMTApIC8gMixcbiAgfSxcbiAgYmFja2dyb3VuZFN1YmxldmVsOiB7XG4gICAgdG9wOiA5LFxuICB9LFxuICBiYWNrZ3JvdW5kRmlyc3Q6IHtcbiAgICBsZWZ0OiAxNSxcbiAgfSxcbiAgYmFja2dyb3VuZExhc3Q6IHtcbiAgICByaWdodDogMTUsXG4gIH0sXG4gIGNvbnRhaW5lcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICB9LFxuICBjb250YWluZXJTdWJsZXZlbDoge1xuICAgIHRvcDogNSxcbiAgfSxcbiAgZGlhbW9uZENvbnRhaW5lcjoge1xuICAgIC8vIEhlaWdodCBuZWVkZWQgb25seSBieSBJRSB0byBnZXQgZGlhbW9uZHMgdG8gbGluZSB1cCBwcm9wZXJseVxuICAgIGhlaWdodDogMzYsXG4gIH0sXG4gIHBpbGxDb250YWluZXI6IHtcbiAgICBtYXJnaW5SaWdodDogMixcbiAgICAvLyBIZWlnaHQgbmVlZGVkIG9ubHkgYnkgSUUgdG8gZ2V0IHBpbGwgdG8gbGluZSB1cCBwcm9wZXJseVxuICAgIGhlaWdodDogMzcsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVW5jb25uZWN0ZWRQcm9ncmVzc0J1YmJsZVNldCA9IFByb2dyZXNzQnViYmxlU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlID0+ICh7XG4gIGlzUnRsOiBzdGF0ZS5pc1J0bCxcbn0pKShSYWRpdW0oUHJvZ3Jlc3NCdWJibGVTZXQpKTtcbiIsImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IFJlYWN0VG9vbHRpcCBmcm9tICdyZWFjdC10b29sdGlwJztcblxuaW1wb3J0IHtWaWV3VHlwZX0gZnJvbSAnQGNkby9hcHBzL2NvZGUtc3R1ZGlvL3ZpZXdBc1JlZHV4JztcbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQGNkby9hcHBzL2xlZ2FjeVNoYXJlZENvbXBvbmVudHMvQnV0dG9uJztcbmltcG9ydCBmaXJlaG9zZUNsaWVudCBmcm9tICdAY2RvL2FwcHMvbWV0cmljcy9maXJlaG9zZSc7XG5pbXBvcnQgY29sb3IgZnJvbSAnQGNkby9hcHBzL3V0aWwvY29sb3InO1xuaW1wb3J0IGkxOG4gZnJvbSAnQGNkby9sb2NhbGUnO1xuXG5pbXBvcnQgRm9udEF3ZXNvbWUgZnJvbSAnLi4vLi4vbGVnYWN5U2hhcmVkQ29tcG9uZW50cy9Gb250QXdlc29tZSc7XG5cbmltcG9ydCBGb2N1c0FyZWFJbmRpY2F0b3IgZnJvbSAnLi9Gb2N1c0FyZWFJbmRpY2F0b3InO1xuaW1wb3J0IHtcbiAgbGVzc29uSXNWaXNpYmxlLFxuICBsZXNzb25Jc0xvY2tlZEZvclVzZXIsXG4gIGxlc3NvbklzTG9ja2VkRm9yQWxsU3R1ZGVudHMsXG59IGZyb20gJy4vcHJvZ3Jlc3NIZWxwZXJzJztcbmltcG9ydCBQcm9ncmVzc0xlc3NvbkNvbnRlbnQgZnJvbSAnLi9Qcm9ncmVzc0xlc3NvbkNvbnRlbnQnO1xuaW1wb3J0IFByb2dyZXNzTGVzc29uVGVhY2hlckluZm8gZnJvbSAnLi9Qcm9ncmVzc0xlc3NvblRlYWNoZXJJbmZvJztcbmltcG9ydCB7bGV2ZWxXaXRoUHJvZ3Jlc3NUeXBlLCBsZXNzb25UeXBlfSBmcm9tICcuL3Byb2dyZXNzVHlwZXMnO1xuXG5jbGFzcyBQcm9ncmVzc0xlc3NvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbGVzc29uOiBsZXNzb25UeXBlLmlzUmVxdWlyZWQsXG4gICAgbGV2ZWxzOiBQcm9wVHlwZXMuYXJyYXlPZihsZXZlbFdpdGhQcm9ncmVzc1R5cGUpLmlzUmVxdWlyZWQsXG5cbiAgICAvLyByZWR1eCBwcm92aWRlZFxuICAgIHNjcmlwdElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGN1cnJlbnRMZXNzb25JZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB2aWV3QXM6IFByb3BUeXBlcy5vbmVPZihPYmplY3QudmFsdWVzKFZpZXdUeXBlKSkuaXNSZXF1aXJlZCxcbiAgICBpc1Zpc2libGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgaGlkZGVuRm9yU3R1ZGVudHM6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgaXNMb2NrZWRGb3JVc2VyOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIHNlbGVjdGVkU2VjdGlvbklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGxvY2thYmxlQXV0aG9yaXplZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbG9ja2FibGVBdXRob3JpemVkTG9hZGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGlzTG9ja2VkRm9yQWxsU3R1ZGVudHM6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgaXNSdGw6IFByb3BUeXBlcy5ib29sLFxuICAgIGlzTWluaVZpZXc6IFByb3BUeXBlcy5ib29sLFxuICAgIGxvY2tTdGF0dXNMb2FkZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC8vIFdlIHdhbnQgaW5zdHJ1Y3RvcnMgdG8gc3RhcnQgd2l0aCBldmVyeXRoaW5nIHVuY29sbGFwc2VkLiBGb3IgcGFydGljaXBhbnRzIHdlXG4gICAgICAvLyBjb2xsYXBzZSBldmVyeXRoaW5nIGV4Y2VwdCBjdXJyZW50IGxlc3NvblxuICAgICAgY29sbGFwc2VkOlxuICAgICAgICBwcm9wcy52aWV3QXMgIT09IFZpZXdUeXBlLkluc3RydWN0b3IgJiZcbiAgICAgICAgcHJvcHMuY3VycmVudExlc3NvbklkICE9PSBwcm9wcy5sZXNzb24uaWQsXG4gICAgfTtcbiAgfVxuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIC8vIElmIHdlJ3JlIGFzc2lnbmVkIGEgbGVzc29uIGlkLCBhbmQgaXQgaXMgZm9yIHRoaXMgbGVzc29uLCB1bmNvbGxhcHNlXG4gICAgaWYgKG5leHRQcm9wcy5jdXJyZW50TGVzc29uSWQgIT09IHRoaXMucHJvcHMuY3VycmVudExlc3NvbklkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY29sbGFwc2VkOlxuICAgICAgICAgIHRoaXMuc3RhdGUuY29sbGFwc2VkICYmXG4gICAgICAgICAgbmV4dFByb3BzLmN1cnJlbnRMZXNzb25JZCAhPT0gdGhpcy5wcm9wcy5sZXNzb24uaWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb2xsYXBzZWQgPSAoKSA9PlxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWQsXG4gICAgfSk7XG5cbiAgb25DbGlja1N0dWRlbnRMZXNzb25QbGFuID0gKCkgPT4ge1xuICAgIGZpcmVob3NlQ2xpZW50LnB1dFJlY29yZChcbiAgICAgIHtcbiAgICAgICAgc3R1ZHk6ICdzY3JpcHRfb3ZlcnZpZXdfYWN0aW9ucycsXG4gICAgICAgIHN0dWR5X2dyb3VwOiAnc3R1ZGVudF9sZXNzb25fcGxhbicsXG4gICAgICAgIGV2ZW50OiAnb3Blbl9zdHVkZW50X2xlc3Nvbl9wbGFuJyxcbiAgICAgICAgZGF0YV9qc29uOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgbGVzc29uX2lkOiB0aGlzLnByb3BzLmxlc3Nvbi5pZCxcbiAgICAgICAgICBzY3JpcHRfaWQ6IHRoaXMucHJvcHMuc2NyaXB0SWQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIHtpbmNsdWRlVXNlcklkOiB0cnVlfVxuICAgICk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxlc3NvbixcbiAgICAgIGxldmVscyxcbiAgICAgIHZpZXdBcyxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICAgIGhpZGRlbkZvclN0dWRlbnRzLCAvLyBJcyB0aGlzIGEgaGlkZGVuIGxlc3NvbiB0aGF0IHdlIHN0aWxsIHJlbmRlciBiZWNhdXNlIHdlJ3JlIGEgaW5zdHJ1Y3RvclxuICAgICAgaXNMb2NrZWRGb3JVc2VyLFxuICAgICAgaXNMb2NrZWRGb3JBbGxTdHVkZW50cyxcbiAgICAgIHNlbGVjdGVkU2VjdGlvbklkLFxuICAgICAgaXNSdGwsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd0FzTG9ja2VkID0gaXNMb2NrZWRGb3JVc2VyIHx8IGlzTG9ja2VkRm9yQWxsU3R1ZGVudHM7XG5cbiAgICBjb25zdCB0aXRsZSA9IGxlc3Nvbi5sZXNzb25OdW1iZXJcbiAgICAgID8gaTE4bi5sZXNzb25OdW1iZXJlZCh7XG4gICAgICAgICAgbGVzc29uTnVtYmVyOiBsZXNzb24ubGVzc29uTnVtYmVyLFxuICAgICAgICAgIGxlc3Nvbk5hbWU6IGxlc3Nvbi5uYW1lLFxuICAgICAgICB9KVxuICAgICAgOiBsZXNzb24ubmFtZTtcblxuICAgIC8vIEFkanVzdCBjYXJldCBzdHlsZSBpZiBsb2NhbGUgaXMgUlRMXG4gICAgY29uc3QgY2FyZXRTdHlsZSA9IGlzUnRsID8gc3R5bGVzLmNhcmV0UlRMIDogc3R5bGVzLmNhcmV0O1xuICAgIGNvbnN0IGNhcmV0ID0gdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAnY2FyZXQtcmlnaHQnIDogJ2NhcmV0LWRvd24nO1xuXG4gICAgY29uc3QgbG9ja2VkVG9vbHRpcElkID0gXy51bmlxdWVJZCgpO1xuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgdmlld0FzID09PSBWaWV3VHlwZS5JbnN0cnVjdG9yXG4gICAgICAgID8gbGVzc29uLmRlc2NyaXB0aW9uX3RlYWNoZXJcbiAgICAgICAgOiBsZXNzb24uZGVzY3JpcHRpb25fc3R1ZGVudDtcblxuICAgIC8vIFRoZXJlJ3Mgbm8gdXJsIGZvciBhIGxlc3NvbiBzbyB1c2UgdGhlIHVybCBvZiB0aGUgZmlyc3QgbGV2ZWwgb2YgdGhlIGxlc3NvblxuICAgIC8vIGFzIHRoZSB1cmwgZm9yIHRoZSBsZXNzb24uXG4gICAgLy8gVE9ETzogTWFrZSB0aGUgYmFjay1lbmQgcmV0dXJuIGEgbGVzc29uIHVybCBhcyBwYXJ0IG9mIHRoZSBsZXNzb24gbWV0YWRhdGEgc28gd2VcbiAgICAvLyBkb24ndCBuZWVkIHRvIHBhc3MgaXQgc2VwYXJhdGVseSBmcm9tIGxlc3NvbiBoZXJlIGFuZCBpbiBQcm9ncmVzc0xlc3NvblRlYWNoZXJJbmZvLlxuICAgIGNvbnN0IGxlc3NvblVybCA9IGxldmVsc1swXSAmJiBsZXZlbHNbMF0udXJsO1xuXG4gICAgLy8gSWYgYSBpbnN0cnVjdG9yIGlzIG5vdCB2ZXJpZmllZCB0aGV5IHdpbGwgbm90IGJlIGxvY2thYmxlQXV0aG9yaXplZCAobWVhbmluZyB0aGV5IGNhbid0XG4gICAgLy8gbG9jayBvciB1bmxvY2sgbGVzc29ucykuIEZvciBhIGxvY2thYmxlIGxlc3NvbiB3aGVyZSBpbnN0cnVjdG9yIGlzIG5vdCBhdXRob3JpemVkLCB3ZSB3aWxsXG4gICAgLy8gZGlzcGxheSBhIHdhcm5pbmcgZXhwbGFpbmluZyB0aGF0IHRoZXkgbmVlZCB0byBiZSB2ZXJpZmllZCB0byB1bmxvY2sgbGVzc29ucy5cbiAgICBjb25zdCBzaG93Tm90QXV0aG9yaXplZFdhcm5pbmcgPVxuICAgICAgbGVzc29uLmxvY2thYmxlICYmXG4gICAgICB2aWV3QXMgPT09IFZpZXdUeXBlLkluc3RydWN0b3IgJiZcbiAgICAgIHRoaXMucHJvcHMubG9ja2FibGVBdXRob3JpemVkTG9hZGVkICYmXG4gICAgICAhdGhpcy5wcm9wcy5sb2NrYWJsZUF1dGhvcml6ZWQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBpZD17YHByb2dyZXNzLWxlc3Nvbi0ke2xlc3Nvbi5sZXNzb25OdW1iZXJ9YH1cbiAgICAgICAgY2xhc3NOYW1lPVwidWl0ZXN0LXByb2dyZXNzLWxlc3NvblwiXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4uc3R5bGVzLm91dGVyLFxuICAgICAgICAgIC4uLigoaGlkZGVuRm9yU3R1ZGVudHMgfHwgc2hvd0FzTG9ja2VkKSAmJiBzdHlsZXMuaGlkZGVuT3JMb2NrZWQpLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcy5tYWluLFxuICAgICAgICAgICAgLi4uKCgoaGlkZGVuRm9yU3R1ZGVudHMgJiYgdmlld0FzID09PSBWaWV3VHlwZS5QYXJ0aWNpcGFudCkgfHxcbiAgICAgICAgICAgICAgaXNMb2NrZWRGb3JVc2VyKSAmJlxuICAgICAgICAgICAgICBzdHlsZXMudHJhbnNsdWNlbnQpLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZXMuaGVhZGluZyxcbiAgICAgICAgICAgICAgLi4ue21hcmdpbkJvdHRvbTogdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAwIDogMTV9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuaGVhZGluZ1RleHR9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudG9nZ2xlQ29sbGFwc2VkfVxuICAgICAgICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25LZXlEb3duPXtlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJywgJ1NwYWNlYmFyJ10uaW5jbHVkZXMoZS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IXRoaXMuc3RhdGUuY29sbGFwc2VkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWUgaWNvbj17Y2FyZXR9IHN0eWxlPXtjYXJldFN0eWxlfSAvPlxuICAgICAgICAgICAgICB7aGlkZGVuRm9yU3R1ZGVudHMgJiYgKFxuICAgICAgICAgICAgICAgIDxGb250QXdlc29tZSBpY29uPVwiZXllLXNsYXNoXCIgc3R5bGU9e3N0eWxlcy5pY29ufSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7bGVzc29uLmxvY2thYmxlICYmIHRoaXMucHJvcHMubG9ja1N0YXR1c0xvYWRlZCAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gZGF0YS10aXAgZGF0YS1mb3I9e2xvY2tlZFRvb2x0aXBJZH0+XG4gICAgICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17c2hvd0FzTG9ja2VkID8gJ2xvY2snIDogJ3VubG9jayd9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGVzLmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgLi4uKCFzaG93QXNMb2NrZWQgJiYgc3R5bGVzLnVubG9ja2VkSWNvbiksXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgeyFzaG93QXNMb2NrZWQgJiYgdmlld0FzID09PSBWaWV3VHlwZS5JbnN0cnVjdG9yICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFJlYWN0VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtsb2NrZWRUb29sdGlwSWR9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXI9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBlZmZlY3Q9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7aTE4bi5sb2NrQXNzZXNzbWVudExvbmcoKX1cbiAgICAgICAgICAgICAgICAgICAgPC9SZWFjdFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPHNwYW4+e3RpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge3ZpZXdBcyA9PT0gVmlld1R5cGUuUGFydGljaXBhbnQgJiZcbiAgICAgICAgICAgICAgbGVzc29uLnN0dWRlbnRfbGVzc29uX3BsYW5faHRtbF91cmwgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXtzdHlsZXMuYnV0dG9uU3R5bGV9PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBfX3VzZURlcHJlY2F0ZWRUYWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidWktdGVzdC1sZXNzb24tcmVzb3VyY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17bGVzc29uLnN0dWRlbnRfbGVzc29uX3BsYW5faHRtbF91cmx9XG4gICAgICAgICAgICAgICAgICAgIHRleHQ9e2kxOG4ubGVzc29uUmVzb3VyY2VzKCl9XG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmaWxlLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInB1cnBsZVwiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25DbGlja1N0dWRlbnRMZXNzb25QbGFufVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3Nob3dOb3RBdXRob3JpemVkV2FybmluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMubm90QXV0aG9yaXplZFdhcm5pbmd9PlxuICAgICAgICAgICAgICB7aTE4bi51bnZlcmlmaWVkVGVhY2hlckxvY2tXYXJuaW5nKCl9XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5sZWFybk1vcmVMaW5rfVxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3N1cHBvcnQuY29kZS5vcmcvaGMvZW4tdXMvYXJ0aWNsZXMvMTE1MDAxNTUwMTMxLUJlY29taW5nLWEtdmVyaWZpZWQtdGVhY2hlci1DUy1QcmluY2lwbGVzLWFuZC1DUy1EaXNjb3Zlcmllcy1vbmx5LVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bi5sZWFybk1vcmVXaXRoUGVyaW9kKCl9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyF0aGlzLnN0YXRlLmNvbGxhcHNlZCAmJiAoXG4gICAgICAgICAgICA8UHJvZ3Jlc3NMZXNzb25Db250ZW50XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgbGV2ZWxzPXtsZXZlbHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvY2tlZEZvclVzZXJ9XG4gICAgICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgICAgICAgbGVzc29uTmFtZT17bGVzc29uLm5hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dmlld0FzID09PSBWaWV3VHlwZS5JbnN0cnVjdG9yICYmICF0aGlzLnByb3BzLmlzTWluaVZpZXcgJiYgKFxuICAgICAgICAgIDxQcm9ncmVzc0xlc3NvblRlYWNoZXJJbmZvXG4gICAgICAgICAgICBsZXNzb249e2xlc3Nvbn1cbiAgICAgICAgICAgIGxlc3NvblVybD17bGVzc29uVXJsfVxuICAgICAgICAgICAgb25DbGlja1N0dWRlbnRMZXNzb25QbGFuPXt0aGlzLm9uQ2xpY2tTdHVkZW50TGVzc29uUGxhbn1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7bGVzc29uLmlzRm9jdXNBcmVhICYmIDxGb2N1c0FyZWFJbmRpY2F0b3IgLz59XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgb3V0ZXI6IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBkaXNwbGF5OiAndGFibGUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgYmFja2dyb3VuZDogY29sb3IubGlnaHRlc3RfZ3JheSxcbiAgICBib3JkZXJDb2xvcjogY29sb3IuYm9yZGVyX2dyYXksXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyUmFkaXVzOiAyLFxuICAgIC8vIFdoZW4gdG9nZ2xpbmcgYmV0d2VlbiBoaWRkZW4gYW5kIG5vdCwgd2UgY2hhbmdlIG91ciBib3JkZXIgc2l6ZSBmcm9tIDEgdG8gNC5cbiAgICAvLyBXZSB3YW50IHRvIGxpbWl0IGhvdyBtdWNoIHRvZ2dsaW5nIHRoaXMgY2hhbmdlcyBvdXIgc2l6aW5nLCBzbyB3ZSBhZGQgKzNcbiAgICAvLyB0byBlYWNoIG9mIG91ciBub24taGlkZGVuIG1hcmdpbnNcbiAgICBib3JkZXJXaWR0aDogMSxcbiAgICBtYXJnaW5Ub3A6IDMsXG4gICAgbWFyZ2luQm90dG9tOiAxNSxcbiAgICBtYXJnaW5MZWZ0OiAzLFxuICAgIG1hcmdpblJpZ2h0OiAzLFxuICB9LFxuICBtYWluOiB7XG4gICAgcGFkZGluZzogMjAsXG4gIH0sXG4gIGhlYWRpbmc6IHtcbiAgICBmb250U2l6ZTogMTgsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXNlbWktYm9sZCddLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbiAgaGVhZGluZ1RleHQ6IHtcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBmbGV4R3JvdzogMSxcbiAgfSxcbiAgYnV0dG9uU3R5bGU6IHtcbiAgICBtYXJnaW5MZWZ0OiAnYXV0bycsXG4gIH0sXG4gIGhpZGRlbk9yTG9ja2VkOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdkYXNoZWQnLFxuICAgIGJvcmRlcldpZHRoOiA0LFxuICAgIG1hcmdpblRvcDogMCxcbiAgICBtYXJnaW5Cb3R0b206IDEyLFxuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgbWFyZ2luUmlnaHQ6IDAsXG4gIH0sXG4gIHRyYW5zbHVjZW50OiB7XG4gICAgb3BhY2l0eTogMC42LFxuICB9LFxuICBjYXJldDoge1xuICAgIG1hcmdpblJpZ2h0OiAxMCxcbiAgfSxcbiAgY2FyZXRSVEw6IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgfSxcbiAgaWNvbjoge1xuICAgIG1hcmdpblJpZ2h0OiA1LFxuICAgIGZvbnRTaXplOiAxOCxcbiAgICBjb2xvcjogY29sb3IuY3lhbixcbiAgfSxcbiAgdW5sb2NrZWRJY29uOiB7XG4gICAgY29sb3I6IGNvbG9yLm9yYW5nZSxcbiAgfSxcbiAgbm90QXV0aG9yaXplZFdhcm5pbmc6IHtcbiAgICBjb2xvcjogY29sb3IucmVkLFxuICAgIC4uLmZvbnRDb25zdGFudHNbJ21haW4tZm9udC1zZW1pLWJvbGQtaXRhbGljJ10sXG4gICAgbWFyZ2luVG9wOiAxMCxcbiAgfSxcbiAgbGVhcm5Nb3JlTGluazoge1xuICAgIG1hcmdpbkxlZnQ6IDUsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVW5jb25uZWN0ZWRQcm9ncmVzc0xlc3NvbiA9IFByb2dyZXNzTGVzc29uO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KChzdGF0ZSwgb3duUHJvcHMpID0+ICh7XG4gIGN1cnJlbnRMZXNzb25JZDogc3RhdGUucHJvZ3Jlc3MuY3VycmVudExlc3NvbklkLFxuICB2aWV3QXM6IHN0YXRlLnZpZXdBcyxcbiAgbG9ja2FibGVBdXRob3JpemVkOiBzdGF0ZS5sZXNzb25Mb2NrLmxvY2thYmxlQXV0aG9yaXplZCxcbiAgbG9ja2FibGVBdXRob3JpemVkTG9hZGVkOiBzdGF0ZS5sZXNzb25Mb2NrLmxvY2thYmxlQXV0aG9yaXplZExvYWRlZCxcbiAgaXNWaXNpYmxlOiBsZXNzb25Jc1Zpc2libGUob3duUHJvcHMubGVzc29uLCBzdGF0ZSwgc3RhdGUudmlld0FzKSxcbiAgaGlkZGVuRm9yU3R1ZGVudHM6ICFsZXNzb25Jc1Zpc2libGUoXG4gICAgb3duUHJvcHMubGVzc29uLFxuICAgIHN0YXRlLFxuICAgIFZpZXdUeXBlLlBhcnRpY2lwYW50XG4gICksXG4gIGlzTG9ja2VkRm9yVXNlcjogbGVzc29uSXNMb2NrZWRGb3JVc2VyKFxuICAgIG93blByb3BzLmxlc3NvbixcbiAgICBvd25Qcm9wcy5sZXZlbHMsXG4gICAgc3RhdGUsXG4gICAgc3RhdGUudmlld0FzXG4gICksXG4gIGlzTG9ja2VkRm9yQWxsU3R1ZGVudHM6IGxlc3NvbklzTG9ja2VkRm9yQWxsU3R1ZGVudHMoXG4gICAgb3duUHJvcHMubGVzc29uLmlkLFxuICAgIHN0YXRlXG4gICksXG4gIHNlbGVjdGVkU2VjdGlvbklkOiBzdGF0ZS50ZWFjaGVyU2VjdGlvbnMuc2VsZWN0ZWRTZWN0aW9uSWQsXG4gIHNjcmlwdElkOiBzdGF0ZS5wcm9ncmVzcy5zY3JpcHRJZCxcbiAgaXNSdGw6IHN0YXRlLmlzUnRsLFxuICBpc01pbmlWaWV3OiBzdGF0ZS5wcm9ncmVzcy5pc01pbmlWaWV3LFxuICBsb2NrU3RhdHVzTG9hZGVkOlxuICAgIHN0YXRlLnByb2dyZXNzLnVuaXRQcm9ncmVzc0hhc0xvYWRlZCAmJlxuICAgIHN0YXRlLmxlc3NvbkxvY2subGVzc29uc0J5U2VjdGlvbklkTG9hZGVkLFxufSkpKFByb2dyZXNzTGVzc29uKTtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge3Byb2dyZXNzaW9uc0Zyb21MZXZlbHN9IGZyb20gJ0BjZG8vYXBwcy9jb2RlLXN0dWRpby9wcm9ncmVzc1JlZHV4U2VsZWN0b3JzJztcbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCBTYWZlTWFya2Rvd24gZnJvbSAnQGNkby9hcHBzL3RlbXBsYXRlcy9TYWZlTWFya2Rvd24nO1xuaW1wb3J0IGkxOG4gZnJvbSAnQGNkby9sb2NhbGUnO1xuXG5pbXBvcnQgUHJvZ3Jlc3NCdWJibGVTZXQgZnJvbSAnLi9Qcm9ncmVzc0J1YmJsZVNldCc7XG5pbXBvcnQgUHJvZ3Jlc3NMZXZlbFNldCBmcm9tICcuL1Byb2dyZXNzTGV2ZWxTZXQnO1xuaW1wb3J0IHtsZXZlbFdpdGhQcm9ncmVzc1R5cGV9IGZyb20gJy4vcHJvZ3Jlc3NUeXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb2dyZXNzTGVzc29uQ29udGVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgZGVzY3JpcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGV2ZWxzOiBQcm9wVHlwZXMuYXJyYXlPZihsZXZlbFdpdGhQcm9ncmVzc1R5cGUpLmlzUmVxdWlyZWQsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgc2VsZWN0ZWRTZWN0aW9uSWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgbGVzc29uTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2Rlc2NyaXB0aW9uLCBsZXZlbHMsIGRpc2FibGVkLCBzZWxlY3RlZFNlY3Rpb25JZCwgbGVzc29uTmFtZX0gPVxuICAgICAgdGhpcy5wcm9wcztcbiAgICBjb25zdCBwcm9ncmVzc2lvbnMgPSBwcm9ncmVzc2lvbnNGcm9tTGV2ZWxzKGxldmVscyk7XG5cbiAgICBsZXQgYnViYmxlcztcbiAgICBpZiAocHJvZ3Jlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYnViYmxlcyA9IChcbiAgICAgICAgPHNwYW4gc3R5bGU9e3N0eWxlcy5ub0xldmVsc1dhcm5pbmd9PlxuICAgICAgICAgIHtpMThuLmxlc3NvbkNvbnRhaW5zTm9MZXZlbHMoKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHByb2dyZXNzaW9ucy5sZW5ndGggPT09IDEgJiYgIXByb2dyZXNzaW9uc1swXS5uYW1lKSB7XG4gICAgICBidWJibGVzID0gKFxuICAgICAgICA8UHJvZ3Jlc3NCdWJibGVTZXRcbiAgICAgICAgICBsZXZlbHM9e3Byb2dyZXNzaW9uc1swXS5sZXZlbHN9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1YmJsZXMgPSBwcm9ncmVzc2lvbnMubWFwKChwcm9ncmVzc2lvbiwgaW5kZXgpID0+IChcbiAgICAgICAgPFByb2dyZXNzTGV2ZWxTZXRcbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIG5hbWU9e3Byb2dyZXNzaW9uLmRpc3BsYXlOYW1lfVxuICAgICAgICAgIGxlc3Nvbk5hbWU9e2xlc3Nvbk5hbWV9XG4gICAgICAgICAgbGV2ZWxzPXtwcm9ncmVzc2lvbi5sZXZlbHN9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgLz5cbiAgICAgICkpO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5zdW1tYXJ5fT5cbiAgICAgICAgICAgIDxTYWZlTWFya2Rvd24gbWFya2Rvd249e2Rlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8ZGl2PiB7YnViYmxlc30gPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgc3VtbWFyeToge1xuICAgIG1hcmdpblRvcDogMjAsXG4gICAgbWFyZ2luQm90dG9tOiAzMCxcbiAgICBmb250U2l6ZTogMTQsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXJlZ3VsYXInXSxcbiAgfSxcbiAgbm9MZXZlbHNXYXJuaW5nOiB7XG4gICAgZm9udFNpemU6IDEzLFxuICB9LFxufTtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCBjb2xvciBmcm9tICdAY2RvL2FwcHMvdXRpbC9jb2xvcic7XG5pbXBvcnQgaTE4biBmcm9tICdAY2RvL2xvY2FsZSc7XG5cbmltcG9ydCBQcm9ncmVzc0J1YmJsZVNldCBmcm9tICcuL1Byb2dyZXNzQnViYmxlU2V0JztcbmltcG9ydCB7Z2V0SWNvbkZvckxldmVsfSBmcm9tICcuL3Byb2dyZXNzSGVscGVycyc7XG5pbXBvcnQgUHJvZ3Jlc3NQaWxsIGZyb20gJy4vUHJvZ3Jlc3NQaWxsJztcbmltcG9ydCB7bGV2ZWxXaXRoUHJvZ3Jlc3NUeXBlfSBmcm9tICcuL3Byb2dyZXNzVHlwZXMnO1xuXG4vKipcbiAqIEEgc2V0IG9mIG9uZSBvciBtb3JlIGxldmVscyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIHByb2dyZXNzaW9uXG4gKi9cbmNsYXNzIFByb2dyZXNzTGV2ZWxTZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGVzc29uTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBsZXZlbHM6IFByb3BUeXBlcy5hcnJheU9mKGxldmVsV2l0aFByb2dyZXNzVHlwZSkuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzZWxlY3RlZFNlY3Rpb25JZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvbkJ1YmJsZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvLyBSZWR1eFxuICAgIGlzUnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGxldmVscyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWRTZWN0aW9uSWQsXG4gICAgICBvbkJ1YmJsZUNsaWNrLFxuICAgICAgaXNSdGwsXG4gICAgICBsZXNzb25OYW1lLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgbXVsdGlMZXZlbFN0ZXAgPSBsZXZlbHMubGVuZ3RoID4gMTtcbiAgICBjb25zdCB1cmwgPSBtdWx0aUxldmVsU3RlcCB8fCBvbkJ1YmJsZUNsaWNrID8gdW5kZWZpbmVkIDogbGV2ZWxzWzBdLnVybDtcbiAgICBjb25zdCBvbkNsaWNrID0gbXVsdGlMZXZlbFN0ZXAgPyB1bmRlZmluZWQgOiAoKSA9PiBvbkJ1YmJsZUNsaWNrKGxldmVsc1swXSk7XG5cbiAgICAvLyBBZGp1c3QgY29sdW1uIHN0eWxlcyBpZiBsb2NhbGUgaXMgUlRMXG4gICAgY29uc3QgY29sMlN0eWxlID0gaXNSdGwgPyBzdHlsZXMuY29sMlJUTCA6IHN0eWxlcy5jb2wyO1xuXG4gICAgbGV0IHBpbGxUZXh0LCBpY29uO1xuICAgIGxldCBwcm9ncmVzc1N0eWxlID0gZmFsc2U7XG4gICAgaWYgKGxldmVsc1swXS5pc1VucGx1Z2dlZCB8fCBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdLmlzVW5wbHVnZ2VkKSB7XG4gICAgICAvLyBXZSBleHBsaWNpdGx5IGRvbid0IHdhbnQgYW55IHRleHQgaW4gdGhpcyBjYXNlXG4gICAgICBpZiAobXVsdGlMZXZlbFN0ZXApIHtcbiAgICAgICAgcGlsbFRleHQgPSAnJztcbiAgICAgICAgaWNvbiA9IGdldEljb25Gb3JMZXZlbChsZXZlbHNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGlsbFRleHQgPSBpMThuLnVucGx1Z2dlZEFjdGl2aXR5KCk7XG4gICAgICAgIHByb2dyZXNzU3R5bGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwaWxsVGV4dCA9IGxldmVsc1swXS5sZXZlbE51bWJlci50b1N0cmluZygpO1xuICAgICAgaWNvbiA9IGdldEljb25Gb3JMZXZlbChsZXZlbHNbMF0pO1xuICAgICAgaWYgKG11bHRpTGV2ZWxTdGVwKSB7XG4gICAgICAgIHBpbGxUZXh0ICs9IGAtJHtsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdLmxldmVsTnVtYmVyfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDx0YWJsZSBzdHlsZT17c3R5bGVzLnRhYmxlfT5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBzdHlsZT17c3R5bGVzLmNvbDF9PlxuICAgICAgICAgICAgICA8UHJvZ3Jlc3NQaWxsXG4gICAgICAgICAgICAgICAgbGV2ZWxzPXtsZXZlbHN9XG4gICAgICAgICAgICAgICAgaWNvbj17aWNvbn1cbiAgICAgICAgICAgICAgICB0ZXh0PXtwaWxsVGV4dH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZWN0aW9uSWQ9e3NlbGVjdGVkU2VjdGlvbklkfVxuICAgICAgICAgICAgICAgIHByb2dyZXNzU3R5bGU9e3Byb2dyZXNzU3R5bGV9XG4gICAgICAgICAgICAgICAgb25TaW5nbGVMZXZlbENsaWNrPXtvbkJ1YmJsZUNsaWNrfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBzdHlsZT17Y29sMlN0eWxlfT5cbiAgICAgICAgICAgICAgPGEgaHJlZj17dXJsfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7Li4uc3R5bGVzLm5hbWVUZXh0LCAuLi5zdHlsZXMudGV4dH19PntuYW1lfTwvZGl2PlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAge211bHRpTGV2ZWxTdGVwICYmIChcbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5saW5lc0FuZERvdH0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMudmVydGljYWxMaW5lfSAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmhvcml6b250YWxMaW5lfSAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmRvdH0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIHN0eWxlPXtzdHlsZXMuY29sMn0+XG4gICAgICAgICAgICAgICAgPFByb2dyZXNzQnViYmxlU2V0XG4gICAgICAgICAgICAgICAgICBsZXZlbHM9e2xldmVsc31cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgICAgICAgICAgIG9uQnViYmxlQ2xpY2s9e29uQnViYmxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICBsZXNzb25OYW1lPXtsZXNzb25OYW1lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICB0YWJsZToge1xuICAgIG1hcmdpblRvcDogMTIsXG4gIH0sXG4gIG5hbWVUZXh0OiB7XG4gICAgY29sb3I6IGNvbG9yLmNoYXJjb2FsLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXNlbWktYm9sZCddLFxuICAgIGZvbnRTaXplOiAxNCxcbiAgICBsZXR0ZXJTcGFjaW5nOiAtMC4xMixcbiAgfSxcbiAgY29sMjoge1xuICAgIHBhZGRpbmdMZWZ0OiAyMCxcbiAgfSxcbiAgY29sMlJUTDoge1xuICAgIHBhZGRpbmdSaWdodDogMjAsXG4gIH0sXG4gIGxpbmVzQW5kRG90OiB7XG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgbWFyZ2luTGVmdDogJzUwJScsXG4gICAgbWFyZ2luUmlnaHQ6IDE0LFxuICB9LFxuICB2ZXJ0aWNhbExpbmU6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmxpZ2h0ZXJfZ3JheSxcbiAgICBoZWlnaHQ6IDE1LFxuICAgIHdpZHRoOiAzLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGJvdHRvbTogMixcbiAgfSxcbiAgaG9yaXpvbnRhbExpbmU6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmxpZ2h0ZXJfZ3JheSxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IC0yLFxuICAgIGhlaWdodDogMyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBkb3Q6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBsZWZ0OiAtMixcbiAgICB0b3A6IDEsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5saWdodGVyX2dyYXksXG4gICAgaGVpZ2h0OiAxMCxcbiAgICB3aWR0aDogMTAsXG4gICAgYm9yZGVyUmFkaXVzOiAxMCxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBVbmNvbm5lY3RlZFByb2dyZXNzTGV2ZWxTZXQgPSBQcm9ncmVzc0xldmVsU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlID0+ICh7XG4gIGlzUnRsOiBzdGF0ZS5pc1J0bCxcbn0pKShSYWRpdW0oUHJvZ3Jlc3NMZXZlbFNldCkpO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSYWRpdW0gZnJvbSAncmFkaXVtJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJ3JlYWN0LXJlZHV4JztcblxuaW1wb3J0IHtxdWVyeVBhcmFtc30gZnJvbSAnQGNkby9hcHBzL2NvZGUtc3R1ZGlvL3V0aWxzJztcbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCB7UmV2aWV3U3RhdGVzfSBmcm9tICdAY2RvL2FwcHMvdGVtcGxhdGVzL2ZlZWRiYWNrL3R5cGVzJztcbmltcG9ydCBCdWJibGVCYWRnZSwge0JhZGdlVHlwZX0gZnJvbSAnQGNkby9hcHBzL3RlbXBsYXRlcy9wcm9ncmVzcy9CdWJibGVCYWRnZSc7XG5pbXBvcnQge1xuICBCdWJibGVTaGFwZSxcbiAgQnViYmxlU2l6ZSxcbiAgZ2V0QnViYmxlVXJsLFxufSBmcm9tICdAY2RvL2FwcHMvdGVtcGxhdGVzL3Byb2dyZXNzL0J1YmJsZUZhY3RvcnknO1xuaW1wb3J0IGNvbG9yIGZyb20gJ0BjZG8vYXBwcy91dGlsL2NvbG9yJztcblxuaW1wb3J0IEZvbnRBd2Vzb21lIGZyb20gJy4uLy4uL2xlZ2FjeVNoYXJlZENvbXBvbmVudHMvRm9udEF3ZXNvbWUnO1xuXG5pbXBvcnQge2lzTGV2ZWxBc3Nlc3NtZW50fSBmcm9tICcuL3Byb2dyZXNzSGVscGVycyc7XG5pbXBvcnQge2xldmVsUHJvZ3Jlc3NTdHlsZSwgaG92ZXJTdHlsZX0gZnJvbSAnLi9wcm9ncmVzc1N0eWxlcyc7XG5pbXBvcnQge2xldmVsV2l0aFByb2dyZXNzVHlwZX0gZnJvbSAnLi9wcm9ncmVzc1R5cGVzJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBzaW1pbGFyIHRvIG91ciBQcm9ncmVzc0J1YmJsZSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiBiZWluZ1xuICogYSBjaXJjbGUgd2l0aCBhIG51bWJlciBpbnNpZGUsIGl0IGlzIGFuIGVsbGlwc2Ugd2l0aCB0ZXh0IChhbmQgcG9zc2libHkgYW5cbiAqIGljb24pXG4gKi9cbmNsYXNzIFByb2dyZXNzUGlsbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbGV2ZWxzOiBQcm9wVHlwZXMuYXJyYXlPZihsZXZlbFdpdGhQcm9ncmVzc1R5cGUpLFxuICAgIGljb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b29sdGlwOiBQcm9wVHlwZXMuZWxlbWVudCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2VsZWN0ZWRTZWN0aW9uSWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgcHJvZ3Jlc3NTdHlsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25TaW5nbGVMZXZlbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvLyBSZWR1eFxuICAgIGlzUnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICBnZXRVcmwoKSB7XG4gICAgY29uc3Qge2xldmVscywgZGlzYWJsZWQsIHNlbGVjdGVkU2VjdGlvbklkLCBvblNpbmdsZUxldmVsQ2xpY2t9ID1cbiAgICAgIHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBwaWxsTGlua3NUb0xldmVsID1cbiAgICAgICFkaXNhYmxlZCAmJiAhb25TaW5nbGVMZXZlbENsaWNrICYmIGxldmVscy5sZW5ndGggPT09IDE7XG5cbiAgICBpZiAoIXBpbGxMaW5rc1RvTGV2ZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VySWQgPSBxdWVyeVBhcmFtcygndXNlcl9pZCcpO1xuICAgIHJldHVybiBnZXRCdWJibGVVcmwobGV2ZWxzWzBdLnVybCwgdXNlcklkLCBzZWxlY3RlZFNlY3Rpb25JZCk7XG4gIH1cblxuICBnZXRUb29sdGlwUHJvcHMoKSB7XG4gICAgY29uc3Qge3Rvb2x0aXB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHRvb2x0aXBQcm9wcyA9IHt9O1xuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICBjb25zdCBpZCA9IHRvb2x0aXAucHJvcHMudG9vbHRpcElkO1xuICAgICAgdG9vbHRpcFByb3BzWydkYXRhLXRpcCddID0gdHJ1ZTtcbiAgICAgIHRvb2x0aXBQcm9wc1snZGF0YS1mb3InXSA9IGlkO1xuICAgICAgdG9vbHRpcFByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10gPSBpZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9vbHRpcFByb3BzO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxldmVscyxcbiAgICAgIGljb24sXG4gICAgICB0ZXh0LFxuICAgICAgdG9vbHRpcCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgcHJvZ3Jlc3NTdHlsZSxcbiAgICAgIGlzUnRsLFxuICAgICAgb25TaW5nbGVMZXZlbENsaWNrLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZmlyc3RMZXZlbCA9IGxldmVsc1swXTtcblxuICAgIGNvbnN0IG11bHRpTGV2ZWxTdGVwID0gbGV2ZWxzLmxlbmd0aCA+IDE7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmdldFVybCgpO1xuXG4gICAgbGV0IG9uQ2xpY2sgPVxuICAgICAgIW11bHRpTGV2ZWxTdGVwICYmICFkaXNhYmxlZCAmJiAhdXJsXG4gICAgICAgID8gKCkgPT4gb25TaW5nbGVMZXZlbENsaWNrKGZpcnN0TGV2ZWwpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IHN0eWxlID0ge1xuICAgICAgLi4uc3R5bGVzLmxldmVsUGlsbCxcbiAgICAgIC4uLigodXJsIHx8IG9uQ2xpY2spICYmIGhvdmVyU3R5bGUpLFxuICAgICAgLi4uKCFtdWx0aUxldmVsU3RlcCAmJlxuICAgICAgICBsZXZlbFByb2dyZXNzU3R5bGUoZmlyc3RMZXZlbC5zdGF0dXMsIGZpcnN0TGV2ZWwua2luZCkpLFxuICAgIH07XG5cbiAgICAvLyBBZGp1c3QgaWNvbiBtYXJnaW5zIGlmIGxvY2FsZSBpcyBSVExcbiAgICBjb25zdCBpY29uTWFyZ2luU3R5bGUgPSBpc1J0bCA/IHN0eWxlcy5pY29uTWFyZ2luUlRMIDogc3R5bGVzLmljb25NYXJnaW47XG5cbiAgICBjb25zdCB0b29sdGlwUHJvcHMgPSB0aGlzLmdldFRvb2x0aXBQcm9wcygpO1xuXG4gICAgY29uc3QgaGFzS2VlcFdvcmtpbmdGZWVkYmFjayA9XG4gICAgICBmaXJzdExldmVsWyd0ZWFjaGVyRmVlZGJhY2tSZXZpZXdTdGF0ZSddID09PSBSZXZpZXdTdGF0ZXMua2VlcFdvcmtpbmc7XG5cbiAgICAvLyBPbmx5IHB1dCB0aGUgYnViYmxlIGJhZGdlIG9uIGlmIGl0cyBhIHNpbmdsZSBhc3Nlc3NtZW50IGxldmVsIChub3Qgc2V0KVxuICAgIGNvbnN0IGRpc3BsYXlCYWRnZSA9XG4gICAgICAhbXVsdGlMZXZlbFN0ZXAgJiZcbiAgICAgIChoYXNLZWVwV29ya2luZ0ZlZWRiYWNrIHx8IGlzTGV2ZWxBc3Nlc3NtZW50KGZpcnN0TGV2ZWwpKTtcblxuICAgIGNvbnN0IHRleHRTdHlsZSA9IHByb2dyZXNzU3R5bGUgPyBzdHlsZXMudGV4dFByb2dyZXNzU3R5bGUgOiBzdHlsZXMudGV4dDtcblxuICAgIHJldHVybiAoXG4gICAgICA8YVxuICAgICAgICBocmVmPXt1cmx9XG4gICAgICAgIHN0eWxlPXt7dGV4dERlY29yYXRpb246ICdub25lJ319XG4gICAgICAgIGNsYXNzTmFtZT1cInVpdGVzdC1Qcm9ncmVzc1BpbGxcIlxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgPlxuICAgICAgICA8ZGl2IHsuLi50b29sdGlwUHJvcHN9IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgICAge2ljb24gJiYgPEZvbnRBd2Vzb21lIGljb249e2ljb259IC8+fVxuICAgICAgICAgIHt0ZXh0ICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiUHJvZ3Jlc3NQaWxsVGV4dEFuZEljb25cIlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIC4uLnRleHRTdHlsZSxcbiAgICAgICAgICAgICAgICAuLi4oaWNvbiAmJiBpY29uTWFyZ2luU3R5bGUpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Rvb2x0aXB9XG4gICAgICAgICAge2Rpc3BsYXlCYWRnZSAmJiAoXG4gICAgICAgICAgICA8QnViYmxlQmFkZ2VcbiAgICAgICAgICAgICAgYmFkZ2VUeXBlPXtcbiAgICAgICAgICAgICAgICBoYXNLZWVwV29ya2luZ0ZlZWRiYWNrXG4gICAgICAgICAgICAgICAgICA/IEJhZGdlVHlwZS5rZWVwV29ya2luZ1xuICAgICAgICAgICAgICAgICAgOiBCYWRnZVR5cGUuYXNzZXNzbWVudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJ1YmJsZVNpemU9e0J1YmJsZVNpemUuZnVsbH1cbiAgICAgICAgICAgICAgYnViYmxlU2hhcGU9e0J1YmJsZVNoYXBlLnBpbGx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICBsZXZlbFBpbGw6IHtcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBib3JkZXJXaWR0aDogMixcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJDb2xvcjogY29sb3IubGlnaHRlcl9ncmF5LFxuICAgIGNvbG9yOiBjb2xvci5jaGFyY29hbCxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZm9udFNpemU6IDE2LFxuICAgIC4uLmZvbnRDb25zdGFudHNbJ21haW4tZm9udC1zZW1pLWJvbGQnXSxcbiAgICBib3JkZXJSYWRpdXM6IDIwLFxuICAgIHBhZGRpbmdMZWZ0OiAxMCxcbiAgICBwYWRkaW5nUmlnaHQ6IDEwLFxuICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgcGFkZGluZ0JvdHRvbTogNixcbiAgICBtaW5XaWR0aDogNzAsXG4gICAgbGluZUhlaWdodDogJzE4cHgnLFxuICAgIG1hcmdpblRvcDogMyxcbiAgICBtYXJnaW5Cb3R0b206IDMsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAuLi5mb250Q29uc3RhbnRzWydtYWluLWZvbnQtc2VtaS1ib2xkJ10sXG4gICAgbGV0dGVyU3BhY2luZzogLTAuMTIsXG4gIH0sXG4gIHRleHRQcm9ncmVzc1N0eWxlOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXNlbWktYm9sZCddLFxuICAgIGZvbnRTaXplOiAxMixcbiAgICBsZXR0ZXJTcGFjaW5nOiAtMC4xMixcbiAgICB3aWR0aDogMTIwLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIH0sXG4gIGljb25NYXJnaW46IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgfSxcbiAgaWNvbk1hcmdpblJUTDoge1xuICAgIG1hcmdpblJpZ2h0OiAxMCxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBVbmNvbm5lY3RlZFByb2dyZXNzUGlsbCA9IFByb2dyZXNzUGlsbDtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChzdGF0ZSA9PiAoe1xuICBpc1J0bDogc3RhdGUuaXNSdGwsXG59KSkoUmFkaXVtKFByb2dyZXNzUGlsbCkpO1xuIl0sIm5hbWVzIjpbIl9yZWRhY3RhYmxlTWFya2Rvd24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZW1hcmtQbHVnaW5zIiwiX2dpdGh1YiIsIl9wcm9wVHlwZXMiLCJfcmVhY3QiLCJfcmVoeXBlUmF3IiwiX3JlaHlwZVJlYWN0IiwiX3JlaHlwZVNhbml0aXplIiwiX3JlbWFya1JlaHlwZSIsIl91bmlmaWVkIiwiX2V4dGVybmFsTGlua3MiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJTYWZlTWFya2Rvd24iLCJfUmVhY3QkQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJjcmVhdGUiLCJyZW5kZXIiLCJwcm9jZXNzb3IiLCJ0aGlzIiwicHJvcHMiLCJvcGVuRXh0ZXJuYWxMaW5rc0luTmV3VGFiIiwibWFya2Rvd25Ub1JlYWN0RXh0ZXJuYWxMaW5rcyIsIm1hcmtkb3duVG9SZWFjdCIsInJlbmRlcmVkIiwicHJvY2Vzc1N5bmMiLCJtYXJrZG93biIsInJlc3VsdCIsIm1hcmtkb3duUHJvcHMiLCJjbGFzc05hbWUiLCJpZCIsInR5cGUiLCJrZXlzIiwiY3JlYXRlRWxlbWVudCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiX2RlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJzY2hlbWEiLCJkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hIiwiYXR0cmlidXRlcyIsImltZyIsInB1c2giLCJ0YWdOYW1lcyIsInNwYW4iLCJjbG9iYmVyIiwiYmxvY2tseVRhZ3MiLCJjb25jYXQiLCJibG9ja2x5Q29tcG9uZW50V3JhcHBlcnMiLCJmb3JFYWNoIiwidGFnIiwiQmxvY2tseUVsZW1lbnQiLCJpcyIsInVuaWZpZWQiLCJ1c2UiLCJQcm9jZXNzb3IiLCJnZXRQYXJzZXIiLCJjbGlja2FibGVUZXh0IiwiZXhwYW5kYWJsZUltYWdlcyIsInZpc3VhbENvZGVCbG9jayIsInhtbEFzVG9wTGV2ZWxCbG9jayIsImRldGFpbHMiLCJyZW1hcmtSZWh5cGUiLCJhbGxvd0Rhbmdlcm91c0h0bWwiLCJyZWh5cGVSYXciLCJyZWh5cGVTYW5pdGl6ZSIsInJlaHlwZVJlYWN0IiwiY29tcG9uZW50cyIsImV4dGVybmFsTGlua3MiLCJsaW5rcyIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZhdWx0IiwiaXNFeHRlcm5hbExpbmsiLCJ1cmwiLCJ0ZXN0IiwiZnVsbHlRdWFsaWZpZWQiLCJwYXRoIiwiYSIsImRvY3VtZW50IiwiaHJlZiIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJ0b2tlbml6ZXJzIiwiUGFyc2VyIiwiaW5saW5lVG9rZW5pemVycyIsIm9yaWdpbmFsIiwibGluayIsImFsbCIsImVhdCIsInNpbGVudCIsImRhdGEiLCJoUHJvcGVydGllcyIsInRhcmdldCIsInJlbCIsImxvY2F0b3IiLCJfcmFkaXVtIiwiX3JlYWN0VG9vbHRpcCIsIl9Gb250QXdlc29tZSIsIl9jb2xvciIsInN0eWxlcyIsIm1haW4iLCJkaXNwbGF5IiwicG9zaXRpb24iLCJyaWdodCIsInRvcCIsIndoaXRlU3BhY2UiLCJhcnJvd0NvbnRhaW5lciIsImxlZnRBcnJvdyIsIndpZHRoIiwiaGVpZ2h0IiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiY29sb3IiLCJjeWFuIiwiZm9jdXNBcmVhIiwiYmFja2dyb3VuZENvbG9yIiwid2hpdGUiLCJsaW5lSGVpZ2h0IiwidGV4dCIsImZvY3VzQXJlYUljb24iLCJwYWRkaW5nIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwiYm9yZGVyUmFkaXVzIiwiZGVmYXVsdF9ibHVlIiwiUmFkaXVtIiwiRm9jdXNBcmVhSW5kaWNhdG9yIiwic3R5bGUiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiaWNvbiIsInJvbGUiLCJlZmZlY3QiLCJfcmVhY3RSZWR1eCIsIl9Qcm9ncmVzc0J1YmJsZSIsIl9wcm9ncmVzc1N0eWxlcyIsIl9wcm9ncmVzc1R5cGVzIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlByb2dyZXNzQnViYmxlU2V0IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImxldmVsIiwiaW5kZXgiLCJpc1N1YmxldmVsIiwiX3RoaXMkcHJvcHMiLCJsZXZlbHMiLCJzZWxlY3RlZFNlY3Rpb25JZCIsInNlbGVjdGVkU3R1ZGVudElkIiwiaXNSdGwiLCJiYWNrZ3JvdW5kRmlyc3RTdHlsZSIsImJhY2tncm91bmRMYXN0IiwiYmFja2dyb3VuZEZpcnN0IiwiYmFja2dyb3VuZExhc3RTdHlsZSIsImJhY2tncm91bmRTdHlsZVByb3AiLCJiYWNrZ3JvdW5kIiwiaXNDb25jZXB0TGV2ZWwiLCJiYWNrZ3JvdW5kRGlhbW9uZCIsImJhY2tncm91bmRTdWJsZXZlbCIsImlzVW5wbHVnZ2VkIiwiYmFja2dyb3VuZFBpbGwiLCJzdWJsZXZlbHMiLCJjb250YWluZXJTdHlsZVByb3AiLCJjb250YWluZXIiLCJwaWxsQ29udGFpbmVyIiwiZGlhbW9uZENvbnRhaW5lciIsImNvbnRhaW5lclN1YmxldmVsIiwid2l0aEJhY2tncm91bmQiLCJrZXkiLCJkaXNhYmxlZCIsInNtYWxsQnViYmxlIiwiaGlkZVRvb2xUaXBzIiwib25DbGljayIsIm9uQnViYmxlQ2xpY2siLCJsZXNzb25OYW1lIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMyIiwic2hvd1N1YmxldmVscyIsIm1hcCIsInJlbmRlckJ1YmJsZSIsInN1YmxldmVsIiwiYXJyYXlPZiIsImxldmVsV2l0aFByb2dyZXNzVHlwZSIsIm9iamVjdCIsIm51bWJlciIsIm9uZU9mVHlwZSIsImxlc3NvbkV4dHJhc0VuYWJsZWQiLCJmdW5jIiwibGlnaHRlcl9ncmF5IiwibGVmdCIsIkRPVF9TSVpFIiwiRElBTU9ORF9ET1RfU0laRSIsImNvbm5lY3QiLCJzdGF0ZSIsIl9sb2Rhc2giLCJfdmlld0FzUmVkdXgiLCJfZm9udENvbnN0YW50cyIsIl9CdXR0b24iLCJfZmlyZWhvc2UiLCJfbG9jYWxlIiwiX0ZvY3VzQXJlYUluZGljYXRvciIsIl9wcm9ncmVzc0hlbHBlcnMiLCJfUHJvZ3Jlc3NMZXNzb25Db250ZW50IiwiX1Byb2dyZXNzTGVzc29uVGVhY2hlckluZm8iLCJQcm9ncmVzc0xlc3NvbiIsInNldFN0YXRlIiwiY29sbGFwc2VkIiwiZmlyZWhvc2VDbGllbnQiLCJwdXRSZWNvcmQiLCJzdHVkeSIsInN0dWR5X2dyb3VwIiwiZXZlbnQiLCJkYXRhX2pzb24iLCJKU09OIiwic3RyaW5naWZ5IiwibGVzc29uX2lkIiwibGVzc29uIiwic2NyaXB0X2lkIiwic2NyaXB0SWQiLCJpbmNsdWRlVXNlcklkIiwidmlld0FzIiwiVmlld1R5cGUiLCJJbnN0cnVjdG9yIiwiY3VycmVudExlc3NvbklkIiwiX3Byb3RvIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJuZXh0UHJvcHMiLCJpc1Zpc2libGUiLCJoaWRkZW5Gb3JTdHVkZW50cyIsImlzTG9ja2VkRm9yVXNlciIsImlzTG9ja2VkRm9yQWxsU3R1ZGVudHMiLCJzaG93QXNMb2NrZWQiLCJ0aXRsZSIsImxlc3Nvbk51bWJlciIsImkxOG4iLCJsZXNzb25OdW1iZXJlZCIsIm5hbWUiLCJjYXJldFN0eWxlIiwiY2FyZXRSVEwiLCJjYXJldCIsImxvY2tlZFRvb2x0aXBJZCIsIl8iLCJ1bmlxdWVJZCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25fdGVhY2hlciIsImRlc2NyaXB0aW9uX3N0dWRlbnQiLCJsZXNzb25VcmwiLCJzaG93Tm90QXV0aG9yaXplZFdhcm5pbmciLCJsb2NrYWJsZSIsImxvY2thYmxlQXV0aG9yaXplZExvYWRlZCIsImxvY2thYmxlQXV0aG9yaXplZCIsIm91dGVyIiwiaGlkZGVuT3JMb2NrZWQiLCJQYXJ0aWNpcGFudCIsInRyYW5zbHVjZW50IiwiaGVhZGluZyIsIm1hcmdpbkJvdHRvbSIsImhlYWRpbmdUZXh0IiwidG9nZ2xlQ29sbGFwc2VkIiwidGFiSW5kZXgiLCJvbktleURvd24iLCJpbmNsdWRlcyIsInByZXZlbnREZWZhdWx0IiwibG9ja1N0YXR1c0xvYWRlZCIsInVubG9ja2VkSWNvbiIsIndyYXBwZXIiLCJsb2NrQXNzZXNzbWVudExvbmciLCJzdHVkZW50X2xlc3Nvbl9wbGFuX2h0bWxfdXJsIiwiYnV0dG9uU3R5bGUiLCJfX3VzZURlcHJlY2F0ZWRUYWciLCJsZXNzb25SZXNvdXJjZXMiLCJvbkNsaWNrU3R1ZGVudExlc3NvblBsYW4iLCJub3RBdXRob3JpemVkV2FybmluZyIsInVudmVyaWZpZWRUZWFjaGVyTG9ja1dhcm5pbmciLCJsZWFybk1vcmVMaW5rIiwibGVhcm5Nb3JlV2l0aFBlcmlvZCIsImlzTWluaVZpZXciLCJpc0ZvY3VzQXJlYSIsImxlc3NvblR5cGUiLCJvbmVPZiIsInZhbHVlcyIsImxpZ2h0ZXN0X2dyYXkiLCJib3JkZXJfZ3JheSIsIm1hcmdpblRvcCIsImZvbnRTaXplIiwiZm9udENvbnN0YW50cyIsImFsaWduSXRlbXMiLCJjdXJzb3IiLCJmbGV4R3JvdyIsIm9wYWNpdHkiLCJvcmFuZ2UiLCJyZWQiLCJvd25Qcm9wcyIsInByb2dyZXNzIiwibGVzc29uTG9jayIsImxlc3NvbklzVmlzaWJsZSIsImxlc3NvbklzTG9ja2VkRm9yVXNlciIsImxlc3NvbklzTG9ja2VkRm9yQWxsU3R1ZGVudHMiLCJ0ZWFjaGVyU2VjdGlvbnMiLCJ1bml0UHJvZ3Jlc3NIYXNMb2FkZWQiLCJsZXNzb25zQnlTZWN0aW9uSWRMb2FkZWQiLCJfcHJvZ3Jlc3NSZWR1eFNlbGVjdG9ycyIsIl9TYWZlTWFya2Rvd24iLCJfUHJvZ3Jlc3NCdWJibGVTZXQiLCJfUHJvZ3Jlc3NMZXZlbFNldCIsIlByb2dyZXNzTGVzc29uQ29udGVudCIsImJ1YmJsZXMiLCJwcm9ncmVzc2lvbnMiLCJwcm9ncmVzc2lvbnNGcm9tTGV2ZWxzIiwibm9MZXZlbHNXYXJuaW5nIiwibGVzc29uQ29udGFpbnNOb0xldmVscyIsInByb2dyZXNzaW9uIiwiZGlzcGxheU5hbWUiLCJzdW1tYXJ5IiwiX1Byb2dyZXNzUGlsbCIsIlByb2dyZXNzTGV2ZWxTZXQiLCJwaWxsVGV4dCIsIm11bHRpTGV2ZWxTdGVwIiwiY29sMlN0eWxlIiwiY29sMlJUTCIsImNvbDIiLCJwcm9ncmVzc1N0eWxlIiwiZ2V0SWNvbkZvckxldmVsIiwidW5wbHVnZ2VkQWN0aXZpdHkiLCJsZXZlbE51bWJlciIsInRvU3RyaW5nIiwidGFibGUiLCJjb2wxIiwib25TaW5nbGVMZXZlbENsaWNrIiwibmFtZVRleHQiLCJsaW5lc0FuZERvdCIsInZlcnRpY2FsTGluZSIsImhvcml6b250YWxMaW5lIiwiZG90IiwiY2hhcmNvYWwiLCJsZXR0ZXJTcGFjaW5nIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJib3R0b20iLCJfdXRpbHMiLCJfdHlwZXMiLCJfQnViYmxlQmFkZ2UiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImhhcyIsImdldCIsInUiLCJzZXQiLCJfQnViYmxlRmFjdG9yeSIsIldlYWtNYXAiLCJQcm9ncmVzc1BpbGwiLCJnZXRVcmwiLCJ1c2VySWQiLCJxdWVyeVBhcmFtcyIsImdldEJ1YmJsZVVybCIsImdldFRvb2x0aXBQcm9wcyIsInRvb2x0aXAiLCJ0b29sdGlwUHJvcHMiLCJ0b29sdGlwSWQiLCJmaXJzdExldmVsIiwibGV2ZWxQaWxsIiwiaG92ZXJTdHlsZSIsImxldmVsUHJvZ3Jlc3NTdHlsZSIsInN0YXR1cyIsImtpbmQiLCJpY29uTWFyZ2luU3R5bGUiLCJpY29uTWFyZ2luUlRMIiwiaWNvbk1hcmdpbiIsImhhc0tlZXBXb3JraW5nRmVlZGJhY2siLCJSZXZpZXdTdGF0ZXMiLCJrZWVwV29ya2luZyIsImRpc3BsYXlCYWRnZSIsImlzTGV2ZWxBc3Nlc3NtZW50IiwidGV4dFN0eWxlIiwidGV4dFByb2dyZXNzU3R5bGUiLCJ0ZXh0RGVjb3JhdGlvbiIsImJhZGdlVHlwZSIsIkJhZGdlVHlwZSIsImFzc2Vzc21lbnQiLCJidWJibGVTaXplIiwiQnViYmxlU2l6ZSIsImZ1bGwiLCJidWJibGVTaGFwZSIsIkJ1YmJsZVNoYXBlIiwicGlsbCIsImVsZW1lbnQiLCJ0ZXh0QWxpZ24iLCJqdXN0aWZ5Q29udGVudCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwibWluV2lkdGgiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFNBQVUsU0FDVkMsYUFBYyxhQUVoQnpCLFdBQVksQ0FDVi9QLFdBQVksSUFFZDhQLGNBQWUsQ0FDYjdQLFlBQWEsS0FJbUJ0RCxRQUFBQSx3QkFBR21TLGFBQWFuUyxRQUFBQSxTQUVyQyxFQUFBcUksWUFBQUEsVUFBUSxTQUFBQyxPQUFLLE1BQUssQ0FDL0I1QyxNQUFPNEMsTUFBTTVDLE1BQ2QsR0FGYyxFQUVYLEVBQUFqQyxRQUFBQSxTQUFPME8sYyIsInNvdXJjZXMiOlsid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvU2FmZU1hcmtkb3duLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3BsdWdpbnMvZXh0ZXJuYWxMaW5rcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL3Byb2dyZXNzL0ZvY3VzQXJlYUluZGljYXRvci5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc0J1YmJsZVNldC5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc0xlc3Nvbi5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc0xlc3NvbkNvbnRlbnQuanN4Iiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy90ZW1wbGF0ZXMvcHJvZ3Jlc3MvUHJvZ3Jlc3NMZXZlbFNldC5qc3giLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3RlbXBsYXRlcy9wcm9ncmVzcy9Qcm9ncmVzc1BpbGwuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9jZXNzb3IgZnJvbSAnQGNvZGUtZG90LW9yZy9yZWRhY3RhYmxlLW1hcmtkb3duJztcbmltcG9ydCB7XG4gIGRldGFpbHMsXG4gIGNsaWNrYWJsZVRleHQsXG4gIGV4cGFuZGFibGVJbWFnZXMsXG4gIHZpc3VhbENvZGVCbG9jayxcbiAgeG1sQXNUb3BMZXZlbEJsb2NrLFxufSBmcm9tICdAY29kZS1kb3Qtb3JnL3JlbWFyay1wbHVnaW5zJztcbmltcG9ydCBkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hIGZyb20gJ2hhc3QtdXRpbC1zYW5pdGl6ZS9saWIvZ2l0aHViLmpzb24nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcmVoeXBlUmF3IGZyb20gJ3JlaHlwZS1yYXcnO1xuaW1wb3J0IHJlaHlwZVJlYWN0IGZyb20gJ3JlaHlwZS1yZWFjdCc7XG5pbXBvcnQgcmVoeXBlU2FuaXRpemUgZnJvbSAncmVoeXBlLXNhbml0aXplJztcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSc7XG5pbXBvcnQgdW5pZmllZCBmcm9tICd1bmlmaWVkJztcblxuaW1wb3J0IGV4dGVybmFsTGlua3MgZnJvbSAnLi9wbHVnaW5zL2V4dGVybmFsTGlua3MnO1xuXG4vKipcbiAqIEJhc2ljIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGEgbWFya2Rvd24gc3RyaW5nIGFzIEhUTUwsIHdpdGggc2FuaXRpemF0aW9uLlxuICogQ2FuIHNhZmVseSByZW5kZXIgbWFya2Rvd24gZXZlbiBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzLCB3aXRob3V0IHBvdGVudGlhbGx5XG4gKiBleHBvc2luZyB1cyB0byBhbiBYU1MgaW5qZWN0aW9uLlxuICovXG5jbGFzcyBTYWZlTWFya2Rvd24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG1hcmtkb3duOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb3BlbkV4dGVybmFsTGlua3NJbk5ld1RhYjogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICAvLyBXZSBvbmx5IG9wZW4gZXh0ZXJuYWwgbGlua3MgaW4gYSBuZXcgdGFiIGlmIGl0J3MgZXhwbGljaXRseSBzcGVjaWZpZWRcbiAgICAvLyB0aGF0IHdlIGRvIHNvOyB0aGlzIGlzIGFic29sdXRlbHkgbm90IHNvbWV0aGluZyB3ZSB3YW50IHRvIGRvIGFzIGFcbiAgICAvLyBnZW5lcmFsIHByYWN0aWNlLCBidXQgdW5mb3J0dW5hdGVseSB0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIGluIHdoaWNoXG4gICAgLy8gaXQgaXMgY3VycmVudGx5IGEgcmVxdWlyZW1lbnQuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gdGhpcy5wcm9wcy5vcGVuRXh0ZXJuYWxMaW5rc0luTmV3VGFiXG4gICAgICA/IG1hcmtkb3duVG9SZWFjdEV4dGVybmFsTGlua3NcbiAgICAgIDogbWFya2Rvd25Ub1JlYWN0O1xuXG4gICAgY29uc3QgcmVuZGVyZWQgPSBPYmplY3QocHJvY2Vzc29yLnByb2Nlc3NTeW5jKHRoaXMucHJvcHMubWFya2Rvd24pLnJlc3VsdCk7XG5cbiAgICBjb25zdCBtYXJrZG93blByb3BzID0ge307XG4gICAgaWYgKHRoaXMucHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICBtYXJrZG93blByb3BzLmNsYXNzTmFtZSA9IHRoaXMucHJvcHMuY2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5pZCkge1xuICAgICAgbWFya2Rvd25Qcm9wcy5pZCA9IHRoaXMucHJvcHMuaWQ7XG4gICAgfVxuICAgIC8vIHJlaHlwZS1yZWFjdCB3aWxsIG9ubHkgd3JhcCB0aGUgY29tcGlsZWQgbWFya2Rvd24gaW4gYSA8ZGl2PiB0YWdcbiAgICAvLyBpZiBpdCBuZWVkcyB0byAoaWUsIGlmIHRoZXJlIHdvdWxkIG90aGVyd2lzZSBiZSBtdWx0aXBsZSBlbGVtZW50c1xuICAgIC8vIHJldHVybmVkKSBvciB3ZSdyZSBhc3NpZ25pbmcgcHJvcHMuIFdlIHByZWZlciBjb25zaXN0ZW5jeSBvdmVyIGZsZXhpYmlsaXR5LFxuICAgIC8vIHNvIGhlcmUgd2Ugd3JhcCB0aGUgcmVzdWx0IGluIGEgZGl2IGlmIGl0IHdhc24ndCBhbHJlYWR5XG4gICAgaWYgKFxuICAgICAgcmVuZGVyZWQgJiZcbiAgICAgIHJlbmRlcmVkLnR5cGUgPT09ICdkaXYnICYmXG4gICAgICAhT2JqZWN0LmtleXMobWFya2Rvd25Qcm9wcykubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmVuZGVyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8ZGl2IHsuLi5tYXJrZG93blByb3BzfT57cmVuZGVyZWR9PC9kaXY+O1xuICAgIH1cbiAgfVxufVxuXG4vLyBjcmVhdGUgY3VzdG9tIHNhbml0aXphdGlvbiBzY2hlbWEgYXMgcGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vc3ludGF4LXRyZWUvaGFzdC11dGlsLXNhbml0aXplI3NjaGVtYVxuLy8gdG8gc3VwcG9ydCBvdXIgY3VzdG9tIHN5bnRheGVzXG5jb25zdCBzY2hlbWEgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hKTtcblxuLy8gV2UgdXNlIGEgX2xvdF8gb2YgaW1hZ2UgZm9ybWF0dGluZyBzdHVmZiBpbiBvdXJcbi8vIGluc3RydWN0aW9ucywgcGFydGljdWxhcmx5IGluIENTUFxuc2NoZW1hLmF0dHJpYnV0ZXMuaW1nLnB1c2goJ2hlaWdodCcsICd3aWR0aCcpO1xuXG4vLyBBZGQgc3VwcG9ydCBmb3IgZXhwYW5kYWJsZUltYWdlc1xuc2NoZW1hLnRhZ05hbWVzLnB1c2goJ3NwYW4nKTtcbnNjaGVtYS5hdHRyaWJ1dGVzLnNwYW4gPSBbJ2RhdGFVcmwnLCAnY2xhc3NOYW1lJ107XG5cbi8vIEFkZCBzdXBwb3J0IGZvciBpbmxpbmUgc3R5bGVzIChncm9zcylcbi8vIFRPRE8gcmVwbGFjZSBhbGwgaW5saW5lIHN0eWxlcyBpbiBvdXIgY3VycmljdWx1bSBjb250ZW50IHdpdGhcbi8vIHNlbWFudGljYWxseS1zaWduaWZpY2FudCBjb250ZW50XG5zY2hlbWEuYXR0cmlidXRlc1snKiddLnB1c2goJ3N0eWxlJywgJ2NsYXNzTmFtZScpO1xuXG4vLyBDbGlja2FibGVUZXh0IHVzZXMgZGF0YS1pZCBvbiBhIGJvbGQgdGFnLlxuc2NoZW1hLmF0dHJpYnV0ZXNbJ2InXSA9IFsnZGF0YUlkJ107XG5cbi8vIEFkZCBzdXBwb3J0IGZvciBCbG9ja2x5IFhNTFxuc2NoZW1hLmNsb2JiZXIgPSBbXTtcbmNvbnN0IGJsb2NrbHlUYWdzID0gW1xuICAnYmxvY2snLFxuICAnZnVuY3Rpb25hbF9pbnB1dCcsXG4gICdtdXRhdGlvbicsXG4gICduZXh0JyxcbiAgJ3N0YXRlbWVudCcsXG4gICd0aXRsZScsXG4gICdmaWVsZCcsXG4gICd2YWx1ZScsXG4gICd4bWwnLFxuXTtcbnNjaGVtYS50YWdOYW1lcyA9IHNjaGVtYS50YWdOYW1lcy5jb25jYXQoYmxvY2tseVRhZ3MpO1xubGV0IGJsb2NrbHlDb21wb25lbnRXcmFwcGVycyA9IHt9O1xuYmxvY2tseVRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xuICBzY2hlbWEuYXR0cmlidXRlc1t0YWddID0gWydibG9ja190ZXh0JywgJ2lkJywgJ2lubGluZScsICduYW1lJywgJ3R5cGUnXTtcblxuICAvLyBDcmVhdGUgYSBSZWFjdCBjb21wb25lbnQgdG8gd3JhcCBlYWNoIEJsb2NrbHkgdGFnLiBTaW5jZSB0aGVzZSBlbGVtZW50cyB1bHRpbWF0ZWx5XG4gIC8vIHJlbmRlciBhcyBSZWFjdCBjb21wb25lbnRzLCBjcmVhdGluZyBhIHdyYXBwZXIgbWFrZXMgdGhlbSB2YWxpZCAod2hlcmVhcyA8eG1sPlxuICAvLyBpcyBub3QgYSB2YWxpZCBSZWFjdCB0YWcpLlxuICBibG9ja2x5Q29tcG9uZW50V3JhcHBlcnNbdGFnXSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIGNvbnN0IEJsb2NrbHlFbGVtZW50ID0gdGFnO1xuICAgIC8vIFRoZSBcImlzXCIgYXR0cmlidXRlIHByZXZlbnRzIFJlYWN0IGZyb20gd2FybmluZyBhYm91dCB1bnJlY29nbml6ZWQgdGFnczpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzExMTg0I2lzc3VlY29tbWVudC0zMzU5NDI0MzlcbiAgICByZXR1cm4gPEJsb2NrbHlFbGVtZW50IGlzPXt0YWd9IHsuLi5wcm9wc30gLz47XG4gIH07XG59KTtcbmNvbnN0IG1hcmtkb3duVG9SZWFjdCA9IHVuaWZpZWQoKVxuICAudXNlKFByb2Nlc3Nvci5nZXRQYXJzZXIoKSlcbiAgLy8gaW5jbHVkZSBjdXN0b20gcGx1Z2luc1xuICAudXNlKFtcbiAgICBjbGlja2FibGVUZXh0LFxuICAgIGV4cGFuZGFibGVJbWFnZXMsXG4gICAgdmlzdWFsQ29kZUJsb2NrLFxuICAgIHhtbEFzVG9wTGV2ZWxCbG9jayxcbiAgICBkZXRhaWxzLFxuICBdKVxuICAvLyBjb252ZXJ0IG1hcmtkb3duIHRvIGFuIEhUTUwgQWJzdHJhY3QgU3ludGF4IFRyZWUgKEhBU1QpXG4gIC51c2UocmVtYXJrUmVoeXBlLCB7XG4gICAgLy8gaW5jbHVkZSBhbnkgcmF3IEhUTUwgaW4gdGhlIG1hcmtkb3duIGFzIHJhdyBIVE1MIG5vZGVzIGluIHRoZSBIQVNUXG4gICAgYWxsb3dEYW5nZXJvdXNIdG1sOiB0cnVlLFxuICB9KVxuICAvLyBwYXJzZSB0aGUgcmF3IEhUTUwgbm9kZXMgaW4gdGhlIEhBU1QgdG8gYWN0dWFsIEhBU1Qgbm9kZXNcbiAgLnVzZShyZWh5cGVSYXcpXG4gIC8vIHNhbml0aXplIHRoZSBIQVNUXG4gIC51c2UocmVoeXBlU2FuaXRpemUsIHNjaGVtYSlcbiAgLy8gY29udmVydCB0aGUgSEFTVCB0byBSZWFjdFxuICAudXNlKHJlaHlwZVJlYWN0LCB7XG4gICAgY3JlYXRlRWxlbWVudDogUmVhY3QuY3JlYXRlRWxlbWVudCxcbiAgICAvLyBVc2UgUmVhY3QgY29tcG9uZW50IHdyYXBwZXJzIGZvciBCbG9ja2x5IFhNTCBlbGVtZW50cyB0byBwcmV2ZW50XG4gICAgLy8gUmVhY3QgZnJvbSB3YXJuaW5nIHVzIGFib3V0IGludmFsaWQgY29tcG9uZW50cy5cbiAgICBjb21wb25lbnRzOiBibG9ja2x5Q29tcG9uZW50V3JhcHBlcnMsXG4gIH0pO1xuXG5jb25zdCBtYXJrZG93blRvUmVhY3RFeHRlcm5hbExpbmtzID0gbWFya2Rvd25Ub1JlYWN0KCkudXNlKGV4dGVybmFsTGlua3MsIHtcbiAgbGlua3M6ICdhbGwnLFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVNYXJrZG93bjtcbiIsIi8qKlxuICogT3BlbiBleHRlcm5hbCBsaW5rcyBpbiBhIG5ldyB0YWIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVybmFsTGlua3Mob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IFBhcnNlciA9IHRoaXMuUGFyc2VyO1xuICBjb25zdCB0b2tlbml6ZXJzID0gUGFyc2VyLnByb3RvdHlwZS5pbmxpbmVUb2tlbml6ZXJzO1xuICBjb25zdCBvcmlnaW5hbCA9IHRva2VuaXplcnMubGluaztcbiAgY29uc3QgYWxsID0gb3B0aW9ucy5saW5rcyA9PT0gJ2FsbCc7XG5cbiAgdG9rZW5pemVycy5saW5rID0gZnVuY3Rpb24gKGVhdCwgdmFsdWUsIHNpbGVudCkge1xuICAgIGNvbnN0IGxpbmsgPSBvcmlnaW5hbC5jYWxsKHRoaXMsIGVhdCwgdmFsdWUsIHNpbGVudCk7XG4gICAgaWYgKGxpbmsgJiYgbGluay50eXBlID09PSAnbGluaycgJiYgKGFsbCB8fCBpc0V4dGVybmFsTGluayhsaW5rLnVybCkpKSB7XG4gICAgICBsaW5rLmRhdGEgPSBsaW5rLmRhdGEgfHwge307XG4gICAgICBsaW5rLmRhdGEuaFByb3BlcnRpZXMgPSBsaW5rLmRhdGEuaFByb3BlcnRpZXMgfHwge307XG5cbiAgICAgIGNvbnN0IHByb3BzID0gbGluay5kYXRhLmhQcm9wZXJ0aWVzO1xuICAgICAgcHJvcHMudGFyZ2V0ID0gcHJvcHMudGFyZ2V0IHx8ICdfYmxhbmsnO1xuICAgICAgcHJvcHMucmVsID0gJ25vcmVmZXJyZXIgbm9vcGVuZXInO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rO1xuICB9O1xuICB0b2tlbml6ZXJzLmxpbmsubG9jYXRvciA9IG9yaWdpbmFsLmxvY2F0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh1cmwpIHtcbiAgcmV0dXJuICEvaHR0cHM/OlxcL1xcLyhbXi5dK1xcLikqY29kZS5vcmcoOlswLTldKyk/XFwvLy50ZXN0KGZ1bGx5UXVhbGlmaWVkKHVybCkpO1xufVxuXG5sZXQgYTtcbmZ1bmN0aW9uIGZ1bGx5UXVhbGlmaWVkKHBhdGgpIHtcbiAgYSA9IGEgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICBhLmhyZWYgPSBwYXRoO1xuICByZXR1cm4gYS5ocmVmO1xufVxuIiwiLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGFkZHMgYSByaWJib24gdG8gdGhlIHNpZGUgb2YgeW91ciByb3cgdG8gaW5kaWNhdGUgdGhhdCBpdCBpc1xuICogYSBmb2N1cyBhcmVhLiBOb3RlOiBUaGlzIGlzIEVuZ2xpc2ggb25seS5cbiAqL1xuXG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0VG9vbHRpcCBmcm9tICdyZWFjdC10b29sdGlwJztcblxuaW1wb3J0IEZvbnRBd2Vzb21lIGZyb20gJ0BjZG8vYXBwcy9sZWdhY3lTaGFyZWRDb21wb25lbnRzL0ZvbnRBd2Vzb21lJztcbmltcG9ydCBjb2xvciBmcm9tICdAY2RvL2FwcHMvdXRpbC9jb2xvcic7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgbWFpbjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHJpZ2h0OiAwLFxuICAgIHRvcDogMCxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgfSxcbiAgYXJyb3dDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IDEwLFxuICB9LFxuICBsZWZ0QXJyb3c6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyV2lkdGg6ICcxN3B4IDIwcHggMTdweCcsXG4gICAgYm9yZGVyQ29sb3I6IGB0cmFuc3BhcmVudCAke2NvbG9yLmN5YW59IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50YCxcbiAgfSxcbiAgZm9jdXNBcmVhOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5jeWFuLFxuICAgIGNvbG9yOiBjb2xvci53aGl0ZSxcbiAgICBoZWlnaHQ6IDM0LFxuICAgIGxpbmVIZWlnaHQ6ICczNHB4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IC0zLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gIH0sXG4gIGZvY3VzQXJlYUljb246IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBjb2xvcjogY29sb3Iud2hpdGUsXG4gICAgbGluZUhlaWdodDogJzEzcHgnLFxuICAgIHBhZGRpbmc6IDUsXG4gICAgbWFyZ2luTGVmdDogNSxcbiAgICBtYXJnaW5SaWdodDogNSxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgJzpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuZGVmYXVsdF9ibHVlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5jb25zdCBGb2N1c0FyZWFJbmRpY2F0b3IgPSAoKSA9PiAoXG4gIDxkaXYgc3R5bGU9e3N0eWxlcy5tYWlufT5cbiAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuYXJyb3dDb250YWluZXJ9PlxuICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmxlZnRBcnJvd30gLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuZm9jdXNBcmVhfT5cbiAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy50ZXh0fT5Gb2N1cyBBcmVhPC9kaXY+XG4gICAgICA8YSBocmVmPXt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAnL3ByZXZpZXctYXNzaWdubWVudHMnfT5cbiAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmZvY3VzQXJlYUljb259IGRhdGEtdGlwIGRhdGEtZm9yPVwiZm9jdXMtYXJlYVwiPlxuICAgICAgICAgIDxGb250QXdlc29tZSBpY29uPVwicGVuY2lsXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPFJlYWN0VG9vbHRpcCBpZD1cImZvY3VzLWFyZWFcIiByb2xlPVwidG9vbHRpcFwiIGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICBDbGljayB0byBjaGFuZ2UgeW91ciBmb2N1cyBhcmVhLlxuICAgIDwvUmVhY3RUb29sdGlwPlxuICA8L2Rpdj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGl1bShGb2N1c0FyZWFJbmRpY2F0b3IpO1xuIiwiLyoqXG4gKiBBbiBvcmRlcmVkIHNldCBvZiBwcm9ncmVzcyBidWJibGVzLlxuICovXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJhZGl1bSBmcm9tICdyYWRpdW0nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQgY29sb3IgZnJvbSAnQGNkby9hcHBzL3V0aWwvY29sb3InO1xuXG5pbXBvcnQgUHJvZ3Jlc3NCdWJibGUgZnJvbSAnLi9Qcm9ncmVzc0J1YmJsZSc7XG5pbXBvcnQge0RPVF9TSVpFLCBESUFNT05EX0RPVF9TSVpFfSBmcm9tICcuL3Byb2dyZXNzU3R5bGVzJztcbmltcG9ydCB7bGV2ZWxXaXRoUHJvZ3Jlc3NUeXBlfSBmcm9tICcuL3Byb2dyZXNzVHlwZXMnO1xuXG4vLyBEZXByZWNhdGVkIGluIGZhdm9yIG9mIFByb2dyZXNzVGFibGVEZXRhaWxDZWxsXG4vLyBjb21wb25lbnQgd2lsbCBiZSByZW1vdmVkIGFzIHBhcnQgb2YgaHR0cHM6Ly9jb2RlZG90b3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0xQLTE2MDZcbmNsYXNzIFByb2dyZXNzQnViYmxlU2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBsZXZlbHM6IFByb3BUeXBlcy5hcnJheU9mKGxldmVsV2l0aFByb2dyZXNzVHlwZSkuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzZWxlY3RlZFNlY3Rpb25JZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzZWxlY3RlZFN0dWRlbnRJZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgUHJvcFR5cGVzLm51bWJlcixcbiAgICBdKSxcbiAgICBoaWRlVG9vbFRpcHM6IFByb3BUeXBlcy5ib29sLFxuICAgIGxlc3NvbkV4dHJhc0VuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTdWJsZXZlbHM6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uQnViYmxlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAgIGxlc3Nvbk5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLy8gUmVkdXhcbiAgICBpc1J0bDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgcmVuZGVyQnViYmxlID0gKGxldmVsLCBpbmRleCwgaXNTdWJsZXZlbCkgPT4ge1xuICAgIGNvbnN0IHtsZXZlbHMsIHNlbGVjdGVkU2VjdGlvbklkLCBzZWxlY3RlZFN0dWRlbnRJZCwgaXNSdGx9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIEFkanVzdCBiYWNrZ3JvdW5kIHN0eWxlcyBpZiBsb2NhbGUgaXMgUlRMXG4gICAgY29uc3QgYmFja2dyb3VuZEZpcnN0U3R5bGUgPSBpc1J0bFxuICAgICAgPyBzdHlsZXMuYmFja2dyb3VuZExhc3RcbiAgICAgIDogc3R5bGVzLmJhY2tncm91bmRGaXJzdDtcbiAgICBjb25zdCBiYWNrZ3JvdW5kTGFzdFN0eWxlID0gaXNSdGxcbiAgICAgID8gc3R5bGVzLmJhY2tncm91bmRGaXJzdFxuICAgICAgOiBzdHlsZXMuYmFja2dyb3VuZExhc3Q7XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kU3R5bGVQcm9wID0ge1xuICAgICAgLi4uc3R5bGVzLmJhY2tncm91bmQsXG4gICAgICAuLi4obGV2ZWwuaXNDb25jZXB0TGV2ZWwgJiYgc3R5bGVzLmJhY2tncm91bmREaWFtb25kKSxcbiAgICAgIC4uLihpc1N1YmxldmVsICYmIHN0eWxlcy5iYWNrZ3JvdW5kU3VibGV2ZWwpLFxuICAgICAgLi4uKGxldmVsLmlzVW5wbHVnZ2VkICYmIHN0eWxlcy5iYWNrZ3JvdW5kUGlsbCksXG4gICAgICAuLi4oIWlzU3VibGV2ZWwgJiYgaW5kZXggPT09IDAgJiYgYmFja2dyb3VuZEZpcnN0U3R5bGUpLFxuICAgICAgLi4uKCFpc1N1YmxldmVsICYmXG4gICAgICAgICFsZXZlbC5zdWJsZXZlbHMgJiZcbiAgICAgICAgaW5kZXggPT09IGxldmVscy5sZW5ndGggLSAxICYmXG4gICAgICAgIGJhY2tncm91bmRMYXN0U3R5bGUpLFxuICAgIH07XG5cbiAgICBjb25zdCBjb250YWluZXJTdHlsZVByb3AgPSB7XG4gICAgICAuLi5zdHlsZXMuY29udGFpbmVyLFxuICAgICAgLi4uKGxldmVsLmlzVW5wbHVnZ2VkICYmIHN0eWxlcy5waWxsQ29udGFpbmVyKSxcbiAgICAgIC4uLihsZXZlbC5pc0NvbmNlcHRMZXZlbCAmJiBzdHlsZXMuZGlhbW9uZENvbnRhaW5lciksXG4gICAgICAuLi4oaXNTdWJsZXZlbCAmJiBzdHlsZXMuY29udGFpbmVyU3VibGV2ZWwpLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLndpdGhCYWNrZ3JvdW5kfSBrZXk9e2luZGV4fT5cbiAgICAgICAgPGRpdiBzdHlsZT17YmFja2dyb3VuZFN0eWxlUHJvcH0gLz5cbiAgICAgICAgPGRpdiBzdHlsZT17Y29udGFpbmVyU3R5bGVQcm9wfT5cbiAgICAgICAgICA8UHJvZ3Jlc3NCdWJibGVcbiAgICAgICAgICAgIGxldmVsPXtsZXZlbH1cbiAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgc21hbGxCdWJibGU9e2lzU3VibGV2ZWx9XG4gICAgICAgICAgICBzZWxlY3RlZFNlY3Rpb25JZD17c2VsZWN0ZWRTZWN0aW9uSWR9XG4gICAgICAgICAgICBzZWxlY3RlZFN0dWRlbnRJZD17c2VsZWN0ZWRTdHVkZW50SWR9XG4gICAgICAgICAgICBoaWRlVG9vbFRpcHM9e3RoaXMucHJvcHMuaGlkZVRvb2xUaXBzfVxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkJ1YmJsZUNsaWNrfVxuICAgICAgICAgICAgbGVzc29uTmFtZT17dGhpcy5wcm9wcy5sZXNzb25OYW1lfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2xldmVscywgc3R5bGUsIHNob3dTdWJsZXZlbHN9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17ey4uLnN0eWxlcy5tYWluLCAuLi5zdHlsZX19PlxuICAgICAgICB7bGV2ZWxzLm1hcCgobGV2ZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuIGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJCdWJibGUobGV2ZWwsIGluZGV4LCBmYWxzZSl9XG4gICAgICAgICAgICAgIHtzaG93U3VibGV2ZWxzICYmXG4gICAgICAgICAgICAgICAgbGV2ZWwuc3VibGV2ZWxzICYmXG4gICAgICAgICAgICAgICAgbGV2ZWwuc3VibGV2ZWxzLm1hcCgoc3VibGV2ZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJCdWJibGUoc3VibGV2ZWwsIGluZGV4LCB0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICBtYWluOiB7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gIH0sXG4gIHdpdGhCYWNrZ3JvdW5kOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIGJhY2tncm91bmQ6IHtcbiAgICBoZWlnaHQ6IDEwLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IubGlnaHRlcl9ncmF5LFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGxlZnQ6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgLy8gZG90IHNpemUsIHBsdXMgYm9yZGVycywgcGx1cyBtYXJnaW4sIG1pbnVzIG91ciBoZWlnaHQgb2YgXCJiYWNrZ3JvdW5kXCJcbiAgICB0b3A6IChET1RfU0laRSArIDQgKyA2IC0gMTApIC8gMixcbiAgfSxcbiAgYmFja2dyb3VuZERpYW1vbmQ6IHtcbiAgICB0b3A6IChESUFNT05EX0RPVF9TSVpFICsgNCArIDEyIC0gMTApIC8gMixcbiAgfSxcbiAgYmFja2dyb3VuZFBpbGw6IHtcbiAgICAvLyBwaWxsIGhhcyBoZWlnaHQgb2YgMTgsIGJvcmRlciBvZiAyLCBwYWRkaW5nIG9mIDYsIG1hcmdpbiBvZiAzXG4gICAgdG9wOiAoMTggKyA0ICsgMTIgKyA2IC0gMTApIC8gMixcbiAgfSxcbiAgYmFja2dyb3VuZFN1YmxldmVsOiB7XG4gICAgdG9wOiA5LFxuICB9LFxuICBiYWNrZ3JvdW5kRmlyc3Q6IHtcbiAgICBsZWZ0OiAxNSxcbiAgfSxcbiAgYmFja2dyb3VuZExhc3Q6IHtcbiAgICByaWdodDogMTUsXG4gIH0sXG4gIGNvbnRhaW5lcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICB9LFxuICBjb250YWluZXJTdWJsZXZlbDoge1xuICAgIHRvcDogNSxcbiAgfSxcbiAgZGlhbW9uZENvbnRhaW5lcjoge1xuICAgIC8vIEhlaWdodCBuZWVkZWQgb25seSBieSBJRSB0byBnZXQgZGlhbW9uZHMgdG8gbGluZSB1cCBwcm9wZXJseVxuICAgIGhlaWdodDogMzYsXG4gIH0sXG4gIHBpbGxDb250YWluZXI6IHtcbiAgICBtYXJnaW5SaWdodDogMixcbiAgICAvLyBIZWlnaHQgbmVlZGVkIG9ubHkgYnkgSUUgdG8gZ2V0IHBpbGwgdG8gbGluZSB1cCBwcm9wZXJseVxuICAgIGhlaWdodDogMzcsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVW5jb25uZWN0ZWRQcm9ncmVzc0J1YmJsZVNldCA9IFByb2dyZXNzQnViYmxlU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlID0+ICh7XG4gIGlzUnRsOiBzdGF0ZS5pc1J0bCxcbn0pKShSYWRpdW0oUHJvZ3Jlc3NCdWJibGVTZXQpKTtcbiIsImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IFJlYWN0VG9vbHRpcCBmcm9tICdyZWFjdC10b29sdGlwJztcblxuaW1wb3J0IHtWaWV3VHlwZX0gZnJvbSAnQGNkby9hcHBzL2NvZGUtc3R1ZGlvL3ZpZXdBc1JlZHV4JztcbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQGNkby9hcHBzL2xlZ2FjeVNoYXJlZENvbXBvbmVudHMvQnV0dG9uJztcbmltcG9ydCBmaXJlaG9zZUNsaWVudCBmcm9tICdAY2RvL2FwcHMvbWV0cmljcy9maXJlaG9zZSc7XG5pbXBvcnQgY29sb3IgZnJvbSAnQGNkby9hcHBzL3V0aWwvY29sb3InO1xuaW1wb3J0IGkxOG4gZnJvbSAnQGNkby9sb2NhbGUnO1xuXG5pbXBvcnQgRm9udEF3ZXNvbWUgZnJvbSAnLi4vLi4vbGVnYWN5U2hhcmVkQ29tcG9uZW50cy9Gb250QXdlc29tZSc7XG5cbmltcG9ydCBGb2N1c0FyZWFJbmRpY2F0b3IgZnJvbSAnLi9Gb2N1c0FyZWFJbmRpY2F0b3InO1xuaW1wb3J0IHtcbiAgbGVzc29uSXNWaXNpYmxlLFxuICBsZXNzb25Jc0xvY2tlZEZvclVzZXIsXG4gIGxlc3NvbklzTG9ja2VkRm9yQWxsU3R1ZGVudHMsXG59IGZyb20gJy4vcHJvZ3Jlc3NIZWxwZXJzJztcbmltcG9ydCBQcm9ncmVzc0xlc3NvbkNvbnRlbnQgZnJvbSAnLi9Qcm9ncmVzc0xlc3NvbkNvbnRlbnQnO1xuaW1wb3J0IFByb2dyZXNzTGVzc29uVGVhY2hlckluZm8gZnJvbSAnLi9Qcm9ncmVzc0xlc3NvblRlYWNoZXJJbmZvJztcbmltcG9ydCB7bGV2ZWxXaXRoUHJvZ3Jlc3NUeXBlLCBsZXNzb25UeXBlfSBmcm9tICcuL3Byb2dyZXNzVHlwZXMnO1xuXG5jbGFzcyBQcm9ncmVzc0xlc3NvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbGVzc29uOiBsZXNzb25UeXBlLmlzUmVxdWlyZWQsXG4gICAgbGV2ZWxzOiBQcm9wVHlwZXMuYXJyYXlPZihsZXZlbFdpdGhQcm9ncmVzc1R5cGUpLmlzUmVxdWlyZWQsXG5cbiAgICAvLyByZWR1eCBwcm92aWRlZFxuICAgIHNjcmlwdElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGN1cnJlbnRMZXNzb25JZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB2aWV3QXM6IFByb3BUeXBlcy5vbmVPZihPYmplY3QudmFsdWVzKFZpZXdUeXBlKSkuaXNSZXF1aXJlZCxcbiAgICBpc1Zpc2libGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgaGlkZGVuRm9yU3R1ZGVudHM6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgaXNMb2NrZWRGb3JVc2VyOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIHNlbGVjdGVkU2VjdGlvbklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGxvY2thYmxlQXV0aG9yaXplZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbG9ja2FibGVBdXRob3JpemVkTG9hZGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGlzTG9ja2VkRm9yQWxsU3R1ZGVudHM6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgaXNSdGw6IFByb3BUeXBlcy5ib29sLFxuICAgIGlzTWluaVZpZXc6IFByb3BUeXBlcy5ib29sLFxuICAgIGxvY2tTdGF0dXNMb2FkZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC8vIFdlIHdhbnQgaW5zdHJ1Y3RvcnMgdG8gc3RhcnQgd2l0aCBldmVyeXRoaW5nIHVuY29sbGFwc2VkLiBGb3IgcGFydGljaXBhbnRzIHdlXG4gICAgICAvLyBjb2xsYXBzZSBldmVyeXRoaW5nIGV4Y2VwdCBjdXJyZW50IGxlc3NvblxuICAgICAgY29sbGFwc2VkOlxuICAgICAgICBwcm9wcy52aWV3QXMgIT09IFZpZXdUeXBlLkluc3RydWN0b3IgJiZcbiAgICAgICAgcHJvcHMuY3VycmVudExlc3NvbklkICE9PSBwcm9wcy5sZXNzb24uaWQsXG4gICAgfTtcbiAgfVxuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIC8vIElmIHdlJ3JlIGFzc2lnbmVkIGEgbGVzc29uIGlkLCBhbmQgaXQgaXMgZm9yIHRoaXMgbGVzc29uLCB1bmNvbGxhcHNlXG4gICAgaWYgKG5leHRQcm9wcy5jdXJyZW50TGVzc29uSWQgIT09IHRoaXMucHJvcHMuY3VycmVudExlc3NvbklkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY29sbGFwc2VkOlxuICAgICAgICAgIHRoaXMuc3RhdGUuY29sbGFwc2VkICYmXG4gICAgICAgICAgbmV4dFByb3BzLmN1cnJlbnRMZXNzb25JZCAhPT0gdGhpcy5wcm9wcy5sZXNzb24uaWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb2xsYXBzZWQgPSAoKSA9PlxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWQsXG4gICAgfSk7XG5cbiAgb25DbGlja1N0dWRlbnRMZXNzb25QbGFuID0gKCkgPT4ge1xuICAgIGZpcmVob3NlQ2xpZW50LnB1dFJlY29yZChcbiAgICAgIHtcbiAgICAgICAgc3R1ZHk6ICdzY3JpcHRfb3ZlcnZpZXdfYWN0aW9ucycsXG4gICAgICAgIHN0dWR5X2dyb3VwOiAnc3R1ZGVudF9sZXNzb25fcGxhbicsXG4gICAgICAgIGV2ZW50OiAnb3Blbl9zdHVkZW50X2xlc3Nvbl9wbGFuJyxcbiAgICAgICAgZGF0YV9qc29uOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgbGVzc29uX2lkOiB0aGlzLnByb3BzLmxlc3Nvbi5pZCxcbiAgICAgICAgICBzY3JpcHRfaWQ6IHRoaXMucHJvcHMuc2NyaXB0SWQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIHtpbmNsdWRlVXNlcklkOiB0cnVlfVxuICAgICk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxlc3NvbixcbiAgICAgIGxldmVscyxcbiAgICAgIHZpZXdBcyxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICAgIGhpZGRlbkZvclN0dWRlbnRzLCAvLyBJcyB0aGlzIGEgaGlkZGVuIGxlc3NvbiB0aGF0IHdlIHN0aWxsIHJlbmRlciBiZWNhdXNlIHdlJ3JlIGEgaW5zdHJ1Y3RvclxuICAgICAgaXNMb2NrZWRGb3JVc2VyLFxuICAgICAgaXNMb2NrZWRGb3JBbGxTdHVkZW50cyxcbiAgICAgIHNlbGVjdGVkU2VjdGlvbklkLFxuICAgICAgaXNSdGwsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd0FzTG9ja2VkID0gaXNMb2NrZWRGb3JVc2VyIHx8IGlzTG9ja2VkRm9yQWxsU3R1ZGVudHM7XG5cbiAgICBjb25zdCB0aXRsZSA9IGxlc3Nvbi5sZXNzb25OdW1iZXJcbiAgICAgID8gaTE4bi5sZXNzb25OdW1iZXJlZCh7XG4gICAgICAgICAgbGVzc29uTnVtYmVyOiBsZXNzb24ubGVzc29uTnVtYmVyLFxuICAgICAgICAgIGxlc3Nvbk5hbWU6IGxlc3Nvbi5uYW1lLFxuICAgICAgICB9KVxuICAgICAgOiBsZXNzb24ubmFtZTtcblxuICAgIC8vIEFkanVzdCBjYXJldCBzdHlsZSBpZiBsb2NhbGUgaXMgUlRMXG4gICAgY29uc3QgY2FyZXRTdHlsZSA9IGlzUnRsID8gc3R5bGVzLmNhcmV0UlRMIDogc3R5bGVzLmNhcmV0O1xuICAgIGNvbnN0IGNhcmV0ID0gdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAnY2FyZXQtcmlnaHQnIDogJ2NhcmV0LWRvd24nO1xuXG4gICAgY29uc3QgbG9ja2VkVG9vbHRpcElkID0gXy51bmlxdWVJZCgpO1xuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgdmlld0FzID09PSBWaWV3VHlwZS5JbnN0cnVjdG9yXG4gICAgICAgID8gbGVzc29uLmRlc2NyaXB0aW9uX3RlYWNoZXJcbiAgICAgICAgOiBsZXNzb24uZGVzY3JpcHRpb25fc3R1ZGVudDtcblxuICAgIC8vIFRoZXJlJ3Mgbm8gdXJsIGZvciBhIGxlc3NvbiBzbyB1c2UgdGhlIHVybCBvZiB0aGUgZmlyc3QgbGV2ZWwgb2YgdGhlIGxlc3NvblxuICAgIC8vIGFzIHRoZSB1cmwgZm9yIHRoZSBsZXNzb24uXG4gICAgLy8gVE9ETzogTWFrZSB0aGUgYmFjay1lbmQgcmV0dXJuIGEgbGVzc29uIHVybCBhcyBwYXJ0IG9mIHRoZSBsZXNzb24gbWV0YWRhdGEgc28gd2VcbiAgICAvLyBkb24ndCBuZWVkIHRvIHBhc3MgaXQgc2VwYXJhdGVseSBmcm9tIGxlc3NvbiBoZXJlIGFuZCBpbiBQcm9ncmVzc0xlc3NvblRlYWNoZXJJbmZvLlxuICAgIGNvbnN0IGxlc3NvblVybCA9IGxldmVsc1swXSAmJiBsZXZlbHNbMF0udXJsO1xuXG4gICAgLy8gSWYgYSBpbnN0cnVjdG9yIGlzIG5vdCB2ZXJpZmllZCB0aGV5IHdpbGwgbm90IGJlIGxvY2thYmxlQXV0aG9yaXplZCAobWVhbmluZyB0aGV5IGNhbid0XG4gICAgLy8gbG9jayBvciB1bmxvY2sgbGVzc29ucykuIEZvciBhIGxvY2thYmxlIGxlc3NvbiB3aGVyZSBpbnN0cnVjdG9yIGlzIG5vdCBhdXRob3JpemVkLCB3ZSB3aWxsXG4gICAgLy8gZGlzcGxheSBhIHdhcm5pbmcgZXhwbGFpbmluZyB0aGF0IHRoZXkgbmVlZCB0byBiZSB2ZXJpZmllZCB0byB1bmxvY2sgbGVzc29ucy5cbiAgICBjb25zdCBzaG93Tm90QXV0aG9yaXplZFdhcm5pbmcgPVxuICAgICAgbGVzc29uLmxvY2thYmxlICYmXG4gICAgICB2aWV3QXMgPT09IFZpZXdUeXBlLkluc3RydWN0b3IgJiZcbiAgICAgIHRoaXMucHJvcHMubG9ja2FibGVBdXRob3JpemVkTG9hZGVkICYmXG4gICAgICAhdGhpcy5wcm9wcy5sb2NrYWJsZUF1dGhvcml6ZWQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBpZD17YHByb2dyZXNzLWxlc3Nvbi0ke2xlc3Nvbi5sZXNzb25OdW1iZXJ9YH1cbiAgICAgICAgY2xhc3NOYW1lPVwidWl0ZXN0LXByb2dyZXNzLWxlc3NvblwiXG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4uc3R5bGVzLm91dGVyLFxuICAgICAgICAgIC4uLigoaGlkZGVuRm9yU3R1ZGVudHMgfHwgc2hvd0FzTG9ja2VkKSAmJiBzdHlsZXMuaGlkZGVuT3JMb2NrZWQpLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcy5tYWluLFxuICAgICAgICAgICAgLi4uKCgoaGlkZGVuRm9yU3R1ZGVudHMgJiYgdmlld0FzID09PSBWaWV3VHlwZS5QYXJ0aWNpcGFudCkgfHxcbiAgICAgICAgICAgICAgaXNMb2NrZWRGb3JVc2VyKSAmJlxuICAgICAgICAgICAgICBzdHlsZXMudHJhbnNsdWNlbnQpLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZXMuaGVhZGluZyxcbiAgICAgICAgICAgICAgLi4ue21hcmdpbkJvdHRvbTogdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAwIDogMTV9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuaGVhZGluZ1RleHR9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudG9nZ2xlQ29sbGFwc2VkfVxuICAgICAgICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25LZXlEb3duPXtlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJywgJ1NwYWNlYmFyJ10uaW5jbHVkZXMoZS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IXRoaXMuc3RhdGUuY29sbGFwc2VkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWUgaWNvbj17Y2FyZXR9IHN0eWxlPXtjYXJldFN0eWxlfSAvPlxuICAgICAgICAgICAgICB7aGlkZGVuRm9yU3R1ZGVudHMgJiYgKFxuICAgICAgICAgICAgICAgIDxGb250QXdlc29tZSBpY29uPVwiZXllLXNsYXNoXCIgc3R5bGU9e3N0eWxlcy5pY29ufSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7bGVzc29uLmxvY2thYmxlICYmIHRoaXMucHJvcHMubG9ja1N0YXR1c0xvYWRlZCAmJiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gZGF0YS10aXAgZGF0YS1mb3I9e2xvY2tlZFRvb2x0aXBJZH0+XG4gICAgICAgICAgICAgICAgICA8Rm9udEF3ZXNvbWVcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17c2hvd0FzTG9ja2VkID8gJ2xvY2snIDogJ3VubG9jayd9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGVzLmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgLi4uKCFzaG93QXNMb2NrZWQgJiYgc3R5bGVzLnVubG9ja2VkSWNvbiksXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgeyFzaG93QXNMb2NrZWQgJiYgdmlld0FzID09PSBWaWV3VHlwZS5JbnN0cnVjdG9yICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFJlYWN0VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtsb2NrZWRUb29sdGlwSWR9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXI9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICBlZmZlY3Q9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7aTE4bi5sb2NrQXNzZXNzbWVudExvbmcoKX1cbiAgICAgICAgICAgICAgICAgICAgPC9SZWFjdFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPHNwYW4+e3RpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge3ZpZXdBcyA9PT0gVmlld1R5cGUuUGFydGljaXBhbnQgJiZcbiAgICAgICAgICAgICAgbGVzc29uLnN0dWRlbnRfbGVzc29uX3BsYW5faHRtbF91cmwgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXtzdHlsZXMuYnV0dG9uU3R5bGV9PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBfX3VzZURlcHJlY2F0ZWRUYWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidWktdGVzdC1sZXNzb24tcmVzb3VyY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17bGVzc29uLnN0dWRlbnRfbGVzc29uX3BsYW5faHRtbF91cmx9XG4gICAgICAgICAgICAgICAgICAgIHRleHQ9e2kxOG4ubGVzc29uUmVzb3VyY2VzKCl9XG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmaWxlLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInB1cnBsZVwiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25DbGlja1N0dWRlbnRMZXNzb25QbGFufVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3Nob3dOb3RBdXRob3JpemVkV2FybmluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMubm90QXV0aG9yaXplZFdhcm5pbmd9PlxuICAgICAgICAgICAgICB7aTE4bi51bnZlcmlmaWVkVGVhY2hlckxvY2tXYXJuaW5nKCl9XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5sZWFybk1vcmVMaW5rfVxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3N1cHBvcnQuY29kZS5vcmcvaGMvZW4tdXMvYXJ0aWNsZXMvMTE1MDAxNTUwMTMxLUJlY29taW5nLWEtdmVyaWZpZWQtdGVhY2hlci1DUy1QcmluY2lwbGVzLWFuZC1DUy1EaXNjb3Zlcmllcy1vbmx5LVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bi5sZWFybk1vcmVXaXRoUGVyaW9kKCl9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyF0aGlzLnN0YXRlLmNvbGxhcHNlZCAmJiAoXG4gICAgICAgICAgICA8UHJvZ3Jlc3NMZXNzb25Db250ZW50XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgbGV2ZWxzPXtsZXZlbHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvY2tlZEZvclVzZXJ9XG4gICAgICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgICAgICAgbGVzc29uTmFtZT17bGVzc29uLm5hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dmlld0FzID09PSBWaWV3VHlwZS5JbnN0cnVjdG9yICYmICF0aGlzLnByb3BzLmlzTWluaVZpZXcgJiYgKFxuICAgICAgICAgIDxQcm9ncmVzc0xlc3NvblRlYWNoZXJJbmZvXG4gICAgICAgICAgICBsZXNzb249e2xlc3Nvbn1cbiAgICAgICAgICAgIGxlc3NvblVybD17bGVzc29uVXJsfVxuICAgICAgICAgICAgb25DbGlja1N0dWRlbnRMZXNzb25QbGFuPXt0aGlzLm9uQ2xpY2tTdHVkZW50TGVzc29uUGxhbn1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7bGVzc29uLmlzRm9jdXNBcmVhICYmIDxGb2N1c0FyZWFJbmRpY2F0b3IgLz59XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgb3V0ZXI6IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBkaXNwbGF5OiAndGFibGUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgYmFja2dyb3VuZDogY29sb3IubGlnaHRlc3RfZ3JheSxcbiAgICBib3JkZXJDb2xvcjogY29sb3IuYm9yZGVyX2dyYXksXG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyUmFkaXVzOiAyLFxuICAgIC8vIFdoZW4gdG9nZ2xpbmcgYmV0d2VlbiBoaWRkZW4gYW5kIG5vdCwgd2UgY2hhbmdlIG91ciBib3JkZXIgc2l6ZSBmcm9tIDEgdG8gNC5cbiAgICAvLyBXZSB3YW50IHRvIGxpbWl0IGhvdyBtdWNoIHRvZ2dsaW5nIHRoaXMgY2hhbmdlcyBvdXIgc2l6aW5nLCBzbyB3ZSBhZGQgKzNcbiAgICAvLyB0byBlYWNoIG9mIG91ciBub24taGlkZGVuIG1hcmdpbnNcbiAgICBib3JkZXJXaWR0aDogMSxcbiAgICBtYXJnaW5Ub3A6IDMsXG4gICAgbWFyZ2luQm90dG9tOiAxNSxcbiAgICBtYXJnaW5MZWZ0OiAzLFxuICAgIG1hcmdpblJpZ2h0OiAzLFxuICB9LFxuICBtYWluOiB7XG4gICAgcGFkZGluZzogMjAsXG4gIH0sXG4gIGhlYWRpbmc6IHtcbiAgICBmb250U2l6ZTogMTgsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXNlbWktYm9sZCddLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbiAgaGVhZGluZ1RleHQ6IHtcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBmbGV4R3JvdzogMSxcbiAgfSxcbiAgYnV0dG9uU3R5bGU6IHtcbiAgICBtYXJnaW5MZWZ0OiAnYXV0bycsXG4gIH0sXG4gIGhpZGRlbk9yTG9ja2VkOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdkYXNoZWQnLFxuICAgIGJvcmRlcldpZHRoOiA0LFxuICAgIG1hcmdpblRvcDogMCxcbiAgICBtYXJnaW5Cb3R0b206IDEyLFxuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgbWFyZ2luUmlnaHQ6IDAsXG4gIH0sXG4gIHRyYW5zbHVjZW50OiB7XG4gICAgb3BhY2l0eTogMC42LFxuICB9LFxuICBjYXJldDoge1xuICAgIG1hcmdpblJpZ2h0OiAxMCxcbiAgfSxcbiAgY2FyZXRSVEw6IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgfSxcbiAgaWNvbjoge1xuICAgIG1hcmdpblJpZ2h0OiA1LFxuICAgIGZvbnRTaXplOiAxOCxcbiAgICBjb2xvcjogY29sb3IuY3lhbixcbiAgfSxcbiAgdW5sb2NrZWRJY29uOiB7XG4gICAgY29sb3I6IGNvbG9yLm9yYW5nZSxcbiAgfSxcbiAgbm90QXV0aG9yaXplZFdhcm5pbmc6IHtcbiAgICBjb2xvcjogY29sb3IucmVkLFxuICAgIC4uLmZvbnRDb25zdGFudHNbJ21haW4tZm9udC1zZW1pLWJvbGQtaXRhbGljJ10sXG4gICAgbWFyZ2luVG9wOiAxMCxcbiAgfSxcbiAgbGVhcm5Nb3JlTGluazoge1xuICAgIG1hcmdpbkxlZnQ6IDUsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVW5jb25uZWN0ZWRQcm9ncmVzc0xlc3NvbiA9IFByb2dyZXNzTGVzc29uO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KChzdGF0ZSwgb3duUHJvcHMpID0+ICh7XG4gIGN1cnJlbnRMZXNzb25JZDogc3RhdGUucHJvZ3Jlc3MuY3VycmVudExlc3NvbklkLFxuICB2aWV3QXM6IHN0YXRlLnZpZXdBcyxcbiAgbG9ja2FibGVBdXRob3JpemVkOiBzdGF0ZS5sZXNzb25Mb2NrLmxvY2thYmxlQXV0aG9yaXplZCxcbiAgbG9ja2FibGVBdXRob3JpemVkTG9hZGVkOiBzdGF0ZS5sZXNzb25Mb2NrLmxvY2thYmxlQXV0aG9yaXplZExvYWRlZCxcbiAgaXNWaXNpYmxlOiBsZXNzb25Jc1Zpc2libGUob3duUHJvcHMubGVzc29uLCBzdGF0ZSwgc3RhdGUudmlld0FzKSxcbiAgaGlkZGVuRm9yU3R1ZGVudHM6ICFsZXNzb25Jc1Zpc2libGUoXG4gICAgb3duUHJvcHMubGVzc29uLFxuICAgIHN0YXRlLFxuICAgIFZpZXdUeXBlLlBhcnRpY2lwYW50XG4gICksXG4gIGlzTG9ja2VkRm9yVXNlcjogbGVzc29uSXNMb2NrZWRGb3JVc2VyKFxuICAgIG93blByb3BzLmxlc3NvbixcbiAgICBvd25Qcm9wcy5sZXZlbHMsXG4gICAgc3RhdGUsXG4gICAgc3RhdGUudmlld0FzXG4gICksXG4gIGlzTG9ja2VkRm9yQWxsU3R1ZGVudHM6IGxlc3NvbklzTG9ja2VkRm9yQWxsU3R1ZGVudHMoXG4gICAgb3duUHJvcHMubGVzc29uLmlkLFxuICAgIHN0YXRlXG4gICksXG4gIHNlbGVjdGVkU2VjdGlvbklkOiBzdGF0ZS50ZWFjaGVyU2VjdGlvbnMuc2VsZWN0ZWRTZWN0aW9uSWQsXG4gIHNjcmlwdElkOiBzdGF0ZS5wcm9ncmVzcy5zY3JpcHRJZCxcbiAgaXNSdGw6IHN0YXRlLmlzUnRsLFxuICBpc01pbmlWaWV3OiBzdGF0ZS5wcm9ncmVzcy5pc01pbmlWaWV3LFxuICBsb2NrU3RhdHVzTG9hZGVkOlxuICAgIHN0YXRlLnByb2dyZXNzLnVuaXRQcm9ncmVzc0hhc0xvYWRlZCAmJlxuICAgIHN0YXRlLmxlc3NvbkxvY2subGVzc29uc0J5U2VjdGlvbklkTG9hZGVkLFxufSkpKFByb2dyZXNzTGVzc29uKTtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge3Byb2dyZXNzaW9uc0Zyb21MZXZlbHN9IGZyb20gJ0BjZG8vYXBwcy9jb2RlLXN0dWRpby9wcm9ncmVzc1JlZHV4U2VsZWN0b3JzJztcbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCBTYWZlTWFya2Rvd24gZnJvbSAnQGNkby9hcHBzL3RlbXBsYXRlcy9TYWZlTWFya2Rvd24nO1xuaW1wb3J0IGkxOG4gZnJvbSAnQGNkby9sb2NhbGUnO1xuXG5pbXBvcnQgUHJvZ3Jlc3NCdWJibGVTZXQgZnJvbSAnLi9Qcm9ncmVzc0J1YmJsZVNldCc7XG5pbXBvcnQgUHJvZ3Jlc3NMZXZlbFNldCBmcm9tICcuL1Byb2dyZXNzTGV2ZWxTZXQnO1xuaW1wb3J0IHtsZXZlbFdpdGhQcm9ncmVzc1R5cGV9IGZyb20gJy4vcHJvZ3Jlc3NUeXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb2dyZXNzTGVzc29uQ29udGVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgZGVzY3JpcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGV2ZWxzOiBQcm9wVHlwZXMuYXJyYXlPZihsZXZlbFdpdGhQcm9ncmVzc1R5cGUpLmlzUmVxdWlyZWQsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgc2VsZWN0ZWRTZWN0aW9uSWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgbGVzc29uTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2Rlc2NyaXB0aW9uLCBsZXZlbHMsIGRpc2FibGVkLCBzZWxlY3RlZFNlY3Rpb25JZCwgbGVzc29uTmFtZX0gPVxuICAgICAgdGhpcy5wcm9wcztcbiAgICBjb25zdCBwcm9ncmVzc2lvbnMgPSBwcm9ncmVzc2lvbnNGcm9tTGV2ZWxzKGxldmVscyk7XG5cbiAgICBsZXQgYnViYmxlcztcbiAgICBpZiAocHJvZ3Jlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYnViYmxlcyA9IChcbiAgICAgICAgPHNwYW4gc3R5bGU9e3N0eWxlcy5ub0xldmVsc1dhcm5pbmd9PlxuICAgICAgICAgIHtpMThuLmxlc3NvbkNvbnRhaW5zTm9MZXZlbHMoKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHByb2dyZXNzaW9ucy5sZW5ndGggPT09IDEgJiYgIXByb2dyZXNzaW9uc1swXS5uYW1lKSB7XG4gICAgICBidWJibGVzID0gKFxuICAgICAgICA8UHJvZ3Jlc3NCdWJibGVTZXRcbiAgICAgICAgICBsZXZlbHM9e3Byb2dyZXNzaW9uc1swXS5sZXZlbHN9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1YmJsZXMgPSBwcm9ncmVzc2lvbnMubWFwKChwcm9ncmVzc2lvbiwgaW5kZXgpID0+IChcbiAgICAgICAgPFByb2dyZXNzTGV2ZWxTZXRcbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIG5hbWU9e3Byb2dyZXNzaW9uLmRpc3BsYXlOYW1lfVxuICAgICAgICAgIGxlc3Nvbk5hbWU9e2xlc3Nvbk5hbWV9XG4gICAgICAgICAgbGV2ZWxzPXtwcm9ncmVzc2lvbi5sZXZlbHN9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgLz5cbiAgICAgICkpO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5zdW1tYXJ5fT5cbiAgICAgICAgICAgIDxTYWZlTWFya2Rvd24gbWFya2Rvd249e2Rlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8ZGl2PiB7YnViYmxlc30gPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgc3VtbWFyeToge1xuICAgIG1hcmdpblRvcDogMjAsXG4gICAgbWFyZ2luQm90dG9tOiAzMCxcbiAgICBmb250U2l6ZTogMTQsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXJlZ3VsYXInXSxcbiAgfSxcbiAgbm9MZXZlbHNXYXJuaW5nOiB7XG4gICAgZm9udFNpemU6IDEzLFxuICB9LFxufTtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmFkaXVtIGZyb20gJ3JhZGl1bSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCBjb2xvciBmcm9tICdAY2RvL2FwcHMvdXRpbC9jb2xvcic7XG5pbXBvcnQgaTE4biBmcm9tICdAY2RvL2xvY2FsZSc7XG5cbmltcG9ydCBQcm9ncmVzc0J1YmJsZVNldCBmcm9tICcuL1Byb2dyZXNzQnViYmxlU2V0JztcbmltcG9ydCB7Z2V0SWNvbkZvckxldmVsfSBmcm9tICcuL3Byb2dyZXNzSGVscGVycyc7XG5pbXBvcnQgUHJvZ3Jlc3NQaWxsIGZyb20gJy4vUHJvZ3Jlc3NQaWxsJztcbmltcG9ydCB7bGV2ZWxXaXRoUHJvZ3Jlc3NUeXBlfSBmcm9tICcuL3Byb2dyZXNzVHlwZXMnO1xuXG4vKipcbiAqIEEgc2V0IG9mIG9uZSBvciBtb3JlIGxldmVscyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIHByb2dyZXNzaW9uXG4gKi9cbmNsYXNzIFByb2dyZXNzTGV2ZWxTZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGVzc29uTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBsZXZlbHM6IFByb3BUeXBlcy5hcnJheU9mKGxldmVsV2l0aFByb2dyZXNzVHlwZSkuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzZWxlY3RlZFNlY3Rpb25JZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvbkJ1YmJsZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvLyBSZWR1eFxuICAgIGlzUnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGxldmVscyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWRTZWN0aW9uSWQsXG4gICAgICBvbkJ1YmJsZUNsaWNrLFxuICAgICAgaXNSdGwsXG4gICAgICBsZXNzb25OYW1lLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgbXVsdGlMZXZlbFN0ZXAgPSBsZXZlbHMubGVuZ3RoID4gMTtcbiAgICBjb25zdCB1cmwgPSBtdWx0aUxldmVsU3RlcCB8fCBvbkJ1YmJsZUNsaWNrID8gdW5kZWZpbmVkIDogbGV2ZWxzWzBdLnVybDtcbiAgICBjb25zdCBvbkNsaWNrID0gbXVsdGlMZXZlbFN0ZXAgPyB1bmRlZmluZWQgOiAoKSA9PiBvbkJ1YmJsZUNsaWNrKGxldmVsc1swXSk7XG5cbiAgICAvLyBBZGp1c3QgY29sdW1uIHN0eWxlcyBpZiBsb2NhbGUgaXMgUlRMXG4gICAgY29uc3QgY29sMlN0eWxlID0gaXNSdGwgPyBzdHlsZXMuY29sMlJUTCA6IHN0eWxlcy5jb2wyO1xuXG4gICAgbGV0IHBpbGxUZXh0LCBpY29uO1xuICAgIGxldCBwcm9ncmVzc1N0eWxlID0gZmFsc2U7XG4gICAgaWYgKGxldmVsc1swXS5pc1VucGx1Z2dlZCB8fCBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdLmlzVW5wbHVnZ2VkKSB7XG4gICAgICAvLyBXZSBleHBsaWNpdGx5IGRvbid0IHdhbnQgYW55IHRleHQgaW4gdGhpcyBjYXNlXG4gICAgICBpZiAobXVsdGlMZXZlbFN0ZXApIHtcbiAgICAgICAgcGlsbFRleHQgPSAnJztcbiAgICAgICAgaWNvbiA9IGdldEljb25Gb3JMZXZlbChsZXZlbHNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGlsbFRleHQgPSBpMThuLnVucGx1Z2dlZEFjdGl2aXR5KCk7XG4gICAgICAgIHByb2dyZXNzU3R5bGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwaWxsVGV4dCA9IGxldmVsc1swXS5sZXZlbE51bWJlci50b1N0cmluZygpO1xuICAgICAgaWNvbiA9IGdldEljb25Gb3JMZXZlbChsZXZlbHNbMF0pO1xuICAgICAgaWYgKG11bHRpTGV2ZWxTdGVwKSB7XG4gICAgICAgIHBpbGxUZXh0ICs9IGAtJHtsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdLmxldmVsTnVtYmVyfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDx0YWJsZSBzdHlsZT17c3R5bGVzLnRhYmxlfT5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBzdHlsZT17c3R5bGVzLmNvbDF9PlxuICAgICAgICAgICAgICA8UHJvZ3Jlc3NQaWxsXG4gICAgICAgICAgICAgICAgbGV2ZWxzPXtsZXZlbHN9XG4gICAgICAgICAgICAgICAgaWNvbj17aWNvbn1cbiAgICAgICAgICAgICAgICB0ZXh0PXtwaWxsVGV4dH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTZWN0aW9uSWQ9e3NlbGVjdGVkU2VjdGlvbklkfVxuICAgICAgICAgICAgICAgIHByb2dyZXNzU3R5bGU9e3Byb2dyZXNzU3R5bGV9XG4gICAgICAgICAgICAgICAgb25TaW5nbGVMZXZlbENsaWNrPXtvbkJ1YmJsZUNsaWNrfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBzdHlsZT17Y29sMlN0eWxlfT5cbiAgICAgICAgICAgICAgPGEgaHJlZj17dXJsfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7Li4uc3R5bGVzLm5hbWVUZXh0LCAuLi5zdHlsZXMudGV4dH19PntuYW1lfTwvZGl2PlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAge211bHRpTGV2ZWxTdGVwICYmIChcbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3N0eWxlcy5saW5lc0FuZERvdH0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMudmVydGljYWxMaW5lfSAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmhvcml6b250YWxMaW5lfSAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmRvdH0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIHN0eWxlPXtzdHlsZXMuY29sMn0+XG4gICAgICAgICAgICAgICAgPFByb2dyZXNzQnViYmxlU2V0XG4gICAgICAgICAgICAgICAgICBsZXZlbHM9e2xldmVsc31cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VjdGlvbklkPXtzZWxlY3RlZFNlY3Rpb25JZH1cbiAgICAgICAgICAgICAgICAgIG9uQnViYmxlQ2xpY2s9e29uQnViYmxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICBsZXNzb25OYW1lPXtsZXNzb25OYW1lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICB0YWJsZToge1xuICAgIG1hcmdpblRvcDogMTIsXG4gIH0sXG4gIG5hbWVUZXh0OiB7XG4gICAgY29sb3I6IGNvbG9yLmNoYXJjb2FsLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXNlbWktYm9sZCddLFxuICAgIGZvbnRTaXplOiAxNCxcbiAgICBsZXR0ZXJTcGFjaW5nOiAtMC4xMixcbiAgfSxcbiAgY29sMjoge1xuICAgIHBhZGRpbmdMZWZ0OiAyMCxcbiAgfSxcbiAgY29sMlJUTDoge1xuICAgIHBhZGRpbmdSaWdodDogMjAsXG4gIH0sXG4gIGxpbmVzQW5kRG90OiB7XG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgbWFyZ2luTGVmdDogJzUwJScsXG4gICAgbWFyZ2luUmlnaHQ6IDE0LFxuICB9LFxuICB2ZXJ0aWNhbExpbmU6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmxpZ2h0ZXJfZ3JheSxcbiAgICBoZWlnaHQ6IDE1LFxuICAgIHdpZHRoOiAzLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGJvdHRvbTogMixcbiAgfSxcbiAgaG9yaXpvbnRhbExpbmU6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmxpZ2h0ZXJfZ3JheSxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IC0yLFxuICAgIGhlaWdodDogMyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBkb3Q6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBsZWZ0OiAtMixcbiAgICB0b3A6IDEsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5saWdodGVyX2dyYXksXG4gICAgaGVpZ2h0OiAxMCxcbiAgICB3aWR0aDogMTAsXG4gICAgYm9yZGVyUmFkaXVzOiAxMCxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBVbmNvbm5lY3RlZFByb2dyZXNzTGV2ZWxTZXQgPSBQcm9ncmVzc0xldmVsU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KHN0YXRlID0+ICh7XG4gIGlzUnRsOiBzdGF0ZS5pc1J0bCxcbn0pKShSYWRpdW0oUHJvZ3Jlc3NMZXZlbFNldCkpO1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSYWRpdW0gZnJvbSAncmFkaXVtJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJ3JlYWN0LXJlZHV4JztcblxuaW1wb3J0IHtxdWVyeVBhcmFtc30gZnJvbSAnQGNkby9hcHBzL2NvZGUtc3R1ZGlvL3V0aWxzJztcbmltcG9ydCBmb250Q29uc3RhbnRzIGZyb20gJ0BjZG8vYXBwcy9mb250Q29uc3RhbnRzJztcbmltcG9ydCB7UmV2aWV3U3RhdGVzfSBmcm9tICdAY2RvL2FwcHMvdGVtcGxhdGVzL2ZlZWRiYWNrL3R5cGVzJztcbmltcG9ydCBCdWJibGVCYWRnZSwge0JhZGdlVHlwZX0gZnJvbSAnQGNkby9hcHBzL3RlbXBsYXRlcy9wcm9ncmVzcy9CdWJibGVCYWRnZSc7XG5pbXBvcnQge1xuICBCdWJibGVTaGFwZSxcbiAgQnViYmxlU2l6ZSxcbiAgZ2V0QnViYmxlVXJsLFxufSBmcm9tICdAY2RvL2FwcHMvdGVtcGxhdGVzL3Byb2dyZXNzL0J1YmJsZUZhY3RvcnknO1xuaW1wb3J0IGNvbG9yIGZyb20gJ0BjZG8vYXBwcy91dGlsL2NvbG9yJztcblxuaW1wb3J0IEZvbnRBd2Vzb21lIGZyb20gJy4uLy4uL2xlZ2FjeVNoYXJlZENvbXBvbmVudHMvRm9udEF3ZXNvbWUnO1xuXG5pbXBvcnQge2lzTGV2ZWxBc3Nlc3NtZW50fSBmcm9tICcuL3Byb2dyZXNzSGVscGVycyc7XG5pbXBvcnQge2xldmVsUHJvZ3Jlc3NTdHlsZSwgaG92ZXJTdHlsZX0gZnJvbSAnLi9wcm9ncmVzc1N0eWxlcyc7XG5pbXBvcnQge2xldmVsV2l0aFByb2dyZXNzVHlwZX0gZnJvbSAnLi9wcm9ncmVzc1R5cGVzJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBzaW1pbGFyIHRvIG91ciBQcm9ncmVzc0J1YmJsZSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiBiZWluZ1xuICogYSBjaXJjbGUgd2l0aCBhIG51bWJlciBpbnNpZGUsIGl0IGlzIGFuIGVsbGlwc2Ugd2l0aCB0ZXh0IChhbmQgcG9zc2libHkgYW5cbiAqIGljb24pXG4gKi9cbmNsYXNzIFByb2dyZXNzUGlsbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbGV2ZWxzOiBQcm9wVHlwZXMuYXJyYXlPZihsZXZlbFdpdGhQcm9ncmVzc1R5cGUpLFxuICAgIGljb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b29sdGlwOiBQcm9wVHlwZXMuZWxlbWVudCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2VsZWN0ZWRTZWN0aW9uSWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgcHJvZ3Jlc3NTdHlsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25TaW5nbGVMZXZlbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvLyBSZWR1eFxuICAgIGlzUnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICBnZXRVcmwoKSB7XG4gICAgY29uc3Qge2xldmVscywgZGlzYWJsZWQsIHNlbGVjdGVkU2VjdGlvbklkLCBvblNpbmdsZUxldmVsQ2xpY2t9ID1cbiAgICAgIHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBwaWxsTGlua3NUb0xldmVsID1cbiAgICAgICFkaXNhYmxlZCAmJiAhb25TaW5nbGVMZXZlbENsaWNrICYmIGxldmVscy5sZW5ndGggPT09IDE7XG5cbiAgICBpZiAoIXBpbGxMaW5rc1RvTGV2ZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VySWQgPSBxdWVyeVBhcmFtcygndXNlcl9pZCcpO1xuICAgIHJldHVybiBnZXRCdWJibGVVcmwobGV2ZWxzWzBdLnVybCwgdXNlcklkLCBzZWxlY3RlZFNlY3Rpb25JZCk7XG4gIH1cblxuICBnZXRUb29sdGlwUHJvcHMoKSB7XG4gICAgY29uc3Qge3Rvb2x0aXB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHRvb2x0aXBQcm9wcyA9IHt9O1xuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICBjb25zdCBpZCA9IHRvb2x0aXAucHJvcHMudG9vbHRpcElkO1xuICAgICAgdG9vbHRpcFByb3BzWydkYXRhLXRpcCddID0gdHJ1ZTtcbiAgICAgIHRvb2x0aXBQcm9wc1snZGF0YS1mb3InXSA9IGlkO1xuICAgICAgdG9vbHRpcFByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10gPSBpZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9vbHRpcFByb3BzO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxldmVscyxcbiAgICAgIGljb24sXG4gICAgICB0ZXh0LFxuICAgICAgdG9vbHRpcCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgcHJvZ3Jlc3NTdHlsZSxcbiAgICAgIGlzUnRsLFxuICAgICAgb25TaW5nbGVMZXZlbENsaWNrLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZmlyc3RMZXZlbCA9IGxldmVsc1swXTtcblxuICAgIGNvbnN0IG11bHRpTGV2ZWxTdGVwID0gbGV2ZWxzLmxlbmd0aCA+IDE7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmdldFVybCgpO1xuXG4gICAgbGV0IG9uQ2xpY2sgPVxuICAgICAgIW11bHRpTGV2ZWxTdGVwICYmICFkaXNhYmxlZCAmJiAhdXJsXG4gICAgICAgID8gKCkgPT4gb25TaW5nbGVMZXZlbENsaWNrKGZpcnN0TGV2ZWwpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IHN0eWxlID0ge1xuICAgICAgLi4uc3R5bGVzLmxldmVsUGlsbCxcbiAgICAgIC4uLigodXJsIHx8IG9uQ2xpY2spICYmIGhvdmVyU3R5bGUpLFxuICAgICAgLi4uKCFtdWx0aUxldmVsU3RlcCAmJlxuICAgICAgICBsZXZlbFByb2dyZXNzU3R5bGUoZmlyc3RMZXZlbC5zdGF0dXMsIGZpcnN0TGV2ZWwua2luZCkpLFxuICAgIH07XG5cbiAgICAvLyBBZGp1c3QgaWNvbiBtYXJnaW5zIGlmIGxvY2FsZSBpcyBSVExcbiAgICBjb25zdCBpY29uTWFyZ2luU3R5bGUgPSBpc1J0bCA/IHN0eWxlcy5pY29uTWFyZ2luUlRMIDogc3R5bGVzLmljb25NYXJnaW47XG5cbiAgICBjb25zdCB0b29sdGlwUHJvcHMgPSB0aGlzLmdldFRvb2x0aXBQcm9wcygpO1xuXG4gICAgY29uc3QgaGFzS2VlcFdvcmtpbmdGZWVkYmFjayA9XG4gICAgICBmaXJzdExldmVsWyd0ZWFjaGVyRmVlZGJhY2tSZXZpZXdTdGF0ZSddID09PSBSZXZpZXdTdGF0ZXMua2VlcFdvcmtpbmc7XG5cbiAgICAvLyBPbmx5IHB1dCB0aGUgYnViYmxlIGJhZGdlIG9uIGlmIGl0cyBhIHNpbmdsZSBhc3Nlc3NtZW50IGxldmVsIChub3Qgc2V0KVxuICAgIGNvbnN0IGRpc3BsYXlCYWRnZSA9XG4gICAgICAhbXVsdGlMZXZlbFN0ZXAgJiZcbiAgICAgIChoYXNLZWVwV29ya2luZ0ZlZWRiYWNrIHx8IGlzTGV2ZWxBc3Nlc3NtZW50KGZpcnN0TGV2ZWwpKTtcblxuICAgIGNvbnN0IHRleHRTdHlsZSA9IHByb2dyZXNzU3R5bGUgPyBzdHlsZXMudGV4dFByb2dyZXNzU3R5bGUgOiBzdHlsZXMudGV4dDtcblxuICAgIHJldHVybiAoXG4gICAgICA8YVxuICAgICAgICBocmVmPXt1cmx9XG4gICAgICAgIHN0eWxlPXt7dGV4dERlY29yYXRpb246ICdub25lJ319XG4gICAgICAgIGNsYXNzTmFtZT1cInVpdGVzdC1Qcm9ncmVzc1BpbGxcIlxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgPlxuICAgICAgICA8ZGl2IHsuLi50b29sdGlwUHJvcHN9IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgICAge2ljb24gJiYgPEZvbnRBd2Vzb21lIGljb249e2ljb259IC8+fVxuICAgICAgICAgIHt0ZXh0ICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiUHJvZ3Jlc3NQaWxsVGV4dEFuZEljb25cIlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIC4uLnRleHRTdHlsZSxcbiAgICAgICAgICAgICAgICAuLi4oaWNvbiAmJiBpY29uTWFyZ2luU3R5bGUpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Rvb2x0aXB9XG4gICAgICAgICAge2Rpc3BsYXlCYWRnZSAmJiAoXG4gICAgICAgICAgICA8QnViYmxlQmFkZ2VcbiAgICAgICAgICAgICAgYmFkZ2VUeXBlPXtcbiAgICAgICAgICAgICAgICBoYXNLZWVwV29ya2luZ0ZlZWRiYWNrXG4gICAgICAgICAgICAgICAgICA/IEJhZGdlVHlwZS5rZWVwV29ya2luZ1xuICAgICAgICAgICAgICAgICAgOiBCYWRnZVR5cGUuYXNzZXNzbWVudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJ1YmJsZVNpemU9e0J1YmJsZVNpemUuZnVsbH1cbiAgICAgICAgICAgICAgYnViYmxlU2hhcGU9e0J1YmJsZVNoYXBlLnBpbGx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICBsZXZlbFBpbGw6IHtcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBib3JkZXJXaWR0aDogMixcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJDb2xvcjogY29sb3IubGlnaHRlcl9ncmF5LFxuICAgIGNvbG9yOiBjb2xvci5jaGFyY29hbCxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZm9udFNpemU6IDE2LFxuICAgIC4uLmZvbnRDb25zdGFudHNbJ21haW4tZm9udC1zZW1pLWJvbGQnXSxcbiAgICBib3JkZXJSYWRpdXM6IDIwLFxuICAgIHBhZGRpbmdMZWZ0OiAxMCxcbiAgICBwYWRkaW5nUmlnaHQ6IDEwLFxuICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgcGFkZGluZ0JvdHRvbTogNixcbiAgICBtaW5XaWR0aDogNzAsXG4gICAgbGluZUhlaWdodDogJzE4cHgnLFxuICAgIG1hcmdpblRvcDogMyxcbiAgICBtYXJnaW5Cb3R0b206IDMsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAuLi5mb250Q29uc3RhbnRzWydtYWluLWZvbnQtc2VtaS1ib2xkJ10sXG4gICAgbGV0dGVyU3BhY2luZzogLTAuMTIsXG4gIH0sXG4gIHRleHRQcm9ncmVzc1N0eWxlOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLi4uZm9udENvbnN0YW50c1snbWFpbi1mb250LXNlbWktYm9sZCddLFxuICAgIGZvbnRTaXplOiAxMixcbiAgICBsZXR0ZXJTcGFjaW5nOiAtMC4xMixcbiAgICB3aWR0aDogMTIwLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIH0sXG4gIGljb25NYXJnaW46IHtcbiAgICBtYXJnaW5MZWZ0OiAxMCxcbiAgfSxcbiAgaWNvbk1hcmdpblJUTDoge1xuICAgIG1hcmdpblJpZ2h0OiAxMCxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBVbmNvbm5lY3RlZFByb2dyZXNzUGlsbCA9IFByb2dyZXNzUGlsbDtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChzdGF0ZSA9PiAoe1xuICBpc1J0bDogc3RhdGUuaXNSdGwsXG59KSkoUmFkaXVtKFByb2dyZXNzUGlsbCkpO1xuIl0sIm5hbWVzIjpbIl9yZWRhY3RhYmxlTWFya2Rvd24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZW1hcmtQbHVnaW5zIiwiX2dpdGh1YiIsIl9wcm9wVHlwZXMiLCJfcmVhY3QiLCJfcmVoeXBlUmF3IiwiX3JlaHlwZVJlYWN0IiwiX3JlaHlwZVNhbml0aXplIiwiX3JlbWFya1JlaHlwZSIsIl91bmlmaWVkIiwiX2V4dGVybmFsTGlua3MiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJTYWZlTWFya2Rvd24iLCJfUmVhY3QkQ29tcG9uZW50IiwiX2luaGVyaXRzTG9vc2UiLCJjcmVhdGUiLCJyZW5kZXIiLCJwcm9jZXNzb3IiLCJ0aGlzIiwicHJvcHMiLCJvcGVuRXh0ZXJuYWxMaW5rc0luTmV3VGFiIiwibWFya2Rvd25Ub1JlYWN0RXh0ZXJuYWxMaW5rcyIsIm1hcmtkb3duVG9SZWFjdCIsInJlbmRlcmVkIiwicHJvY2Vzc1N5bmMiLCJtYXJrZG93biIsInJlc3VsdCIsIm1hcmtkb3duUHJvcHMiLCJjbGFzc05hbWUiLCJpZCIsInR5cGUiLCJrZXlzIiwiY3JlYXRlRWxlbWVudCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiX2RlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJzY2hlbWEiLCJkZWZhdWx0U2FuaXRpemF0aW9uU2NoZW1hIiwiYXR0cmlidXRlcyIsImltZyIsInB1c2giLCJ0YWdOYW1lcyIsInNwYW4iLCJjbG9iYmVyIiwiYmxvY2tseVRhZ3MiLCJjb25jYXQiLCJibG9ja2x5Q29tcG9uZW50V3JhcHBlcnMiLCJmb3JFYWNoIiwidGFnIiwiQmxvY2tseUVsZW1lbnQiLCJpcyIsInVuaWZpZWQiLCJ1c2UiLCJQcm9jZXNzb3IiLCJnZXRQYXJzZXIiLCJjbGlja2FibGVUZXh0IiwiZXhwYW5kYWJsZUltYWdlcyIsInZpc3VhbENvZGVCbG9jayIsInhtbEFzVG9wTGV2ZWxCbG9jayIsImRldGFpbHMiLCJyZW1hcmtSZWh5cGUiLCJhbGxvd0Rhbmdlcm91c0h0bWwiLCJyZWh5cGVSYXciLCJyZWh5cGVTYW5pdGl6ZSIsInJlaHlwZVJlYWN0IiwiY29tcG9uZW50cyIsImV4dGVybmFsTGlua3MiLCJsaW5rcyIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZhdWx0IiwiaXNFeHRlcm5hbExpbmsiLCJ1cmwiLCJ0ZXN0IiwiZnVsbHlRdWFsaWZpZWQiLCJwYXRoIiwiYSIsImRvY3VtZW50IiwiaHJlZiIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJ0b2tlbml6ZXJzIiwiUGFyc2VyIiwiaW5saW5lVG9rZW5pemVycyIsIm9yaWdpbmFsIiwibGluayIsImFsbCIsImVhdCIsInNpbGVudCIsImRhdGEiLCJoUHJvcGVydGllcyIsInRhcmdldCIsInJlbCIsImxvY2F0b3IiLCJfcmFkaXVtIiwiX3JlYWN0VG9vbHRpcCIsIl9Gb250QXdlc29tZSIsIl9jb2xvciIsInN0eWxlcyIsIm1haW4iLCJkaXNwbGF5IiwicG9zaXRpb24iLCJyaWdodCIsInRvcCIsIndoaXRlU3BhY2UiLCJhcnJvd0NvbnRhaW5lciIsImxlZnRBcnJvdyIsIndpZHRoIiwiaGVpZ2h0IiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiY29sb3IiLCJjeWFuIiwiZm9jdXNBcmVhIiwiYmFja2dyb3VuZENvbG9yIiwid2hpdGUiLCJsaW5lSGVpZ2h0IiwidGV4dCIsImZvY3VzQXJlYUljb24iLCJwYWRkaW5nIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwiYm9yZGVyUmFkaXVzIiwiZGVmYXVsdF9ibHVlIiwiUmFkaXVtIiwiRm9jdXNBcmVhSW5kaWNhdG9yIiwic3R5bGUiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiaWNvbiIsInJvbGUiLCJlZmZlY3QiLCJfcmVhY3RSZWR1eCIsIl9Qcm9ncmVzc0J1YmJsZSIsIl9wcm9ncmVzc1N0eWxlcyIsIl9wcm9ncmVzc1R5cGVzIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlByb2dyZXNzQnViYmxlU2V0IiwiX3RoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImxldmVsIiwiaW5kZXgiLCJpc1N1YmxldmVsIiwiX3RoaXMkcHJvcHMiLCJsZXZlbHMiLCJzZWxlY3RlZFNlY3Rpb25JZCIsInNlbGVjdGVkU3R1ZGVudElkIiwiaXNSdGwiLCJiYWNrZ3JvdW5kRmlyc3RTdHlsZSIsImJhY2tncm91bmRMYXN0IiwiYmFja2dyb3VuZEZpcnN0IiwiYmFja2dyb3VuZExhc3RTdHlsZSIsImJhY2tncm91bmRTdHlsZVByb3AiLCJiYWNrZ3JvdW5kIiwiaXNDb25jZXB0TGV2ZWwiLCJiYWNrZ3JvdW5kRGlhbW9uZCIsImJhY2tncm91bmRTdWJsZXZlbCIsImlzVW5wbHVnZ2VkIiwiYmFja2dyb3VuZFBpbGwiLCJzdWJsZXZlbHMiLCJjb250YWluZXJTdHlsZVByb3AiLCJjb250YWluZXIiLCJwaWxsQ29udGFpbmVyIiwiZGlhbW9uZENvbnRhaW5lciIsImNvbnRhaW5lclN1YmxldmVsIiwid2l0aEJhY2tncm91bmQiLCJrZXkiLCJkaXNhYmxlZCIsInNtYWxsQnViYmxlIiwiaGlkZVRvb2xUaXBzIiwib25DbGljayIsIm9uQnViYmxlQ2xpY2siLCJsZXNzb25OYW1lIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMyIiwic2hvd1N1YmxldmVscyIsIm1hcCIsInJlbmRlckJ1YmJsZSIsInN1YmxldmVsIiwiYXJyYXlPZiIsImxldmVsV2l0aFByb2dyZXNzVHlwZSIsIm9iamVjdCIsIm51bWJlciIsIm9uZU9mVHlwZSIsImxlc3NvbkV4dHJhc0VuYWJsZWQiLCJmdW5jIiwibGlnaHRlcl9ncmF5IiwibGVmdCIsIkRPVF9TSVpFIiwiRElBTU9ORF9ET1RfU0laRSIsImNvbm5lY3QiLCJzdGF0ZSIsIl9sb2Rhc2giLCJfdmlld0FzUmVkdXgiLCJfZm9udENvbnN0YW50cyIsIl9CdXR0b24iLCJfZmlyZWhvc2UiLCJfbG9jYWxlIiwiX0ZvY3VzQXJlYUluZGljYXRvciIsIl9wcm9ncmVzc0hlbHBlcnMiLCJfUHJvZ3Jlc3NMZXNzb25Db250ZW50IiwiX1Byb2dyZXNzTGVzc29uVGVhY2hlckluZm8iLCJQcm9ncmVzc0xlc3NvbiIsInNldFN0YXRlIiwiY29sbGFwc2VkIiwiZmlyZWhvc2VDbGllbnQiLCJwdXRSZWNvcmQiLCJzdHVkeSIsInN0dWR5X2dyb3VwIiwiZXZlbnQiLCJkYXRhX2pzb24iLCJKU09OIiwic3RyaW5naWZ5IiwibGVzc29uX2lkIiwibGVzc29uIiwic2NyaXB0X2lkIiwic2NyaXB0SWQiLCJpbmNsdWRlVXNlcklkIiwidmlld0FzIiwiVmlld1R5cGUiLCJJbnN0cnVjdG9yIiwiY3VycmVudExlc3NvbklkIiwiX3Byb3RvIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJuZXh0UHJvcHMiLCJpc1Zpc2libGUiLCJoaWRkZW5Gb3JTdHVkZW50cyIsImlzTG9ja2VkRm9yVXNlciIsImlzTG9ja2VkRm9yQWxsU3R1ZGVudHMiLCJzaG93QXNMb2NrZWQiLCJ0aXRsZSIsImxlc3Nvbk51bWJlciIsImkxOG4iLCJsZXNzb25OdW1iZXJlZCIsIm5hbWUiLCJjYXJldFN0eWxlIiwiY2FyZXRSVEwiLCJjYXJldCIsImxvY2tlZFRvb2x0aXBJZCIsIl8iLCJ1bmlxdWVJZCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25fdGVhY2hlciIsImRlc2NyaXB0aW9uX3N0dWRlbnQiLCJsZXNzb25VcmwiLCJzaG93Tm90QXV0aG9yaXplZFdhcm5pbmciLCJsb2NrYWJsZSIsImxvY2thYmxlQXV0aG9yaXplZExvYWRlZCIsImxvY2thYmxlQXV0aG9yaXplZCIsIm91dGVyIiwiaGlkZGVuT3JMb2NrZWQiLCJQYXJ0aWNpcGFudCIsInRyYW5zbHVjZW50IiwiaGVhZGluZyIsIm1hcmdpbkJvdHRvbSIsImhlYWRpbmdUZXh0IiwidG9nZ2xlQ29sbGFwc2VkIiwidGFiSW5kZXgiLCJvbktleURvd24iLCJpbmNsdWRlcyIsInByZXZlbnREZWZhdWx0IiwibG9ja1N0YXR1c0xvYWRlZCIsInVubG9ja2VkSWNvbiIsIndyYXBwZXIiLCJsb2NrQXNzZXNzbWVudExvbmciLCJzdHVkZW50X2xlc3Nvbl9wbGFuX2h0bWxfdXJsIiwiYnV0dG9uU3R5bGUiLCJfX3VzZURlcHJlY2F0ZWRUYWciLCJsZXNzb25SZXNvdXJjZXMiLCJvbkNsaWNrU3R1ZGVudExlc3NvblBsYW4iLCJub3RBdXRob3JpemVkV2FybmluZyIsInVudmVyaWZpZWRUZWFjaGVyTG9ja1dhcm5pbmciLCJsZWFybk1vcmVMaW5rIiwibGVhcm5Nb3JlV2l0aFBlcmlvZCIsImlzTWluaVZpZXciLCJpc0ZvY3VzQXJlYSIsImxlc3NvblR5cGUiLCJvbmVPZiIsInZhbHVlcyIsImxpZ2h0ZXN0X2dyYXkiLCJib3JkZXJfZ3JheSIsIm1hcmdpblRvcCIsImZvbnRTaXplIiwiZm9udENvbnN0YW50cyIsImFsaWduSXRlbXMiLCJjdXJzb3IiLCJmbGV4R3JvdyIsIm9wYWNpdHkiLCJvcmFuZ2UiLCJyZWQiLCJvd25Qcm9wcyIsInByb2dyZXNzIiwibGVzc29uTG9jayIsImxlc3NvbklzVmlzaWJsZSIsImxlc3NvbklzTG9ja2VkRm9yVXNlciIsImxlc3NvbklzTG9ja2VkRm9yQWxsU3R1ZGVudHMiLCJ0ZWFjaGVyU2VjdGlvbnMiLCJ1bml0UHJvZ3Jlc3NIYXNMb2FkZWQiLCJsZXNzb25zQnlTZWN0aW9uSWRMb2FkZWQiLCJfcHJvZ3Jlc3NSZWR1eFNlbGVjdG9ycyIsIl9TYWZlTWFya2Rvd24iLCJfUHJvZ3Jlc3NCdWJibGVTZXQiLCJfUHJvZ3Jlc3NMZXZlbFNldCIsIlByb2dyZXNzTGVzc29uQ29udGVudCIsImJ1YmJsZXMiLCJwcm9ncmVzc2lvbnMiLCJwcm9ncmVzc2lvbnNGcm9tTGV2ZWxzIiwibm9MZXZlbHNXYXJuaW5nIiwibGVzc29uQ29udGFpbnNOb0xldmVscyIsInByb2dyZXNzaW9uIiwiZGlzcGxheU5hbWUiLCJzdW1tYXJ5IiwiX1Byb2dyZXNzUGlsbCIsIlByb2dyZXNzTGV2ZWxTZXQiLCJwaWxsVGV4dCIsIm11bHRpTGV2ZWxTdGVwIiwiY29sMlN0eWxlIiwiY29sMlJUTCIsImNvbDIiLCJwcm9ncmVzc1N0eWxlIiwiZ2V0SWNvbkZvckxldmVsIiwidW5wbHVnZ2VkQWN0aXZpdHkiLCJsZXZlbE51bWJlciIsInRvU3RyaW5nIiwidGFibGUiLCJjb2wxIiwib25TaW5nbGVMZXZlbENsaWNrIiwibmFtZVRleHQiLCJsaW5lc0FuZERvdCIsInZlcnRpY2FsTGluZSIsImhvcml6b250YWxMaW5lIiwiZG90IiwiY2hhcmNvYWwiLCJsZXR0ZXJTcGFjaW5nIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJib3R0b20iLCJfdXRpbHMiLCJfdHlwZXMiLCJfQnViYmxlQmFkZ2UiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImhhcyIsImdldCIsInUiLCJzZXQiLCJfQnViYmxlRmFjdG9yeSIsIldlYWtNYXAiLCJQcm9ncmVzc1BpbGwiLCJnZXRVcmwiLCJ1c2VySWQiLCJxdWVyeVBhcmFtcyIsImdldEJ1YmJsZVVybCIsImdldFRvb2x0aXBQcm9wcyIsInRvb2x0aXAiLCJ0b29sdGlwUHJvcHMiLCJ0b29sdGlwSWQiLCJmaXJzdExldmVsIiwibGV2ZWxQaWxsIiwiaG92ZXJTdHlsZSIsImxldmVsUHJvZ3Jlc3NTdHlsZSIsInN0YXR1cyIsImtpbmQiLCJpY29uTWFyZ2luU3R5bGUiLCJpY29uTWFyZ2luUlRMIiwiaWNvbk1hcmdpbiIsImhhc0tlZXBXb3JraW5nRmVlZGJhY2siLCJSZXZpZXdTdGF0ZXMiLCJrZWVwV29ya2luZyIsImRpc3BsYXlCYWRnZSIsImlzTGV2ZWxBc3Nlc3NtZW50IiwidGV4dFN0eWxlIiwidGV4dFByb2dyZXNzU3R5bGUiLCJ0ZXh0RGVjb3JhdGlvbiIsImJhZGdlVHlwZSIsIkJhZGdlVHlwZSIsImFzc2Vzc21lbnQiLCJidWJibGVTaXplIiwiQnViYmxlU2l6ZSIsImZ1bGwiLCJidWJibGVTaGFwZSIsIkJ1YmJsZVNoYXBlIiwicGlsbCIsImVsZW1lbnQiLCJ0ZXh0QWxpZ24iLCJqdXN0aWZ5Q29udGVudCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwibWluV2lkdGgiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/5422.bca5f5b5.iframe.bundle.js b/5422.f17f22ea.iframe.bundle.js similarity index 99% rename from 5422.bca5f5b5.iframe.bundle.js rename to 5422.f17f22ea.iframe.bundle.js index fbc52b3b..4c69c515 100644 --- a/5422.bca5f5b5.iframe.bundle.js +++ b/5422.f17f22ea.iframe.bundle.js @@ -1,3 +1,3 @@ -/*! For license information please see 5422.bca5f5b5.iframe.bundle.js.LICENSE.txt */ +/*! For license information please see 5422.f17f22ea.iframe.bundle.js.LICENSE.txt */ (self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[5422,3881],{"./src/blockTooltips/DropletFunctionTooltip.html.ejs":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}var i18n=__webpack_require__("./src/util/locale-do-not-import.js");function getPrefixedName(){return locals.tipPrefix?locals.tipPrefix+locals.functionName:locals.functionName}if(__append("\n"),__line=2,__line=4,__append('\n
\n '),__line=6,locals.signatureOverride)__append(" "),__line=7,__append(escapeFn(locals.signatureOverride)),__append("\n "),__line=8;else if(locals.isProperty)__append(" "),__line=9,__append(escapeFn(getPrefixedName())),__append("\n "),__line=10;else{__line=15,__append(" "),__line=16,__append(escapeFn(getPrefixedName())),__append("(");for(var i=0;i\n"),__line=19,locals.functionShortDescription&&(__append("\n "),__line=20,locals.functionShortDescription.split("\n").map((function(descriptionLine){__append("\n
\n "),__line=22,__append(escapeFn(descriptionLine)),__append("\n
\n "),__line=24})),__append("\n"),__line=25),__append("\n"),__line=26;return __append("\n"),__line=27,locals.showCodeLink&&(__append('\n \n"),__line=31),__append("\n"),__line=32,locals.showExamplesLink&&(__append('\n \n"),__line=36),__append("\n"),__line=37,__output}catch(e){rethrow(e,'<% var i18n = require(\'@cdo/locale\'); %>\n<% function getPrefixedName () {\n return locals.tipPrefix ? locals.tipPrefix + locals.functionName : locals.functionName;\n} %>\n
\n <% if (locals.signatureOverride) { -%>\n <%= locals.signatureOverride %>\n <% } else if (locals.isProperty) { -%>\n <%= getPrefixedName() %>\n <% } else {\n /**\n * TODO(bjordan): would be nice to split the following line up, can\'t figure\n * out how to do so without inserting extraneous spaces between locals.parameters.\n */\n -%>\n <%= getPrefixedName() %>(<% for (var i = 0; i < locals.parameters.length; i++) { -%><%- locals.parameters[i].name -%><% if (i < locals.parameters.length - 1) { -%>, <% } -%><% } -%>)\n <% } %>\n
\n<% if (locals.functionShortDescription) { %>\n <% locals.functionShortDescription.split(\'\\n\').map(function(descriptionLine) { %>\n
\n <%= descriptionLine %>\n
\n <% }) %>\n<% } %>\n<% var linkText = "" %>\n<% if (locals.showCodeLink) { %>\n \n<% } %>\n<% if (locals.showExamplesLink) { %>\n \n<% } %>\n',"src/blockTooltips/DropletFunctionTooltip.html.ejs",__line,escapeFn)}}},"./src/blockTooltips/DropletParameterTooltip.html.ejs":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}var i18n=__webpack_require__("./src/util/locale-do-not-import.js");__append("\n"),__line=2;locals.funcName;var functionName=locals.functionName,parameters=(locals.isProperty,locals.tipPrefix,locals.functionShortDescription,locals.parameters),signatureOverride=locals.signatureOverride,showExamplesLink=locals.showExamplesLink,currentParameterIndex=locals.currentParameterIndex;if(__line=15,__append('\n
\n '),__line=17,signatureOverride)__append(" "),__line=18,__append(escapeFn(signatureOverride)),__append("\n "),__line=19;else{__line=24,__append(" "),__line=25,__append(escapeFn(functionName)),__append("(");for(var i=0;i'),__append(parameters[i].name),__append(""),i\n"),__line=28,parameters[currentParameterIndex]&¶meters[currentParameterIndex].description&&(__append("
"),__append(escapeFn(parameters[currentParameterIndex].description)),__append("
")),__append("\n"),__line=29,parameters[currentParameterIndex]&¶meters[currentParameterIndex].assetTooltip&&(__append('\n \n"),__line=33),__append("\n"),__line=34,showExamplesLink&&(__append('\n \n"),__line=38),__append("\n"),__line=39,__output}catch(e){rethrow(e,'<% var i18n = require(\'@cdo/locale\'); %>\n<%\n/**\n * This block destructures the local variables for use within this ejs template.\n */\nvar funcName = locals.funcName;\nvar functionName = locals.functionName;\nvar isProperty = locals.isProperty;\nvar tipPrefix = locals.tipPrefix;\nvar functionShortDescription = locals.functionShortDescription;\nvar parameters = locals.parameters;\nvar signatureOverride = locals.signatureOverride;\nvar showExamplesLink = locals.showExamplesLink;\nvar currentParameterIndex = locals.currentParameterIndex;\n%>\n
\n <% if (signatureOverride) { -%>\n <%= signatureOverride %>\n <% } else {\n /**\n * TODO(bjordan): would be nice to split the following line up, can\'t figure\n * out how to do so without inserting extraneous spaces between parameters.\n */\n -%>\n <%= functionName %>(<% for (var i = 0; i < parameters.length; i++) { -%><%- parameters[i].name -%><% if (i < parameters.length - 1) { -%>, <% } -%><% } -%>)\n <% } %>\n
\n<% if (parameters[currentParameterIndex] && parameters[currentParameterIndex].description) { %>
<%= parameters[currentParameterIndex].description %>
<% } %>\n<% if (parameters[currentParameterIndex] && parameters[currentParameterIndex].assetTooltip) { %>\n \n<% } %>\n<% if (showExamplesLink) { %>\n \n<% } %>\n',"src/blockTooltips/DropletParameterTooltip.html.ejs",__line,escapeFn)}}},"./src/templates/learn.html.ejs":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}var msg=__webpack_require__("./src/util/locale-do-not-import.js");__append("\n"),__line=2;var assetUrl=locals.assetUrl;__line=7,__append("\n\n"),__line=9;var root=location.protocol+"//"+location.host.replace("learn.","").replace("studio.","");return __append('\n\n\n"),__line=20,__output}catch(e){rethrow(e,"<% var msg = require('@cdo/locale') %>\n<%\n/**\n * This block destructures the local variables for use within this ejs template.\n */\nvar assetUrl = locals.assetUrl;\n%>\n\n<% var root = location.protocol + '//' + location.host.replace('learn\\.', '').replace('studio\\.', ''); %>\n\n\n","src/templates/learn.html.ejs",__line,escapeFn)}}},"./src/templates/makeYourOwn.html.ejs":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}__webpack_require__("./src/util/locale-do-not-import.js");__append("\n"),__line=2;var data=locals.data;return __line=7,__append('\n\n
\n\n

\n<%\n/**\n * This block destructures the local variables for use within this ejs template.\n */\nvar data = locals.data;\n%>\n\n\n","src/templates/makeYourOwn.html.ejs",__line,escapeFn)}}},"./src/templates/puzzleRating.html.ejs":module=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}var label=locals.label;return __line=6,__append("\n
\n

"),__line=8,__append(escapeFn(label)),__append('

\n\n\n \n \n \n\n\n\n \n \n \n\n'),__line=37,__output}catch(e){rethrow(e,'<%\n/**\n * This block destructures the local variables for use within this ejs template.\n */\nvar label = locals.label;\n%>\n
\n

<%= label %>

\n\n\n \n \n \n\n\n\n \n \n \n\n',"src/templates/puzzleRating.html.ejs",__line,escapeFn)}}},"./src/templates/shareFailure.html.ejs":module=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}var shareFailure=locals.shareFailure;return __line=6,__append('\n

'),__line=7,__append(escapeFn(shareFailure.message)),__append("

\n\n"),__line=9,shareFailure.contents&&(__append('\n \n"),__line=13),__append("\n"),__line=14,__output}catch(e){rethrow(e,'<%\n/**\n * This block destructures the local variables for use within this ejs template.\n */\nvar shareFailure = locals.shareFailure;\n%>\n

<%= shareFailure.message %>

\n\n<% if (shareFailure.contents) { %>\n \n<% } %>\n',"src/templates/shareFailure.html.ejs",__line,escapeFn)}}},"./src/templates/sharing.html.ejs":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=function anonymous(locals,escapeFn,include,rethrow){"use strict";rethrow=rethrow||function rethrow(err,str,flnm,lineno,esc){var lines=str.split("\n"),start=Math.max(lineno-3,0),end=Math.min(lines.length,lineno+3),filename=esc(flnm),context=lines.slice(start,end).map((function(line,i){var curr=i+start+1;return(curr==lineno?" >> ":" ")+curr+"| "+line})).join("\n");throw err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message,err},escapeFn=escapeFn||function(markup){return null==markup?"":String(markup).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(c){return _ENCODE_HTML_RULES[c]||c}var __line=1;try{var __output="";function __append(s){null!=s&&(__output+=s)}var options=locals.options;__line=6,__append("\n"),__line=7;var msg=__webpack_require__("./src/util/locale-do-not-import.js");return __append("\n"),__line=8,options.feedbackImage?(__append('\n \n