UNPKG

mindstream-gravity-form

Version:

Mindstream Fork of Gravity Forms on React apps via the Wordpress API

2 lines 25.6 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _react=_interopRequireWildcard(require("react")),_reactDropzone=_interopRequireDefault(require("react-dropzone")),_GFDropzone=_interopRequireDefault(require("./GFDropzone"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _getRequireWildcardCache(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;return _getRequireWildcardCache=function(){return a},a}function _interopRequireWildcard(a){if(a&&a.__esModule)return a;if(null===a||"object"!==_typeof(a)&&"function"!=typeof a)return{default:a};var b=_getRequireWildcardCache();if(b&&b.has(a))return b.get(a);var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a)if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;f&&(f.get||f.set)?Object.defineProperty(c,e,f):c[e]=a[e]}return c["default"]=a,b&&b.set(a,c),c}function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf||function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){return b&&("object"===_typeof(b)||"function"==typeof b)?b:_assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}var Fileupload=function(a){function b(){var a;_classCallCheck(this,b);for(var d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return a=c.call.apply(c,[this].concat(e)),_defineProperty(_assertThisInitialized(a),"state",{imagePreviewUrl:a.props.field.preview||null,selectedFile:!!a.props.field.preview||null,uploadFileText:"No file chosen",previewID:a.props.value||null,errorText:a.props.error||!1}),_defineProperty(_assertThisInitialized(a),"inputFile",_react["default"].createRef()),_defineProperty(_assertThisInitialized(a),"onChangeHandler",function(b){var c=a.props.field,d=c.hasPreview,e=c.allowedExtensions;if(a.setState({imagePreviewUrl:null,selectedFile:b.target.files[0],uploadFileText:b.target.files[0]?b.target.files[0].name:"No file chosen"}),d&&b.target&&b.target.files[0]){var f=b.target.files[0].name.split(".").pop().toLowerCase(),g=-1<e.indexOf(f);if(g){var h=new FileReader;h.onloadend=function(){a.setState({imagePreviewUrl:h.result,previewID:!1})},h.readAsDataURL(b.target.files[0])}}}),_defineProperty(_assertThisInitialized(a),"removeFilePreview",function(){var b=a.props,c=b.field,d=b.unsetError;a.inputFile.current.value="",a.setState({imagePreviewUrl:null,selectedFile:null,previewID:!1}),d(c.id)}),_defineProperty(_assertThisInitialized(a),"prepareAllowedTypes",function(a){var b=a.split(",");return b=b.map(function(a){return".".concat(a.replace(/\s/g,""))}).join(", "),b}),_defineProperty(_assertThisInitialized(a),"onButtonClickHandler",function(){a.inputFile.current.click()}),a}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"render",value:function render(){var a=this,b=this.state,c=b.selectedFile,d=b.uploadFileText,e=b.imagePreviewUrl,f=b.previewID,g=this.props,h=g.field,i=g.value,j=g.validationMessage,k=g.touched,l=g.setTouched,m=g.hideField,n=g.updateForm,o=g.formID,p=g.fieldError,q=g.styledComponents,r=g.error,s=g.unsetError,t=g.dropzoneText,u=h.id,v=h.type,w=h.label,x=h.cssClass,y=h.isRequired,z=h.description,A=h.descriptionPlacement,B=h.labelPlacement,C=h.width,D=h.allowedExtensions,E=h.buttonText,F=h.hasPreview,G=h.maxFileSize,H=q||!1,I=H.Button,J=void 0===I?"button":I,K=H.Label,L=void 0===K?"label":K,M=H.FileWrapper,N=void 0===M?"div":M,O=H.Box,P=void 0===O?"div":O,Q=-1<x.indexOf("dropzone");return _react["default"].createElement(P,{width:C,className:j&&k||r?"form-field error ".concat(x):"form-field ".concat(x),style:{display:m?"none":void 0}},_react["default"].createElement(N,{className:v},_react["default"].createElement(L,{htmlFor:"input_".concat(o,"_").concat(u),className:"gf-label ".concat(B)},w,y?_react["default"].createElement("abbr",null,"*"):null),"above"===A&&z?z&&_react["default"].createElement("div",{className:"description"},z):Q?_react["default"].createElement(_GFDropzone["default"],{dropzoneText:t,field:h,id:u,formID:o,isRequired:y,updateForm:n,setTouched:l,unsetError:s}):_react["default"].createElement(_react["default"].Fragment,null,G&&_react["default"].createElement("input",{type:"hidden",name:"MAX_FILE_SIZE",value:1048576*G}),_react["default"].createElement("input",{id:"input_".concat(o,"_").concat(u),name:"input_".concat(u),type:"file",required:y,ref:this.inputFile,onChange:function onChange(b){a.onChangeHandler(b),n(b,h),l(u),s(u)},onBlur:function onBlur(a){n(a,h),l(u)},accept:this.prepareAllowedTypes(D)||void 0,"aria-label":w,"aria-describedby":"error_".concat(o,"_").concat(u),"aria-invalid":!!j||!!r,hidden:"hidden"}),f&&h.preview&&_react["default"].createElement("input",{type:"hidden",name:"file-upload-preview",value:f}),F&&_react["default"].createElement("div",{className:"file-preview",style:c&&e?{backgroundImage:"url(".concat(e,")")}:void 0},c&&e&&_react["default"].createElement("button",{type:"button",className:"remove-file",onClick:function onClick(){return a.removeFilePreview()}})),_react["default"].createElement("div",{"aria-pressed":"false",tabIndex:"0",role:"button",className:"fileUpload",onClick:this.onButtonClickHandler},_react["default"].createElement(J,{color:"yellow",tabIndex:"-1",type:"button"},E||"Choose a file"),_react["default"].createElement("span",null,d)),z&&_react["default"].createElement("div",{className:"description"},z)),(j&&k||r)&&_react["default"].createElement("span",{className:"error-message",id:"error_".concat(u)},j||r),p&&_react["default"].createElement("span",{className:"error-message",id:"error_".concat(o,"_").concat(u)},p)))}}]),b}(_react.Component),_default=Fileupload;exports["default"]=_default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9GaWVsZHMvRmlsZXVwbG9hZC9GaWxldXBsb2FkLmpzeCJdLCJuYW1lcyI6WyJGaWxldXBsb2FkIiwiaW1hZ2VQcmV2aWV3VXJsIiwicHJvcHMiLCJmaWVsZCIsInByZXZpZXciLCJzZWxlY3RlZEZpbGUiLCJ1cGxvYWRGaWxlVGV4dCIsInByZXZpZXdJRCIsInZhbHVlIiwiZXJyb3JUZXh0IiwiZXJyb3IiLCJSZWFjdCIsImNyZWF0ZVJlZiIsImV2ZW50IiwiaGFzUHJldmlldyIsImFsbG93ZWRFeHRlbnNpb25zIiwic2V0U3RhdGUiLCJ0YXJnZXQiLCJmaWxlcyIsIm5hbWUiLCJleHRlbnNpb24iLCJzcGxpdCIsInBvcCIsInRvTG93ZXJDYXNlIiwiaXNTdWNjZXNzIiwiaW5kZXhPZiIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWRlbmQiLCJyZXN1bHQiLCJyZWFkQXNEYXRhVVJMIiwidW5zZXRFcnJvciIsImlucHV0RmlsZSIsImN1cnJlbnQiLCJpZCIsInR5cGVzIiwiYWNjZXB0IiwibWFwIiwic3RyIiwicmVwbGFjZSIsImpvaW4iLCJjbGljayIsInN0YXRlIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsImhpZGVGaWVsZCIsInVwZGF0ZUZvcm0iLCJmb3JtSUQiLCJmaWVsZEVycm9yIiwic3R5bGVkQ29tcG9uZW50cyIsImRyb3B6b25lVGV4dCIsInR5cGUiLCJsYWJlbCIsImNzc0NsYXNzIiwiaXNSZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25QbGFjZW1lbnQiLCJsYWJlbFBsYWNlbWVudCIsIndpZHRoIiwiYnV0dG9uVGV4dCIsIm1heEZpbGVTaXplIiwiQnV0dG9uIiwiTGFiZWwiLCJGaWxlV3JhcHBlciIsIkJveCIsImhhc0Ryb3B6b25lIiwiZGlzcGxheSIsIm9uQ2hhbmdlSGFuZGxlciIsInByZXBhcmVBbGxvd2VkVHlwZXMiLCJiYWNrZ3JvdW5kSW1hZ2Ui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QixXQTRNVnpFLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAncmVhY3QtZHJvcHpvbmUnO1xyXG5pbXBvcnQgR0ZEcm9wem9uZSBmcm9tICcuL0dGRHJvcHpvbmUnO1xyXG5cclxuY2xhc3MgRmlsZXVwbG9hZCBleHRlbmRzIENvbXBvbmVudCB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBpbWFnZVByZXZpZXdVcmw6IHRoaXMucHJvcHMuZmllbGQucHJldmlldyB8fCBudWxsLFxyXG4gICAgc2VsZWN0ZWRGaWxlOiB0aGlzLnByb3BzLmZpZWxkLnByZXZpZXcgPyB0cnVlIDogbnVsbCxcclxuICAgIHVwbG9hZEZpbGVUZXh0OiAnTm8gZmlsZSBjaG9zZW4nLFxyXG4gICAgcHJldmlld0lEOiB0aGlzLnByb3BzLnZhbHVlIHx8IG51bGwsXHJcbiAgICBlcnJvclRleHQ6IHRoaXMucHJvcHMuZXJyb3IgfHwgZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgaW5wdXRGaWxlID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcblxyXG4gIG9uQ2hhbmdlSGFuZGxlciA9IChldmVudCkgPT4ge1xyXG4gICAgY29uc3QgeyBoYXNQcmV2aWV3LCBhbGxvd2VkRXh0ZW5zaW9ucyB9ID0gdGhpcy5wcm9wcy5maWVsZDtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBpbWFnZVByZXZpZXdVcmw6IG51bGwsXHJcbiAgICAgIHNlbGVjdGVkRmlsZTogZXZlbnQudGFyZ2V0LmZpbGVzWzBdLFxyXG4gICAgICB1cGxvYWRGaWxlVGV4dDogZXZlbnQudGFyZ2V0LmZpbGVzWzBdID8gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWUgOiAnTm8gZmlsZSBjaG9zZW4nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGhhc1ByZXZpZXcgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5maWxlc1swXSkge1xyXG4gICAgICAvLyBjaGVjayBmaWxlIHR5cGVcclxuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWVcclxuICAgICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAgIC5wb3AoKVxyXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpOyAvLyBmaWxlIGV4dGVuc2lvbiBmcm9tIGlucHV0IGZpbGVcclxuICAgICAgY29uc3QgaXNTdWNjZXNzID0gYWxsb3dlZEV4dGVuc2lvbnMuaW5kZXhPZihleHRlbnNpb24pID4gLTE7IC8vIGlzIGV4dGVuc2lvbiBpbiBhY2NlcHRhYmxlIHR5cGVzXHJcbiAgICAgIGlmIChpc1N1Y2Nlc3MpIHtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGltYWdlUHJldmlld1VybDogcmVhZGVyLnJlc3VsdCxcclxuICAgICAgICAgICAgcHJldmlld0lEOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGV2ZW50LnRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZW1vdmVGaWxlUHJldmlldyA9ICgpID0+IHtcclxuICAgIGNvbnN0IHsgZmllbGQsIHVuc2V0RXJyb3IgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLmlucHV0RmlsZS5jdXJyZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgaW1hZ2VQcmV2aWV3VXJsOiBudWxsLCBzZWxlY3RlZEZpbGU6IG51bGwsIHByZXZpZXdJRDogZmFsc2UgfSk7XHJcbiAgICB1bnNldEVycm9yKGZpZWxkLmlkKTtcclxuICB9O1xyXG5cclxuICBwcmVwYXJlQWxsb3dlZFR5cGVzID0gKHR5cGVzKSA9PiB7XHJcbiAgICBsZXQgYWNjZXB0ID0gdHlwZXMuc3BsaXQoJywnKTtcclxuICAgIGFjY2VwdCA9IGFjY2VwdC5tYXAoKHN0cikgPT4gYC4ke3N0ci5yZXBsYWNlKC9cXHMvZywgJycpfWApLmpvaW4oJywgJyk7XHJcbiAgICByZXR1cm4gYWNjZXB0O1xyXG4gIH07XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2tIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pbnB1dEZpbGUuY3VycmVudC5jbGljaygpO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRGaWxlLCB1cGxvYWRGaWxlVGV4dCwgaW1hZ2VQcmV2aWV3VXJsLCBwcmV2aWV3SUQgfSA9IHRoaXMuc3RhdGU7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBmaWVsZCxcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgICB0b3VjaGVkLFxyXG4gICAgICBzZXRUb3VjaGVkLFxyXG4gICAgICBoaWRlRmllbGQsXHJcbiAgICAgIHVwZGF0ZUZvcm0sXHJcbiAgICAgIGZvcm1JRCxcclxuICAgICAgZmllbGRFcnJvcixcclxuICAgICAgc3R5bGVkQ29tcG9uZW50cyxcclxuICAgICAgZXJyb3IsXHJcbiAgICAgIHVuc2V0RXJyb3IsXHJcbiAgICAgIGRyb3B6b25lVGV4dCxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBpZCxcclxuICAgICAgdHlwZSxcclxuICAgICAgbGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzLFxyXG4gICAgICBpc1JlcXVpcmVkLFxyXG4gICAgICBkZXNjcmlwdGlvbixcclxuICAgICAgZGVzY3JpcHRpb25QbGFjZW1lbnQsXHJcbiAgICAgIGxhYmVsUGxhY2VtZW50LFxyXG4gICAgICB3aWR0aCxcclxuICAgICAgYWxsb3dlZEV4dGVuc2lvbnMsXHJcbiAgICAgIGJ1dHRvblRleHQsXHJcbiAgICAgIGhhc1ByZXZpZXcsXHJcbiAgICAgIG1heEZpbGVTaXplLFxyXG4gICAgfSA9IGZpZWxkO1xyXG4gICAgY29uc3QgeyBCdXR0b24gPSAnYnV0dG9uJywgTGFiZWwgPSAnbGFiZWwnLCBGaWxlV3JhcHBlciA9ICdkaXYnLCBCb3ggPSAnZGl2JyB9ID1cclxuICAgICAgc3R5bGVkQ29tcG9uZW50cyB8fCBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBoYXNEcm9wem9uZSA9IGNzc0NsYXNzLmluZGV4T2YoJ2Ryb3B6b25lJykgPiAtMTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Qm94XHJcbiAgICAgICAgd2lkdGg9e3dpZHRofVxyXG4gICAgICAgIGNsYXNzTmFtZT17XHJcbiAgICAgICAgICAodmFsaWRhdGlvbk1lc3NhZ2UgJiYgdG91Y2hlZCkgfHwgZXJyb3JcclxuICAgICAgICAgICAgPyBgZm9ybS1maWVsZCBlcnJvciAke2Nzc0NsYXNzfWBcclxuICAgICAgICAgICAgOiBgZm9ybS1maWVsZCAke2Nzc0NsYXNzfWBcclxuICAgICAgICB9XHJcbiAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogaGlkZUZpZWxkID8gJ25vbmUnIDogdW5kZWZpbmVkIH19XHJcbiAgICAgID5cclxuICAgICAgICA8RmlsZVdyYXBwZXIgY2xhc3NOYW1lPXt0eXBlfT5cclxuICAgICAgICAgIDxMYWJlbCBodG1sRm9yPXtgaW5wdXRfJHtmb3JtSUR9XyR7aWR9YH0gY2xhc3NOYW1lPXtgZ2YtbGFiZWwgJHtsYWJlbFBsYWNlbWVudH1gfT5cclxuICAgICAgICAgICAge2xhYmVsfVxyXG4gICAgICAgICAgICB7aXNSZXF1aXJlZCA/IDxhYmJyPio8L2FiYnI+IDogbnVsbH1cclxuICAgICAgICAgIDwvTGFiZWw+XHJcbiAgICAgICAgICB7ZGVzY3JpcHRpb25QbGFjZW1lbnQgPT09ICdhYm92ZScgJiYgZGVzY3JpcHRpb24gPyAoXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uICYmIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj57ZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgICApIDogaGFzRHJvcHpvbmUgPyAoXHJcbiAgICAgICAgICAgIDxHRkRyb3B6b25lXHJcbiAgICAgICAgICAgICAgZHJvcHpvbmVUZXh0PXtkcm9wem9uZVRleHR9XHJcbiAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxyXG4gICAgICAgICAgICAgIGlkPXtpZH1cclxuICAgICAgICAgICAgICBmb3JtSUQ9e2Zvcm1JRH1cclxuICAgICAgICAgICAgICBpc1JlcXVpcmVkPXtpc1JlcXVpcmVkfVxyXG4gICAgICAgICAgICAgIHVwZGF0ZUZvcm09e3VwZGF0ZUZvcm19XHJcbiAgICAgICAgICAgICAgc2V0VG91Y2hlZD17c2V0VG91Y2hlZH1cclxuICAgICAgICAgICAgICB1bnNldEVycm9yPXt1bnNldEVycm9yfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxyXG4gICAgICAgICAgICAgIHttYXhGaWxlU2l6ZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJNQVhfRklMRV9TSVpFXCIgdmFsdWU9e21heEZpbGVTaXplICogMTA0ODU3Nn0gLz5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgaWQ9e2BpbnB1dF8ke2Zvcm1JRH1fJHtpZH1gfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17YGlucHV0XyR7aWR9YH1cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLmlucHV0RmlsZX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUhhbmRsZXIoZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICB1cGRhdGVGb3JtKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgIHNldFRvdWNoZWQoaWQpO1xyXG4gICAgICAgICAgICAgICAgICB1bnNldEVycm9yKGlkKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBvbkJsdXI9eyhldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB1cGRhdGVGb3JtKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgIHNldFRvdWNoZWQoaWQpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGFjY2VwdD17dGhpcy5wcmVwYXJlQWxsb3dlZFR5cGVzKGFsbG93ZWRFeHRlbnNpb25zKSB8fCB1bmRlZmluZWR9XHJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtsYWJlbH1cclxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2BlcnJvcl8ke2Zvcm1JRH1fJHtpZH1gfVxyXG4gICAgICAgICAgICAgICAgYXJpYS1pbnZhbGlkPXshIXZhbGlkYXRpb25NZXNzYWdlIHx8ICEhZXJyb3J9XHJcbiAgICAgICAgICAgICAgICBoaWRkZW49XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3ByZXZpZXdJRCAmJiBmaWVsZC5wcmV2aWV3ICYmIChcclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZpbGUtdXBsb2FkLXByZXZpZXdcIiB2YWx1ZT17cHJldmlld0lEfSAvPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAge2hhc1ByZXZpZXcgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWxlLXByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWxlICYmIGltYWdlUHJldmlld1VybFxyXG4gICAgICAgICAgICAgICAgICAgICAgPyB7IGJhY2tncm91bmRJbWFnZTogYHVybCgke2ltYWdlUHJldmlld1VybH0pYCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZEZpbGUgJiYgaW1hZ2VQcmV2aWV3VXJsICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbW92ZS1maWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMucmVtb3ZlRmlsZVByZXZpZXcoKX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD1cIjBcIlxyXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWxlVXBsb2FkXCJcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25CdXR0b25DbGlja0hhbmRsZXJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBjb2xvcj1cInllbGxvd1wiIHRhYkluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIHtidXR0b25UZXh0IHx8ICdDaG9vc2UgYSBmaWxlJ31cclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3VwbG9hZEZpbGVUZXh0fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAge2Rlc2NyaXB0aW9uICYmIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj57ZGVzY3JpcHRpb259PC9kaXY+fVxyXG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHsoKHZhbGlkYXRpb25NZXNzYWdlICYmIHRvdWNoZWQpIHx8IGVycm9yKSAmJiAoXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImVycm9yLW1lc3NhZ2VcIiBpZD17YGVycm9yXyR7aWR9YH0+XHJcbiAgICAgICAgICAgICAge3ZhbGlkYXRpb25NZXNzYWdlIHx8IGVycm9yfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge2ZpZWxkRXJyb3IgJiYgKFxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJlcnJvci1tZXNzYWdlXCIgaWQ9e2BlcnJvcl8ke2Zvcm1JRH1fJHtpZH1gfT5cclxuICAgICAgICAgICAgICB7ZmllbGRFcnJvcn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L0ZpbGVXcmFwcGVyPlxyXG4gICAgICA8L0JveD5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGaWxldXBsb2FkO1xyXG5cclxuIl19