@jeremyckahn/farmhand 1.22.2 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/blueberry-BBXqspnA.png +0 -0
- package/dist/assets/blueberry-growing1-Cj7olcs4.png +0 -0
- package/dist/assets/blueberry-seed-fuVW1LxC.png +0 -0
- package/dist/assets/{index-C_BBT4NW.js → index-wJ4_E2CN.js} +5 -5
- package/dist/assets/{index-C_BBT4NW.js.map → index-wJ4_E2CN.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/service-worker.js +1 -1
- package/dist/service-worker.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Farmhand/Farmhand.context.tsx +1 -0
- package/src/data/crops/blueberry.ts +26 -0
- package/src/data/crops/index.ts +1 -0
- package/src/data/items.ts +2 -0
- package/src/data/levels.ts +4 -0
- package/src/data/maps.ts +2 -0
- package/src/data/shop-inventory.ts +2 -0
- package/src/enums.ts +1 -0
- package/src/img/index.ts +6 -0
- package/src/img/items/blueberry-growing1.piskel +1 -0
- package/src/img/items/blueberry-growing1.png +0 -0
- package/src/img/items/blueberry-seed.piskel +1 -0
- package/src/img/items/blueberry-seed.png +0 -0
- package/src/img/items/blueberry.piskel +1 -0
- package/src/img/items/blueberry.png +0 -0
- package/src/test-utils/index.ts +1 -0
|
@@ -136,7 +136,7 @@ Add a <Suspense fallback=...> component higher in the tree to provide a loading
|
|
|
136
136
|
10.59L10 14.17L17.59 6.58L19 8L10 17Z`}))},WarningIcon=function(e){return import_react$24.createElement(SvgIcon,Object.assign({},e),import_react$24.createElement(`path`,{d:`M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z`}))},ErrorIcon=function(e){return import_react$24.createElement(SvgIcon,Object.assign({},e),import_react$24.createElement(`path`,{d:`M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,
|
|
137
137
|
6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,
|
|
138
138
|
13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z`}))},InfoIcon=function(e){return import_react$24.createElement(SvgIcon,Object.assign({},e),import_react$24.createElement(`path`,{d:`M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,
|
|
139
|
-
0 22,12A10,10 0 0,0 12,2Z`}))},iconStyles={fontSize:20,marginInlineEnd:8},defaultIconVariants={default:void 0,success:import_react$24.createElement(CheckIcon,{style:iconStyles}),warning:import_react$24.createElement(WarningIcon,{style:iconStyles}),error:import_react$24.createElement(ErrorIcon,{style:iconStyles}),info:import_react$24.createElement(InfoIcon,{style:iconStyles})};function createChainedFunction(e,t){return e.reduce(function(e,n){return n==null?e:function(){var a=[...arguments],o=[].concat(a);t&&o.indexOf(t)===-1&&o.push(t),e.apply(this,o),n.apply(this,o)}},function(){})}var useEnhancedEffect=typeof window<`u`?import_react$24.useLayoutEffect:import_react$24.useEffect;function useEventCallback(e){var t=(0,import_react$24.useRef)(e);return useEnhancedEffect(function(){t.current=e}),(0,import_react$24.useCallback)(function(){return t.current.apply(void 0,arguments)},[])}var Snackbar=(0,import_react$24.forwardRef)(function(e,t){var n=e.children,a=e.autoHideDuration,o=e.ClickAwayListenerProps,s=e.disableWindowBlurListener,l=s!==void 0&&s,u=e.onClose,d=e.onMouseEnter,f=e.onMouseLeave,m=e.open,h=e.resumeHideDuration,v=_objectWithoutPropertiesLoose$2(e,[`children`,`autoHideDuration`,`ClickAwayListenerProps`,`disableWindowBlurListener`,`onClose`,`onMouseEnter`,`onMouseLeave`,`open`,`resumeHideDuration`]),y=(0,import_react$24.useRef)(),b=useEventCallback(function(){u&&u.apply(void 0,arguments)}),x=useEventCallback(function(e){!u||e==null||(clearTimeout(y.current),y.current=setTimeout(function(){b(null,REASONS.TIMEOUT)},e))});(0,import_react$24.useEffect)(function(){return m&&x(a),function(){clearTimeout(y.current)}},[m,a,x]);var S=function(){clearTimeout(y.current)},C=(0,import_react$24.useCallback)(function(){a!=null&&x(h??a*.5)},[a,h,x]);return(0,import_react$24.useEffect)(function(){if(!l&&m)return window.addEventListener(`focus`,C),window.addEventListener(`blur`,S),function(){window.removeEventListener(`focus`,C),window.removeEventListener(`blur`,S)}},[l,C,m]),(0,import_react$24.createElement)(ClickAwayListener,_extends$2({onClickAway:function(e){u&&u(e,REASONS.CLICKAWAY)}},o),(0,import_react$24.createElement)(`div`,_extends$2({onMouseEnter:function(e){d&&d(e),S()},onMouseLeave:function(e){f&&f(e),C()},ref:t},v),n))}),componentName$1=`SnackbarItem`,classes$1={contentRoot:componentName$1+`-contentRoot`,lessPadding:componentName$1+`-lessPadding`,variantSuccess:componentName$1+`-variantSuccess`,variantError:componentName$1+`-variantError`,variantInfo:componentName$1+`-variantInfo`,variantWarning:componentName$1+`-variantWarning`,message:componentName$1+`-message`,action:componentName$1+`-action`,wrappedRoot:componentName$1+`-wrappedRoot`},StyledSnackbar=styled$1(Snackbar)(function(e){var t,n=e.theme,a=n.palette.mode||n.palette.type,o=emphasize(n.palette.background.default,a===`light`?.8:.98);return t={},t[`&.`+classes$1.wrappedRoot]={position:`relative`,transform:`translateX(0)`,top:0,right:0,bottom:0,left:0},t[`.`+classes$1.contentRoot]=_extends$2({},n.typography.body2,{backgroundColor:o,color:n.palette.getContrastText(o),alignItems:`center`,padding:`6px 16px`,borderRadius:`4px`,boxShadow:`0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)`}),t[`.`+classes$1.lessPadding]={paddingLeft:8*2.5},t[`.`+classes$1.variantSuccess]={backgroundColor:`#43a047`,color:`#fff`},t[`.`+classes$1.variantError]={backgroundColor:`#d32f2f`,color:`#fff`},t[`.`+classes$1.variantInfo]={backgroundColor:`#2196f3`,color:`#fff`},t[`.`+classes$1.variantWarning]={backgroundColor:`#ff9800`,color:`#fff`},t[`.`+classes$1.message]={display:`flex`,alignItems:`center`,padding:`8px 0`},t[`.`+classes$1.action]={display:`flex`,alignItems:`center`,marginLeft:`auto`,paddingLeft:16,marginRight:-8},t}),SnackbarItem=function(e){var t=e.classes,n=_objectWithoutPropertiesLoose$2(e,[`classes`]),a=(0,import_react$24.useRef)(),o=(0,import_react$24.useState)(!0),s=o[0],l=o[1];(0,import_react$24.useEffect)(function(){return function(){a.current&&clearTimeout(a.current)}},[]);var u=createChainedFunction([n.snack.onClose,n.onClose],n.snack.key),d=function(){n.snack.requestClose&&u(null,REASONS.INSTRCUTED)},f=function(){a.current=setTimeout(function(){l(!s)},125)},m=n.style,h=n.ariaAttributes,v=n.className,y=n.hideIconVariant,b=n.iconVariant,x=n.snack,S=n.action,C=n.content,T=n.TransitionComponent,E=n.TransitionProps,D=n.transitionDuration,O=_objectWithoutPropertiesLoose$2(n,[`style`,`dense`,`ariaAttributes`,`className`,`hideIconVariant`,`iconVariant`,`snack`,`action`,`content`,`TransitionComponent`,`TransitionProps`,`transitionDuration`,`onEnter`,`onEntered`,`onEntering`,`onExit`,`onExited`,`onExiting`]),k=x.key,j=x.open,M=x.className,N=x.variant,F=x.content,I=x.action,L=x.ariaAttributes,R=x.anchorOrigin,z=x.message,B=x.TransitionComponent,V=x.TransitionProps,H=x.transitionDuration,U=_objectWithoutPropertiesLoose$2(x,[`persist`,`key`,`open`,`entered`,`requestClose`,`className`,`variant`,`content`,`action`,`ariaAttributes`,`anchorOrigin`,`message`,`TransitionComponent`,`TransitionProps`,`transitionDuration`,`onEnter`,`onEntered`,`onEntering`,`onExit`,`onExited`,`onExiting`]),W=_extends$2({},defaultIconVariants,{},b)[N],G=_extends$2({"aria-describedby":`notistack-snackbar`},objectMerge(L,h)),ee=B||T||DEFAULTS.TransitionComponent,te=objectMerge(H,D,DEFAULTS.transitionDuration),K=_extends$2({direction:getTransitionDirection(R)},objectMerge(V,E)),q=I||S;typeof q==`function`&&(q=q(k));var ne=F||C;typeof ne==`function`&&(ne=ne(k,x.message));var re=[`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`].reduce(function(e,t){var a;return _extends$2({},e,(a={},a[t]=createChainedFunction([n.snack[t],n[t]],n.snack.key),a))},{});return import_react$24.createElement(Collapse,{unmountOnExit:!0,timeout:175,in:s,onExited:re.onExited},import_react$24.createElement(StyledSnackbar,Object.assign({},O,U,{open:j,className:clsx(t.root,classes$1.wrappedRoot,t[transformer.toAnchorOrigin(R)]),onClose:u}),import_react$24.createElement(ee,Object.assign({appear:!0,in:j,timeout:te},K,{onExit:re.onExit,onExiting:re.onExiting,onExited:f,onEnter:re.onEnter,onEntering:re.onEntering,onEntered:createChainedFunction([re.onEntered,d])}),ne||import_react$24.createElement(SnackbarContent,Object.assign({},G,{role:`alert`,style:m,className:clsx(classes$1.contentRoot,classes$1[transformer.toVariant(N)],t[transformer.toVariant(N)],v,M,!y&&W&&classes$1.lessPadding)}),import_react$24.createElement(`div`,{id:G[`aria-describedby`],className:classes$1.message},y?null:W,z),q&&import_react$24.createElement(`div`,{className:classes$1.action},q)))))},collapse={container:`& > .MuiCollapse-container, & > .MuiCollapse-root`,wrapper:`& > .MuiCollapse-container > .MuiCollapse-wrapper, & > .MuiCollapse-root > .MuiCollapse-wrapper`},xsWidthMargin=16,componentName$2=`SnackbarContainer`,classes$2={root:componentName$2+`-root`,rootDense:componentName$2+`-rootDense`,top:componentName$2+`-top`,bottom:componentName$2+`-bottom`,left:componentName$2+`-left`,right:componentName$2+`-right`,center:componentName$2+`-center`},Root$1=styled$1(`div`)(function(e){var t,n,a,o,s,l,u=e.theme;return l={},l[`&.`+classes$2.root]=(t={boxSizing:`border-box`,display:`flex`,maxHeight:`100%`,position:`fixed`,zIndex:u.zIndex.snackbar,height:`auto`,width:`auto`,transition:`top 300ms ease 0ms, right 300ms ease 0ms, bottom 300ms ease 0ms, left 300ms ease 0ms, margin 300ms ease 0ms, max-width 300ms ease 0ms`,pointerEvents:`none`},t[collapse.container]={pointerEvents:`all`},t[collapse.wrapper]={padding:SNACKBAR_INDENTS.snackbar.default+`px 0px`,transition:`padding 300ms ease 0ms`},t.maxWidth=`calc(100% - `+SNACKBAR_INDENTS.view.default*2+`px)`,t[u.breakpoints.down(`sm`)]={width:`100%`,maxWidth:`calc(100% - `+xsWidthMargin*2+`px)`},t),l[`&.`+classes$2.rootDense]=(n={},n[collapse.wrapper]={padding:SNACKBAR_INDENTS.snackbar.dense+`px 0px`},n),l[`&.`+classes$2.top]={top:SNACKBAR_INDENTS.view.default-SNACKBAR_INDENTS.snackbar.default,flexDirection:`column`},l[`&.`+classes$2.bottom]={bottom:SNACKBAR_INDENTS.view.default-SNACKBAR_INDENTS.snackbar.default,flexDirection:`column-reverse`},l[`&.`+classes$2.left]=(a={left:SNACKBAR_INDENTS.view.default},a[u.breakpoints.up(`sm`)]={alignItems:`flex-start`},a[u.breakpoints.down(`sm`)]={left:xsWidthMargin+`px`},a),l[`&.`+classes$2.right]=(o={right:SNACKBAR_INDENTS.view.default},o[u.breakpoints.up(`sm`)]={alignItems:`flex-end`},o[u.breakpoints.down(`sm`)]={right:xsWidthMargin+`px`},o),l[`&.`+classes$2.center]=(s={left:`50%`,transform:`translateX(-50%)`},s[u.breakpoints.up(`sm`)]={alignItems:`center`},s),l}),SnackbarContainer$1=import_react$24.memo(function(e){var t=e.className,n=e.anchorOrigin,a=e.dense,o=_objectWithoutPropertiesLoose$2(e,[`className`,`anchorOrigin`,`dense`]),s=clsx(classes$2[n.vertical],classes$2[n.horizontal],classes$2.root,t,a&&classes$2.rootDense);return import_react$24.createElement(Root$1,Object.assign({className:s},o))}),SnackbarProvider=function(e){_inheritsLoose(t,e);function t(t){var n=e.call(this,t)||this;return n.enqueueSnackbar=function(e,t){t===void 0&&(t={});var a=t,o=a.key,s=a.preventDuplicate,l=_objectWithoutPropertiesLoose$2(a,[`key`,`preventDuplicate`]),u=isDefined(o),d=u?o:new Date().getTime()+Math.random(),f=merge(l,n.props,DEFAULTS),m=_extends$2({key:d},l,{message:e,open:!0,entered:!1,requestClose:!1,variant:f(`variant`),anchorOrigin:f(`anchorOrigin`),autoHideDuration:f(`autoHideDuration`)});return l.persist&&(m.autoHideDuration=void 0),n.setState(function(t){if(s===void 0&&n.props.preventDuplicate||s){var a=function(t){return u?t.key===o:t.message===e},l=t.queue.findIndex(a)>-1,d=t.snacks.findIndex(a)>-1;if(l||d)return t}return n.handleDisplaySnack(_extends$2({},t,{queue:[].concat(t.queue,[m])}))}),d},n.handleDisplaySnack=function(e){return e.snacks.length>=n.maxSnack?n.handleDismissOldest(e):n.processQueue(e)},n.processQueue=function(e){var t=e.queue,n=e.snacks;return t.length>0?_extends$2({},e,{snacks:[].concat(n,[t[0]]),queue:t.slice(1,t.length)}):e},n.handleDismissOldest=function(e){if(e.snacks.some(function(e){return!e.open||e.requestClose}))return e;var t=!1,a=!1;e.snacks.reduce(function(e,t){return e+(t.open&&t.persist?1:0)},0)===n.maxSnack&&(a=!0);var o=e.snacks.map(function(e){return!t&&(!e.persist||a)?(t=!0,e.entered?(e.onClose&&e.onClose(null,REASONS.MAXSNACK,e.key),n.props.onClose&&n.props.onClose(null,REASONS.MAXSNACK,e.key),_extends$2({},e,{open:!1})):_extends$2({},e,{requestClose:!0})):_extends$2({},e)});return _extends$2({},e,{snacks:o})},n.handleEnteredSnack=function(e,t,a){if(!isDefined(a))throw Error(`handleEnteredSnack Cannot be called with undefined key`);n.setState(function(e){return{snacks:e.snacks.map(function(e){return e.key===a?_extends$2({},e,{entered:!0}):_extends$2({},e)})}})},n.handleCloseSnack=function(e,t,a){if(n.props.onClose&&n.props.onClose(e,t,a),t!==REASONS.CLICKAWAY){var o=a===void 0;n.setState(function(e){var t=e.snacks,n=e.queue;return{snacks:t.map(function(e){return!o&&e.key!==a?_extends$2({},e):e.entered?_extends$2({},e,{open:!1}):_extends$2({},e,{requestClose:!0})}),queue:n.filter(function(e){return e.key!==a})}})}},n.closeSnackbar=function(e){var t=n.state.snacks.find(function(t){return t.key===e});isDefined(e)&&t&&t.onClose&&t.onClose(null,REASONS.INSTRUCTED,e),n.handleCloseSnack(null,REASONS.INSTRUCTED,e)},n.handleExitedSnack=function(e,t,a){var o=t||a;if(!isDefined(o))throw Error(`handleExitedSnack Cannot be called with undefined key`);n.setState(function(e){var t=n.processQueue(_extends$2({},e,{snacks:e.snacks.filter(function(e){return e.key!==o})}));return t.queue.length===0?t:n.handleDismissOldest(t)})},n.state={snacks:[],queue:[],contextValue:{enqueueSnackbar:n.enqueueSnackbar.bind(_assertThisInitialized$1(n)),closeSnackbar:n.closeSnackbar.bind(_assertThisInitialized$1(n))}},n}var n=t.prototype;return n.render=function(){var e=this,t=this.state.contextValue,n=this.props,a=n.iconVariant,o=n.dense,s=o===void 0?DEFAULTS.dense:o,l=n.hideIconVariant,u=l===void 0?DEFAULTS.hideIconVariant:l,d=n.domRoot,f=n.children,m=n.classes,h=m===void 0?{}:m,v=_objectWithoutPropertiesLoose$2(n,[`maxSnack`,`preventDuplicate`,`variant`,`anchorOrigin`,`iconVariant`,`dense`,`hideIconVariant`,`domRoot`,`children`,`classes`]),y=this.state.snacks.reduce(function(e,t){var n,a=originKeyExtractor(t.anchorOrigin),o=e[a]||[];return _extends$2({},e,(n={},n[a]=[].concat(o,[t]),n))},{}),b=Object.keys(y).map(function(t){var n=y[t];return import_react$24.createElement(SnackbarContainer$1,{key:t,dense:s,anchorOrigin:n[0].anchorOrigin,className:clsx(h.containerRoot,h[transformer.toContainerAnchorOrigin(t)])},n.map(function(t){return import_react$24.createElement(SnackbarItem,Object.assign({},v,{key:t.key,snack:t,dense:s,iconVariant:a,hideIconVariant:u,classes:omitContainerKeys(h),onClose:e.handleCloseSnack,onExited:createChainedFunction([e.handleExitedSnack,e.props.onExited]),onEntered:createChainedFunction([e.handleEnteredSnack,e.props.onEntered])}))}))});return import_react$24.createElement(SnackbarContext.Provider,{value:t},f,d?(0,import_react_dom.createPortal)(b,d):b)},_createClass$2(t,[{key:`maxSnack`,get:function(){return this.props.maxSnack||DEFAULTS.maxSnack}}]),t}(import_react$24.Component),withSnackbar=function(e){var t=import_react$24.forwardRef(function(t,n){return import_react$24.createElement(SnackbarContext.Consumer,null,function(a){return import_react$24.createElement(e,_extends$2({},t,{ref:n,enqueueSnackbar:a.enqueueSnackbar,closeSnackbar:a.closeSnackbar}))})});return(0,import_hoist_non_react_statics_cjs$1.default)(t,e),t},react_hotkeys_production_min_exports=__exportAll({GlobalHotKeys:()=>GlobalHotKeys$1$1,HotKeys:()=>HotKeys,IgnoreKeys:()=>IgnoreKeys$1,ObserveKeys:()=>ObserveKeys$1,configure:()=>configure$1,getApplicationKeyMap:()=>getApplicationKeyMap,recordKeyCombination:()=>recordKeyCombination,withHotKeys:()=>withHotKeys,withIgnoreKeys:()=>withIgnoreKeys,withObserveKeys:()=>withObserveKeys});function _typeof$4(e){return _typeof$4=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_typeof$4(e)}function _classCallCheck$1(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function _defineProperties$1(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,`value`in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass$1(e,t,n){return t&&_defineProperties$1(e.prototype,t),n&&_defineProperties$1(e,n),e}function _defineProperty$3(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _extends$1(){return _extends$1=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends$1.apply(this,arguments)}function _objectSpread$1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t],a=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(a=a.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),a.forEach(function(t){_defineProperty$3(e,t,n[t])})}return e}function _inherits(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _getPrototypeOf(e){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_getPrototypeOf(e)}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function isNativeReflectConstruct(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function _construct(e,t,n){return _construct=isNativeReflectConstruct()?Reflect.construct:function(e,t,n){var a=[null];a.push.apply(a,t);var o=new(Function.bind.apply(e,a));return n&&_setPrototypeOf(o,n.prototype),o},_construct.apply(null,arguments)}function _isNativeFunction(e){return Function.toString.call(e).indexOf(`[native code]`)!==-1}function _wrapNativeSuper(e){var t=typeof Map==`function`?new Map:void 0;return _wrapNativeSuper=function(e){if(e===null||!_isNativeFunction(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(n,e)},_wrapNativeSuper(e)}function _objectWithoutPropertiesLoose$1(e,t){if(e==null)return{};var n={},a=Object.keys(e),o,s;for(s=0;s<a.length;s++)o=a[s],!(t.indexOf(o)>=0)&&(n[o]=e[o]);return n}function _objectWithoutProperties$1(e,t){if(e==null)return{};var n=_objectWithoutPropertiesLoose$1(e,t),a,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)a=s[o],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function _assertThisInitialized(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function _possibleConstructorReturn(e,t){return t&&(typeof t==`object`||typeof t==`function`)?t:_assertThisInitialized(e)}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=_getPrototypeOf(e),e!==null););return e}function _get(e,t,n){return _get=typeof Reflect<`u`&&Reflect.get?Reflect.get:function(e,t,n){var a=_superPropBase(e,t);if(a){var o=Object.getOwnPropertyDescriptor(a,t);return o.get?o.get.call(n):o.value}},_get(e,t,n||e)}function _toConsumableArray$1(e){return _arrayWithoutHoles$1(e)||_iterableToArray$1(e)||_nonIterableSpread$1()}function _arrayWithoutHoles$1(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}}function _iterableToArray$1(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)===`[object Arguments]`)return Array.from(e)}function _nonIterableSpread$1(){throw TypeError(`Invalid attempt to spread non-iterable instance`)}function dictionaryFrom(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;return e.reduce(function(e,n){return e[n]=t||{value:n},e},{})}function resolveShiftedAlias(e){return ShiftedKeysDictionary[e]||[e.length===1?e.toUpperCase():e]}function hasKey(e,t){return e.hasOwnProperty(t)}function invertArrayDictionary(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(n,a){var o=e[a];return o.forEach(function(e){hasKey(n,e)||(n[e]=[]),n[e].push(a)}),t.includeOriginal&&(!hasKey(n,a)&&(n[a]=[]),n[a]=[].concat(_toConsumableArray$1(n[a]),_toConsumableArray$1(o))),n},{})}function resolveUnshiftedAlias(e){return UnshiftedKeysDictionary[e]||[e.length===1?e.toLowerCase():e]}function isString(e){return typeof e==`string`}function stripSuperfluousWhitespace(e){return isString(e)?e.trim().replace(/\s+/g,` `):e}function standardizeKeyName(e){var t=e.toLowerCase();return MousetrapToReactKeyNamesDictionary[t]||KeyShorthandDictionary[t]||(e.match(/^f\d+$/)?e.toUpperCase():e)}function isNonPrintableKeyName(e){return!!NonPrintableKeysDictionary[e]}function isCustomKeyName(e){return Configuration.option(`_customKeyNamesDict`)[e]}function isValidKey(e){return isNonPrintableKeyName(e)||String.fromCharCode(e.charCodeAt(0))===e||isCustomKeyName(e)}function normalizedCombinationId(e){return e.sort().join(`+`)}function parseCombination(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};return e.replace(/^\+|(\s|[^+]\+)\+/,`$1plus`).split(`+`).reduce(function(e,n){var a=standardizeKeyName(n);if(t.ensureValidKeys&&!isValidKey(a))throw new InvalidKeyNameError;return e[a]=!0,e},{})}function resolveUnaltedAlias(e){return UnaltedKeysDictionary[e]||[e]}function resolveAltedAlias(e){return AltedKeysDictionary[e]||[e]}function resolveUnaltShiftedAlias(e){return UnaltShiftedKeysDictionary[e]||resolveUnshiftedAlias(e)}function resolveAltShiftedAlias(e){return AltShiftedKeysDictionary[e]||[e]}function resolveKeyAlias(e){return KeyOSAndLayoutAliasesDictionary$1[e]||[e]}function applicableAliasFunctions(e){if(e.Shift)return e.Alt?[resolveAltShiftedAlias,resolveUnaltShiftedAlias]:[resolveShiftedAlias,resolveUnshiftedAlias];if(e.Alt)return[resolveAltedAlias,resolveUnaltedAlias];var t=function(e){return[e]};return[t,t]}function isUndefined(e){return e===void 0}function isObject(e){return!Array.isArray(e)&&_typeof$4(e)===`object`&&e!==null}function isEmpty$2(e){return isObject(e)?Object.keys(e).length===0:!e||e.length===0}function size(e){return isObject(e)?Object.keys(e).length:e.length}function buildKeyAliases(e){return Object.keys(e).reduce(function(t,n){return resolveKeyAlias(n).forEach(function(a){applicableAliasFunctions(e).forEach(function(e){e(a).forEach(function(e){(e!==n||n!==a)&&(t[e]=n)})})}),t},{})}function arrayFrom(e){return Array.isArray(e)?e:e?[e]:[]}function without(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[],n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=dictionaryFrom(arrayFrom(t));return Array.isArray(e)?e.reduce(function(e,t){return a[t]&&(n.stringifyFirst||a[t].value===t)||e.push(t),e},[]):isObject(e)?Object.keys(e).reduce(function(t,n){return a[n]||(t[n]=e[n]),t},{}):e}function removeAtIndex(e,t){return[].concat(_toConsumableArray$1(e.slice(0,t)),_toConsumableArray$1(e.slice(t+1)))}function normalizeActionOptions(e,t){if(isObject(e)){var n=e.sequence,a=e.action;return{keySequence:n,keyEventType:isUndefined(a)?KeyEventType[t.defaultKeyEvent]:KeyEventType[a]}}return{keySequence:e,keyEventType:KeyEventType[t.defaultKeyEvent]}}function indexFromEnd(e,t){return e[e.length-(t+1)]}function keyupIsHiddenByCmd(e){return e.length===1||hasKey(KeysWithKeyUpHiddenByCmd,e)}function canBeMatched(e,t){var n=size(t.keyDictionary);return Configuration.option(`allowCombinationSubmatches`)||keyUpIsBeingHidden(e)?e.getNumberOfKeys()>=n:e.getNumberOfKeys()===n}function keyUpIsBeingHidden(e){return!!e.isKeyStillPressed(`Meta`)&&e.some(function(e){return keyupIsHiddenByCmd(e)})}function copyAttributes(e,t,n){return n.forEach(function(n){hasKey(e,n)&&(t[n]=e[n])}),t}function describeKeyEventType(e){switch(parseInt(e,10)){case 0:return`keydown`;case 1:return`keypress`;default:return`keyup`}}function hasKeyPressEvent(e){return!isNonPrintableKeyName(e)}function stateFromEvent(e){return e.simulated?KeyEventState.simulated:KeyEventState.seen}function getEventCharCode(e){var t,n=e.keyCode;return`charCode`in e?(t=e.charCode,t===0&&n===13&&(t=13)):t=n,t===10&&(t=13),32<=t||t===13?t:0}function reactsGetEventKey(e){if(e.key){var t=normalizeKey[e.key]||e.key;if(t!==`Unidentified`)return t}if(e.type===`keypress`){var n=getEventCharCode(e);return n===13?`Enter`:String.fromCharCode(n)}return e.type===`keydown`||e.type===`keyup`?translateToKey[e.keyCode]||`Unidentified`:``}function getKeyName(e){var t=function(){var t=Configuration.option(`customKeyCodes`),n=e.keyCode||e.charCode;return hasKey(t,n)?t[n]:e.nativeEvent?e.key:reactsGetEventKey(e)}();return t===`+`?`plus`:t}function isCmdKey(e){return e===`Meta`}function contains(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{};return Array.isArray(e)||isString(e)?n.stringifyFirst?!isUndefined(e.find(function(e){return e.toString()===t.toString()})):e.indexOf(t)!==-1:isObject(e)?hasKey(e,t):n.stringifyFirst?e.toString()===t.toString():e===t}function capitalize$1(e){return e.replace(/\b\w/g,function(e){return e.toUpperCase()})}function normalizeEventName(e){return`${capitalize$1(e.slice(0,3))}${capitalize$1(e.slice(3))}`}function isFromFocusOnlyComponent(e){return!isUndefined(e)}function backwardsCompatibleContext(e,t){var n=t.deprecatedAPI,a=n.contextTypes,o=n.childContextTypes,s=t.newAPI.contextType;if(import_react.createContext===void 0)e.contextTypes=a,e.childContextTypes=o,e.prototype.getChildContext=function(){return this._childContext};else{var l=import_react.createContext(s);e.contextType=l,e.prototype._originalRender=e.prototype.render,e.prototype.render=function(){var e=this._originalRender();return e?import_react.createElement(l.Provider,{value:this._childContext},e):null}}return e}function withHotKeys(e){function t(e,t){return _objectSpread$1({},o[e]||{},t[e]||{})}function n(e){return t(`handlers`,e)}function a(e){return t(`keyMap`,e)}var o=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},s=function(t){function o(e){var t;return _classCallCheck$1(this,o),t=_possibleConstructorReturn(this,_getPrototypeOf(o).call(this,e)),t._handleFocus=t._handleFocus.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleBlur=t._handleBlur.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleKeyDown=t._handleKeyDown.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleKeyPress=t._handleKeyPress.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleKeyUp=t._handleKeyUp.bind(_assertThisInitialized(_assertThisInitialized(t))),t._componentIsFocused=t._componentIsFocused.bind(_assertThisInitialized(_assertThisInitialized(t))),t._id=KeyEventManager.getInstance().registerKeyMap(e.keyMap),t._childContext={hotKeysParentId:t._id},t}return _inherits(o,t),_createClass$1(o,[{key:`render`,value:function(){var t=this.props;t.keyMap,t.handlers,t.allowChanges,t.root;var n=_objectWithoutProperties$1(t,[`keyMap`,`handlers`,`allowChanges`,`root`]),a={onFocus:this._wrapFunction(`onFocus`,this._handleFocus),onBlur:this._wrapFunction(`onBlur`,this._handleBlur),tabIndex:Configuration.option(`defaultTabIndex`)};return this._shouldBindKeyListeners()&&(a.onKeyDown=this._handleKeyDown,a.onKeyPress=this._handleKeyPress,a.onKeyUp=this._handleKeyUp),import_react.createElement(e,_extends$1({hotKeys:a},n))}},{key:`_shouldBindKeyListeners`,value:function(){var e=a(this.props);return!isEmpty$2(e)||this.props.root||Configuration.option(`enableHardSequences`)&&this._handlersIncludeHardSequences(e,n(this.props))}},{key:`_handlersIncludeHardSequences`,value:function(e,t){return Object.keys(t).some(function(t){return!e[t]&&KeyCombinationSerializer.isValidKeySerialization(t)})}},{key:`_wrapFunction`,value:function(e,t){var n=this;return typeof this.props[e]==`function`?function(a){n.props[e](a),t(a)}:t}},{key:`_focusTreeIdsPush`,value:function(e){this._focusTreeIds||=[],this._focusTreeIds.push(e)}},{key:`_focusTreeIdsShift`,value:function(){this._focusTreeIds&&this._focusTreeIds.shift()}},{key:`_getFocusTreeId`,value:function(){if(this._focusTreeIds)return this._focusTreeIds[0]}},{key:`componentDidUpdate`,value:function(){var e=KeyEventManager.getInstance();if(e.reregisterKeyMap(this._id,this.props.keyMap),this._componentIsFocused()&&(this.props.allowChanges||!Configuration.option(`ignoreKeymapAndHandlerChangesByDefault`))){var t=this.props,n=t.keyMap,a=t.handlers;e.updateEnabledHotKeys(this._getFocusTreeId(),this._id,n,a,this._getComponentOptions())}}},{key:`_componentIsFocused`,value:function(){return!0===this._focused}},{key:`componentDidMount`,value:function(){var e=KeyEventManager.getInstance(),t=this.context.hotKeysParentId;e.registerComponentMount(this._id,t)}},{key:`_handleFocus`,value:function(){if(this.props.onFocus){var e;(e=this.props).onFocus.apply(e,arguments)}var t=KeyEventManager.getInstance().enableHotKeys(this._id,a(this.props),n(this.props),this._getComponentOptions());isUndefined(t)||this._focusTreeIdsPush(t),this._focused=!0}},{key:`componentWillUnmount`,value:function(){var e=KeyEventManager.getInstance();e.deregisterKeyMap(this._id),e.registerComponentUnmount(),this._handleBlur()}},{key:`_handleBlur`,value:function(){if(this.props.onBlur){var e;(e=this.props).onBlur.apply(e,arguments)}KeyEventManager.getInstance().disableHotKeys(this._getFocusTreeId(),this._id)||this._focusTreeIdsShift(),this._focused=!1}},{key:`_handleKeyDown`,value:function(e){KeyEventManager.getInstance().handleKeydown(e,this._getFocusTreeId(),this._id,this._getEventOptions())&&this._focusTreeIdsShift()}},{key:`_handleKeyPress`,value:function(e){KeyEventManager.getInstance().handleKeyPress(e,this._getFocusTreeId(),this._id,this._getEventOptions())&&this._focusTreeIdsShift()}},{key:`_handleKeyUp`,value:function(e){KeyEventManager.getInstance().handleKeyUp(e,this._getFocusTreeId(),this._id,this._getEventOptions())&&this._focusTreeIdsShift()}},{key:`_getComponentOptions`,value:function(){return{defaultKeyEvent:Configuration.option(`defaultKeyEvent`)}}},{key:`_getEventOptions`,value:function(){return{ignoreEventsCondition:Configuration.option(`ignoreEventsCondition`)}}}]),o}(import_react.PureComponent);return _defineProperty$3(s,`propTypes`,{keyMap:import_prop_types.default.object,handlers:import_prop_types.default.object,onFocus:import_prop_types.default.func,onBlur:import_prop_types.default.func,allowChanges:import_prop_types.default.bool,root:import_prop_types.default.bool}),backwardsCompatibleContext(s,{deprecatedAPI:{contextTypes:{hotKeysParentId:import_prop_types.default.number},childContextTypes:{hotKeysParentId:import_prop_types.default.number}},newAPI:{contextType:{hotKeysParentId:void 0}}})}function withHotKeysIgnoreOverride(e){var t,n,a=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{only:[],except:[]},o=2<arguments.length?arguments[2]:void 0;return n=t=function(t){function n(e){var t;return _classCallCheck$1(this,n),t=_possibleConstructorReturn(this,_getPrototypeOf(n).call(this,e)),t._handleKeyEvent=t._handleKeyEvent.bind(_assertThisInitialized(_assertThisInitialized(t))),t._reloadDictionaries=t._reloadDictionaries.bind(_assertThisInitialized(_assertThisInitialized(t))),t}return _inherits(n,t),_createClass$1(n,[{key:`render`,value:function(){var t=this.props;t.only,t.except;var n=_objectWithoutProperties$1(t,[`only`,`except`]),a={onKeyDown:this._handleKeyEvent,onKeyPress:this._handleKeyEvent,onKeyUp:this._handleKeyEvent,onFocus:this._reloadDictionaries};return import_react.createElement(e,_extends$1({hotKeys:a},n))}},{key:`_reloadDictionaries`,value:function(){var e=this.props,t=e.only,n=e.except;this._onlyDict=keyDictionary(t),this._exceptDict=keyDictionary(n)}},{key:`_shouldIgnoreEvent`,value:function(e){var t=e.key;return isEmpty$2(this._onlyDict)?!!isEmpty$2(this._exceptDict)||!hasKey(this._exceptDict,t):isEmpty$2(this._exceptDict)?hasKey(this._onlyDict,t):hasKey(this._onlyDict,t)&&!hasKey(this._exceptDict,t)}},{key:`_handleKeyEvent`,value:function(e){this._shouldIgnoreEvent(e)&&KeyEventManager.getInstance()[o](e)}}]),n}(import_react.PureComponent),_defineProperty$3(t,`propTypes`,{only:import_prop_types.default.oneOfType([import_prop_types.default.string,import_prop_types.default.arrayOf(import_prop_types.default.string)]),except:import_prop_types.default.oneOfType([import_prop_types.default.string,import_prop_types.default.arrayOf(import_prop_types.default.string)])}),_defineProperty$3(t,`defaultProps`,a),n}function keyDictionary(e){return arrayFrom(e).reduce(function(e,t){var n=standardizeKeyName(t);if(!isValidKey(n))throw new InvalidKeyNameError(t);return[resolveAltShiftedAlias,resolveUnaltShiftedAlias,resolveShiftedAlias,resolveUnshiftedAlias,resolveAltedAlias,resolveUnaltedAlias].forEach(function(t){e[t(n)]=!0}),e},{})}function withIgnoreKeys(e){return withHotKeysIgnoreOverride(e,1<arguments.length&&arguments[1]!==void 0?arguments[1]:{only:[],except:[]},`ignoreEvent`)}function withObserveKeys(e){return withHotKeysIgnoreOverride(e,1<arguments.length&&arguments[1]!==void 0?arguments[1]:{only:[],except:[]},`observeIgnoredEvents`)}function configure$1(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};Configuration.init(e)}function getApplicationKeyMap(){return KeyEventManager.getInstance().getApplicationKeyMap()}function recordKeyCombination(e){return KeyEventManager.getInstance().addKeyCombinationListener(e)}var import_prop_types,import_react,_defaultConfiguration,_configuration,Configuration,Logger,KeyEventType,ModifierFlagsDictionary,ShiftedKeysDictionary,UnshiftedKeysDictionary,KeyOSAndLayoutAliasesDictionary$1,MousetrapToReactKeyNamesDictionary,KeyShorthandDictionary,translateToKey,NonPrintableKeysDictionary,InvalidKeyNameError,KeySequenceParser,AltedKeysDictionary,UnaltedKeysDictionary,AltShiftedKeysDictionary,UnaltShiftedKeysDictionary,KeyCombinationSerializer,KeyEventSequenceIndex,KeyEventState,KeyEventStateArrayManager,KeyCombination,KeyHistory,Registry,ComponentTree,ComponentOptionsListIterator,ComponentOptionsList,KeysWithKeyUpHiddenByCmd,i,KeyCombinationMatcher,KeyHistoryMatcher,ActionResolver,SEQUENCE_ATTRIBUTES,KEYMAP_ATTRIBUTES,AbstractKeyEventStrategy,KeyEventCounter,normalizeKey,EventResponse,EventPropagator,FocusOnlyKeyEventStrategy,GlobalKeyEventStrategy,KeyEventManager,HotKeys,GlobalHotKeys$2,GlobalHotKeys$1$1,IgnoreKeys$1,ObserveKeys$1,init_react_hotkeys_production_min=__esmMin((()=>{for(import_prop_types=__toESM(require_prop_types()),import_react=__toESM(require_react()),_defaultConfiguration={logLevel:`warn`,defaultKeyEvent:`keydown`,defaultComponent:`div`,defaultTabIndex:`-1`,ignoreTags:[`input`,`select`,`textarea`],enableHardSequences:!1,ignoreKeymapAndHandlerChangesByDefault:!0,ignoreEventsCondition:function(e){var t=e.target;if(t&&t.tagName){var n=t.tagName.toLowerCase();return Configuration.option(`_ignoreTagsDict`)[n]||t.isContentEditable}return!1},ignoreRepeatedEventsWhenKeyHeldDown:!0,simulateMissingKeyPressEvents:!0,stopEventPropagationAfterHandling:!0,stopEventPropagationAfterIgnoring:!0,allowCombinationSubmatches:!1,customKeyCodes:{}},_configuration=_objectSpread$1({},_defaultConfiguration),_configuration._ignoreTagsDict=dictionaryFrom(_configuration.ignoreTags,!0),Configuration=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`init`,value:function(e){var t=this,n=e.ignoreTags,a=e.customKeyCodes;n&&(e._ignoreTagsDict=dictionaryFrom(e.ignoreTags)),a&&(e._customKeyNamesDict=dictionaryFrom(Object.values(e.customKeyCodes))),[`verbose`,`debug`,`info`].indexOf(e.logLevel)!==-1&&console.warn(`React HotKeys: You have requested log level '${e.logLevel}' but for performance reasons, logging below severity level 'warning' is disabled in production. Please use the development build for complete logs.`),Object.keys(e).forEach(function(n){t.set(n,e[n])})}},{key:`set`,value:function(e,t){_configuration[e]=t}},{key:`reset`,value:function(e){_configuration[e]=_defaultConfiguration[e]}},{key:`option`,value:function(e){return _configuration[e]}}]),e}(),Logger=function(){function e(){var t=this,n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:`warn`;if(_classCallCheck$1(this,e),_defineProperty$3(this,`verbose`,this.noop),_defineProperty$3(this,`debug`,this.noop),_defineProperty$3(this,`info`,this.noop),_defineProperty$3(this,`warn`,this.noop),_defineProperty$3(this,`error`,this.noop),this.logLevel=this.constructor.levels[n],this.logLevel>=this.constructor.levels.error)this.error=console.error;else return;if(this.logLevel>=this.constructor.levels.warn)this.warn=console.warn;else return;[`info`,`debug`,`verbose`].some(function(e){return!(t.logLevel>=t.constructor.levels[e])||(t[e]=console.log,!1)})}return _createClass$1(e,[{key:`noop`,value:function(){}}]),e}(),_defineProperty$3(Logger,`logIcons`,[`📕`,`📗`,`📘`,`📙`]),_defineProperty$3(Logger,`componentIcons`,[`🔺`,`⭐️`,`🔷`,`🔶`,`⬛️`]),_defineProperty$3(Logger,`eventIcons`,[`❤️`,`💚`,`💙`,`💛`,`💜`,`🧡`]),_defineProperty$3(Logger,`levels`,{none:0,error:1,warn:2,info:3,debug:4,verbose:5}),KeyEventType={keydown:0,keypress:1,keyup:2},ModifierFlagsDictionary={Shift:[`shiftKey`],Meta:[`metaKey`],Control:[`ctrlKey`],Alt:[`altKey`]},ShiftedKeysDictionary={"`":[`~`],1:[`!`],2:[`@`,`"`],3:[`#`,`£`],4:[`$`],5:[`%`],6:[`^`],7:[`&`],8:[`*`],9:[`(`],0:[`)`],"-":[`_`],"=":[`plus`],";":[`:`],"'":[`"`,`@`],",":[`<`],".":[`>`],"/":[`?`],"\\":[`|`],"[":[`{`],"]":[`}`],"#":[`~`]},UnshiftedKeysDictionary=invertArrayDictionary(ShiftedKeysDictionary),KeyOSAndLayoutAliasesDictionary$1=invertArrayDictionary({},{includeOriginal:!0}),MousetrapToReactKeyNamesDictionary={tab:`Tab`,capslock:`CapsLock`,shift:`Shift`,meta:`Meta`,alt:`Alt`,ctrl:`Control`,space:` `,spacebar:` `,escape:`Escape`,esc:`Escape`,left:`ArrowLeft`,right:`ArrowRight`,up:`ArrowUp`,down:`ArrowDown`,return:`Enter`,del:`Delete`,command:`Meta`,option:`Alt`,enter:`Enter`,backspace:`Backspace`,ins:`Insert`,pageup:`PageUp`,pagedown:`PageDown`,end:`End`,home:`Home`,contextmenu:`ContextMenu`,numlock:`Clear`},KeyShorthandDictionary={cmd:`Meta`},translateToKey={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},NonPrintableKeysDictionary=dictionaryFrom(Object.values(translateToKey),!0),InvalidKeyNameError=function(e){function t(){var e,n;_classCallCheck$1(this,t);var a=[...arguments];return n=_possibleConstructorReturn(this,(e=_getPrototypeOf(t)).call.apply(e,[this].concat(a))),_defineProperty$3(_assertThisInitialized(_assertThisInitialized(n)),`name`,`InvalidKeyNameError`),n}return _inherits(t,e),t}(_wrapNativeSuper(Error)),KeySequenceParser=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`parse`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=stripSuperfluousWhitespace(e).split(` `);try{var a=n.slice(0,n.length-1),o=n[n.length-1],s=a.map(function(e){var n=parseCombination(e,t);return normalizedCombinationId(Object.keys(n))}).join(` `),l=parseCombination(o,t),u={id:normalizedCombinationId(Object.keys(l)),keyDictionary:l,keyEventType:t.keyEventType,size:Object.keys(l).length};return{sequence:{prefix:s,size:a.length+1},combination:u}}catch{return{sequence:null,combination:null}}}}]),e}(),AltedKeysDictionary={"`":["`"],1:[`¡`],2:[`™`],3:[`£`],4:[`¢`],5:[`∞`],6:[`§`],7:[`¶`],8:[`•`],9:[`ª`],0:[`º`],"-":[`–`],"=":[`≠`],a:[`å`],b:[`∫`],c:[`ç`],d:[`∂`],e:[`´`],f:[`ƒ`],g:[`©`],h:[`˙`],i:[`ˆ`],j:[`∆`],k:[`˚`],l:[`¬`],m:[`µ`],n:[`˜`],o:[`ø`],p:[`π`],q:[`œ`],r:[`®`],s:[`ß`],t:[`†`],u:[`¨`],v:[`√`],w:[`∑`],x:[`≈`],y:[`¥`],z:[`Ω`],"[":[`“`],"]":[`‘`],"\\":[`«`],"'":[`æ`],";":[`…`],",":[`≤`],".":[`≥`],"/":[`÷`]},UnaltedKeysDictionary=invertArrayDictionary(AltedKeysDictionary),AltShiftedKeysDictionary={"`":["`"],1:[`⁄`],2:[`€`],3:[`‹`],4:[`›`],5:[`fi`],6:[`fl`],7:[`‡`],8:[`°`],9:[`·`],0:[`‚`],"-":[`—`],"=":[`±`],a:[`Å`],b:[`ı`],c:[`Ç`],d:[`Î`],e:[`´`],f:[`Ï`],g:[`˝`],h:[`Ó`],i:[`ˆ`],j:[`Ô`],k:[``],l:[`Ò`],m:[`Â`],n:[`˜`],o:[`Ø`],p:[`π`],q:[`Œ`],r:[`‰`],s:[`Í`],t:[`Î`],u:[`¨`],v:[`◊`],w:[`„`],x:[`˛`],y:[`Á`],z:[`¸`],"[":[`”`],"]":[`’`],"\\":[`»`],"'":[`Æ`],";":[`Ú`],",":[`¯`],".":[`˘`]},UnaltShiftedKeysDictionary=invertArrayDictionary(AltShiftedKeysDictionary),KeyCombinationSerializer=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`serialize`,value:function(e){var t=e.Shift,n=e.Alt,a={};return Object.keys(e).sort().forEach(function(e){var o=[];if(t)if(n){var s=resolveUnaltShiftedAlias(e),l=resolveAltShiftedAlias(e);o=[].concat(_toConsumableArray$1(o),[e],_toConsumableArray$1(s),_toConsumableArray$1(l))}else{var u=resolveUnshiftedAlias(e),d=resolveShiftedAlias(e);o=[].concat(_toConsumableArray$1(o),[e],_toConsumableArray$1(u),_toConsumableArray$1(d))}else if(n){var f=resolveUnaltedAlias(e),m=resolveAltedAlias(e);o=[].concat(_toConsumableArray$1(o),[e],_toConsumableArray$1(f),_toConsumableArray$1(m))}else{o.push(e);var h=KeyOSAndLayoutAliasesDictionary$1[e];h&&(o=[].concat(_toConsumableArray$1(o),_toConsumableArray$1(h)))}var v=Object.keys(a);0<v.length?v.forEach(function(e){o.forEach(function(t){a[e+`+${t}`]=_objectSpread$1({},a[e],_defineProperty$3({},t,!0))}),delete a[e]}):o.forEach(function(e){a[e]=_defineProperty$3({},e,!0)})}),Object.values(a).map(function(e){return Object.keys(e).sort().join(`+`)})}},{key:`isValidKeySerialization`,value:function(e){return 0<e.length&&!!KeySequenceParser.parse(e,{ensureValidKeys:!0}).combination}}]),e}(),KeyEventSequenceIndex={previous:0,current:1},KeyEventState={unseen:0,seen:1,simulated:2},KeyEventStateArrayManager=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`newRecord`,value:function(e,t){var n=[KeyEventState.unseen,KeyEventState.unseen,KeyEventState.unseen];if(!isUndefined(e))for(var a=0;a<=e;a++)n[a]=t;return n}},{key:`setBit`,value:function(e,t,n){return e[t]=n,e}},{key:`clone`,value:function(e){for(var t=this.newRecord(),n=0;n<e.length;n++)t[n]=e[n];return t}}]),e}(),KeyCombination=function(){function e(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};_classCallCheck$1(this,e),this._keys=t,this._includesKeyUp=!1,this._update()}return _createClass$1(e,[{key:`getIds`,value:function(){return this._ids}},{key:`getKeyAliases`,value:function(){return this._keyAliases}},{key:`getNormalizedKeyName`,value:function(e){return this._keys[e]?e:this._keyAliases[e]||e}},{key:`getNumberOfKeys`,value:function(){return size(this._keys)}},{key:`any`,value:function(){return 0<Object.keys(this._getKeyStates()).length}},{key:`isEnding`,value:function(){return this._includesKeyUp}},{key:`hasEnded`,value:function(){return isEmpty$2(this.keysStillPressedDict())}},{key:`addKey`,value:function(e,t){this._setKeyState(e,[KeyEventStateArrayManager.newRecord(),KeyEventStateArrayManager.newRecord(KeyEventType.keydown,t)])}},{key:`setKeyState`,value:function(e,t,n){var a=this._getKeyState(e);if(this.isKeyIncluded(e)){var o=KeyEventStateArrayManager.clone(a[1]),s=KeyEventStateArrayManager.clone(o);KeyEventStateArrayManager.setBit(s,t,n),this._setKeyState(e,[o,s])}else this.addKey(e,n);t===KeyEventType.keyup&&(this._includesKeyUp=!0)}},{key:`forEachKey`,value:function(e){return Object.keys(this._keys).forEach(e)}},{key:`some`,value:function(e){return Object.keys(this._keys).some(e)}},{key:`getKeyDictionary`,value:function(){return dictionaryFrom(Object.keys(this._getKeyStates()),!0)}},{key:`keysStillPressedDict`,value:function(){var e=this;return Object.keys(this._keys).reduce(function(t,n){return e.isKeyStillPressed(n)&&(t[n]=e._getKeyState(n)),t},{})}},{key:`isKeyIncluded`,value:function(e){return!!this._getKeyState(e)}},{key:`isKeyStillPressed`,value:function(e){return this.isEventTriggered(e,KeyEventType.keypress)&&!this.isKeyReleased(e)}},{key:`isKeyReleased`,value:function(e){return this.isEventTriggered(e,KeyEventType.keyup)}},{key:`isEventTriggered`,value:function(e,t){return this._getKeyStateType(e,KeyEventSequenceIndex.current,t)}},{key:`wasEventPreviouslyTriggered`,value:function(e,t){return this._getKeyStateType(e,KeyEventSequenceIndex.previous,t)}},{key:`isKeyPressSimulated`,value:function(e){return this._isKeyEventSimulated(e,KeyEventType.keypress)}},{key:`isKeyUpSimulated`,value:function(e){return this._isKeyEventSimulated(e,KeyEventType.keyup)}},{key:`describe`,value:function(){return this.getIds()[0]}},{key:`toJSON`,value:function(){return{keys:this._getKeyStates(),ids:this.getIds(),keyAliases:this.getKeyAliases()}}},{key:`_getKeyStateType`,value:function(e,t,n){var a=this._getKeyState(e);return a&&a[t][n]}},{key:`_update`,value:function(){this._ids=KeyCombinationSerializer.serialize(this._keys),this._keyAliases=buildKeyAliases(this._keys)}},{key:`_isKeyEventSimulated`,value:function(e,t){return this.isEventTriggered(e,t)===KeyEventState.simulated}},{key:`_getKeyStates`,value:function(){return this._keys}},{key:`_getKeyState`,value:function(e){var t=this._keys[e];if(t)return t;var n=this._keyAliases[e];if(n)return this._keys[n]}},{key:`_setKeyState`,value:function(e,t){var n=this.getNormalizedKeyName(e);this._keys[n]=t,this._update()}}]),e}(),KeyHistory=function(){function e(t){var n=t.maxLength,a=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;_classCallCheck$1(this,e),this._records=[],this._maxLength=n,a?this._push(a):this._push(new KeyCombination)}return _createClass$1(e,[{key:`getMostRecentCombinations`,value:function(e){return this._records.slice(-e,-1)}},{key:`any`,value:function(){return this._records.some(function(e){return e.any()})}},{key:`getLength`,value:function(){return this._records.length}},{key:`getCurrentCombination`,value:function(){return this._records[this.getLength()-1]}},{key:`addKeyToCurrentCombination`,value:function(e,t,n){this._ensureInitialKeyCombination(),this.getCurrentCombination().setKeyState(e,t,n)}},{key:`setMaxLength`,value:function(e){this._maxLength=e,this._trimHistory()}},{key:`startNewKeyCombination`,value:function(e,t){this._ensureInitialKeyCombination();var n=new KeyCombination(this.getCurrentCombination().keysStillPressedDict());n.addKey(e,t),this._push(n)}},{key:`toJSON`,value:function(){return this._records.map(function(e){return e.toJSON()})}},{key:`_ensureInitialKeyCombination`,value:function(){this.getLength()===0&&this._push(new KeyCombination)}},{key:`_push`,value:function(e){this._trimHistory(),this._records.push(e)}},{key:`_trimHistory`,value:function(){for(;this.getLength()>this._maxLength;)this._shift()}},{key:`_shift`,value:function(){this._records.shift()}}]),e}(),Registry=function(){function e(){_classCallCheck$1(this,e),this._registry={}}return _createClass$1(e,[{key:`get`,value:function(e){return this._registry[e]}},{key:`set`,value:function(e,t){this._registry[e]=t}},{key:`remove`,value:function(e){delete this._registry[e]}},{key:`toJSON`,value:function(){return this._registry}}]),e}(),ComponentTree=function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`add`,value:function(e,n){_get(_getPrototypeOf(t.prototype),`set`,this).call(this,e,{childIds:[],parentId:null,keyMap:n})}},{key:`update`,value:function(e,n){var a=_get(_getPrototypeOf(t.prototype),`get`,this).call(this,e);_get(_getPrototypeOf(t.prototype),`set`,this).call(this,e,_objectSpread$1({},a,{keyMap:n}))}},{key:`setParent`,value:function(e,t){this.get(e).parentId=t,this._addChildId(t,e)}},{key:`remove`,value:function(e){var n=this._getParentId(e);this._removeChildId(n,e),_get(_getPrototypeOf(t.prototype),`remove`,this).call(this,e)}},{key:`_getParentId`,value:function(e){var t=this.get(e);return t&&t.parentId}},{key:`_addChildId`,value:function(e,t){this.get(e).childIds.push(t)}},{key:`_removeChildId`,value:function(e,t){var n=this.get(e);n&&(n.childIds=without(n.childIds,t))}}]),t}(Registry),ComponentOptionsListIterator=function(){function e(t){_classCallCheck$1(this,e),this._list=t,this._position=-1}return _createClass$1(e,[{key:`getPosition`,value:function(){return this._position}},{key:`getComponent`,value:function(){return this._list.getAtPosition(this.getPosition())}},{key:`next`,value:function(){return this.getPosition()+1<this._list.getLength()?(this._position++,this.getComponent()):null}}]),e}(),ComponentOptionsList=function(){function e(){_classCallCheck$1(this,e),this._list=[],this._idToIndex={},this._longestSequence=1,this._longestSequenceComponentId=null,this._keyMapEventRecord=KeyEventStateArrayManager.newRecord()}return _createClass$1(e,[{key:`getNewIterator`,value:function(){return new ComponentOptionsListIterator(this)}},{key:`add`,value:function(e,t,n,a){if(this.containsId(e))return this.update(e,t,n,a);var o=this._build(e,t,n,a);this._list.push(o);var s=this._getLastIndex();return this._idToIndex[e]=s}},{key:`containsId`,value:function(e){return!!this.get(e)}},{key:`get`,value:function(e){return this.getAtPosition(this.getIndexById(e))}},{key:`getIndexById`,value:function(e){return this._idToIndex[e]}},{key:`update`,value:function(e,t,n,a){var o=this._isUpdatingComponentWithLongestSequence(e),s=this.getLongestSequence(),l=this._build(e,t,n,a);o&&l.sequenceLength!==s&&(l.sequenceLength>s?this._longestSequence=l.sequenceLength:this._recalculateLongestSequence()),this._list[this.getIndexById(e)]=l}},{key:`remove`,value:function(e){var t=this._isUpdatingComponentWithLongestSequence(e);this.removeAtPosition(this.getIndexById(e)),t&&this._recalculateLongestSequence()}},{key:`any`,value:function(){return this.getLength()!==0}},{key:`isRoot`,value:function(e){return this.getIndexById(e)>=this.getLength()-1}},{key:`getLongestSequence`,value:function(){return this._longestSequence}},{key:`anyActionsForEventType`,value:function(e){return!!this._keyMapEventRecord[e]}},{key:`getLength`,value:function(){return this._list.length}},{key:`getAtPosition`,value:function(e){return this._list[e]}},{key:`removeAtPosition`,value:function(e){this._list=removeAtIndex(this._list,e);for(var t=e;t<this.getLength();)this._idToIndex[this.getAtPosition(t).componentId]=t,t++}},{key:`toJSON`,value:function(){return this._list}},{key:`_getLastIndex`,value:function(){return this.getLength()-1}},{key:`_build`,value:function(e,t,n,a){var o=this._applyHardSequences(t,n),s=o.keyMap,l=o.handlers;return{actions:this._buildActionDictionary(_objectSpread$1({},t,s),a,e),handlers:l,componentId:e,options:a}}},{key:`_isUpdatingComponentWithLongestSequence`,value:function(e){return e===this._getLongestSequenceComponentId()}},{key:`_getLongestSequenceComponentId`,value:function(){return this._longestSequenceComponentId}},{key:`_recalculateLongestSequence`,value:function(){for(var e=this.getNewIterator();e.next();){var t=e.getComponent(),n=t.longestSequence,a=t.componentId;n>this.getLongestSequence()&&(this._longestSequenceComponentId=a,this._longestSequence=n)}}},{key:`_applyHardSequences`,value:function(e,t){return Configuration.option(`enableHardSequences`)?Object.keys(t).reduce(function(n,a){return!e[a]&&KeyCombinationSerializer.isValidKeySerialization(a)&&(n.keyMap[a]=a),n.handlers[a]=t[a],n},{keyMap:{},handlers:{}}):{keyMap:e,handlers:t}}},{key:`_buildActionDictionary`,value:function(e,t,n){var a=this;return Object.keys(e).reduce(function(o,s){var l=e[s];return function(){return isObject(l)&&hasKey(l,`sequences`)?arrayFrom(l.sequences):arrayFrom(l)}().forEach(function(e){var l=normalizeActionOptions(e,t),u=l.keySequence,d=l.keyEventType;a._addActionOptions(o,n,s,u,d)}),o},{})}},{key:`_addActionOptions`,value:function(e,t,n,a,o){var s=KeySequenceParser.parse(a,{keyEventType:o}),l=s.sequence,u=s.combination;l.size>this.getLongestSequence()&&(this._longestSequence=l.size,this._longestSequenceComponentId=t),this._keyMapEventRecord[o]=KeyEventState.seen,e[n]||(e[n]=[]),e[n].push(_objectSpread$1({prefix:l.prefix,actionName:n,sequenceLength:l.size},u))}}]),e}(),KeysWithKeyUpHiddenByCmd={Enter:!0,Backspace:!0,ArrowRight:!0,ArrowLeft:!0,ArrowUp:!0,ArrowDown:!0,CapsLock:!0},i=1;13>i;i++)KeysWithKeyUpHiddenByCmd[`F${i}`]=!0;KeyCombinationMatcher=function(){function e(){_classCallCheck$1(this,e),this._actionConfigs={},this._order=null}return _createClass$1(e,[{key:`addMatch`,value:function(e,t){if(this._includesMatcherForCombination(e.id)){var n=e.keyEventType,a=e.actionName,o=e.id;this._addHandlerToActionConfig(o,{keyEventType:n,actionName:a,handler:t})}else this._addNewActionConfig(e,t)}},{key:`findMatch`,value:function(e,t,n){this._order||this._setOrder();var a=!0,o=!1,s=void 0;try{for(var l,u=this._order[Symbol.iterator]();!(a=(l=u.next()).done);a=!0){var d=l.value,f=this._actionConfigs[d];if(this._matchesActionConfig(e,t,n,f))return f}}catch(e){o=!0,s=e}finally{try{a||u.return==null||u.return()}finally{if(o)throw s}}return null}},{key:`toJSON`,value:function(){return{actionConfigs:this._actionConfigs,order:this._order}}},{key:`_matchesActionConfig`,value:function(e,t,n,a){if(!canBeMatched(e,a)||!a.events[n])return!1;var o=!1;return Object.keys(a.keyDictionary).every(function(a){return!!e.isEventTriggered(a,n)&&(t&&t===e.getNormalizedKeyName(a)&&(o=!e.wasEventPreviouslyTriggered(a,n)),!0)})&&o}},{key:`_setOrder`,value:function(){var e=Object.values(this._actionConfigs).reduce(function(e,t){var n=t.id,a=t.size;return e[a]||(e[a]=[]),e[a].push(n),e},{});this._order=Object.keys(e).sort(function(e,t){return t-e}).reduce(function(t,n){return t.concat(e[n])},[])}},{key:`_addNewActionConfig`,value:function(e,t){var n=e.prefix,a=e.sequenceLength,o=e.id,s=e.keyDictionary,l=e.size,u=e.keyEventType,d=e.actionName;this._setCombinationMatcher(o,{prefix:n,sequenceLength:a,id:o,keyDictionary:s,size:l,events:{}}),this._addHandlerToActionConfig(o,{keyEventType:u,actionName:d,handler:t})}},{key:`_addHandlerToActionConfig`,value:function(e,t){var n=t.keyEventType,a=t.actionName,o=t.handler,s=this._getCombinationMatcher(e);this._setCombinationMatcher(e,_objectSpread$1({},s,{events:_objectSpread$1({},s.events,_defineProperty$3({},n,{actionName:a,handler:o}))}))}},{key:`_setCombinationMatcher`,value:function(e,t){this._actionConfigs[e]=t}},{key:`_getCombinationMatcher`,value:function(e){return this._actionConfigs[e]}},{key:`_includesMatcherForCombination`,value:function(e){return!!this._getCombinationMatcher(e)}}]),e}(),KeyHistoryMatcher=function(){function e(){_classCallCheck$1(this,e),this._combinationMatchers={},this._eventRecord=KeyEventStateArrayManager.newRecord()}return _createClass$1(e,[{key:`addMatch`,value:function(e,t){this._getOrCreateCombinationMatcher(e.prefix).addMatch(e,t),KeyEventStateArrayManager.setBit(this._eventRecord,e.keyEventType,KeyEventState.seen),(!this._longestSequence||this._longestSequence<e.sequenceLength)&&(this._longestSequence=e.sequenceLength)}},{key:`findMatch`,value:function(e,t,n){var a=this._findCombinationMatcher(e);return a?a.findMatch(e.getCurrentCombination(),e.getCurrentCombination().getNormalizedKeyName(t),n):null}},{key:`hasMatchesForEventType`,value:function(e){return!!this._eventRecord[e]}},{key:`getLongestSequence`,value:function(){return this._longestSequence}},{key:`toJSON`,value:function(){var e=this;return Object.keys(this._combinationMatchers).reduce(function(t,n){return t[n]=e._combinationMatchers[n].toJSON(),t},{})}},{key:`_getOrCreateCombinationMatcher`,value:function(e){return this._combinationMatchers[e]||(this._combinationMatchers[e]=new KeyCombinationMatcher),this._combinationMatchers[e]}},{key:`_findCombinationMatcher`,value:function(e){var t=e.getMostRecentCombinations(this.getLongestSequence());if(t.length===0)return this._combinationMatchers[``];for(var n=t.map(function(e){return e.getIds()}),a=n.map(function(e){return e.length}),o=Array(n.length).fill(0),s=!1;!s;){var l=o.map(function(e,t){return n[t][e]}).join(` `);if(this._combinationMatchers[l])return this._combinationMatchers[l];for(var u=0,d=!0;d&&u<o.length;){var f=(indexFromEnd(o,u)+1)%(indexFromEnd(a,u)||1);o[o.length-(u+1)]=f,d=f==0,d&&u++}s=u===o.length}}}]),e}(),ActionResolver=function(){function e(t){_classCallCheck$1(this,e),this._keyMapMatchers=[],this._unmatchedHandlerStatus=[],this._handlersDictionary={},this._keySequencesDictionary={};for(var n=t.getNewIterator();n.next();){var a=n.getComponent().handlers;this._unmatchedHandlerStatus.push([Object.keys(a).length,{}]),this._keyMapMatchers.push(new KeyHistoryMatcher)}this._componentList=t,this._componentListIterator=t.getNewIterator()}return _createClass$1(e,[{key:`getKeyHistoryMatcher`,value:function(e){if(this._componentHasUnmatchedHandlers(e))for(;this._componentListIterator.next();)this._addHandlersFromComponent(),this._addActionsFromComponent();return this._getKeyHistoryMatcher(e)}},{key:`componentHasActionsBoundToEventType`,value:function(e,t){return this.getKeyHistoryMatcher(e).hasMatchesForEventType(t)}},{key:`findMatchingKeySequenceInComponent`,value:function(e,t,n,a){return this.componentHasActionsBoundToEventType(e,a)?this.getKeyHistoryMatcher(e).findMatch(t,n,a):null}},{key:`_getKeyHistoryMatcher`,value:function(e){return this._keyMapMatchers[e]}},{key:`_addActionsFromComponent`,value:function(){var e=this,t=this._componentListIterator.getComponent().actions;Object.keys(t).forEach(function(n){var a=e._getHandlers(n);if(a){var o=a[0],s=e._componentList.getAtPosition(o).handlers[n],l=e._getKeyHistoryMatcher(o);t[n].forEach(function(t){var n=[t.prefix,t.id].join(` `);e._isClosestHandlerFound(n,t)||(l.addMatch(t,s),e._addKeySequence(n,[o,t.keyEventType]))}),a.forEach(function(t){var a=e._getUnmatchedHandlerStatus(t);a[1][n]||(a[1][n]=!0,a[0]--)})}})}},{key:`_getHandlers`,value:function(e){return this._handlersDictionary[e]}},{key:`_addHandlersFromComponent`,value:function(){var e=this,t=this._componentListIterator.getComponent().handlers;Object.keys(t).forEach(function(t){e._addHandler(t)})}},{key:`_addHandler`,value:function(e){this._handlersDictionary[e]||(this._handlersDictionary[e]=[]),this._handlersDictionary[e].push(this._componentListIterator.getPosition())}},{key:`_addKeySequence`,value:function(e,t){this._keySequencesDictionary[e]||(this._keySequencesDictionary[e]=[]),this._keySequencesDictionary[e].push(t)}},{key:`_componentHasUnmatchedHandlers`,value:function(e){return 0<this._getUnmatchedHandlerStatus(e)[0]}},{key:`_getUnmatchedHandlerStatus`,value:function(e){return this._unmatchedHandlerStatus[e]}},{key:`_isClosestHandlerFound`,value:function(e,t){return this._keySequencesDictionary[e]&&this._keySequencesDictionary[e].some(function(e){return e[1]===t.keyEventType})}}]),e}(),SEQUENCE_ATTRIBUTES=[`sequence`,`action`],KEYMAP_ATTRIBUTES=[`name`,`description`,`group`],AbstractKeyEventStrategy=function(){function e(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},n=1<arguments.length?arguments[1]:void 0;_classCallCheck$1(this,e),this.logger=t.logger||new Logger(`warn`),this.componentId=-1,this.keyEventManager=n,this._componentTree=new ComponentTree,this.rootComponentId=null,this._reset(),this.resetKeyHistory()}return _createClass$1(e,[{key:`_reset`,value:function(){this.componentList=new ComponentOptionsList,this._initHandlerResolutionState()}},{key:`_newKeyHistory`,value:function(){return new KeyHistory({maxLength:this.componentList.getLongestSequence()})}},{key:`getKeyHistory`,value:function(){return this._keyHistory||=this._newKeyHistory(),this._keyHistory}},{key:`_initHandlerResolutionState`,value:function(){this._actionResolver=null}},{key:`resetKeyHistory`,value:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};this.keypressEventsToSimulate=[],this.keyupEventsToSimulate=[],this._keyHistory=this.getKeyHistory().any()&&!e.force?new KeyHistory({maxLength:this.componentList.getLongestSequence()},new KeyCombination(this.getCurrentCombination().keysStillPressedDict())):this._newKeyHistory()}},{key:`getApplicationKeyMap`,value:function(){return this.rootComponentId===null?{}:this._buildApplicationKeyMap([this.rootComponentId],{})}},{key:`_buildApplicationKeyMap`,value:function(e,t){var n=this;return e.forEach(function(e){var a=n._componentTree.get(e),o=a.childIds,s=a.keyMap;s&&Object.keys(s).forEach(function(e){var a=s[e];t[e]={},isObject(a)?hasKey(a,`sequences`)?(copyAttributes(a,t[e],KEYMAP_ATTRIBUTES),t[e].sequences=n._createSequenceFromConfig(a.sequences)):(copyAttributes(a,t[e],KEYMAP_ATTRIBUTES),t[e].sequences=[copyAttributes(a,{},SEQUENCE_ATTRIBUTES)]):t[e].sequences=n._createSequenceFromConfig(a)}),n._buildApplicationKeyMap(o,t)}),t}},{key:`_createSequenceFromConfig`,value:function(e){return arrayFrom(e).map(function(e){return isObject(e)?copyAttributes(e,{},SEQUENCE_ATTRIBUTES):{sequence:e}})}},{key:`registerKeyMap`,value:function(e){return this.componentId+=1,this._componentTree.add(this.componentId,e),this.componentId}},{key:`reregisterKeyMap`,value:function(e,t){this._componentTree.update(e,t)}},{key:`registerComponentMount`,value:function(e,t){isUndefined(t)?this.rootComponentId=e:this._componentTree.setParent(e,t)}},{key:`deregisterKeyMap`,value:function(e){this._componentTree.remove(e),e===this.rootComponentId&&(this.rootComponentId=null)}},{key:`_addComponent`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0;this.componentList.add(e,t,n,a),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence())}},{key:`_allKeysAreReleased`,value:function(){return this.getCurrentCombination().hasEnded()}},{key:`getCurrentCombination`,value:function(){return this.getKeyHistory().getCurrentCombination()}},{key:`_shouldSimulate`,value:function(e,t){var n=hasKeyPressEvent(t),a=this.getCurrentCombination();return e===KeyEventType.keypress?!n||n&&a.isKeyStillPressed(`Meta`):e===KeyEventType.keyup&&keyupIsHiddenByCmd(t)&&a.isKeyReleased(`Meta`)}},{key:`_cloneAndMergeEvent`,value:function(e,t){return _objectSpread$1({},Object.keys(ModifierFlagsDictionary).reduce(function(t,n){return t[n]=e[n],t},{}),t)}},{key:`_callClosestMatchingHandler`,value:function(e,t,n,a,o){for(this._actionResolver||=new ActionResolver(this.componentList);o<=a;){this._actionResolver.getKeyHistoryMatcher(o);var s=this._actionResolver.findMatchingKeySequenceInComponent(o,this.getKeyHistory(),t,n);if(this.getCurrentCombination(),s){var l=s.events[n];return Configuration.option(`allowCombinationSubmatches`)&&KeyCombinationSerializer.serialize(s.keyDictionary),l.handler(e),this._stopEventPropagationAfterHandlingIfEnabled(e,o),!0}this._actionResolver.componentHasActionsBoundToEventType(o,n),o++}}},{key:`_stopEventPropagationAfterHandlingIfEnabled`,value:function(e,t){return!!Configuration.option(`stopEventPropagationAfterHandling`)&&(this._stopEventPropagation(e,t),!0)}},{key:`_stopEventPropagation`,value:function(){throw Error(`_stopEventPropagation must be overridden by a subclass`)}},{key:`_checkForModifierFlagDiscrepancies`,value:function(e,t,n){var a=this;Object.keys(ModifierFlagsDictionary).forEach(function(o){if(t!==o||n!==KeyEventType.keyup){var s=a.getCurrentCombination(),l=s.isKeyStillPressed(o);ModifierFlagsDictionary[o].forEach(function(t){!1===e[t]&&l&&s.setKeyState(o,KeyEventType.keyup,stateFromEvent(e))})}})}},{key:`_logPrefix`,value:function(){}}]),e}(),KeyEventCounter=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`getId`,value:function(){return isUndefined(this._id)&&(this._id=0),this._id}},{key:`incrementId`,value:function(){this._id=this.getId()+1}}]),e}(),normalizeKey={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},EventResponse={unseen:0,ignored:1,seen:2,recorded:3,handled:4},EventPropagator=function(){function e(t,n){var a=n.logger,o=n.logPrefix;_classCallCheck$1(this,e),this._componentList=t,this._previousPropagation=null,this.logger=a,this._logPrefix=o,this._reset()}return _createClass$1(e,[{key:`_reset`,value:function(){this._previousPosition=-1,this._position=-1,this._actionHandled=!1,this._ignoreEvent=!1,this._observeIgnoredEvents=!1,this._stopping=!1,this._componentId=null,this._key=null,this._type=null}},{key:`isFirstPropagationStep`,value:function(){var e=this.getPreviousPosition();return e===-1||e>=this._position}},{key:`isForKey`,value:function(e){return this._key===e}},{key:`isForEventType`,value:function(e){return this._type===e}},{key:`startNewPropagationStep`,value:function(e,t,n,a){return this._position=this._componentList.getIndexById(e),this._componentId=e,this.isFirstPropagationStep()&&(KeyEventCounter.incrementId(),this._key=t.key,this._type=a),!(t.repeat&&Configuration.option(`ignoreRepeatedEventsWhenKeyHeldDown`))||(this.ignoreEvent(t),!1)}},{key:`finishPropagationStep`,value:function(){this.isStopped()||this._componentList.isRoot(this._componentId)?(this._previousPropagation=this._clone(),this._reset()):this._previousPosition=this._position}},{key:`getPreviousPropagation`,value:function(){return this._previousPropagation||=this._clone({copyState:!1}),this._previousPropagation}},{key:`getPreviousPosition`,value:function(){return this._previousPosition}},{key:`observeIgnoredEvents`,value:function(){this._observeIgnoredEvents=!0}},{key:`ignoreEvent`,value:function(e){return this.setIgnoreEvent(!0),!!(this.isIgnoringEvent()&&Configuration.option(`stopEventPropagationAfterIgnoring`))&&(this.stop(e),this.finishPropagationStep(),!0)}},{key:`setIgnoreEvent`,value:function(e){this._ignoreEvent=e}},{key:`isIgnoringEvent`,value:function(){return!this._observeIgnoredEvents&&this._ignoreEvent}},{key:`isStopped`,value:function(){return this._stopping}},{key:`stop`,value:function(e){return!this.isStopped()&&(this._stopping=!0,e.simulated||e.stopPropagation(),!0)}},{key:`isPendingPropagation`,value:function(){var e=this.getPreviousPosition();return e!==-1&&e+1<this._position}},{key:`isHandled`,value:function(){return this._actionHandled}},{key:`setHandled`,value:function(){this._actionHandled=!0}},{key:`_clone`,value:function(){var t=(0<arguments.length&&arguments[0]!==void 0?arguments[0]:{}).copyState,n=new e(this._componentList,{logger:this.logger,logPrefix:this._logPrefix});return(t===void 0||t)&&Object.assign(n,this),n}}]),e}(),FocusOnlyKeyEventStrategy=function(e){function t(){var e,n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},a=1<arguments.length?arguments[1]:void 0;return _classCallCheck$1(this,t),e=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,n,a)),e.focusTreeId=0,e}return _inherits(t,e),_createClass$1(t,[{key:`_reset`,value:function(){_get(_getPrototypeOf(t.prototype),`_reset`,this).call(this),this.keypressEventsToSimulate=[],this.focusTreeId+=1,this.eventPropagator=new EventPropagator(this.componentList,{logger:this.logger,logPrefix:this._logPrefix.bind(this)})}},{key:`enableHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0;if(this.resetOnNextFocus&&=(this._reset(),!1),!this.componentList.containsId(e))return this._addComponent(e,t,n,a),this.focusTreeId}},{key:`updateEnabledHotKeys`,value:function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},o=4<arguments.length?arguments[4]:void 0;e===this.focusTreeId&&this.componentList.containsId(t)&&(this.componentList.update(t,n,a,o),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence()),this._initHandlerResolutionState())}},{key:`disableHotKeys`,value:function(e,t){return this.resetOnNextFocus||=!0,this.eventPropagator.isPendingPropagation()}},{key:`handleKeydown`,value:function(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},o=getKeyName(e);if(t!==this.focusTreeId)return this.eventPropagator.ignoreEvent(e),!0;if(this.eventPropagator.startNewPropagationStep(n,e,o,KeyEventType.keydown)){if(this._howToHandleKeyEvent(e,t,n,o,a,KeyEventType.keydown)===EventResponse.handled){var s=stateFromEvent(e),l=this.getCurrentCombination();l.isKeyIncluded(o)||l.isEnding()?this._startAndLogNewKeyCombination(o,t,n,s):this._addToAndLogCurrentKeyCombination(o,KeyEventType.keydown,t,n,s),this._callHandlerIfActionNotHandled(e,o,KeyEventType.keydown,n,t)}return this._simulateKeyPressForNonPrintableKeys(e,o,t,n,a),this.eventPropagator.finishPropagationStep(),!1}}},{key:`_howToHandleKeyEvent`,value:function(e,t,n,a,o,s){if(this.eventPropagator.isFirstPropagationStep()){if(o.ignoreEventsCondition(e)&&this.eventPropagator.ignoreEvent(e))return this._eventIsToBeIgnored(e,n,a,s);this._checkForModifierFlagDiscrepancies(e,a,s)}else if(this.eventPropagator.isIgnoringEvent())return this._eventIsToBeIgnored(e,n,a,s);return EventResponse.handled}},{key:`_eventIsToBeIgnored`,value:function(e,t,n,a){return EventResponse.ignored}},{key:`handleKeyPress`,value:function(e,t,n,a){var o=getKeyName(e),s=this.getCurrentCombination();if(s.isKeyPressSimulated(o))return this.eventPropagator.ignoreEvent(e),!0;if(this.eventPropagator.startNewPropagationStep(n,e,o,KeyEventType.keypress)){var l=t!==this.focusTreeId,u=this._howToHandleKeyEvent(e,t,n,o,a,KeyEventType.keypress);return this.eventPropagator.isFirstPropagationStep(n)&&s.isKeyIncluded(o)&&this._addToAndLogCurrentKeyCombination(o,KeyEventType.keypress,t,n,stateFromEvent(e)),u===EventResponse.handled&&this._callHandlerIfActionNotHandled(e,o,KeyEventType.keypress,n,t),this.eventPropagator.finishPropagationStep(),l}}},{key:`handleKeyUp`,value:function(e,t,n,a){var o=getKeyName(e),s=this.getCurrentCombination();if(s.isKeyUpSimulated(o))return this.eventPropagator.ignoreEvent(e),!0;if(this.eventPropagator.startNewPropagationStep(n,e,o,KeyEventType.keyup)){var l=t!==this.focusTreeId,u=this._howToHandleKeyEvent(e,t,n,o,a,KeyEventType.keyup);return this.eventPropagator.isFirstPropagationStep(n)&&s.isKeyIncluded(o)&&this._addToAndLogCurrentKeyCombination(o,KeyEventType.keyup,t,n,stateFromEvent(e)),u===EventResponse.handled&&this._callHandlerIfActionNotHandled(e,o,KeyEventType.keyup,n,t),this._simulateKeyUpEventsHiddenByCmd(e,o,t,n,a),this.eventPropagator.finishPropagationStep(),l}}},{key:`closeHangingKeyCombination`,value:function(e,t){var n=this.getCurrentCombination();n.isKeyIncluded(e)&&!n.isEventTriggered(e,t)&&n.setKeyState(e,t,KeyEventState.simulated)}},{key:`_simulateKeyPressForNonPrintableKeys`,value:function(e,t,n,a,o){this._handleEventSimulation(`keypressEventsToSimulate`,`simulatePendingKeyPressEvents`,this._shouldSimulate(KeyEventType.keypress,t),{event:e,key:t,focusTreeId:n,componentId:a,options:o})}},{key:`_simulateKeyUpEventsHiddenByCmd`,value:function(e,t,n,a,o){var s=this;isCmdKey(t)&&this.getCurrentCombination().forEachKey(function(t){isCmdKey(t)||s._handleEventSimulation(`keyupEventsToSimulate`,`simulatePendingKeyUpEvents`,s._shouldSimulate(KeyEventType.keyup,t),{event:e,key:t,focusTreeId:n,componentId:a,options:o})})}},{key:`_stopEventPropagation`,value:function(e,t){this.eventPropagator.stop(e)}},{key:`getEventPropagator`,value:function(){return this.eventPropagator}},{key:`_startAndLogNewKeyCombination`,value:function(e,t,n,a){this.getKeyHistory().startNewKeyCombination(e,a)}},{key:`_addToAndLogCurrentKeyCombination`,value:function(e,t,n,a,o){this.getKeyHistory().addKeyToCurrentCombination(e,t,o)}},{key:`_handleEventSimulation`,value:function(e,t,n,a){var o=a.event,s=a.key,l=a.focusTreeId,u=a.componentId,d=a.options;if(n&&Configuration.option(`simulateMissingKeyPressEvents`)){var f=this._cloneAndMergeEvent(o,{key:s,simulated:!0});this[e].push({event:f,focusTreeId:l,componentId:u,options:d})}(this.componentList.isRoot(u)||this.eventPropagator.isStopped())&&!this.keyEventManager.isGlobalListenersBound()&&this[t]()}},{key:`simulatePendingKeyPressEvents`,value:function(){this._simulatePendingKeyEvents(`keypressEventsToSimulate`,`handleKeyPress`)}},{key:`simulatePendingKeyUpEvents`,value:function(){this._simulatePendingKeyEvents(`keyupEventsToSimulate`,`handleKeyUp`)}},{key:`_simulatePendingKeyEvents`,value:function(e,t){var n=this;0<this[e].length&&KeyEventCounter.incrementId(),this[e].forEach(function(e){var a=e.event,o=e.focusTreeId,s=e.componentId,l=e.options;n[t](a,o,s,l)}),this[e]=[]}},{key:`_callHandlerIfActionNotHandled`,value:function(e,t,n,a,o){if(this.getCurrentCombination().describe(),this.componentList.anyActionsForEventType(n)&&!this.eventPropagator.isHandled()){var s=this.eventPropagator.getPreviousPosition(),l=this.componentList.getIndexById(a);this._callClosestMatchingHandler(e,t,n,l,s===-1?0:s)&&this.eventPropagator.setHandled()}}},{key:`_logPrefix`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=Logger.logIcons,a=Logger.eventIcons,o=Logger.componentIcons,s=`HotKeys (`;if(!1!==t.focusTreeId){var l=isUndefined(t.focusTreeId)?this.focusTreeId:t.focusTreeId;s+=`F${l}${n[l%n.length]}-`}if(!1!==t.eventId){var u=isUndefined(t.eventId)?KeyEventCounter.getId():t.eventId;s+=`E${u}${a[u%a.length]}-`}s+=`C${e}${o[e%o.length]}`;var d=this.componentList.getIndexById(e);return isUndefined(d)||(s+=`-P${d}${o[d%o.length]}:`),`${s})`}}]),t}(AbstractKeyEventStrategy),GlobalKeyEventStrategy=function(e){function t(){var e,n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},a=1<arguments.length?arguments[1]:void 0;return _classCallCheck$1(this,t),e=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,n,a)),e.listenersBound=!1,e.eventOptions={ignoreEventsCondition:Configuration.option(`ignoreEventsCondition`)},e.listeners={},e}return _inherits(t,e),_createClass$1(t,[{key:`enableHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;this.eventOptions=o,this._addComponent(e,t,n,a),this._updateDocumentHandlers(),this._initHandlerResolutionState()}},{key:`updateEnabledHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;this.eventOptions=o,this.componentList.update(e,t,n,a),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence()),this._updateDocumentHandlers(),this._initHandlerResolutionState()}},{key:`disableHotKeys`,value:function(e){this.componentList.remove(e),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence()),this._updateDocumentHandlers(),this._initHandlerResolutionState()}},{key:`_updateDocumentHandlers`,value:function(){var e=this,t=this._listenersShouldBeBound();!this.listenersBound&&t?(Object.values(KeyEventType).forEach(function(t){var n=describeKeyEventType(t);document[`on${n}`]=function(t){e.keyEventManager[`handleGlobal${normalizeEventName(n)}`](t)}}),this.listenersBound=!0):this.listenersBound&&!t&&(Object.values(KeyEventType).forEach(function(e){var t=describeKeyEventType(e);delete document[`on${t}`]}),this.listenersBound=!1)}},{key:`_listenersShouldBeBound`,value:function(){return this.componentList.any()||this.listeners.keyCombination}},{key:`handleKeydown`,value:function(e){var t=getKeyName(e);if(e.repeat&&Configuration.option(`ignoreRepeatedEventsWhenKeyHeldDown`))return!0;this._checkForModifierFlagDiscrepancies(e,t,KeyEventType.keydown);var n=this._howReactAppRespondedTo(e,t,KeyEventType.keydown);if(!(n===EventResponse.unseen&&this.eventOptions.ignoreEventsCondition(e))){if(n!==EventResponse.ignored){var a=stateFromEvent(e),o=this.getCurrentCombination();o.isKeyIncluded(t)||o.isEnding()?this._startAndLogNewKeyCombination(t,a):this._addToAndLogCurrentKeyCombination(t,KeyEventType.keydown,a)}contains([EventResponse.ignored,EventResponse.handled],n)||this._callHandlerIfExists(e,t,KeyEventType.keydown),this._simulateKeyPressForNonPrintableKeys(e,t)}}},{key:`_howReactAppRespondedTo`,value:function(e,t,n){var a=this.keyEventManager.reactAppHistoryWithEvent(t,n);return a===EventResponse.handled||a===EventResponse.ignored||a===EventResponse.seen||KeyEventCounter.incrementId(),a}},{key:`handleKeyPress`,value:function(e){var t=getKeyName(e);if(e.repeat&&Configuration.option(`ignoreRepeatedEventsWhenKeyHeldDown`))return!0;var n=this.getCurrentCombination();if(n.isKeyPressSimulated(t))return!0;var a=this._howReactAppRespondedTo(e,t,KeyEventType.keypress);n.isKeyIncluded(t)&&this._addToAndLogCurrentKeyCombination(t,KeyEventType.keypress,stateFromEvent(e)),a===EventResponse.unseen&&(this.keyEventManager.closeHangingKeyCombination(t,KeyEventType.keypress),this.eventOptions.ignoreEventsCondition(e))||!contains([EventResponse.ignored,EventResponse.handled],a)&&this._callHandlerIfExists(e,t,KeyEventType.keypress)}},{key:`handleKeyUp`,value:function(e){var t=getKeyName(e),n=this.getCurrentCombination();if(n.isKeyUpSimulated(t))return!0;var a=this._howReactAppRespondedTo(e,t,KeyEventType.keyup);n.isKeyIncluded(t)&&this._addToAndLogCurrentKeyCombination(t,KeyEventType.keyup,stateFromEvent(e)),a===EventResponse.unseen?(this.keyEventManager.closeHangingKeyCombination(t,KeyEventType.keyup),this.eventOptions.ignoreEventsCondition(e)||!contains([EventResponse.ignored,EventResponse.handled],a)&&this._callHandlerIfExists(e,t,KeyEventType.keyup)):!contains([EventResponse.ignored,EventResponse.handled],a)&&this._callHandlerIfExists(e,t,KeyEventType.keyup),this._simulateKeyUpEventsHiddenByCmd(e,t),this.listeners.keyCombination&&this._allKeysAreReleased()&&this.listeners.keyCombination({keys:n.getKeyDictionary(),id:n.describe()})}},{key:`_simulateKeyPressForNonPrintableKeys`,value:function(e,t){this.keyEventManager.simulatePendingKeyPressEvents(),this._handleEventSimulation(`handleKeyPress`,this._shouldSimulate(KeyEventType.keypress,t),{event:e,key:t})}},{key:`_simulateKeyUpEventsHiddenByCmd`,value:function(e,t){var n=this;isCmdKey(t)&&(this.keyEventManager.simulatePendingKeyUpEvents(),this.getCurrentCombination().forEachKey(function(t){isCmdKey(t)||n._handleEventSimulation(`handleKeyUp`,n._shouldSimulate(KeyEventType.keyup,t),{event:e,key:t})}))}},{key:`_startAndLogNewKeyCombination`,value:function(e,t){this.getKeyHistory().startNewKeyCombination(e,t)}},{key:`_addToAndLogCurrentKeyCombination`,value:function(e,t,n){this.getKeyHistory().addKeyToCurrentCombination(e,t,n)}},{key:`_handleEventSimulation`,value:function(e,t,n){var a=n.event,o=n.key;if(t&&Configuration.option(`simulateMissingKeyPressEvents`)){var s=this._cloneAndMergeEvent(a,{key:o,simulated:!0});this[e](s)}}},{key:`_callHandlerIfExists`,value:function(e,t,n){this.getCurrentCombination().describe(),this.componentList.anyActionsForEventType(n)&&this._callClosestMatchingHandler(e,t,n)}},{key:`_callClosestMatchingHandler`,value:function(e,n,a){for(var o,s=this.componentList.getNewIterator();s.next();)if(o=_get(_getPrototypeOf(t.prototype),`_callClosestMatchingHandler`,this).call(this,e,n,a,s.getPosition(),0),o)return}},{key:`_stopEventPropagation`,value:function(e,t){e.simulated||e.stopPropagation()}},{key:`addKeyCombinationListener`,value:function(e){var t=this,n=function(){delete t.listeners.keyCombination};return this.listeners.keyCombination=function(t){e(t),n()},this._updateDocumentHandlers(),n}},{key:`_logPrefix`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=Logger.eventIcons,a=Logger.componentIcons,o=`HotKeys (GLOBAL`;if(!1!==t.eventId){var s=isUndefined(t.eventId)?KeyEventCounter.getId():t.eventId;o=`${o}-E${s}${n[s%n.length]}`}return isUndefined(e)?`${o}):`:`${o}-C${e}${a[e%a.length]}):`}}]),t}(AbstractKeyEventStrategy),KeyEventManager=function(){function e(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};_classCallCheck$1(this,e),this.logger=t.logger||new Logger(Configuration.option(`logLevel`)),this._focusOnlyEventStrategy=new FocusOnlyKeyEventStrategy({configuration:t,logger:this.logger},this),this._globalEventStrategy=new GlobalKeyEventStrategy({configuration:t,logger:this.logger},this),this.mountedComponentsCount=0}return _createClass$1(e,null,[{key:`getInstance`,value:function(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return this.instance||=new e(t),this.instance}},{key:`clear`,value:function(){delete this.instance}}]),_createClass$1(e,[{key:`getApplicationKeyMap`,value:function(){return Object.assign(this._globalEventStrategy.getApplicationKeyMap(),this._focusOnlyEventStrategy.getApplicationKeyMap())}},{key:`registerKeyMap`,value:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return this._focusOnlyEventStrategy.registerKeyMap(e)}},{key:`reregisterKeyMap`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};this._focusOnlyEventStrategy.reregisterKeyMap(e,t)}},{key:`deregisterKeyMap`,value:function(e){this._focusOnlyEventStrategy.deregisterKeyMap(e)}},{key:`registerComponentMount`,value:function(e,t){return this._incrementComponentCount(),this._focusOnlyEventStrategy.registerComponentMount(e,t)}},{key:`registerComponentUnmount`,value:function(){this._decrementComponentCount()}},{key:`_incrementComponentCount`,value:function(){var e=this,t=this.mountedComponentsCount;this.mountedComponentsCount+=1,t===0&&this.mountedComponentsCount===1&&(window.onblur=function(){return e._clearKeyHistory()})}},{key:`_decrementComponentCount`,value:function(){var e=this.mountedComponentsCount;--this.mountedComponentsCount,e===1&&this.mountedComponentsCount===0&&delete window.onblur}},{key:`_clearKeyHistory`,value:function(){this._focusOnlyEventStrategy.resetKeyHistory({force:!0}),this._globalEventStrategy.resetKeyHistory({force:!0})}},{key:`registerGlobalKeyMap`,value:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return this._globalEventStrategy.registerKeyMap(e)}},{key:`registerGlobalComponentUnmount`,value:function(){this._decrementComponentCount()}},{key:`registerGlobalComponentMount`,value:function(e,t){return this._incrementComponentCount(),this._globalEventStrategy.registerComponentMount(e,t)}},{key:`reregisterGlobalKeyMap`,value:function(e,t){this._globalEventStrategy.reregisterKeyMap(e,t)}},{key:`deregisterGlobalKeyMap`,value:function(e){this._globalEventStrategy.deregisterKeyMap(e)}},{key:`addKeyCombinationListener`,value:function(e){return this._globalEventStrategy.addKeyCombinationListener(e)}},{key:`enableHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0;return this._focusOnlyEventStrategy.enableHotKeys(e,t,n,a)}},{key:`updateEnabledHotKeys`,value:function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},o=4<arguments.length?arguments[4]:void 0;return this._focusOnlyEventStrategy.updateEnabledHotKeys(e,t,n,a,o)}},{key:`disableHotKeys`,value:function(e,t){return this._focusOnlyEventStrategy.disableHotKeys(e,t)}},{key:`handleKeydown`,value:function(e,t,n,a){if(isFromFocusOnlyComponent(t))return this._focusOnlyEventStrategy.handleKeydown(e,t,n,a)}},{key:`handleKeyPress`,value:function(e,t,n,a){if(isFromFocusOnlyComponent(t))return this._focusOnlyEventStrategy.handleKeyPress(e,t,n,a)}},{key:`handleKeyUp`,value:function(e,t,n,a){if(isFromFocusOnlyComponent(t))return this._focusOnlyEventStrategy.handleKeyUp(e,t,n,a)}},{key:`enableGlobalHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;return this._globalEventStrategy.enableHotKeys(e,t,n,a,o)}},{key:`updateEnabledGlobalHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;return this._globalEventStrategy.updateEnabledHotKeys(e,t,n,a,o)}},{key:`disableGlobalHotKeys`,value:function(e){return this._globalEventStrategy.disableHotKeys(e)}},{key:`handleGlobalKeyDown`,value:function(e){return this._globalEventStrategy.handleKeydown(e)}},{key:`handleGlobalKeyPress`,value:function(e){return this._globalEventStrategy.handleKeyPress(e)}},{key:`handleGlobalKeyUp`,value:function(e){return this._globalEventStrategy.handleKeyUp(e)}},{key:`ignoreEvent`,value:function(e){this._focusOnlyEventStrategy.getEventPropagator().ignoreEvent(e)}},{key:`observeIgnoredEvents`,value:function(e){this._focusOnlyEventStrategy.getEventPropagator().observeIgnoredEvents(e)}},{key:`closeHangingKeyCombination`,value:function(e,t){this._focusOnlyEventStrategy.closeHangingKeyCombination(e,t)}},{key:`reactAppHistoryWithEvent`,value:function(e,t){var n=this._focusOnlyEventStrategy.eventPropagator.getPreviousPropagation();return n.isForKey(e)&&n.isForEventType(t)?n.isHandled()?EventResponse.handled:n.isIgnoringEvent()?EventResponse.ignored:EventResponse.seen:EventResponse.unseen}},{key:`simulatePendingKeyPressEvents`,value:function(){this._focusOnlyEventStrategy.simulatePendingKeyPressEvents()}},{key:`simulatePendingKeyUpEvents`,value:function(){this._focusOnlyEventStrategy.simulatePendingKeyUpEvents()}},{key:`isGlobalListenersBound`,value:function(){return this._globalEventStrategy.listenersBound}}]),e}(),HotKeys=withHotKeys(function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){var e=this.props,t=e.hotKeys,n=e.innerRef,a=e.component,o=_objectWithoutProperties$1(e,[`hotKeys`,`innerRef`,`component`]),s=a||Configuration.option(`defaultComponent`);return import_react.createElement(s,_objectSpread$1({},t,{ref:n},o))}}]),t}(import_react.Component)),HotKeys.propTypes={innerRef:import_prop_types.default.oneOfType([import_prop_types.default.object,import_prop_types.default.func])},GlobalHotKeys$2=function(e){function t(e){var n;return _classCallCheck$1(this,t),n=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e)),n._id=KeyEventManager.getInstance().registerGlobalKeyMap(e.keyMap),n._childContext={globalHotKeysParentId:n._id},n}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){return this.props.children||null}},{key:`componentDidUpdate`,value:function(){var e=KeyEventManager.getInstance();if(e.reregisterGlobalKeyMap(this._id,this.props.keyMap),this.props.allowChanges||!Configuration.option(`ignoreKeymapAndHandlerChangesByDefault`)){var t=this.props,n=t.keyMap,a=t.handlers;e.updateEnabledGlobalHotKeys(this._id,n,a,this._getComponentOptions(),this._getEventOptions())}}},{key:`componentDidMount`,value:function(){var e=this.props,t=e.keyMap,n=e.handlers,a=this.context.globalHotKeysParentId,o=KeyEventManager.getInstance();o.registerGlobalComponentMount(this._id,a),o.enableGlobalHotKeys(this._id,t,n,this._getComponentOptions(),this._getEventOptions())}},{key:`componentWillUnmount`,value:function(){var e=KeyEventManager.getInstance();e.deregisterGlobalKeyMap(this._id),e.disableGlobalHotKeys(this._id),e.registerGlobalComponentUnmount()}},{key:`_getComponentOptions`,value:function(){return{defaultKeyEvent:Configuration.option(`defaultKeyEvent`)}}},{key:`_getEventOptions`,value:function(){return{ignoreEventsCondition:Configuration.option(`ignoreEventsCondition`)}}}]),t}(import_react.Component),_defineProperty$3(GlobalHotKeys$2,`propTypes`,{keyMap:import_prop_types.default.object,handlers:import_prop_types.default.object,allowChanges:import_prop_types.default.bool}),GlobalHotKeys$1$1=backwardsCompatibleContext(GlobalHotKeys$2,{deprecatedAPI:{contextTypes:{globalHotKeysParentId:import_prop_types.default.number},childContextTypes:{globalHotKeysParentId:import_prop_types.default.number}},newAPI:{contextType:{globalHotKeysParentId:void 0}}}),IgnoreKeys$1=withHotKeysIgnoreOverride(function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){var e=this.props,t=e.hotKeys,n=_objectWithoutProperties$1(e,[`hotKeys`]),a=n.component||Configuration.option(`defaultComponent`);return import_react.createElement(a,_objectSpread$1({},t,n))}}]),t}(import_react.Component),{},`ignoreEvent`),ObserveKeys$1=withHotKeysIgnoreOverride(function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){var e=this.props,t=e.hotKeys,n=_objectWithoutProperties$1(e,[`hotKeys`]),a=n.component||Configuration.option(`defaultComponent`);return import_react.createElement(a,_objectSpread$1({},t,n))}}]),t}(import_react.Component),{},`observeIgnoredEvents`)})),require_index_es=__commonJSMin(((e,t)=>{t.exports=(init_react_hotkeys_production_min(),__toCommonJS(react_hotkeys_production_min_exports))})),import_index_es=require_index_es(),cropType={ASPARAGUS:`ASPARAGUS`,CARROT:`CARROT`,CORN:`CORN`,GARLIC:`GARLIC`,GRAPE:`GRAPE`,JALAPENO:`JALAPENO`,OLIVE:`OLIVE`,ONION:`ONION`,PEA:`PEA`,POTATO:`POTATO`,PUMPKIN:`PUMPKIN`,SOYBEAN:`SOYBEAN`,SPINACH:`SPINACH`,SUNFLOWER:`SUNFLOWER`,STRAWBERRY:`STRAWBERRY`,SUGARCANE:`SUGARCANE`,SWEET_POTATO:`SWEET_POTATO`,TOMATO:`TOMATO`,WATERMELON:`WATERMELON`,WHEAT:`WHEAT`,WEED:`WEED`},recipeType={FERMENTATION:`FERMENTATION`,FORGE:`FORGE`,KITCHEN:`KITCHEN`,RECYCLING:`RECYCLING`,WINE:`WINE`,WOOD_CHIPPER:`WOOD_CHIPPER`},fieldMode={CHOP:`CHOP`,CLEANUP:`CLEANUP`,FERTILIZE:`FERTILIZE`,HARVEST:`HARVEST`,HARVEST_FRUIT:`HARVEST_FRUIT`,MINE:`MINE`,OBSERVE:`OBSERVE`,PLANT:`PLANT`,SET_SPRINKLER:`SET_SPRINKLER`,SET_SCARECROW:`SET_SCARECROW`,SET_LIGHTNING_ROD:`SET_LIGHTNING_ROD`,WATER:`WATER`},stageFocusType={NONE:`NONE`,HOME:`HOME`,FIELD:`FIELD`,FOREST:`FOREST`,SHOP:`SHOP`,COW_PEN:`COW_PEN`,INVENTORY:`INVENTORY`,WORKSHOP:`WORKSHOP`,CELLAR:`CELLAR`},cropLifeStage={SEED:`SEED`,GROWING:`GROWING`,GROWN:`GROWN`},treeLifeStage={...cropLifeStage,DEAD:`DEAD`},itemType={COW_FEED:`COW_FEED`,CRAFTED_ITEM:`CRAFTED_ITEM`,CROP:`CROP`,FERTILIZER:`FERTILIZER`,FUEL:`FUEL`,HUGGING_MACHINE:`HUGGING_MACHINE`,LIGHTNING_ROD:`LIGHTNING_ROD`,MILK:`MILK`,MULCH:`MULCH`,ORE:`ORE`,SCARECROW:`SCARECROW`,SPRINKLER:`SPRINKLER`,STONE:`STONE`,TOOL_UPGRADE:`TOOL_UPGRADE`,TREE:`TREE`,WEED:`WEED`,WOOD:`WOOD`},treeType={APPLE:`APPLE`,BANANA:`BANANA`},fertilizerType={NONE:`NONE`,STANDARD:`STANDARD`,RAINBOW:`RAINBOW`},genders={FEMALE:`FEMALE`,MALE:`MALE`},cowColors={BLUE:`BLUE`,BROWN:`BROWN`,GREEN:`GREEN`,ORANGE:`ORANGE`,PURPLE:`PURPLE`,RAINBOW:`RAINBOW`,WHITE:`WHITE`,YELLOW:`YELLOW`},{RAINBOW:RAINBOW$2,...standardCowColors}=cowColors,dialogView={NONE:`NONE`,ACCOUNTING:`ACCOUNTING`,ACHIEVEMENTS:`ACHIEVEMENTS`,FARMERS_LOG:`FARMERS_LOG`,KEYBINDINGS:`KEYBINDINGS`,ONLINE_PEERS:`ONLINE_PEERS`,PRICE_EVENTS:`PRICE_EVENTS`,SETTINGS:`SETTINGS`,STATS:`STATS`},toolType={AXE:`AXE`,PICKER_POLE:`PICKER_POLE`,SCYTHE:`SCYTHE`,SHOVEL:`SHOVEL`,HOE:`HOE`,WATERING_CAN:`WATERING_CAN`},toolLevel={UNAVAILABLE:`UNAVAILABLE`,DEFAULT:`DEFAULT`,BRONZE:`BRONZE`,IRON:`IRON`,SILVER:`SILVER`,GOLD:`GOLD`},cowTradeRejectionReason={REQUESTED_COW_UNAVAILABLE:`REQUESTED_COW_UNAVAILABLE`},cropFamily={GRAPE:`GRAPE`},grapeVariety={CHARDONNAY:`CHARDONNAY`,SAUVIGNON_BLANC:`SAUVIGNON_BLANC`,CABERNET_SAUVIGNON:`CABERNET_SAUVIGNON`,TEMPRANILLO:`TEMPRANILLO`,NEBBIOLO:`NEBBIOLO`},season={SPRING:`SPRING`,SUMMER:`SUMMER`,FALL:`FALL`,WINTER:`WINTER`},{freeze:freeze$10}=Object,BREAKPOINTS={XS:0,SM:600,MD:960,LG:1280,XL:1920},LOAN_GARNISHMENT_RATE=.05,LOAN_INTEREST_RATE=.02,FERTILIZER_BONUS=.5,SEASON_LENGTH_DAYS=15,SEASON_HIGH_DEMAND_BONUS=.2,SEASON_LOW_DEMAND_PENALTY=.2,ONE_YEAR_LENGTH_DAYS=60,PURCHASEABLE_FIELD_SIZES=freeze$10(new Map([[1,{columns:8,rows:12,price:1e3}],[2,{columns:10,rows:16,price:5e3}],[3,{columns:12,rows:18,price:2e4}]])),PURCHASABLE_FOREST_SIZES=freeze$10(new Map([[1,{columns:4,rows:2,price:1e5}],[2,{columns:4,rows:3,price:2e5}],[3,{columns:4,rows:4,price:3e5}]])),LARGEST_PURCHASABLE_FIELD_SIZE=PURCHASEABLE_FIELD_SIZES.get(PURCHASEABLE_FIELD_SIZES.size),PURCHASEABLE_COMBINES=freeze$10(new Map([[1,{type:`Basic`,price:25e4}]])),PURCHASEABLE_COMPOSTERS=freeze$10(new Map([[1,{type:`Basic`,price:1e3}]])),PURCHASEABLE_SMELTERS=freeze$10(new Map([[1,{type:`Basic`,price:25e4}]])),PURCHASEABLE_WOOD_CHIPPERS=freeze$10(new Map([[1,{type:`Basic`,price:5e4}]])),PURCHASEABLE_COW_PENS=freeze$10(new Map([[1,{cows:10,price:1500}],[2,{cows:20,price:1e4}],[3,{cows:30,price:5e4}]])),PURCHASEABLE_CELLARS=freeze$10(new Map([[1,{space:10,price:25e4}],[2,{space:20,price:75e4}],[3,{space:30,price:2e6}]])),CROW_CHANCE=.4,PRECIPITATION_CHANCE=.1,STORM_CHANCE=.5,SCARECROW_ITEM_ID=`scarecrow`,SPRINKLER_ITEM_ID=`sprinkler`,COW_STARTING_WEIGHT_BASE=1800,MALE_COW_WEIGHT_MULTIPLIER=1.1,COW_HUG_BENEFIT=.05,COW_WEIGHT_MULTIPLIER_FEED_BENEFIT=.1,COW_WEIGHT_MULTIPLIER_MINIMUM=.5,COW_WEIGHT_MULTIPLIER_MAXIMUM=1.5,COW_FEED_ITEM_ID=`cow-feed`,HUGGING_MACHINE_ITEM_ID=`hugging-machine`,COW_MINIMUM_HAPPINESS_TO_BREED=.8,NOTIFICATION_DURATION=6e3,PRICE_EVENT_CHANCE=.2,STAGE_TITLE_MAP={[stageFocusType.HOME]:`Home`,[stageFocusType.FIELD]:`Field`,[stageFocusType.FOREST]:`Forest`,[stageFocusType.SHOP]:`Shop`,[stageFocusType.COW_PEN]:`Cows`,[stageFocusType.WORKSHOP]:`Workshop`,[stageFocusType.CELLAR]:`Cellar`},RECIPE_INGREDIENT_VALUE_MULTIPLIER=1.25,I_AM_RICH_BONUSES=[.05,.1,.25],PERSISTED_STATE_KEYS=`allowCustomPeerCowNames.cellarInventory.completedAchievements.cowBreedingPen.cowColorsPurchased.cowForSale.cowInventory.cowsSold.cowsTraded.cropsHarvested.dayCount.experience.farmName.field.forest.hasProducedRainbowFertilizer.historicalDailyLosses.historicalDailyRevenue.historicalValueAdjustments.hoveredPlotRangeSize.playerId.inventory.inventoryLimit.isCombineEnabled.itemsSold.cellarItemsSold.learnedRecipes.loanBalance.loansTakenOut.money.mulchApplied.newDayNotifications.notificationLog.priceCrashes.priceSurges.profitabilityStreak.purchasedCombine.purchasedComposter.purchasedCowPen.purchasedCellar.purchasedField.purchasedForest.purchasedSmelter.purchasedWoodChipper.recipesMade.record7dayProfitAverage.recordProfitabilityStreak.recordSingleDayProfit.revenue.showHomeScreen.showNotifications.todaysLosses.todaysPurchases.todaysRevenue.todaysStartingInventory.toolLevels.treeFruitsHarvested.treesChopped.useAlternateEndDayButtonPosition.valueAdjustments.version`.split(`.`),PEER_METADATA_STATE_KEYS=[`cowsSold`,`cropsHarvested`,`dayCount`,`experience`,`playerId`,`money`,`pendingPeerMessages`,`version`],DEFAULT_ROOM=`global`,LEFT=`left`,RIGHT=`right`,TOOLBELT_FIELD_MODES=new Set([fieldMode.CLEANUP,fieldMode.HARVEST,fieldMode.WATER,fieldMode.MINE]),RESOURCE_SPAWN_CHANCE=.3,ORE_SPAWN_CHANCE=.25,COAL_SPAWN_CHANCE=.15,STONE_SPAWN_CHANCE=.4,SALT_ROCK_SPAWN_CHANCE=.3,BRONZE_SPAWN_CHANCE=.4,GOLD_SPAWN_CHANCE=.07,IRON_SPAWN_CHANCE=.33,SILVER_SPAWN_CHANCE=.2,HOE_LEVEL_TO_SEED_RECLAIM_RATE={[toolLevel.DEFAULT]:0,[toolLevel.BRONZE]:.25,[toolLevel.IRON]:.5,[toolLevel.SILVER]:.75,[toolLevel.GOLD]:1},AXE_WOOD_YIELD_RANGE={[toolLevel.DEFAULT]:[1,2],[toolLevel.BRONZE]:[2,4],[toolLevel.IRON]:[4,6],[toolLevel.SILVER]:[6,8],[toolLevel.GOLD]:[8,10]},PICKER_POLE_LEVEL_TO_FRUIT_YIELD={[toolLevel.DEFAULT]:1,[toolLevel.BRONZE]:2,[toolLevel.IRON]:3,[toolLevel.SILVER]:4,[toolLevel.GOLD]:5},TREE_LIFESPAN_VARIANCE_MAX=.05,TREE_DEATH_CHANCE_BASE=.05,TREE_DEATH_CHANCE_INCREMENT_PER_DAY=.02,TREE_DEATH_CHANCE_MAX=.85,COW_COLORS_HEX_MAP={[cowColors.BLUE]:`#8ff0f9`,[cowColors.BROWN]:`#b45f28`,[cowColors.GREEN]:`#65f295`,[cowColors.ORANGE]:`#ff7031`,[cowColors.PURPLE]:`#d884f2`,[cowColors.WHITE]:`#ffffff`,[cowColors.YELLOW]:`#fff931`},COW_TRADE_TIMEOUT=1e4,WEEDS_SPAWN_CHANCE=.15,KEG_INTEREST_RATE=.02,KEG_SPOILAGE_RATE_MULTIPLIER=.001,WINE_INTEREST_RATE=.015,EXPERIENCE_VALUES={CELLAR_ACQUIRED:10,CELLAR_EXPANDED:5,COMPOSTER_ACQUIRED:10,COW_BRED:1,COW_PEN_ACQUIRED:10,COW_PEN_EXPANDED:5,COW_TRADED:1,FERMENTATION_RECIPE_MADE:1,FIELD_EXPANDED:5,FOREST_EXPANDED:10,FORGE_RECIPE_MADE:3,ITEM_SOLD:1,KEG_SOLD:2,KITCHEN_RECIPE_MADE:2,LOAN_PAID_OFF:25,NEW_YEAR:5,RAINBOW_COW_BRED:2,RECYCLING_RECIPE_MADE:1,SMELTER_ACQUIRED:10,WOOD_CHIPPER_ACQUIRED:10,WOOD_CHIPPER_RECIPE_MADE:1},STANDARD_VIEW_LIST=[stageFocusType.SHOP,stageFocusType.FIELD],Z_INDEX={END_DAY_BUTTON:1100},HEARTBEAT_INTERVAL_PERIOD=10*1e3,blue_stripe_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAv0lEQVRoQ+2aOw6AIBBEofAiHtqzeBrvYGNjsUaDBsFqMWw2eZZWDJ/HzGicVpFxCNWz7CF4eB/nTcTLYL/GeQk4p9+riEeAVxEvAR5FVAK8iYhQKAOwBQigkPVlB4WsqQWFchcIhRRIxgtZbJscHHihe9tarQSJrAzTvVcCCvWe8fLMQSEo1FiqkchIZOkQaWkGhaAQFEr1unW7oKUZvZD1ytEL0Qs1fg0lkWk9zF9ZGi+EF8IL4YVs/2pxT6EDTzqfZhoHJYMAAAAASUVORK5CYIIA`,light_blue_stripe_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAiklEQVRoge3UsQnAMAwFUUd4Du8/Q8bJEK4CTpEuAYOrs+BUPjW/uuPsY7RafnfdpWTwaPV9fi+Lx46jVjx2HLXiMXtm8Jg9M3jsOGrFrRDtVoh2K0S7FaLdCtFuhWi3QrRbIdqtEO1WiHYrRLsVot0K0W6FaLdCtFsh2q0Q7VaIditEuxWiPX2FHsE1Al0X/e79AAAAAElFTkSuQmCC`,colors={itemBackground:`#f7b459`,heart:`#ff4040`,error:`#ce0000`,success:`#2e7d32`,cardBackground:`#ffe3a1`,cardBackgroundNested:`#ffd46e`,cow:{blue:`#8ff0f9`,brown:`#b45f28`,green:`#65f295`,orange:`#ff7031`,purple:`#d884f2`,white:`#ffffff`,yellow:`#fff931`}},breakpoints={smallPhone:320,mediumPhone:400,largePhone:450,sm:600,md:960,lg:1280,xl:1920},layout={cardMaxWidth:550,sidebarWidth:`22em`,narrowSidebarWidth:320,fieldSpaceForRightSideControls:`4.5em`},fillSx={bottom:0,left:0,position:`absolute`,right:0,top:0},squareImgSx={backgroundRepeat:`no-repeat`,backgroundSize:`cover`,display:`block`,width:`100%`},cardStyleSx=e=>({background:colors.cardBackground,border:`solid 2px #b68000`,transition:e.transitions.create(`background`,{duration:e.transitions.duration.enteringScreen,easing:e.transitions.easing.easeOut})}),cardStyleSelectedSx={background:lighten$6(colors.cardBackground,.4)},centerTabsSx={margin:`0 auto`,maxWidth:600,"& .MuiTabs-flexContainer":{justifyContent:`center`},"& > .MuiTabs-root":{marginTop:`4em`},'& [role="tabpanel"]':{background:`rgba(255, 255, 255, 0.5)`,borderRadius:`0 0 0.5em 0.5em`,padding:`0.5em 0.5em 0.5em`,"& .card-list > li:last-child":{marginBottom:0}}},spriteShadowSx={filter:`drop-shadow(2px 2px 2px rgba(100, 100, 100, 0.4))`},quickSelectSx=(e,t)=>({...cardStyleSx(e),bottom:`7.5em`,left:`50%`,maxWidth:`calc(100% - 2em)`,position:`fixed`,transform:`translateX(-50%)`,"@media (orientation: landscape)":{bottom:`auto`,[`@media (max-height: ${breakpoints.largePhone}px)`]:{top:`5em`,maxWidth:`calc(100% - 12em)`,left:`calc(50% - (${layout.fieldSpaceForRightSideControls} / 2))`},[`@media (max-width: ${breakpoints.md}px)`]:{display:t?`none`:void 0}},[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{left:`auto`,maxHeight:`calc(100vh - 20em)`,minWidth:`4em`,overflow:`auto`,right:`0.75em`,top:`9em`,transform:`none`,bottom:`8em`},"@media (orientation: portrait)":{display:t?`none`:void 0},"& .MuiGrid-root":{borderRadius:`0.25em`,overflowX:`scroll`,overflowY:`hidden`,padding:`0.5em`,position:`relative`,[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{overflowX:`hidden`,flexDirection:`column`},"& > *":{[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{alignItems:`center`,width:`3em`}}},"& .Toolbelt":{display:`flex`,flexFlow:`column`,justifyContent:`center`},"& .MuiDivider-root":{margin:`0 0.5em`,[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{margin:`0.5em 0`,height:`1px`,width:`100%`,borderRightWidth:0,borderBottomWidth:`thin`}}});init_createTheme();var globalStyleOverrides={body:{overscrollBehavior:`contain`},"ul, ol":{listStyle:`none`,margin:0,padding:0},p:{margin:0},".markdown":{"& p":{margin:`1em 0`},"& ul li":{listStyle:`disc`,marginLeft:`1em`},"& strong":{fontWeight:`bold`}},img:{imageRendering:`pixelated`},strong:{fontWeight:`bold`},".visually_hidden:not(:focus):not(:active)":{clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,overflow:`hidden`,position:`absolute`,whiteSpace:`nowrap`,width:`1px`},"h4, h5, h6, p, p.MuiTypography-root":{fontFamily:`"Public Sans", sans-serif`},"h3, h4, h5, h6":{fontWeight:`bold`},h2:{fontSize:`1.4em`},"h3, h4":{margin:`1em 0`},"p, .MuiTypography-body2":{lineHeight:`1.5em`},"ul.card-list":{flexGrow:1,marginBottom:`1em`,"& li":{margin:`1em 0`},"& > li":{margin:`1em auto`,maxWidth:layout.cardMaxWidth}},'input[type="number"]':{minWidth:`140px`},th:{fontWeight:`bold`},"h1, h2, h3, h4, h5, h6, legend, td, th, .MuiTypography-h1, .MuiTypography-h2, .MuiTypography-h3, .MuiTypography-h4, .MuiTypography-h5, .MuiTypography-h6, .MuiButtonBase-root":{fontFamily:`"Francois One", sans-serif`},".danger-text":{color:colors.error},".success-text":{color:colors.success},hr:{background:`none`},".MuiDivider-vertical":{width:`auto`},".Farmhand.notification-container":{marginTop:`8em`,paddingTop:0,[`@media (min-width: ${breakpoints.md}px)`]:{marginTop:`4em`,marginRight:`4em`},"& .MuiCollapse-wrapperInner":{width:`100%`},"& .MuiCollapse-wrapper":{marginBottom:0}},".spacer":{minHeight:`7.5em`}},mui_theme_default=createTheme({palette:{mode:`light`},shape:{},typography:{fontFamily:`"Public Sans", sans-serif`,button:{fontFamily:`"Francois One", sans-serif`,textTransform:`none`},h6:{fontFamily:`"Francois One", sans-serif`,fontSize:`1.4em`},h5:{fontFamily:`"Francois One", sans-serif`}},components:{MuiCssBaseline:{styleOverrides:globalStyleOverrides},MuiTabs:{styleOverrides:{root:({theme:e})=>({background:`#ffeec6`,borderColor:`#9b6d00`,borderWidth:2,borderStyle:`solid`,borderRadius:`${e.shape.borderRadius}px ${e.shape.borderRadius}px 0 0`})}},MuiInput:{styleOverrides:{root:{margin:`1rem 0`}}},MuiCard:{styleOverrides:{root:({theme:e})=>({...cardStyleSx(e),"&.is-selected":cardStyleSelectedSx,"& .MuiCard-root":{background:colors.cardBackgroundNested}})}},MuiTableContainer:{styleOverrides:{root:({theme:e})=>({...cardStyleSx(e),"&.is-selected":cardStyleSelectedSx})}},MuiCardHeader:{styleOverrides:{avatar:{"& img":spriteShadowSx}}},MuiCardContent:{styleOverrides:{root:{"&:last-child":{padding:`16px`}}}},MuiTableCell:{styleOverrides:{root:{borderColor:`#e9c777`}}},MuiButtonBase:{styleOverrides:{root:{textTransform:`none`}}},MuiPaper:{styleOverrides:{rounded:{backgroundColor:`#fff7e7`}}},MuiTooltip:{styleOverrides:{tooltip:{"& p":{textAlign:`center`}}}},MuiDialog:{styleOverrides:{root:{display:`block`},paper:{backgroundImage:`url(${light_blue_stripe_bg_default})`}}},MuiDivider:{styleOverrides:{root:{margin:`1.5em 0`}}},MuiAlert:{styleOverrides:{root:{marginBottom:`1em`,"@media (min-width: 0px) and (orientation: landscape)":{top:`3.5em`},[`@media (min-width: ${breakpoints.sm}px)`]:{top:`4.5em`},"& p":{margin:`1em 0`,"&:first-of-type":{marginTop:0},"&:last-child":{marginBottom:0}},"& strong":{fontWeight:`bold`},"& li":{marginLeft:`1em`},"& ul li":{listStyle:`disc`},"& ol li":{listStyle:`decimal`}}}}}});init_styled();var Span=styled$1(`span`)({}),Div=styled$1(`div`)({}),P$1=styled$1(`p`)({}),Ol=styled$1(`ol`)({}),Ul=styled$1(`ul`)({}),Li=styled$1(`li`)({}),Img=styled$1(`img`)({}),Form=styled$1(`form`)({}),Header=styled$1(`header`)({}),H3=styled$1(`h3`)({}),A=styled$1(`a`)({}),require_shifty=__commonJSMin(((e,t)=>{(function(n,a){typeof e==`object`&&typeof t==`object`?t.exports=a():typeof define==`function`&&define.amd?define(`shifty`,[],a):typeof e==`object`?e.shifty=a():n.shifty=a()})(self,(function(){return function(){var e={933:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.setBezierFunction=t.getCubicBezierTransition=void 0;let a=n(55);t.getCubicBezierTransition=(e=.25,t=.25,n=.75,a=.75)=>o=>function(e,t,n,a,o,s){let l=0,u=0,d=0,f=0,m=0,h=0,v=e=>((l*e+u)*e+d)*e,y=e=>(3*l*e+2*u)*e+d,b=e=>e>=0?e:0-e;return d=3*t,u=3*(a-t)-d,l=1-d-u,h=3*n,m=3*(o-n)-h,f=1-h-m,x=e,S=(e=>1/(200*e))(s),(e=>((f*e+m)*e+h)*e)(((e,t)=>{let n,a,o,s,l,u;for(o=e,u=0;u<8;u++){if(s=v(o)-e,b(s)<t)return o;if(l=y(o),b(l)<1e-6)break;o-=s/l}if(n=0,a=1,o=e,o<n)return n;if(o>a)return a;for(;n<a;){if(s=v(o),b(s-e)<t)return o;e>s?n=o:a=o,o=.5*(a-n)+n}return o})(x,S));var x,S}(o,e,t,n,a,1),t.setBezierFunction=(e,n,o,s,l)=>{let u=(0,t.getCubicBezierTransition)(n,o,s,l);return u.displayName=e,u.x1=n,u.y1=o,u.x2=s,u.y2=l,a.Tweenable.easing[e]=u}},156:function(e,t,n){var a=this&&this.__createBinding||(Object.create?function(e,t,n,a){a===void 0&&(a=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!(`get`in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,a,o)}:function(e,t,n,a){a===void 0&&(a=n),e[a]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)n==="default"||Object.prototype.hasOwnProperty.call(t,n)||a(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.standardEasingFunctions=t.setBezierFunction=t.Scene=t.interpolate=t.tween=t.Tweenable=t.shouldScheduleUpdate=t.processTweens=void 0;let s=n(55);Object.defineProperty(t,"processTweens",{enumerable:!0,get:function(){return s.processTweens}}),Object.defineProperty(t,"shouldScheduleUpdate",{enumerable:!0,get:function(){return s.shouldScheduleUpdate}}),Object.defineProperty(t,"Tweenable",{enumerable:!0,get:function(){return s.Tweenable}}),Object.defineProperty(t,"tween",{enumerable:!0,get:function(){return s.tween}});var l=n(243);Object.defineProperty(t,"interpolate",{enumerable:!0,get:function(){return l.interpolate}});var u=n(612);Object.defineProperty(t,"Scene",{enumerable:!0,get:function(){return u.Scene}});var d=n(933);Object.defineProperty(t,"setBezierFunction",{enumerable:!0,get:function(){return d.setBezierFunction}});var f=n(809);Object.defineProperty(t,"standardEasingFunctions",{enumerable:!0,get:function(){return f.standardEasingFunctions}}),o(n(613),t),t.VERSION=`3.0.6`},243:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.interpolate=void 0;let a=n(55),o=new a.Tweenable,{filters:s}=a.Tweenable;t.interpolate=(e,t,n,l=a.Tweenable.easing.linear,u=0)=>{let d=Object.assign({},e),f=(0,a.composeEasingObject)(e,l);o._filters.length=0,o.setState({}),o._currentState=d,o._originalState=e,o._targetState=t,o._easing=f;for(let e in s)s[e].doesApply(o)&&o._filters.push(s[e]);o._applyFilter(`tweenCreated`),o._applyFilter(`beforeTween`);let m=(0,a.tweenProps)(n,d,e,t,1,u,f);return o._applyFilter(`afterTween`),m}},612:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Scene=void 0,t.Scene=class{constructor(...e){this._tweenables=[],e.forEach(this.add.bind(this))}get tweenables(){return[...this._tweenables]}get promises(){return this._tweenables.map((e=>e.then()))}add(e){return this._tweenables.push(e),e}remove(e){let t=this._tweenables.indexOf(e);return t>-1&&this._tweenables.splice(t,1),e}empty(){return this.tweenables.map(this.remove.bind(this))}get isPlaying(){return this._tweenables.some((({isPlaying:e})=>e))}tween(){return this._tweenables.forEach((e=>e.tween())),this}pause(){return this._tweenables.forEach((e=>e.pause())),this}resume(){return this._tweenables.filter((({hasEnded:e})=>!e)).forEach((e=>e.resume())),this}stop(e){return this._tweenables.forEach((t=>t.stop(e))),this}}},809:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.standardEasingFunctions=void 0,t.standardEasingFunctions=Object.freeze({linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>-((e-1)**2-1),easeInOutQuad:e=>(e/=.5)<1?.5*e**2:-.5*((e-=2)*e-2),easeInCubic:e=>e**3,easeOutCubic:e=>(e-1)**3+1,easeInOutCubic:e=>(e/=.5)<1?.5*e**3:.5*((e-2)**3+2),easeInQuart:e=>e**4,easeOutQuart:e=>-((e-1)**4-1),easeInOutQuart:e=>(e/=.5)<1?.5*e**4:-.5*((e-=2)*e**3-2),easeInQuint:e=>e**5,easeOutQuint:e=>(e-1)**5+1,easeInOutQuint:e=>(e/=.5)<1?.5*e**5:.5*((e-2)**5+2),easeInSine:e=>1-Math.cos(Math.PI/2*e),easeOutSine:e=>Math.sin(Math.PI/2*e),easeInOutSine:e=>-.5*(Math.cos(Math.PI*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:1-2**(-10*e),easeInOutExpo:e=>e===0?0:e===1?1:(e/=.5)<1?.5*2**(10*(e-1)):.5*(2-2**(-10*--e)),easeInCirc:e=>-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-1)**2),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeOutBounce:e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,easeInBack:e=>e*e*(2.70158*e-1.70158),easeOutBack:e=>--e*e*(2.70158*e+1.70158)+1,easeInOutBack:e=>{let t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},elastic:e=>-1*4**(-8*e)*Math.sin((6*e-1)*(2*Math.PI)/2)+1,swingFromTo:e=>{let t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},swingFrom:e=>e*e*(2.70158*e-1.70158),swingTo:e=>--e*e*(2.70158*e+1.70158)+1,bounce:e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,bouncePast:e=>e<1/2.75?7.5625*e*e:e<2/2.75?2-(7.5625*(e-=1.5/2.75)*e+.75):e<2.5/2.75?2-(7.5625*(e-=2.25/2.75)*e+.9375):2-(7.5625*(e-=2.625/2.75)*e+.984375),easeFromTo:e=>(e/=.5)<1?.5*e**4:-.5*((e-=2)*e**3-2),easeFrom:e=>e**4,easeTo:e=>e**.25})},525:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.afterTween=t.beforeTween=t.tweenCreated=t.doesApply=void 0;let a=n(613),o=/(\d|-|\.)/,s=/([^\-0-9.]+)/g,l=/[0-9.-]+/g,u=(()=>{let e=l.source,t=`,\\s*`;return RegExp(`rgba?\\(${e}${t}${e}${t}${e}(${t}${e})?\\)`,`g`)})(),d=/^.*\(/,f=/#([0-9]|[a-f]){3,6}/gi,m=`VAL`,h=(e,t)=>e.map(((e,n)=>`_${t}_${n}`)),v=e=>{let t=e.match(s);return t?(t.length===1||e.charAt(0).match(o))&&t.unshift(``):t=[``,``],t.join(`VAL`)};function y(e){return parseInt(e,16)}let b=e=>`rgb(${(e=>{if((e=e.replace(/#/,``)).length===3){let[t,n,a]=e.split(``);e=t+t+n+n+a+a}return[y(e.substring(0,2)),y(e.substring(2,4)),y(e.substring(4,6))]})(e).join(`,`)})`,x=(e,t,n)=>{let a=t.match(e),o=t.replace(e,`VAL`);return a&&a.forEach((e=>o=o.replace(`VAL`,n(e)))),o},S=e=>{for(let t in e){let n=e[t];typeof n==`string`&&n.match(f)&&(e[t]=x(f,n,b))}},C=e=>{var t,n;let a=e.match(l)??[],o=a.slice(0,3).map((e=>Math.floor(Number(e)))),s=e.match(d)?.[0];if(a.length===3)return`${s}${o.join(`,`)})`;if(a.length===4)return`${s}${o.join(`,`)},${a[3]})`;throw Error(`Invalid rgbChunk: ${e}`)},T=e=>{var t;return e.match(l)??[]},E=(e,t)=>{let n={};return t.forEach((t=>{n[t]=e[t],delete e[t]})),n},D=(e,t)=>t.map((t=>Number(e[t]))),O=(e,t)=>(t.forEach((t=>e=e.replace(`VAL`,String(+t.toFixed(4))))),e);t.doesApply=e=>{for(let t in e._currentState)if(typeof e._currentState[t]==`string`)return!0;return!1},t.tweenCreated=function(e){let{_currentState:t,_originalState:n,_targetState:a}=e;[t,n,a].forEach(S),e._tokenData=(e=>{var t;let n={};for(let t in e){let a=e[t];typeof a==`string`&&(n[t]={formatString:v(a),chunkNames:h(T(a)?.map(Number),t)})}return n})(t)},t.beforeTween=function(e){let{_currentState:t,_originalState:n,_targetState:o,_easing:s,_tokenData:l}=e;typeof s!=`function`&&l&&((e,t)=>{var n;for(let n in t){let{chunkNames:o}=t[n],s=e[n];if(typeof s==`string`){let t=s.split(` `),n=t[t.length-1];for(let s=0;s<o.length;s++){let l=o[s],u=t[s]??n;(0,a.isEasingKey)(u)&&(e[l]=u)}}else o.forEach((t=>e[t]=s));delete e[n]}})(s,l),[t,n,o].forEach((e=>((e,t)=>{for(let n in t)T(String(e[n])).forEach(((a,o)=>e[t[n].chunkNames[o]]=+a)),delete e[n]})(e,l??{})))},t.afterTween=function(e){let{_currentState:t,_originalState:n,_targetState:a,_easing:o,_tokenData:s}=e;[t,n,a].forEach((e=>((e,t)=>{for(let n in t){let{chunkNames:a,formatString:o}=t[n],s=O(o,D(E(e,a),a));e[n]=x(u,s,C)}})(e,s??{}))),typeof o!=`function`&&s&&((e,t)=>{for(let n in t){let{chunkNames:a}=t[n],o=e[a[0]];e[n]=typeof o==`string`?a.map((t=>{let n=e[t];return delete e[t],n})).join(` `):o}})(o,s)}},55:function(e,t,n){var a,o=this&&this.__createBinding||(Object.create?function(e,t,n,a){a===void 0&&(a=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!(`get`in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,a,o)}:function(e,t,n,a){a===void 0&&(a=n),e[a]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return s(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.shouldScheduleUpdate=t.tween=t.Tweenable=t.composeEasingObject=t.scheduleUpdate=t.processTweens=t.tweenProps=t.getListTail=t.getListHead=t.resetList=void 0;let u=n(809),d=n(933),f=n(613),m=l(n(525)),h=`linear`,v=1e3/60,y=typeof window<`u`?window:n.g,b=`afterTween`,x=`beforeTween`,S=`string`,C=`function`,T=y.requestAnimationFrame;T||=typeof window>`u`?setTimeout:window.webkitRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.mozCancelRequestAnimationFrame&&window.mozRequestAnimationFrame||setTimeout;let E=()=>{},D=null,O=null;t.resetList=()=>{D=O=null},t.getListHead=()=>D,t.getListTail=()=>O,t.tweenProps=(e,t,n,a,o,s,l)=>{var d;let f,m=0,h=e<s?0:(e-s)/o,v;for(let e in t){if(typeof l==C)v=l;else{let t=l[e];v=typeof t==C?t:L.easing[t]??u.standardEasingFunctions.linear}m=v(h),f=n[e],t[e]=f+(a[e]-f)*m}return t};let k=(e,n)=>{var a;let o=e._timestamp??0,s=e._currentState,l=e._delay;if(n<o+l)return;let u=e._duration,d=e._targetState,f=o+l+u,m=n>f?f:n;e._hasEnded=m>=f;let h=u-(f-m);if(e._hasEnded)return e._render(d,h,e._data),e.stop(!0);e._applyFilter(x),m<o+l?o=u=m=1:o+=l,(0,t.tweenProps)(m,s,e._originalState,d,u,o,e._easing),e._applyFilter(b),e._render(s,h,e._data)};t.processTweens=()=>{let e,t=L.now(),n=D;for(;n;)e=n._next,k(n,t),n=e};let{now:j}=Date,M,N=!1;t.scheduleUpdate=()=>{M=j(),N&&T.call(y,t.scheduleUpdate,16.666666666666668),(0,t.processTweens)()},t.composeEasingObject=(e,t=h,n={})=>{if(typeof t==S&&(0,f.isEasingKey)(t))return L.easing[t];if(Array.isArray(t))return(0,d.getCubicBezierTransition)(...t);if(typeof n==`object`)if(typeof t==S||typeof t==C)for(let a in e)n[a]=t;else for(let a in e)n[a]=t[a]||h;return n};let F=(()=>{let e,t;return n=>{e=null,t=null,n===D?(D=n._next,D?D._previous=null:O=null):n===O?(O=n._previous,O?O._next=null:D=null):(e=n._previous,t=n._next,e&&(e._next=t),t&&(t._previous=e)),n._previous=n._next=null}})(),I=typeof Promise==C?Promise:null;class L{constructor(e={},t){this[a]=`Promise`,this._next=null,this._previous=null,this._config={},this._data={},this._delay=0,this._duration=500,this._filters=[],this._timestamp=null,this._hasEnded=!1,this._resolve=null,this._reject=null,this._originalState={},this._targetState={},this._start=E,this._render=E,this._promiseCtor=I,this._promise=null,this._isPlaying=!1,this._pausedAtTime=null,this._easing={},this._currentState=e||{},t&&this.setConfig(t)}_applyFilter(e){var t;for(let n=this._filters.length;n>0;n--){let a=this._filters[n-n];(t=a[e])==null||t.call(a,this)}}tween(e){return this._isPlaying&&this.stop(),!e&&this._config||this.setConfig(e),this._pausedAtTime=null,this._timestamp=L.now(),this._start(this.state,this._data),this._delay&&this._render(this._currentState,0,this._data),this._resume(this._timestamp)}setConfig(e={}){var n;let{_config:a}=this,o;for(o in e)a[o]=e[o];let{promise:s=this._promiseCtor,start:l=E,finish:u,render:d=E}=a;this._data=a.data||this._data,this._isPlaying=!1,this._pausedAtTime=null,this._delay=e.delay||0,this._start=l,this._render=d,this._duration=a.duration||500,this._promiseCtor=s,u&&(this._resolve=u);let{from:f,to:m={}}=e,{_currentState:h,_originalState:v,_targetState:y}=this;for(let e in f)h[e]=f[e];let b=!1;for(let e in h){let t=h[e];b||typeof t!=S||(b=!0),v[e]=t,y[e]=m[e]??t}if(this._easing=(0,t.composeEasingObject)(this._currentState,a.easing,this._easing),this._filters.length=0,b){for(let e in L.filters)L.filters[e].doesApply(this)&&this._filters.push(L.filters[e]);this._applyFilter(`tweenCreated`)}return this}then(e,t){if(!this._promiseCtor)throw Error(`Promise implementation is unavailable`);return this._promise=new this._promiseCtor(((e,t)=>{this._resolve=e,this._reject=t})),this._promise.then(e,t)}catch(e){return this.then().catch(e)}finally(e){return this.then().finally(e)}get state(){return Object.assign({},this._currentState)}setState(e){this._currentState=e}pause(){return this._isPlaying?(this._pausedAtTime=L.now(),this._isPlaying=!1,F(this),this):this}resume(){return this._resume()}_resume(e=L.now()){if(this._timestamp===null)return this.tween();if(this._isPlaying&&this._promise)return this;this._pausedAtTime&&=(this._timestamp+=e-this._pausedAtTime,null),this._isPlaying=!0;let n=!!D;return D===null?(D=this,O=this):(this._previous=O,O&&(O._next=this),O=this),n||(0,t.shouldScheduleUpdate)(!0),this}seek(e){var t;e=Math.max(e,0);let n=L.now();return(this._timestamp??0)+e===0||(this._timestamp=n-e,k(this,n)),this}stop(e=!1){var n;return this._isPlaying?(this._isPlaying=!1,F(this),e&&(this._applyFilter(x),(0,t.tweenProps)(1,this._currentState,this._originalState,this._targetState,1,0,this._easing),this._applyFilter(b),this._applyFilter(`afterTweenEnd`)),(n=this._resolve)==null||n.call(this,{data:this._data,state:this._currentState,tweenable:this}),this._resolve=null,this._reject=null,this):this}cancel(e=!1){var t;let{_currentState:n,_data:a,_isPlaying:o}=this;return o?((t=this._reject)==null||t.call(this,{data:a,state:n,tweenable:this}),this._resolve=null,this._reject=null,this.stop(e)):this}get isPlaying(){return this._isPlaying}get hasEnded(){return this._hasEnded}data(e=null){return e&&(this._data=Object.assign({},e)),this._data}dispose(){for(let e in this)delete this[e]}}t.Tweenable=L,a=Symbol.toStringTag,L.now=()=>(N||(M=j()),M),L.setScheduleFunction=e=>T=e,L.filters={token:m},L.easing=Object.create(u.standardEasingFunctions),t.tween=function(e={}){return new L({},{}).tween(e)},t.shouldScheduleUpdate=e=>{e&&N||(N=e,e&&(0,t.scheduleUpdate)())}},613:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.isEasingKey=void 0;let a=n(55);t.isEasingKey=e=>e in a.Tweenable.easing}},t={};function n(a){var o=t[a];if(o!==void 0)return o.exports;var s=t[a]={exports:{}};return e[a].call(s.exports,s,s.exports,n),s.exports}return n.g=function(){if(typeof globalThis==`object`)return globalThis;try{return this||Function(`return this`)()}catch{if(typeof window==`object`)return window}}(),n(156)}()}))}));init_generateUtilityClasses(),init_generateUtilityClass();function getAppBarUtilityClass(e){return generateUtilityClass(`MuiAppBar`,e)}var appBarClasses=generateUtilityClasses(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$56=[`className`,`color`,`enableColorOnDark`,`position`],useUtilityClasses$50=e=>{let{color:t,position:n,classes:a}=e;return composeClasses({root:[`root`,`color${capitalize_default(t)}`,`position${capitalize_default(n)}`]},getAppBarUtilityClass,a)},joinVars=(e,t)=>e?`${e?.replace(`)`,``)}, ${t})`:t,AppBarRoot=styled$1(Paper,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${capitalize_default(n.position)}`],t[`color${capitalize_default(n.color)}`]]}})(({theme:e,ownerState:t})=>{let n=e.palette.mode===`light`?e.palette.grey[100]:e.palette.grey[900];return _extends$3({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0},t.position===`fixed`&&{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}},t.position===`absolute`&&{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0},t.position===`sticky`&&{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0},t.position===`static`&&{position:`static`},t.position===`relative`&&{position:`relative`},!e.vars&&_extends$3({},t.color==="default"&&{backgroundColor:n,color:e.palette.getContrastText(n)},t.color&&t.color!=="default"&&t.color!==`inherit`&&t.color!==`transparent`&&{backgroundColor:e.palette[t.color].main,color:e.palette[t.color].contrastText},t.color===`inherit`&&{color:`inherit`},e.palette.mode===`dark`&&!t.enableColorOnDark&&{backgroundColor:null,color:null},t.color===`transparent`&&_extends$3({backgroundColor:`transparent`,color:`inherit`},e.palette.mode===`dark`&&{backgroundImage:`none`})),e.vars&&_extends$3({},t.color==="default"&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette.AppBar.defaultBg:joinVars(e.vars.palette.AppBar.darkBg,e.vars.palette.AppBar.defaultBg),"--AppBar-color":t.enableColorOnDark?e.vars.palette.text.primary:joinVars(e.vars.palette.AppBar.darkColor,e.vars.palette.text.primary)},t.color&&!t.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette[t.color].main:joinVars(e.vars.palette.AppBar.darkBg,e.vars.palette[t.color].main),"--AppBar-color":t.enableColorOnDark?e.vars.palette[t.color].contrastText:joinVars(e.vars.palette.AppBar.darkColor,e.vars.palette[t.color].contrastText)},![`inherit`,`transparent`].includes(t.color)&&{backgroundColor:`var(--AppBar-background)`},{color:t.color===`inherit`?`inherit`:`var(--AppBar-color)`},t.color===`transparent`&&{backgroundImage:`none`,backgroundColor:`transparent`,color:`inherit`}))}),AppBar$1=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAppBar`}),{className:a,color:o=`primary`,enableColorOnDark:s=!1,position:l=`fixed`}=n,u=_objectWithoutPropertiesLoose$3(n,_excluded$56),d=_extends$3({},n,{color:o,position:l,enableColorOnDark:s}),f=useUtilityClasses$50(d);return(0,import_jsx_runtime.jsx)(AppBarRoot,_extends$3({square:!0,component:`header`,ownerState:d,elevation:4,className:clsx$1(f.root,a,l===`fixed`&&`mui-fixed`),ref:t},u))});init_generateUtilityClasses(),init_generateUtilityClass();function getToolbarUtilityClass(e){return generateUtilityClass(`MuiToolbar`,e)}var toolbarClasses=generateUtilityClasses(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled();var _excluded$55=[`className`,`component`,`disableGutters`,`variant`],useUtilityClasses$49=e=>{let{classes:t,disableGutters:n,variant:a}=e;return composeClasses({root:[`root`,!n&&`gutters`,a]},getToolbarUtilityClass,t)},ToolbarRoot=styled$1(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(({theme:e,ownerState:t})=>_extends$3({position:`relative`,display:`flex`,alignItems:`center`},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}},t.variant===`dense`&&{minHeight:48}),({theme:e,ownerState:t})=>t.variant===`regular`&&e.mixins.toolbar),Toolbar=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiToolbar`}),{className:a,component:o=`div`,disableGutters:s=!1,variant:l=`regular`}=n,u=_objectWithoutPropertiesLoose$3(n,_excluded$55),d=_extends$3({},n,{component:o,disableGutters:s,variant:l}),f=useUtilityClasses$49(d);return(0,import_jsx_runtime.jsx)(ToolbarRoot,_extends$3({as:o,className:clsx$1(f.root,a),ref:t,ownerState:d},u))});init_generateUtilityClasses(),init_generateUtilityClass();function getTypographyUtilityClass(e){return generateUtilityClass(`MuiTypography`,e)}var typographyClasses=generateUtilityClasses(`MuiTypography`,[`root`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`subtitle1`,`subtitle2`,`body1`,`body2`,`inherit`,`button`,`caption`,`overline`,`alignLeft`,`alignRight`,`alignCenter`,`alignJustify`,`noWrap`,`gutterBottom`,`paragraph`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_styleFunctionSx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$54=[`align`,`className`,`component`,`gutterBottom`,`noWrap`,`paragraph`,`variant`,`variantMapping`],useUtilityClasses$48=e=>{let{align:t,gutterBottom:n,noWrap:a,paragraph:o,variant:s,classes:l}=e;return composeClasses({root:[`root`,s,e.align!==`inherit`&&`align${capitalize_default(t)}`,n&&`gutterBottom`,a&&`noWrap`,o&&`paragraph`]},getTypographyUtilityClass,l)},TypographyRoot=styled$1(`span`,{name:`MuiTypography`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],n.align!==`inherit`&&t[`align${capitalize_default(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(({theme:e,ownerState:t})=>_extends$3({margin:0},t.variant===`inherit`&&{font:`inherit`},t.variant!==`inherit`&&e.typography[t.variant],t.align!==`inherit`&&{textAlign:t.align},t.noWrap&&{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},t.gutterBottom&&{marginBottom:`0.35em`},t.paragraph&&{marginBottom:16})),defaultVariantMapping={h1:`h1`,h2:`h2`,h3:`h3`,h4:`h4`,h5:`h5`,h6:`h6`,subtitle1:`h6`,subtitle2:`h6`,body1:`p`,body2:`p`,inherit:`p`},colorTransformations={primary:`primary.main`,textPrimary:`text.primary`,secondary:`secondary.main`,textSecondary:`text.secondary`,error:`error.main`},transformDeprecatedColors=e=>colorTransformations[e]||e,Typography=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiTypography`}),a=transformDeprecatedColors(n.color),o=extendSxProp(_extends$3({},n,{color:a})),{align:s=`inherit`,className:l,component:u,gutterBottom:d=!1,noWrap:f=!1,paragraph:m=!1,variant:h=`body1`,variantMapping:v=defaultVariantMapping}=o,y=_objectWithoutPropertiesLoose$3(o,_excluded$54),b=_extends$3({},o,{align:s,color:a,className:l,component:u,gutterBottom:d,noWrap:f,paragraph:m,variant:h,variantMapping:v}),x=u||(m?`p`:v[h]||defaultVariantMapping[h])||`span`,S=useUtilityClasses$48(b);return(0,import_jsx_runtime.jsx)(TypographyRoot,_extends$3({as:x,ref:t,ownerState:b,className:clsx$1(S.root,l)},y))});init_createSvgIcon();var CheckCircle_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z`}),`CheckCircle`);init_createSvgIcon();var Warning_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z`}),`Warning`);init_generateUtilityClasses(),init_generateUtilityClass();function getStepIconUtilityClass(e){return generateUtilityClass(`MuiStepIcon`,e)}var stepIconClasses=generateUtilityClasses(`MuiStepIcon`,[`root`,`active`,`completed`,`error`,`text`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_SvgIcon();var _circle,_excluded$53=[`active`,`className`,`completed`,`error`,`icon`],useUtilityClasses$47=e=>{let{classes:t,active:n,completed:a,error:o}=e;return composeClasses({root:[`root`,n&&`active`,a&&`completed`,o&&`error`],text:[`text`]},getStepIconUtilityClass,t)},StepIconRoot=styled$1(SvgIcon,{name:`MuiStepIcon`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>({display:`block`,transition:e.transitions.create(`color`,{duration:e.transitions.duration.shortest}),color:(e.vars||e).palette.text.disabled,[`&.${stepIconClasses.completed}`]:{color:(e.vars||e).palette.primary.main},[`&.${stepIconClasses.active}`]:{color:(e.vars||e).palette.primary.main},[`&.${stepIconClasses.error}`]:{color:(e.vars||e).palette.error.main}})),StepIconText=styled$1(`text`,{name:`MuiStepIcon`,slot:`Text`,overridesResolver:(e,t)=>t.text})(({theme:e})=>({fill:(e.vars||e).palette.primary.contrastText,fontSize:e.typography.caption.fontSize,fontFamily:e.typography.fontFamily})),StepIcon=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiStepIcon`}),{active:a=!1,className:o,completed:s=!1,error:l=!1,icon:u}=n,d=_objectWithoutPropertiesLoose$3(n,_excluded$53),f=_extends$3({},n,{active:a,completed:s,error:l}),m=useUtilityClasses$47(f);if(typeof u==`number`||typeof u==`string`){let e=clsx$1(o,m.root);return l?(0,import_jsx_runtime.jsx)(StepIconRoot,_extends$3({as:Warning_default,className:e,ref:t,ownerState:f},d)):s?(0,import_jsx_runtime.jsx)(StepIconRoot,_extends$3({as:CheckCircle_default,className:e,ref:t,ownerState:f},d)):(0,import_jsx_runtime.jsxs)(StepIconRoot,_extends$3({className:e,ref:t,ownerState:f},d,{children:[_circle||=(0,import_jsx_runtime.jsx)(`circle`,{cx:`12`,cy:`12`,r:`12`}),(0,import_jsx_runtime.jsx)(StepIconText,{className:m.text,x:`12`,y:`12`,textAnchor:`middle`,dominantBaseline:`central`,ownerState:f,children:u})]}))}return u}),require_FileSaver_min=__commonJSMin(((e,t)=>{(function(t,n){typeof define==`function`&&define.amd?define([],n):e===void 0?(n(),t.FileSaver={exports:{}}.exports):n()})(e,function(){function e(e,t){return t===void 0?t={autoBom:!1}:typeof t!=`object`&&(console.warn(`Deprecated: Expected third argument to be a object`),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function n(e,t,n){var a=new XMLHttpRequest;a.open(`GET`,e),a.responseType=`blob`,a.onload=function(){u(a.response,t,n)},a.onerror=function(){console.error(`could not download file`)},a.send()}function a(e){var t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function o(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{var t=document.createEvent(`MouseEvents`);t.initMouseEvent(`click`,!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var s=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:{}.global==={}?{}:void 0,l=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),u=s.saveAs||(typeof window!=`object`||window!==s?function(){}:`download`in HTMLAnchorElement.prototype&&!l?function(e,t,l){var u=s.URL||s.webkitURL,d=document.createElement(`a`);t=t||e.name||`download`,d.download=t,d.rel=`noopener`,typeof e==`string`?(d.href=e,d.origin===location.origin?o(d):a(d.href)?n(e,t,l):o(d,d.target=`_blank`)):(d.href=u.createObjectURL(e),setTimeout(function(){u.revokeObjectURL(d.href)},4e4),setTimeout(function(){o(d)},0))}:`msSaveOrOpenBlob`in navigator?function(t,s,l){if(s=s||t.name||`download`,typeof t!=`string`)navigator.msSaveOrOpenBlob(e(t,l),s);else if(a(t))n(t,s,l);else{var u=document.createElement(`a`);u.href=t,u.target=`_blank`,setTimeout(function(){o(u)})}}:function(e,t,a,o){if(o||=open(``,`_blank`),o&&(o.document.title=o.document.body.innerText=`downloading...`),typeof e==`string`)return n(e,t,a);var u=e.type===`application/octet-stream`,d=/constructor/i.test(s.HTMLElement)||s.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent);if((f||u&&d||l)&&typeof FileReader<`u`){var m=new FileReader;m.onloadend=function(){var e=m.result;e=f?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),o?o.location.href=e:location=e,o=null},m.readAsDataURL(e)}else{var h=s.URL||s.webkitURL,v=h.createObjectURL(e);o?o.location=v:location.href=v,o=null,setTimeout(function(){h.revokeObjectURL(v)},4e4)}});s.saveAs=u.saveAs=u,t!==void 0&&(t.exports=u)})})),require_window=__commonJSMin(((e,t)=>{t.exports=typeof window<`u`?window:{}})),import_shifty=require_shifty(),import_FileSaver_min=require_FileSaver_min(),import_window=__toESM(require_window()),PROGRESS_SAVED_MESSAGE=`Progress saved!`,RAIN_MESSAGE=`It rained in the night!`,STORM_MESSAGE=`There was a storm in the night!`,STORM_DESTROYS_SCARECROWS_MESSAGE=`There was a storm in the night! No scarecrows survived!`,LIGHTNING_ROD_STRUCK_MESSAGE=`There was a storm in the night! Your lightning rod took a hit protecting the field.`,LIGHTNING_ROD_DESTROYED_MESSAGE=`There was a storm in the night! Your lightning rod was destroyed protecting the field.`,LIGHTNING_ROD_REPLANTED_MESSAGE=`There was a storm in the night! Your lightning rod took a lethal hit, but a rainbow-fertilized replacement was instantly planted in its place!`,FARM_PRODUCTS_TOOLTIP_TEXT=`This figure only includes sales of grown crops, crafted items, and animal products.`,COW_SOLD_TOOLTIP_TEXT=`This figure only includes cows you were not the original owner for.`,DATA_DELETED=`Your local game data has been deleted.`,INVALID_DATA_PROVIDED=`Invalid Farmhand data provided.`,UPDATE_AVAILABLE=`A game update is available! Click this message to reload and see what's new.`,SERVER_ERROR=`There was an issue connecting to the server. Please try again in a moment.`,CONNECTING_TO_SERVER=`Connecting...`,DISCONNECTING_FROM_SERVER=`Disconnecting...`,DISCONNECTED_FROM_SERVER=`You are now playing offline.`,REQUESTED_COW_TRADE_UNAVAILABLE=`The requested cow is no longer available.`,UNKNOWN_COW_TRADE_FAILURE=`Something went wrong with your cow trade request. Please try again!`,COW_ALREADY_OWNED=`It looks like you already have this cow!`,OUT_OF_COW_FEED_NOTIFICATION=`You're out of cow feed! Buy some more before your cows get hungry and run away!`,INVENTORY_FULL_NOTIFICATION=`Your inventory is full!`,SHOVELED=`Shoveled plot`,WATERING_CAN_ALT_TEXT=`A watering can for hydrating plants.`,WATERING_CAN_HIDDEN_TEXT=`Select the watering can to water your crops`,SCYTHE_ALT_TEXT=`A scythe for crop harvesting.`,SCYTHE_HIDDEN_TEXT=`Select the scythe to harvest ripened crops`,HOE_ALT_TEXT=`A hoe for removing crops and disposing of them. Also returns replantable items to your inventory.`,HOE_HIDDEN_TEXT=`Select the hoe to clear crops, or replantable field items`,SHOVEL_ALT_TEXT=`A shovel for digging up rocks.`,SHOVEL_HIDDEN_TEXT=`Select the shovel to dig for ore`,AXE_ALT_TEXT=`An axe for chopping down trees.`,AXE_HIDDEN_TEXT=`Select the axe to chop down trees in the forest for wood`,PICKER_POLE_ALT_TEXT=`A picker pole for gathering tree fruit.`,PICKER_POLE_HIDDEN_TEXT=`Select the picker pole to pick ripe fruit from trees in the forest`,TOOL_LEVEL_INFO={SCYTHE:{DEFAULT:`**Basic**: Harvests one crop per plot.`,BRONZE:`**Bronze**: Harvests two crops per plot.`,IRON:`**Iron**: Harvests three crops per plot.`,SILVER:`**Silver**: Harvests four crops per plot.`,GOLD:`**Gold**: Harvests five crops per plot.`},SHOVEL:{DEFAULT:`**Basic**: Has a 30% chance of digging up resources.`,BRONZE:`**Bronze**: Has a 40% chance of digging up resources.`,IRON:`**Iron**: Has a 50% chance of digging up resources.`,SILVER:`**Silver**: Has a 60% chance of digging up resources.`,GOLD:`**Gold**: Has a 70% chance of digging up resources.`},WATERING_CAN:{DEFAULT:`**Basic**: Keeps plots watered for one day.`,BRONZE:`**Bronze**: Keeps plots watered for two days.`,IRON:`**Iron**: Keeps plots watered for three days.`,SILVER:`**Silver**: Keeps plots watered for four days.`,GOLD:`**Gold**: Keeps plots watered for five days.`},HOE:{DEFAULT:`**Basic**: Destroys crops.`,BRONZE:`**Bronze**: 25% chance to retrieve seeds when digging up crops.`,IRON:`**Iron**: 50% chance to retrieve seeds when digging up crops.`,SILVER:`**Silver**: 75% chance to retrieve seeds when digging up crops.`,GOLD:`**Gold**: 100% chance to retrieve seeds when digging up crops.`},AXE:{DEFAULT:`**Basic**: Chops down trees for 1-2 wood.`,BRONZE:`**Bronze**: Chops down trees for 2-4 wood.`,IRON:`**Iron**: Chops down trees for 4-6 wood.`,SILVER:`**Silver**: Chops down trees for 6-8 wood.`,GOLD:`**Gold**: Chops down trees for 8-10 wood.`},PICKER_POLE:{DEFAULT:`**Basic**: Picks 1 fruit per harvest.`,BRONZE:`**Bronze**: Picks 2 fruit per harvest.`,IRON:`**Iron**: Picks 3 fruit per harvest.`,SILVER:`**Silver**: Picks 4 fruit per harvest.`,GOLD:`**Gold**: Picks 5 fruit per harvest.`}},FORGE_AVAILABLE_NOTIFICATION=`**The Forge** is now available in the Workshop!`,RECYCLING_AVAILABLE_NOTIFICATION=`**Recycling** is now available in the Workshop!`,FOREST_AVAILABLE_NOTIFICATION=`The **Forest** is now available!`,WOOD_CHIPPER_AVAILABLE_NOTIFICATION=`**Wood Chipper** recipes are now available in the Workshop!`,COW_COLOR_NAMES={[cowColors.BLUE]:`Blue`,[cowColors.BROWN]:`Brown`,[cowColors.GREEN]:`Green`,[cowColors.ORANGE]:`Orange`,[cowColors.PURPLE]:`Purple`,[cowColors.RAINBOW]:`Rainbow`,[cowColors.WHITE]:`White`,[cowColors.YELLOW]:`Yellow`},SHOVEL_UNLOCKED=`You've unlocked a new tool for the field, The **Shovel**!`,require_src=__commonJSMin(((e,t)=>{function n(e,t){var n=t&&t.cache?t.cache:v,a=t&&t.serializer?t.serializer:m;return(t&&t.strategy?t.strategy:u)(e,{cache:n,serializer:a})}function a(e){return e==null||typeof e==`number`||typeof e==`boolean`}function o(e,t,n,o){var s=a(o)?o:n(o),l=t.get(s);return l===void 0&&(l=e.call(this,o),t.set(s,l)),l}function s(e,t,n){var a=Array.prototype.slice.call(arguments,3),o=n(a),s=t.get(o);return s===void 0&&(s=e.apply(this,a),t.set(o,s)),s}function l(e,t,n,a,o){return n.bind(t,e,a,o)}function u(e,t){var n=e.length===1?o:s;return l(e,this,n,t.cache.create(),t.serializer)}function d(e,t){var n=s;return l(e,this,n,t.cache.create(),t.serializer)}function f(e,t){var n=o;return l(e,this,n,t.cache.create(),t.serializer)}function m(){return JSON.stringify(arguments)}function h(){this.cache=Object.create(null)}h.prototype.has=function(e){return e in this.cache},h.prototype.get=function(e){return this.cache[e]},h.prototype.set=function(e,t){this.cache[e]=t};var v={create:function(){return new h}};t.exports=n,t.exports.strategies={variadic:d,monadic:f}})),import_src=__toESM(require_src()),MemoizeCache=class{cache={};cacheSize;constructor({cacheSize:e=10}={}){this.cacheSize=e}has(e){return e in this.cache}get(e){return this.cache[e]}set(e,t){Object.keys(this.cache).length>this.cacheSize&&(this.cache={}),this.cache[e]=t}},memoize=(e,t={})=>(0,import_src.default)(e,{cache:{create:()=>new MemoizeCache(t)},...t}),getCropLifecycleDuration=memoize(({cropTimeline:e})=>e.reduce((e,t)=>e+t,0)),{freeze:freeze$9}=Object,crop=({cropTimeline:e=[],growsInto:t,tier:n=1,isSeed:a=!!t,cropLifecycleDuration:o=getCropLifecycleDuration({cropTimeline:e}),id:s=``,name:l=``,...u})=>freeze$9({id:s,name:l,cropTimeline:e,doesPriceFluctuate:!0,tier:n,type:itemType.CROP,value:10+o*n*(a?1:3),...a&&{enablesFieldMode:fieldMode.PLANT,growsInto:t,isPlantableCrop:!0},...u}),fromSeed=({cropTimeline:e,cropType:t,growsInto:n,tier:a=1,highDemandSeasons:o,lowDemandSeasons:s},{variantIdx:l=0,canBeFermented:u=!1}={})=>({id:(Array.isArray(n)?n:[n])[l]||``,cropTimeline:e||[],cropType:t,doesPriceFluctuate:!0,tier:a,type:itemType.CROP,highDemandSeasons:o,lowDemandSeasons:s,...u&&e&&{daysToFerment:getCropLifecycleDuration({cropTimeline:e})*a}}),cropVariety=({imageId:e,cropFamily:t,variety:n,...a})=>({imageId:e,cropFamily:t,variety:n,...crop({...a})}),isGrape=e=>`cropFamily`in e&&e.cropFamily===cropFamily.GRAPE,grape=e=>({...e,...cropVariety({...e,cropFamily:cropFamily.GRAPE})}),grapeSeed=crop({cropType:cropType.GRAPE,cropTimeline:[3,4],growsInto:[`grape-chardonnay`,`grape-sauvignon-blanc`,`grape-cabernet-sauvignon`,`grape-tempranillo`,`grape-nebbiolo`],highDemandSeasons:[season.SPRING,season.FALL],id:`grape-seed`,lowDemandSeasons:[season.WINTER],name:`Grape Seed`,tier:7}),grapeVarietyNameMap={[grapeVariety.CHARDONNAY]:`Chardonnay`,[grapeVariety.SAUVIGNON_BLANC]:`Sauvignon Blanc`,[grapeVariety.CABERNET_SAUVIGNON]:`Cabernet Sauvignon`,[grapeVariety.TEMPRANILLO]:`Tempranillo`,[grapeVariety.NEBBIOLO]:`Nebbiolo`},wineVarietyValueMap={[grapeVariety.CHARDONNAY]:1,[grapeVariety.SAUVIGNON_BLANC]:8,[grapeVariety.CABERNET_SAUVIGNON]:3,[grapeVariety.TEMPRANILLO]:5,[grapeVariety.NEBBIOLO]:10},grapeChardonnay=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-chardonnay`)}),name:`Chardonnay Grape`,imageId:`grape-green`,variety:grapeVariety.CHARDONNAY,wineId:`wine-chardonnay`}),grapeSauvignonBlanc=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-sauvignon-blanc`)}),name:`Sauvignon Blanc Grape`,imageId:`grape-green`,variety:grapeVariety.SAUVIGNON_BLANC,wineId:`wine-sauvignon-blanc`}),grapeCabernetSauvignon=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-cabernet-sauvignon`)}),name:`Cabernet Sauvignon Grape`,imageId:`grape-purple`,variety:grapeVariety.CABERNET_SAUVIGNON,wineId:`wine-cabernet-sauvignon`}),grapeTempranillo=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-tempranillo`)}),name:`Tempranillo Grape`,imageId:`grape-purple`,variety:grapeVariety.TEMPRANILLO,wineId:`wine-tempranillo`}),grapeNebbiolo=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-nebbiolo`)}),name:`Nebbiolo Grape`,imageId:`grape-purple`,variety:grapeVariety.NEBBIOLO,wineId:`wine-nebbiolo`}),grapeVarietyToGrapeItemMap={[grapeVariety.CHARDONNAY]:grapeChardonnay,[grapeVariety.SAUVIGNON_BLANC]:grapeSauvignonBlanc,[grapeVariety.CABERNET_SAUVIGNON]:grapeCabernetSauvignon,[grapeVariety.TEMPRANILLO]:grapeTempranillo,[grapeVariety.NEBBIOLO]:grapeNebbiolo},getYeastRequiredForWine=e=>wineVarietyValueMap[e]*5,asparagusSeed=crop({cropType:cropType.ASPARAGUS,cropTimeline:[4,2,2,1],growsInto:`asparagus`,highDemandSeasons:[season.SUMMER],id:`asparagus-seed`,lowDemandSeasons:[season.WINTER],name:`Asparagus Seed`,tier:4}),asparagus=crop({...fromSeed(asparagusSeed,{canBeFermented:!0}),name:`Asparagus`}),carrotSeed=crop({cropType:cropType.CARROT,cropTimeline:[2,1,1,1],growsInto:`carrot`,highDemandSeasons:[season.SPRING],id:`carrot-seed`,name:`Carrot Seed`,tier:1}),carrot=crop({...fromSeed(carrotSeed,{canBeFermented:!0}),name:`Carrot`}),cornSeed=crop({cropType:cropType.CORN,cropTimeline:[3,1,1,1,2,2],growsInto:`corn`,highDemandSeasons:[season.SUMMER,season.FALL],id:`corn-seed`,lowDemandSeasons:[season.SPRING,season.WINTER],name:`Corn Kernels`,tier:2}),corn=crop({...fromSeed(cornSeed,{canBeFermented:!0}),name:`Corn`}),garlicSeed=crop({cropType:cropType.GARLIC,cropTimeline:[2,1,1,1],growsInto:`garlic`,highDemandSeasons:[season.FALL,season.WINTER],id:`garlic-seed`,lowDemandSeasons:[season.SPRING],name:`Garlic Bulb`,tier:5}),garlic=crop({...fromSeed(garlicSeed,{canBeFermented:!0}),name:`Garlic`}),jalapenoSeed=crop({cropType:cropType.JALAPENO,cropTimeline:[2,1,1,1],growsInto:`jalapeno`,highDemandSeasons:[season.SPRING,season.SUMMER],id:`jalapeno-seed`,lowDemandSeasons:[season.FALL,season.WINTER],name:`Jalapeño Seed`,tier:4}),jalapeno=crop({...fromSeed(jalapenoSeed,{canBeFermented:!0}),name:`Jalapeño`}),oliveSeed=crop({cropType:cropType.OLIVE,cropTimeline:[3,6],growsInto:`olive`,highDemandSeasons:[season.WINTER],id:`olive-seed`,lowDemandSeasons:[season.FALL],name:`Olive Seed`,tier:6}),olive=crop({...fromSeed(oliveSeed,{canBeFermented:!0}),name:`Olive`}),onionSeed=crop({cropType:cropType.ONION,cropTimeline:[3,1,2,1],growsInto:`onion`,id:`onion-seed`,name:`Onion Seeds`,tier:2}),onion=crop({...fromSeed(onionSeed,{canBeFermented:!0}),name:`Onion`}),peaSeed=crop({cropType:cropType.PEA,cropTimeline:[2,3],growsInto:`pea`,highDemandSeasons:[season.SPRING],id:`pea-seed`,lowDemandSeasons:[season.WINTER],name:`Pea Seed`,tier:5}),pea=crop({...fromSeed(peaSeed,{canBeFermented:!0}),name:`Pea`}),potatoSeed=crop({cropType:cropType.POTATO,cropTimeline:[2,1,1,1],growsInto:`potato`,highDemandSeasons:[season.FALL,season.WINTER],id:`potato-seed`,lowDemandSeasons:[season.SPRING,season.SUMMER],name:`Potato Seeds`,tier:2}),potato=crop({...fromSeed(potatoSeed,{canBeFermented:!0}),name:`Potato`}),pumpkinSeed=crop({cropType:cropType.PUMPKIN,cropTimeline:[3,1,1,1,1,1],growsInto:`pumpkin`,highDemandSeasons:[season.FALL],id:`pumpkin-seed`,lowDemandSeasons:[season.SPRING],name:`Pumpkin Seed`,tier:1}),pumpkin=crop({...fromSeed(pumpkinSeed,{canBeFermented:!0}),name:`Pumpkin`}),soybeanSeed=crop({cropType:cropType.SOYBEAN,cropTimeline:[2,2],growsInto:`soybean`,id:`soybean-seed`,name:`Soybean Seeds`,tier:3}),soybean=crop({...fromSeed(soybeanSeed,{canBeFermented:!0}),name:`Soybean`}),spinachSeed=crop({cropType:cropType.SPINACH,cropTimeline:[2,4],growsInto:`spinach`,highDemandSeasons:[season.SPRING,season.SUMMER],id:`spinach-seed`,lowDemandSeasons:[season.WINTER],name:`Spinach Seed`,tier:1}),spinach=crop({...fromSeed(spinachSeed,{canBeFermented:!0}),name:`Spinach`}),sunflowerSeed=crop({cropType:cropType.SUNFLOWER,cropTimeline:[1,1,1,1,1,1],growsInto:`sunflower`,highDemandSeasons:[season.SUMMER],id:`sunflower-seed`,lowDemandSeasons:[season.WINTER],name:`Sunflower Seed`,tier:6}),sunflower=crop({...fromSeed(sunflowerSeed,{canBeFermented:!0}),name:`Sunflower`}),strawberrySeed=crop({cropType:cropType.STRAWBERRY,cropTimeline:[6,2],growsInto:`strawberry`,highDemandSeasons:[season.SUMMER],id:`strawberry-seed`,lowDemandSeasons:[season.WINTER],name:`Strawberry Seed`,tier:5}),strawberry=crop({...fromSeed(strawberrySeed),name:`Strawberry`}),sugarcaneSeed=crop({cropType:cropType.SUGARCANE,cropTimeline:[2,2,3],growsInto:`sugarcane`,id:`sugarcane-seed`,name:`Sugarcane Seed`,tier:7}),sugarcane=crop({...fromSeed(sugarcaneSeed),name:`Sugarcane`}),sweetPotatoSeed=crop({cropType:cropType.SWEET_POTATO,cropTimeline:[2,1,1,2,2],growsInto:`sweet-potato`,highDemandSeasons:[season.FALL,season.WINTER],id:`sweet-potato-seed`,lowDemandSeasons:[season.SPRING],name:`Sweet Potato Slip`,tier:6}),sweetPotato=crop({...fromSeed(sweetPotatoSeed,{canBeFermented:!0}),name:`Sweet Potato`}),tomatoSeed=crop({cropType:cropType.TOMATO,cropTimeline:[2,1,1,1,2,2,2],growsInto:`tomato`,highDemandSeasons:[season.SPRING,season.SUMMER],id:`tomato-seed`,lowDemandSeasons:[season.WINTER],name:`Tomato Seeds`,tier:3}),tomato=crop({...fromSeed(tomatoSeed,{canBeFermented:!0}),name:`Tomato`}),watermelonSeed=crop({cropType:cropType.WATERMELON,cropTimeline:[2,10],growsInto:`watermelon`,highDemandSeasons:[season.SUMMER],id:`watermelon-seed`,lowDemandSeasons:[season.FALL,season.WINTER],name:`Watermelon Seed`,tier:4}),watermelon=crop({...fromSeed(watermelonSeed),name:`Watermelon`}),wheatSeed=crop({cropType:cropType.WHEAT,cropTimeline:[1,1],growsInto:`wheat`,id:`wheat-seed`,name:`Wheat Seeds`,tier:3}),wheat=crop({...fromSeed(wheatSeed),name:`Wheat`}),{freeze:freeze$8}=Object,getFruitLifecycleDuration=e=>e.reduce((e,t)=>e+t,0),SAPLING_FRUIT_CYCLES_TO_BREAK_EVEN=4,tree=({treeTimeline:e=[],fruitTimeline:t=[],growsInto:n,tier:a=1,isSeed:o=!!n,id:s=``,name:l=``,...u})=>{let d=10+getFruitLifecycleDuration(t)*a*3;return freeze$8({id:s,name:l,treeTimeline:e,fruitTimeline:t,doesPriceFluctuate:!0,tier:a,type:itemType.TREE,value:o?d*SAPLING_FRUIT_CYCLES_TO_BREAK_EVEN:d,...o&&{growsInto:n,isPlantableTree:!0},...u})},fromSapling=({treeTimeline:e,fruitTimeline:t,treeType:n,growsInto:a,tier:o=1,lifespan:s},{variantIdx:l=0}={})=>({id:(Array.isArray(a)?a:[a])[l]||``,treeTimeline:e||[],fruitTimeline:t||[],treeType:n,doesPriceFluctuate:!0,tier:o,type:itemType.TREE,lifespan:s}),appleSapling=tree({treeType:treeType.APPLE,treeTimeline:[5,5,5,5,5],lifespan:200,fruitTimeline:[2,2,2],growsInto:`apple`,id:`apple-sapling`,name:`Apple Sapling`,tier:2}),apple=tree({...fromSapling(appleSapling),name:`Apple`}),bananaSapling=tree({treeType:treeType.BANANA,treeTimeline:[4,4,4,4,4],lifespan:200,fruitTimeline:[3,3,3,3],growsInto:`banana`,id:`banana-sapling`,name:`Banana Sapling`,tier:3}),banana=tree({...fromSapling(bananaSapling),name:`Banana`}),{freeze:freeze$7}=Object,bronzeOre=freeze$7({description:`A piece of bronze ore.`,doesPriceFluctuate:!0,id:`bronze-ore`,name:`Bronze Ore`,type:itemType.ORE,value:25,spawnChance:BRONZE_SPAWN_CHANCE}),{freeze:freeze$6}=Object,coal$1=freeze$6({description:`A piece of coal.`,doesPriceFluctuate:!1,id:`coal`,name:`Coal`,type:itemType.FUEL,spawnChance:COAL_SPAWN_CHANCE,value:2}),{freeze:freeze$5}=Object,goldOre=freeze$5({description:`A piece of gold ore.`,doesPriceFluctuate:!0,id:`gold-ore`,name:`Gold Ore`,type:itemType.ORE,value:500,spawnChance:GOLD_SPAWN_CHANCE}),{freeze:freeze$4}=Object,ironOre=freeze$4({description:`A piece of iron ore.`,doesPriceFluctuate:!0,id:`iron-ore`,name:`Iron Ore`,type:itemType.ORE,value:40,spawnChance:IRON_SPAWN_CHANCE}),{freeze:freeze$3}=Object,silverOre=freeze$3({description:`A piece of silver ore.`,doesPriceFluctuate:!0,id:`silver-ore`,name:`Silver Ore`,type:itemType.ORE,value:100,spawnChance:SILVER_SPAWN_CHANCE}),{freeze:freeze$2}=Object,stone=freeze$2({description:`A piece of rock.`,doesPriceFluctuate:!1,id:`stone`,name:`Stone`,spawnChance:STONE_SPAWN_CHANCE,type:itemType.STONE,value:10}),{freeze:freeze$1}=Object,saltRock=freeze$1({description:`A large chunk of salt.`,doesPriceFluctuate:!0,id:`salt-rock`,name:`Salt Rock`,spawnChance:SALT_ROCK_SPAWN_CHANCE,type:itemType.STONE,value:10}),items_exports=__exportAll({apple:()=>apple,appleSapling:()=>appleSapling,asparagus:()=>asparagus,asparagusSeed:()=>asparagusSeed,banana:()=>banana,bananaSapling:()=>bananaSapling,bronzeOre:()=>bronzeOre,carrot:()=>carrot,carrotSeed:()=>carrotSeed,chocolateMilk:()=>chocolateMilk,coal:()=>coal$1,corn:()=>corn,cornSeed:()=>cornSeed,cowFeed:()=>cowFeed$1,garlic:()=>garlic,garlicSeed:()=>garlicSeed,goldOre:()=>goldOre,grapeCabernetSauvignon:()=>grapeCabernetSauvignon,grapeChardonnay:()=>grapeChardonnay,grapeNebbiolo:()=>grapeNebbiolo,grapeSauvignonBlanc:()=>grapeSauvignonBlanc,grapeSeed:()=>grapeSeed,grapeTempranillo:()=>grapeTempranillo,huggingMachine:()=>huggingMachine,ironOre:()=>ironOre,jalapeno:()=>jalapeno,jalapenoSeed:()=>jalapenoSeed,milk1:()=>milk1,milk2:()=>milk2,milk3:()=>milk3,olive:()=>olive,oliveSeed:()=>oliveSeed,onion:()=>onion,onionSeed:()=>onionSeed,pea:()=>pea,peaSeed:()=>peaSeed,potato:()=>potato,potatoSeed:()=>potatoSeed,pumpkin:()=>pumpkin,pumpkinSeed:()=>pumpkinSeed,rainbowFertilizer:()=>rainbowFertilizer,rainbowMilk1:()=>rainbowMilk1,rainbowMilk2:()=>rainbowMilk2,rainbowMilk3:()=>rainbowMilk3,saltRock:()=>saltRock,scarecrow:()=>scarecrow,silverOre:()=>silverOre,soybean:()=>soybean,soybeanSeed:()=>soybeanSeed,spinach:()=>spinach,spinachSeed:()=>spinachSeed,sprinkler:()=>sprinkler,stone:()=>stone,strawberry:()=>strawberry,strawberrySeed:()=>strawberrySeed,sugarcane:()=>sugarcane,sugarcaneSeed:()=>sugarcaneSeed,sunflower:()=>sunflower,sunflowerSeed:()=>sunflowerSeed,sweetPotato:()=>sweetPotato,sweetPotatoSeed:()=>sweetPotatoSeed,tomato:()=>tomato,tomatoSeed:()=>tomatoSeed,watermelon:()=>watermelon,watermelonSeed:()=>watermelonSeed,weed:()=>weed,wheat:()=>wheat,wheatSeed:()=>wheatSeed,wood:()=>wood}),{freeze}=Object,{COW_FEED,FERTILIZER,HUGGING_MACHINE,MILK,SCARECROW,SPRINKLER,WEED:WEED$1,WOOD}=itemType,weed=freeze({id:`weed`,name:`Weed`,value:.1,doesPriceFluctuate:!1,type:WEED$1}),wood=freeze({description:`A sturdy piece of wood, chopped from a tree.`,doesPriceFluctuate:!1,id:`wood`,name:`Wood`,type:WOOD,value:10}),rainbowFertilizer=freeze({description:`Helps crops grow a little faster and automatically replants them upon harvesting. Consumes seeds upon replanting and disappears if none are available. Also works for Scarecrows.`,enablesFieldMode:fieldMode.FERTILIZE,id:`rainbow-fertilizer`,name:`Rainbow Fertilizer`,type:FERTILIZER,value:15}),sprinkler=freeze({description:`Automatically waters adjacent plants every day.`,enablesFieldMode:fieldMode.SET_SPRINKLER,hoveredPlotRangeSize:1,id:`sprinkler`,isReplantable:!0,name:`Sprinkler`,type:SPRINKLER,value:120}),scarecrow=freeze({description:`Prevents crows from eating your crops. One scarecrow covers an entire field, but they are afraid of storms.`,enablesFieldMode:fieldMode.SET_SCARECROW,hoveredPlotRangeSize:2**53-1,id:`scarecrow`,isReplantable:!0,name:`Scarecrow`,type:SCARECROW,value:160}),cowFeed$1=freeze({id:COW_FEED_ITEM_ID,description:`Each cow automatically consumes one unit of Cow Feed per day. Fed cows gain and maintain weight.`,name:`Cow Feed`,type:COW_FEED,value:5}),huggingMachine=freeze({id:HUGGING_MACHINE_ITEM_ID,description:`Automatically hugs one cow three times every day.`,name:`Hugging Machine`,type:HUGGING_MACHINE,value:500}),milk1=freeze({id:`milk-1`,name:`Grade C Milk`,type:MILK,value:40}),milk2=freeze({id:`milk-2`,name:`Grade B Milk`,type:MILK,value:80}),milk3=freeze({id:`milk-3`,name:`Grade A Milk`,type:MILK,value:120}),rainbowMilk1=freeze({id:`rainbow-milk-1`,name:`Grade C Rainbow Milk`,type:MILK,value:60}),rainbowMilk2=freeze({id:`rainbow-milk-2`,name:`Grade B Rainbow Milk`,type:MILK,value:120}),rainbowMilk3=freeze({id:`rainbow-milk-3`,name:`Grade A Rainbow Milk`,type:MILK,value:180}),chocolateMilk=freeze({id:`chocolate-milk`,name:`Chocolate Milk`,type:MILK,value:80}),itemsMap$2={...Object.keys(items_exports).reduce((e,t)=>{let n=items_exports[t];return e[n.id]=n,e},{})},recipes_exports=__exportAll({appleJuice:()=>appleJuice,applePie:()=>applePie,bananaBread:()=>bananaBread,bananaCreamPie:()=>bananaCreamPie,basicLightningRod:()=>basicLightningRod,bread:()=>bread,bronzeIngot:()=>bronzeIngot$1,burger:()=>burger,butter:()=>butter,carrotSoup:()=>carrotSoup,cheese:()=>cheese,chicknPotPie:()=>chicknPotPie,chocolate:()=>chocolate,chocolateSoyMilk:()=>chocolateSoyMilk,compost:()=>compost,fertilizer:()=>fertilizer,flour:()=>flour,frenchOnionSoup:()=>frenchOnionSoup,friedTofu:()=>friedTofu,garlicBread:()=>garlicBread,garlicFries:()=>garlicFries,goldIngot:()=>goldIngot$1,grapeSyrup:()=>grapeSyrup,hotSauce:()=>hotSauce,ironIngot:()=>ironIngot$1,jackolantern:()=>jackolantern,mulch:()=>mulch,oliveOil:()=>oliveOil,onionRings:()=>onionRings,popcorn:()=>popcorn,pumpkinPie:()=>pumpkinPie,rainbowCheese:()=>rainbowCheese,rainbowMulch:()=>rainbowMulch,salsa:()=>salsa,salt:()=>salt,silverIngot:()=>silverIngot$1,soyMilk:()=>soyMilk,spaghetti:()=>spaghetti,spicyAppleJam:()=>spicyAppleJam,spicyCheese:()=>spicyCheese,spicyPickledGarlic:()=>spicyPickledGarlic,strawberryJam:()=>strawberryJam,sugar:()=>sugar,summerSalad:()=>summerSalad,sunButter:()=>sunButter,superiorLightningRod:()=>superiorLightningRod,sweetPotatoFries:()=>sweetPotatoFries,sweetPotatoPie:()=>sweetPotatoPie,tofu:()=>tofu,ultimateLightningRod:()=>ultimateLightningRod,vegetableOil:()=>vegetableOil,wineCabernetSauvignon:()=>wineCabernetSauvignon,wineChardonnay:()=>wineChardonnay,wineNebbiolo:()=>wineNebbiolo,wineSauvignonBlanc:()=>wineSauvignonBlanc,wineTempranillo:()=>wineTempranillo,woodChips:()=>woodChips,yeast:()=>yeast}),itemsMap$1={...itemsMap$2},convertToRecipe=e=>{let t=Object.freeze({type:itemType.CRAFTED_ITEM,value:Object.keys(e.ingredients).reduce((t,n)=>t+RECIPE_INGREDIENT_VALUE_MULTIPLIER*itemsMap$1[n].value*e.ingredients[n],0),...e});return itemsMap$1[e.id]=t,t},salt=convertToRecipe({id:`salt`,name:`Salt`,ingredients:{[saltRock.id]:1},condition:e=>(e.itemsSold[saltRock.id]||0)>=30,description:`Useful for seasoning food and fermentation.`,recipeType:recipeType.KITCHEN}),flour=convertToRecipe({id:`flour`,name:`Flour`,ingredients:{[wheat.id]:10},condition:e=>(e.itemsSold[wheat.id]||0)>=20,recipeType:recipeType.KITCHEN}),sugar=convertToRecipe({id:`sugar`,name:`Sugar`,ingredients:{[sugarcane.id]:5},condition:e=>(e.itemsSold[sugarcane.id]||0)>=25,recipeType:recipeType.KITCHEN}),yeast=convertToRecipe({id:`yeast`,name:`Yeast`,ingredients:{[flour.id]:5},condition:e=>(e.itemsSold[flour.id]||0)>=25,recipeType:recipeType.KITCHEN}),getWineRecipeFromGrape=e=>({...convertToRecipe({id:e.wineId,name:`${grapeVarietyNameMap[e.variety]} Wine`,type:itemType.CRAFTED_ITEM,ingredients:{[e.id]:50,[yeast.id]:getYeastRequiredForWine(e.variety)},recipeType:recipeType.WINE,condition:()=>!1}),variety:e.variety}),bread=convertToRecipe({id:`bread`,name:`Bread`,ingredients:{[flour.id]:10,[yeast.id]:5},condition:e=>(e.itemsSold[flour.id]||0)>=30&&(e.itemsSold[yeast.id]||0)>=15,recipeType:recipeType.KITCHEN}),butter=convertToRecipe({id:`butter`,name:`Butter`,ingredients:{[milk3.id]:5},condition:e=>(e.itemsSold[milk3.id]||0)>=30,recipeType:recipeType.KITCHEN}),sunButter=convertToRecipe({id:`sun-butter`,name:`Sun Butter`,ingredients:{[sunflower.id]:25},condition:e=>(e.itemsSold[sunflower.id]||0)>=200,recipeType:recipeType.KITCHEN}),oliveOil=convertToRecipe({id:`olive-oil`,name:`Olive Oil`,ingredients:{[olive.id]:250},condition:e=>(e.itemsSold[olive.id]||0)>=500,recipeType:recipeType.KITCHEN}),cheese=convertToRecipe({id:`cheese`,name:`Cheese`,ingredients:{[milk3.id]:8},condition:e=>(e.itemsSold[milk3.id]||0)>=20,recipeType:recipeType.KITCHEN}),rainbowCheese=convertToRecipe({id:`rainbowCheese`,name:`Rainbow Cheese`,ingredients:{[rainbowMilk3.id]:10},condition:e=>(e.itemsSold[rainbowMilk3.id]||0)>=30,recipeType:recipeType.KITCHEN}),chocolate=convertToRecipe({id:`chocolate`,name:`Chocolate`,ingredients:{[chocolateMilk.id]:10},condition:e=>(e.itemsSold[chocolateMilk.id]||0)>=25,recipeType:recipeType.KITCHEN}),carrotSoup=convertToRecipe({id:`carrot-soup`,name:`Carrot Soup`,ingredients:{[carrot.id]:4},condition:e=>(e.itemsSold[carrot.id]||0)>=10,recipeType:recipeType.KITCHEN}),jackolantern=convertToRecipe({id:`jackolantern`,name:`Jack-o'-lantern`,ingredients:{[pumpkin.id]:1},condition:e=>(e.itemsSold[pumpkin.id]||0)>=50,recipeType:recipeType.KITCHEN}),spaghetti=convertToRecipe({id:`spaghetti`,name:`Spaghetti`,ingredients:{[wheat.id]:10,[tomato.id]:2},condition:e=>(e.itemsSold[wheat.id]||0)>=20&&(e.itemsSold[tomato.id]||0)>=5,recipeType:recipeType.KITCHEN}),frenchOnionSoup=convertToRecipe({id:`french-onion-soup`,name:`French Onion Soup`,ingredients:{[onion.id]:5,[cheese.id]:2,[salt.id]:2},condition:e=>(e.itemsSold[onion.id]||0)>=15&&(e.itemsSold[cheese.id]||0)>=10,recipeType:recipeType.KITCHEN}),burger=convertToRecipe({id:`burger`,name:`Burger`,ingredients:{[bread.id]:1,[cheese.id]:1,[onion.id]:1,[soybean.id]:12,[spinach.id]:1,[tomato.id]:1},condition:e=>(e.itemsSold[bread.id]||0)>=5&&(e.itemsSold[cheese.id]||0)>=5&&(e.itemsSold[onion.id]||0)>=5&&(e.itemsSold[soybean.id]||0)>=25&&(e.itemsSold[spinach.id]||0)>=5&&(e.itemsSold[tomato.id]||0)>=5,recipeType:recipeType.KITCHEN}),summerSalad=convertToRecipe({id:`summer-salad`,name:`Summer Salad`,ingredients:{[spinach.id]:6,[corn.id]:1,[carrot.id]:1},condition:e=>(e.itemsSold[spinach.id]||0)>=30&&(e.itemsSold[corn.id]||0)>5&&(e.itemsSold[carrot.id]||0)>5,recipeType:recipeType.KITCHEN}),soyMilk=convertToRecipe({id:`soy-milk`,name:`Soy Milk`,ingredients:{[soybean.id]:20},condition:e=>(e.itemsSold[soybean.id]||0)>=100,recipeType:recipeType.KITCHEN}),chocolateSoyMilk=convertToRecipe({id:`chocolate-soy-milk`,name:`Chocolate Soy Milk`,ingredients:{[soyMilk.id]:1,[chocolate.id]:1},condition:e=>(e.itemsSold[soyMilk.id]||0)>=5&&(e.itemsSold[chocolate.id]||0)>=5,recipeType:recipeType.KITCHEN}),tofu=convertToRecipe({id:`tofu`,name:`Tofu`,ingredients:{[soyMilk.id]:4},condition:e=>(e.itemsSold[soyMilk.id]||0)>=20,recipeType:recipeType.KITCHEN}),chicknPotPie=convertToRecipe({id:`chickn-pot-pie`,name:`Chick'n Pot Pie`,ingredients:{[tofu.id]:6,[pea.id]:10,[carrot.id]:8,[wheat.id]:12,[soyMilk.id]:3},condition:e=>(e.itemsSold[tofu.id]||0)>=30&&(e.itemsSold[pea.id]||0)>=225&&(e.itemsSold[carrot.id]||0)>=300&&(e.itemsSold[wheat.id]||0)>=425&&(e.itemsSold[soyMilk.id]||0)>=15,recipeType:recipeType.KITCHEN,isPie:!0}),hotSauce=convertToRecipe({id:`hot-sauce`,name:`Hot Sauce`,ingredients:{[jalapeno.id]:10,[salt.id]:1},condition:e=>(e.itemsSold[jalapeno.id]||0)>=50,recipeType:recipeType.KITCHEN}),salsa=convertToRecipe({id:`salsa`,name:`Salsa`,ingredients:{[jalapeno.id]:1,[onion.id]:1,[tomato.id]:1,[corn.id]:1},condition:e=>(e.itemsSold[jalapeno.id]||0)>=5&&(e.itemsSold[onion.id]||0)>=5&&(e.itemsSold[tomato.id]||0)>=5&&(e.itemsSold[corn.id]||0)>=5,recipeType:recipeType.KITCHEN}),spicyCheese=convertToRecipe({id:`spicy-cheese`,name:`Spicy Cheese`,ingredients:{[jalapeno.id]:4,[milk3.id]:10},condition:e=>(e.itemsSold[jalapeno.id]||0)>=20&&(e.itemsSold[milk3.id]||0)>=50,recipeType:recipeType.KITCHEN}),vegetableOil=convertToRecipe({id:`vegetable-oil`,name:`Vegetable Oil`,ingredients:{[soybean.id]:350},condition:e=>(e.itemsSold[soybean.id]||0)>=900,recipeType:recipeType.KITCHEN}),friedTofu=convertToRecipe({id:`fried-tofu`,name:`Deep Fried Tofu`,ingredients:{[tofu.id]:1,[vegetableOil.id]:2},condition:e=>(e.itemsSold[tofu.id]||0)>=50&&(e.itemsSold[vegetableOil.id]||0)>=50,recipeType:recipeType.KITCHEN}),spicyPickledGarlic=convertToRecipe({id:`spicy-pickled-garlic`,name:`Spicy Pickled Garlic`,ingredients:{[jalapeno.id]:2,[garlic.id]:5},condition:e=>(e.itemsSold[jalapeno.id]||0)>=12&&(e.itemsSold[garlic.id]||0)>=25,recipeType:recipeType.KITCHEN}),garlicFries=convertToRecipe({id:`garlic-fries`,name:`Garlic Fries`,ingredients:{[potato.id]:5,[garlic.id]:3,[vegetableOil.id]:1,[salt.id]:2},condition:e=>(e.itemsSold[potato.id]||0)>=50&&(e.itemsSold[garlic.id]||0)>=30,recipeType:recipeType.KITCHEN}),garlicBread=convertToRecipe({id:`garlic-bread`,name:`Garlic Bread`,ingredients:{[bread.id]:1,[garlic.id]:5,[oliveOil.id]:1},condition:e=>(e.itemsSold[bread.id]||0)>=30&&(e.itemsSold[oliveOil.id]||0)>=20&&(e.itemsSold[garlic.id]||0)>=50,recipeType:recipeType.KITCHEN}),strawberryJam=convertToRecipe({id:`strawberry-jam`,name:`Strawberry Jam`,ingredients:{[strawberry.id]:10},condition:e=>(e.itemsSold[strawberry.id]||0)>=60,recipeType:recipeType.KITCHEN}),spicyAppleJam=convertToRecipe({id:`spicy-apple-jam`,name:`Spicy Apple Jam`,ingredients:{[apple.id]:10,[jalapeno.id]:3},condition:e=>(e.itemsSold[apple.id]||0)>=60&&(e.itemsSold[jalapeno.id]||0)>=15,recipeType:recipeType.KITCHEN}),popcorn=convertToRecipe({id:`popcorn`,name:`Popcorn`,ingredients:{[corn.id]:2,[butter.id]:1},condition:e=>(e.itemsSold[corn.id]||0)>=12&&(e.itemsSold[butter.id]||0)>=6,recipeType:recipeType.KITCHEN}),pumpkinPie=convertToRecipe({id:`pumpkin-pie`,name:`Pumpkin Pie`,ingredients:{[pumpkin.id]:4,[wheat.id]:10,[butter.id]:2},condition:e=>(e.itemsSold[pumpkin.id]||0)>=200&&(e.itemsSold[wheat.id]||0)>=250&&(e.itemsSold[butter.id]||0)>=75,recipeType:recipeType.KITCHEN,isPie:!0}),applePie=convertToRecipe({id:`apple-pie`,name:`Apple Pie`,ingredients:{[apple.id]:4,[flour.id]:2,[butter.id]:2},condition:e=>(e.itemsSold[apple.id]||0)>=60&&(e.itemsSold[flour.id]||0)>=15&&(e.itemsSold[butter.id]||0)>=75,recipeType:recipeType.KITCHEN,isPie:!0}),appleJuice=convertToRecipe({id:`apple-juice`,name:`Apple Juice`,ingredients:{[apple.id]:6,[sugar.id]:2},condition:e=>(e.itemsSold[apple.id]||0)>=60&&(e.itemsSold[sugar.id]||0)>=10,recipeType:recipeType.KITCHEN}),grapeSyrup=convertToRecipe({id:`grape-syrup`,name:`Grape Syrup`,ingredients:{[grapeCabernetSauvignon.id]:8},condition:e=>(e.itemsSold[grapeCabernetSauvignon.id]||0)>=25,recipeType:recipeType.KITCHEN}),bananaBread=convertToRecipe({id:`banana-bread`,name:`Banana Bread`,ingredients:{[banana.id]:4,[flour.id]:3,[oliveOil.id]:1},condition:e=>(e.itemsSold[banana.id]||0)>=60&&(e.itemsSold[flour.id]||0)>=20&&(e.itemsSold[oliveOil.id]||0)>=20,recipeType:recipeType.KITCHEN}),bananaCreamPie=convertToRecipe({id:`banana-cream-pie`,name:`Banana Cream Pie`,ingredients:{[banana.id]:4,[flour.id]:2,[butter.id]:2,[sugar.id]:2,[milk3.id]:5},condition:e=>(e.itemsSold[banana.id]||0)>=60&&(e.itemsSold[flour.id]||0)>=15&&(e.itemsSold[butter.id]||0)>=75&&(e.itemsSold[sugar.id]||0)>=10&&(e.itemsSold[milk3.id]||0)>=30,recipeType:recipeType.KITCHEN}),sweetPotatoPie=convertToRecipe({id:`sweet-potato-pie`,name:`Sweet Potato Pie`,ingredients:{[sweetPotato.id]:6,[wheat.id]:10,[butter.id]:2},condition:e=>(e.itemsSold[sweetPotato.id]||0)>=200&&(e.itemsSold[wheat.id]||0)>=250&&(e.itemsSold[butter.id]||0)>=75,recipeType:recipeType.KITCHEN,isPie:!0}),sweetPotatoFries=convertToRecipe({id:`sweet-potato-fries`,name:`Sweet Potato Fries`,ingredients:{[sweetPotato.id]:10,[vegetableOil.id]:1,[salt.id]:1},condition:e=>(e.itemsSold[sweetPotato.id]||0)>=100,recipeType:recipeType.KITCHEN}),onionRings=convertToRecipe({id:`onion-rings`,name:`Onion Rings`,ingredients:{[onion.id]:1,[vegetableOil.id]:1,[wheat.id]:5,[soyMilk.id]:1,[salt.id]:3},condition:e=>(e.itemsSold[onion.id]||0)>=50&&(e.itemsSold[vegetableOil.id]||0)>20&&(e.itemsSold[soyMilk.id]||0)>20&&(e.itemsSold[wheat.id]||0)>30,recipeType:recipeType.KITCHEN}),bronzeIngot$1=convertToRecipe({id:`bronze-ingot`,name:`Bronze Ingot`,ingredients:{[bronzeOre.id]:5,[coal$1.id]:5},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[bronzeOre.id]||0)>=50,recipeType:recipeType.FORGE}),ironIngot$1=convertToRecipe({id:`iron-ingot`,name:`Iron Ingot`,ingredients:{[ironOre.id]:5,[coal$1.id]:12},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[ironOre.id]||0)>=50,recipeType:recipeType.FORGE}),silverIngot$1=convertToRecipe({id:`silver-ingot`,name:`Silver Ingot`,ingredients:{[silverOre.id]:5,[coal$1.id]:8},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[silverOre.id]||0)>=50,recipeType:recipeType.FORGE}),goldIngot$1=convertToRecipe({id:`gold-ingot`,name:`Gold Ingot`,ingredients:{[goldOre.id]:5,[coal$1.id]:10},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[goldOre.id]||0)>=50,recipeType:recipeType.FORGE}),basicLightningRod=convertToRecipe({id:`basic-lightning-rod`,name:`Basic Lightning Rod`,type:itemType.LIGHTNING_ROD,description:`Place in the field to protect it from lightning during storms. Can withstand 10 strikes before being destroyed.`,enablesFieldMode:fieldMode.SET_LIGHTNING_ROD,hoveredPlotRangeSize:2**53-1,lightningStrikeCapacity:10,destructionYield:{itemId:ironOre.id,quantity:4},ingredients:{[ironIngot$1.id]:5},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[ironIngot$1.id]||0)>=10,recipeType:recipeType.FORGE}),superiorLightningRod=convertToRecipe({id:`superior-lightning-rod`,name:`Superior Lightning Rod`,type:itemType.LIGHTNING_ROD,description:`Place in the field to protect it from lightning during storms. Can withstand 25 strikes before being destroyed.`,enablesFieldMode:fieldMode.SET_LIGHTNING_ROD,hoveredPlotRangeSize:2**53-1,lightningStrikeCapacity:25,destructionYield:{itemId:silverOre.id,quantity:4},ingredients:{[ironIngot$1.id]:4,[silverIngot$1.id]:3},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[silverIngot$1.id]||0)>=10,recipeType:recipeType.FORGE}),ultimateLightningRod=convertToRecipe({id:`ultimate-lightning-rod`,name:`Ultimate Lightning Rod`,type:itemType.LIGHTNING_ROD,description:`Place in the field to protect it from lightning during storms. Can withstand 100 strikes before being destroyed.`,enablesFieldMode:fieldMode.SET_LIGHTNING_ROD,hoveredPlotRangeSize:2**53-1,lightningStrikeCapacity:100,destructionYield:{itemId:goldOre.id,quantity:4},ingredients:{[ironIngot$1.id]:4,[goldIngot$1.id]:3},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[goldIngot$1.id]||0)>=10,recipeType:recipeType.FORGE}),compost=convertToRecipe({id:`compost`,name:`Compost`,ingredients:{[weed.id]:10},condition:e=>e.purchasedComposter>0&&(e.itemsSold[weed.id]||0)>=100,description:`Can be used to make fertilizer.`,recipeType:recipeType.RECYCLING,type:itemType.CRAFTED_ITEM}),fertilizer=convertToRecipe({id:`fertilizer`,name:`Fertilizer`,ingredients:{[compost.id]:3},condition:e=>e.purchasedComposter>0&&(e.itemsSold[compost.id]||0)>=10,description:`Helps crops grow and mature a little faster.`,enablesFieldMode:fieldMode.FERTILIZE,recipeType:recipeType.RECYCLING,type:itemType.FERTILIZER,value:25}),woodChips=convertToRecipe({id:`wood-chips`,name:`Wood Chips`,ingredients:{[wood.id]:1},condition:e=>e.purchasedWoodChipper>0&&(e.itemsSold[wood.id]||0)>=20,description:`Chipped wood, useful for making mulch.`,recipeType:recipeType.WOOD_CHIPPER,type:itemType.CRAFTED_ITEM}),mulch=convertToRecipe({id:`mulch`,name:`Mulch`,ingredients:{[woodChips.id]:3,[compost.id]:1},condition:e=>e.purchasedWoodChipper>0&&(e.itemsSold[woodChips.id]||0)>=10,description:`Helps trees grow a little faster.`,enablesFieldMode:fieldMode.FERTILIZE,recipeType:recipeType.WOOD_CHIPPER,type:itemType.MULCH,value:50}),rainbowMulch=convertToRecipe({id:`rainbow-mulch`,name:`Rainbow Mulch`,ingredients:{[woodChips.id]:3,[rainbowFertilizer.id]:1},condition:e=>e.purchasedWoodChipper>0&&(e.itemsSold[woodChips.id]||0)>=10&&e.hasProducedRainbowFertilizer,description:`Helps trees grow a little faster and speeds up fruit regrowth too.`,enablesFieldMode:fieldMode.FERTILIZE,recipeType:recipeType.WOOD_CHIPPER,type:itemType.MULCH}),wineChardonnay=getWineRecipeFromGrape({...grapeChardonnay}),wineSauvignonBlanc=getWineRecipeFromGrape({...grapeSauvignonBlanc}),wineCabernetSauvignon=getWineRecipeFromGrape({...grapeCabernetSauvignon}),wineTempranillo=getWineRecipeFromGrape({...grapeTempranillo}),wineNebbiolo=getWineRecipeFromGrape({...grapeNebbiolo}),coalNeededForIngots=(e,t=1)=>{switch(e){case bronzeIngot$1.id:return t*2;case ironIngot$1.id:return Math.round(t*3.5);case silverIngot$1.id:return Math.round(t*2.5);case goldIngot$1.id:return t*3;default:return t}},{bronzeIngot,ironIngot,silverIngot,goldIngot}=recipes_exports,{coal}=items_exports,upgrades={[toolType.HOE]:{[toolLevel.DEFAULT]:{id:`hoe-default`,name:`Basic Hoe`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`hoe-bronze`,description:`Gives 25% chance to retrieve seeds when digging up crops`,name:`Bronze Hoe`,ingredients:{[bronzeIngot.id]:8,[coal.id]:coalNeededForIngots(bronzeIngot.id,8)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`hoe-iron`,description:`Gives 50% chance to retrieve seeds when digging up crops`,name:`Iron Hoe`,ingredients:{[ironIngot.id]:8,[coal.id]:coalNeededForIngots(ironIngot.id,8)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`hoe-silver`,description:`Gives 75% chance to retrieve seeds when digging up crops`,name:`Silver Hoe`,ingredients:{[silverIngot.id]:8,[coal.id]:coalNeededForIngots(silverIngot.id,8)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`hoe-gold`,description:`Gives 100% chance to retrieve seeds when digging up crops`,name:`Gold Hoe`,ingredients:{[goldIngot.id]:8,[coal.id]:coalNeededForIngots(goldIngot.id,8)},isMaxLevel:!0}},[toolType.SCYTHE]:{[toolLevel.DEFAULT]:{id:`scythe-default`,name:`Basic Scythe`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`scythe-bronze`,description:`Increases crop yield by 1 when harvesting`,name:`Bronze Scythe`,ingredients:{[bronzeIngot.id]:10,[coal.id]:coalNeededForIngots(bronzeIngot.id,10)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`scythe-iron`,description:`Increases crop yield by 2 when harvesting`,name:`Iron Scythe`,ingredients:{[ironIngot.id]:10,[coal.id]:coalNeededForIngots(ironIngot.id,10)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`scythe-silver`,description:`Increases crop yield by 3 when harvesting`,name:`Silver Scythe`,ingredients:{[silverIngot.id]:10,[coal.id]:coalNeededForIngots(silverIngot.id,10)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`scythe-gold`,description:`Increases crop yield by 4 when harvesting`,name:`Gold Scythe`,ingredients:{[goldIngot.id]:10,[coal.id]:coalNeededForIngots(goldIngot.id,10)},isMaxLevel:!0}},[toolType.SHOVEL]:{[toolLevel.DEFAULT]:{id:`shovel-default`,name:`Basic Shovel`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`shovel-bronze`,description:`Increases chance of finding ore`,name:`Bronze Shovel`,ingredients:{[bronzeIngot.id]:15,[coal.id]:coalNeededForIngots(bronzeIngot.id,15)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`shovel-iron`,description:`Increases chance of finding ore`,name:`Iron Shovel`,ingredients:{[ironIngot.id]:15,[coal.id]:coalNeededForIngots(ironIngot.id,15)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`shovel-silver`,description:`Increases chance of finding ore`,name:`Silver Shovel`,ingredients:{[silverIngot.id]:15,[coal.id]:coalNeededForIngots(silverIngot.id,15)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`shovel-gold`,description:`Increases chance of finding ore`,name:`Gold Shovel`,ingredients:{[goldIngot.id]:15,[coal.id]:coalNeededForIngots(goldIngot.id,15)},isMaxLevel:!0}},[toolType.AXE]:{[toolLevel.DEFAULT]:{id:`axe-default`,name:`Basic Axe`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`axe-bronze`,description:`Increases wood yield when chopping down trees`,name:`Bronze Axe`,ingredients:{[bronzeIngot.id]:12,[coal.id]:coalNeededForIngots(bronzeIngot.id,12)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`axe-iron`,description:`Increases wood yield when chopping down trees`,name:`Iron Axe`,ingredients:{[ironIngot.id]:12,[coal.id]:coalNeededForIngots(ironIngot.id,12)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`axe-silver`,description:`Increases wood yield when chopping down trees`,name:`Silver Axe`,ingredients:{[silverIngot.id]:12,[coal.id]:coalNeededForIngots(silverIngot.id,12)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`axe-gold`,description:`Increases wood yield when chopping down trees`,name:`Gold Axe`,ingredients:{[goldIngot.id]:12,[coal.id]:coalNeededForIngots(goldIngot.id,12)},isMaxLevel:!0}},[toolType.PICKER_POLE]:{[toolLevel.DEFAULT]:{id:`picker-pole-default`,name:`Basic Picker Pole`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`picker-pole-bronze`,description:`Picks 2 fruit per harvest`,name:`Bronze Picker Pole`,ingredients:{[bronzeIngot.id]:12,[coal.id]:coalNeededForIngots(bronzeIngot.id,12)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`picker-pole-iron`,description:`Picks 3 fruit per harvest`,name:`Iron Picker Pole`,ingredients:{[ironIngot.id]:12,[coal.id]:coalNeededForIngots(ironIngot.id,12)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`picker-pole-silver`,description:`Picks 4 fruit per harvest`,name:`Silver Picker Pole`,ingredients:{[silverIngot.id]:12,[coal.id]:coalNeededForIngots(silverIngot.id,12)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`picker-pole-gold`,description:`Picks 5 fruit per harvest`,name:`Gold Picker Pole`,ingredients:{[goldIngot.id]:12,[coal.id]:coalNeededForIngots(goldIngot.id,12)},isMaxLevel:!0}}};for(let e in upgrades){let t=upgrades[e];for(let n in t)Object.assign(t[n],{toolType:e,value:0,doesPriceFluctuate:!1,type:itemType.TOOL_UPGRADE,level:n})}var{ASPARAGUS,CARROT,CORN,GARLIC,GRAPE,JALAPENO,OLIVE,ONION,PEA,POTATO,PUMPKIN,SOYBEAN,SPINACH,SUNFLOWER,STRAWBERRY,SUGARCANE,SWEET_POTATO,TOMATO,WATERMELON,WHEAT,WEED}=cropType,recipeCategories={[recipeType.KITCHEN]:{},[recipeType.FORGE]:{},[recipeType.FERMENTATION]:{},[recipeType.RECYCLING]:{},[recipeType.WINE]:{},[recipeType.WOOD_CHIPPER]:{}},recipesMap={};for(let e of Object.keys(recipes_exports)){let t=recipes_exports[e];recipeCategories[t.recipeType][t.id]=t,recipesMap[t.id]=t}var upgradesMap={};for(let e of Object.keys(upgrades))for(let t of Object.values(upgrades[e]))upgradesMap[t.id]=t;var itemsMap={...itemsMap$2,...recipesMap,...upgradesMap},fermentableItemsMap=Object.fromEntries(Object.entries(itemsMap).filter(([e])=>`daysToFerment`in itemsMap[e])),cropItemIdToSeedItemMap=Object.entries(itemsMap$2).reduce((e,[t,n])=>{let{growsInto:a}=n;if(a){let n=Array.isArray(a)?a:[a];for(let a of n)e[a]=itemsMap$2[t]}return e},{}),cropTypeToIdMap={[ASPARAGUS]:`asparagus`,[CARROT]:`carrot`,[CORN]:`corn`,[GARLIC]:`garlic`,[GRAPE]:grapeSeed.growsInto,[JALAPENO]:`jalapeno`,[OLIVE]:`olive`,[ONION]:`onion`,[PEA]:`pea`,[POTATO]:`potato`,[PUMPKIN]:`pumpkin`,[SOYBEAN]:`soybean`,[SPINACH]:`spinach`,[STRAWBERRY]:`strawberry`,[SUGARCANE]:`sugarcane`,[SUNFLOWER]:`sunflower`,[SWEET_POTATO]:`sweet-potato`,[TOMATO]:`tomato`,[WATERMELON]:`watermelon`,[WHEAT]:`wheat`,[WEED]:`weed`},{SEED:SEED$6,GROWING:GROWING$3,GROWN:GROWN$14}=cropLifeStage,getLifeStageRange=memoize(e=>{let t=Array(e[0]).fill(SEED$6);return t=t.concat(e.slice(1).reduce((e,t)=>e.concat(Array(t).fill(GROWING$3)),[])),t},{}),{GROWN:GROWN$13}=cropLifeStage,getLifeStageForTimeline=(e,t)=>getLifeStageRange(e)[Math.floor(t)]||GROWN$13,{GROWN:GROWN$12,DEAD:DEAD$3}=treeLifeStage,getTreeLifeStage=e=>{let{itemId:t,daysOld:n=0,daysGrown:a=n}=e,o=itemsMap[t];if(!o)throw Error(`${t} is not a valid item`);let{treeTimeline:s}=o;if(!s)throw Error(`${t} has no treeTimeline`);let l=getLifeStageForTimeline(s,a),u=e.lifespan??o.lifespan;return l!==GROWN$12||u===void 0?l:n>=s.reduce((e,t)=>e+t,0)+u?DEAD$3:GROWN$12},VIEW_QUERY_PARAM_NAME=`view`,splitHash=()=>{let e=import_window.default.location.hash.replace(/^#/,``),t=e.indexOf(`?`);return t===-1?{path:e,query:``}:{path:e.slice(0,t),query:e.slice(t+1)}},writeHashQueryParams=(e,t=`replace`)=>{let{path:n}=splitHash(),a=e.toString(),o=`${n}${a?`?${a}`:``}`,{origin:s,pathname:l,search:u}=import_window.default.location,d=`${s}${l}${u}#${o}`;t===`push`?import_window.default.history.pushState({},``,d):import_window.default.history.replaceState({},``,d)},getHashQueryParams=()=>new URLSearchParams(splitHash().query),setHashQueryParam=(e,t,n=`replace`)=>{let a=getHashQueryParams();a.set(e,t),writeHashQueryParams(a,n)},removeHashQueryParam=(e,t=`replace`)=>{let n=getHashQueryParams();n.delete(e),writeHashQueryParams(n,t)},withCurrentHashQuery=e=>{let t=getHashQueryParams().toString();return t?`${e}?${t}`:e},isPlantedTree=e=>!!(e&&`itemId`in e),moneyTotal=(...e)=>e.reduce((e,t)=>e+=Math.round(t*100),0)/100,assignPersistedKey=(e,t,n)=>{let a=t[n];a!==void 0&&(e[n]=a)},reduceByPersistedKeys=e=>PERSISTED_STATE_KEYS.reduce((t,n)=>(assignPersistedKey(t,e,n),t),{}),isItemAGrownCrop=e=>e.type===itemType.CROP&&!e.growsInto,isItemAGrownFruit=e=>e.type===itemType.TREE&&!e.isPlantableTree,FARM_PRODUCT_TYPES=[itemType.CRAFTED_ITEM,itemType.FUEL,itemType.MILK,itemType.ORE,itemType.STONE],isItemAFarmProduct=e=>!!(isItemAGrownCrop(e)||isItemAGrownFruit(e)||FARM_PRODUCT_TYPES.includes(e.type)),farmProductsSold=memoize(e=>Object.entries(e).reduce((e,[t,n])=>e+(isItemAFarmProduct(itemsMap[t])&&n||0),0)),levels=[];levels[1]={unlocksShopItem:carrotSeed.id},levels[2]={unlocksShopItem:spinachSeed.id},levels[3]={unlocksShopItem:fertilizer.id},levels[4]={unlocksShopItem:pumpkinSeed.id},levels[5]={unlocksShopItem:sprinkler.id},levels[6]={unlocksTool:[toolType.SHOVEL]},levels[8]={increasesSprinklerRange:!0},levels[10]={unlocksShopItem:cornSeed.id},levels[12]={increasesSprinklerRange:!0},levels[14]={unlocksShopItem:potatoSeed.id},levels[15]={unlocksStageFocusType:stageFocusType.FOREST,unlocksShopItem:appleSapling.id,unlocksTool:[toolType.AXE,toolType.PICKER_POLE]},levels[16]={unlocksShopItem:onionSeed.id},levels[17]={unlocksShopItem:mulch.id},levels[18]={unlocksShopItem:soybeanSeed.id},levels[20]={unlocksShopItem:wheatSeed.id},levels[21]={unlocksShopItem:bananaSapling.id},levels[22]={unlocksShopItem:tomatoSeed.id},levels[24]={unlocksShopItem:asparagusSeed.id},levels[26]={unlocksShopItem:jalapenoSeed.id},levels[28]={unlocksShopItem:watermelonSeed.id},levels[30]={unlocksShopItem:peaSeed.id},levels[32]={unlocksShopItem:strawberrySeed.id},levels[34]={unlocksShopItem:garlicSeed.id},levels[36]={unlocksShopItem:sweetPotatoSeed.id},levels[38]={unlocksShopItem:oliveSeed.id},levels[40]={unlocksShopItem:sunflowerSeed.id},levels[42]={unlocksShopItem:grapeSeed.id},levels[44]={unlocksShopItem:sugarcaneSeed.id};for(let e=0;e<levels.length;e++)levels[e]={id:e,...levels[e]};Object.freeze(levels);var unlockableItems=levels.reduce((e,{id:t,unlocksShopItem:n})=>(n&&t!==void 0&&(e[n]=t),e),{}),itemUnlockLevels=Object.entries(unlockableItems).reduce((e,[t,n])=>(e[String(n)]=t,e),{}),getLevelEntitlements=memoize(e=>{let t={sprinklerRange:1,items:{},tools:{},stageFocusType:{}};return levels.find(({unlocksShopItem:n,unlocksStageFocusType:a,unlocksTool:o,id:s,increasesSprinklerRange:l})=>{if(l&&t.sprinklerRange++,n&&(t.items[n]=!0),o)for(let e of o)t.tools[e]=!0;return a&&(t.stageFocusType[a]=!0),s===e}),t});function levelAchieved(e=0){return Math.floor(Math.sqrt(e)/10)+1}var transformStateDataForImport=e=>{let t={...e};[`version`].forEach(e=>delete t[e]),t.experience===0&&(t.experience=farmProductsSold(t.itemsSold||{})),t.showHomeScreen===!1&&t.stageFocus===stageFocusType.HOME&&(t={...t,stageFocus:STANDARD_VIEW_LIST[0]});{let{cowId1:e,cowId2:n}=t.cowBreedingPen,a=t.cowInventory.reduce((e,t)=>(e[t.id]=t,e),{});[e,n].some(e=>e&&!(e in a))&&(t.cowBreedingPen={cowId1:null,cowId2:null,daysUntilBirth:-1})}t.id&&(t.playerId=t.id,delete t.id);for(let e of[toolType.AXE,toolType.PICKER_POLE])if(t.toolLevels&&!t.toolLevels[e]){let n=!!getLevelEntitlements(levelAchieved(t.experience??0)).tools[e];t.toolLevels={...t.toolLevels,[e]:n?toolLevel.DEFAULT:toolLevel.UNAVAILABLE}}return t},require_alea=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=l();t.next=function(){var e=2091639*t.s0+t.c*23283064365386963e-26;return t.s0=t.s1,t.s1=t.s2,t.s2=e-(t.c=e|0)},t.c=1,t.s0=n(` `),t.s1=n(` `),t.s2=n(` `),t.s0-=n(e),t.s0<0&&(t.s0+=1),t.s1-=n(e),t.s1<0&&(t.s1+=1),t.s2-=n(e),t.s2<0&&(t.s2+=1),n=null}function o(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function s(e,t){var n=new a(e),s=t&&t.state,l=n.next;return l.int32=function(){return n.next()*4294967296|0},l.double=function(){return l()+(l()*2097152|0)*11102230246251565e-32},l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}function l(){var e=4022871197;return function(t){t=String(t);for(var n=0;n<t.length;n++){e+=t.charCodeAt(n);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26}}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.alea=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xor128=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=``;t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(e|0)?t.x=e:n+=e;for(var a=0;a<n.length+64;a++)t.x^=n.charCodeAt(a)|0,t.next()}function o(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function s(e,t){var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xor128=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xorwow=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=``;t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^(e^e<<1))|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(e|0)?t.x=e:n+=e;for(var a=0;a<n.length+64;a++)t.x^=n.charCodeAt(a)|0,a==n.length&&(t.d=t.x<<10^t.x>>>4),t.next()}function o(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function s(e,t){var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xorwow=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xorshift7=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this;t.next=function(){var e=t.x,n=t.i,a=e[n],o;return a^=a>>>7,o=a^a<<24,a=e[n+1&7],o^=a^a>>>10,a=e[n+3&7],o^=a^a>>>3,a=e[n+4&7],o^=a^a<<7,a=e[n+7&7],a^=a<<13,o^=a^a<<9,e[n]=o,t.i=n+1&7,o};function n(e,t){var n,a=[];if(t===(t|0))a[0]=t;else for(t=``+t,n=0;n<t.length;++n)a[n&7]=a[n&7]<<15^t.charCodeAt(n)+a[n+1&7]<<13;for(;a.length<8;)a.push(0);for(n=0;n<8&&a[n]===0;++n);for(n==8?a[7]=-1:a[n],e.x=a,e.i=0,n=256;n>0;--n)e.next()}n(t,e)}function o(e,t){return t.x=e.x.slice(),t.i=e.i,t}function s(e,t){e??=+new Date;var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(s.x&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xorshift7=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xor4096=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this;t.next=function(){var e=t.w,n=t.X,a=t.i,o,s;return t.w=e=e+1640531527|0,s=n[a+34&127],o=n[a=a+1&127],s^=s<<13,o^=o<<17,s^=s>>>15,o^=o>>>12,s=n[a]=s^o,t.i=a,s+(e^e>>>16)|0};function n(e,t){var n,a,o,s,l,u=[],d=128;for(t===(t|0)?(a=t,t=null):(t+=`\0`,a=0,d=Math.max(d,t.length)),o=0,s=-32;s<d;++s)t&&(a^=t.charCodeAt((s+32)%t.length)),s===0&&(l=a),a^=a<<10,a^=a>>>15,a^=a<<4,a^=a>>>13,s>=0&&(l=l+1640531527|0,n=u[s&127]^=a+l,o=n==0?o+1:0);for(o>=128&&(u[(t&&t.length||0)&127]=-1),o=127,s=512;s>0;--s)a=u[o+34&127],n=u[o=o+1&127],a^=a<<13,n^=n<<17,a^=a>>>15,n^=n>>>12,u[o]=a^n;e.w=l,e.X=u,e.i=o}n(t,e)}function o(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function s(e,t){e??=+new Date;var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(s.X&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xor4096=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_tychei=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=``;t.next=function(){var e=t.b,n=t.c,a=t.d,o=t.a;return e=e<<25^e>>>7^n,n=n-a|0,a=a<<24^a>>>8^o,o=o-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-a|0,t.d=a<<16^n>>>16^o,t.a=o-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=e|0):n+=e;for(var a=0;a<n.length+20;a++)t.b^=n.charCodeAt(a)|0,t.next()}function o(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function s(e,t){var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.tychei=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require___vite_browser_external=__commonJSMin(((e,t)=>{t.exports={}})),require_seedrandom$1=__commonJSMin(((e,t)=>{(function(e,n,a){var o=256,s=6,l=52,u=`random`,d=a.pow(o,s),f=a.pow(2,l),m=f*2,h=o-1,v;function y(e,t,l){var h=[];t=t==1?{entropy:!0}:t||{};var v=C(S(t.entropy?[e,E(n)]:e??T(),3),h),y=new b(h),D=function(){for(var e=y.g(s),t=d,n=0;e<f;)e=(e+n)*o,t*=o,n=y.g(1);for(;e>=m;)e/=2,t/=2,n>>>=1;return(e+n)/t};return D.int32=function(){return y.g(4)|0},D.quick=function(){return y.g(4)/4294967296},D.double=D,C(E(y.S),n),(t.pass||l||function(e,t,n,o){return o&&(o.S&&x(o,y),e.state=function(){return x(y,{})}),n?(a[u]=e,t):e})(D,v,`global`in t?t.global:this==a,t.state)}function b(e){var t,n=e.length,a=this,s=0,l=a.i=a.j=0,u=a.S=[];for(n||(e=[n++]);s<o;)u[s]=s++;for(s=0;s<o;s++)u[s]=u[l=h&l+e[s%n]+(t=u[s])],u[l]=t;(a.g=function(e){for(var t,n=0,s=a.i,l=a.j,u=a.S;e--;)t=u[s=h&s+1],n=n*o+u[h&(u[s]=u[l=h&l+t])+(u[l]=t)];return a.i=s,a.j=l,n})(o)}function x(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function S(e,t){var n=[],a=typeof e,o;if(t&&a==`object`)for(o in e)try{n.push(S(e[o],t-1))}catch{}return n.length?n:a==`string`?e:e+`\0`}function C(e,t){for(var n=e+``,a,o=0;o<n.length;)t[h&o]=h&(a^=t[h&o]*19)+n.charCodeAt(o++);return E(t)}function T(){try{var t;return v&&(t=v.randomBytes)?t=t(o):(t=new Uint8Array(o),(e.crypto||e.msCrypto).getRandomValues(t)),E(t)}catch{var a=e.navigator,s=a&&a.plugins;return[+new Date,e,s,e.screen,E(n)]}}function E(e){return String.fromCharCode.apply(0,e)}if(C(a.random(),n),typeof t==`object`&&t.exports){t.exports=y;try{v=require___vite_browser_external()}catch{}}else typeof define==`function`&&define.amd?define(function(){return y}):a[`seed`+u]=y})(typeof self<`u`?self:e,[],Math)})),require_seedrandom=__commonJSMin(((e,t)=>{var n=require_alea(),a=require_xor128(),o=require_xorwow(),s=require_xorshift7(),l=require_xor4096(),u=require_tychei(),d=require_seedrandom$1();d.alea=n,d.xor128=a,d.xorwow=o,d.xorshift7=s,d.xor4096=l,d.tychei=u,t.exports=d})),import_seedrandom=__toESM(require_seedrandom()),RandomNumberService=class{seededRandom=null;constructor(){let e=new URLSearchParams(import_window.default.location?.search).get(`seed`);e&&this.seedRandomNumber(e)}seedRandomNumber(e){this.seededRandom=(0,import_seedrandom.default)(e)}generateRandomNumber(){return this.seededRandom?this.seededRandom():Math.random()}unseedRandomNumber(){this.seededRandom=null}isRandomNumberLessThan(e){return this.generateRandomNumber()<=e}},randomNumberService=new RandomNumberService,addCowToInventory=(e,t)=>{let{cowInventory:n}=e;return{...e,cowInventory:[...n,t]}},random$1=()=>randomNumberService.generateRandomNumber(),generateValueAdjustments=(e={},t={})=>Object.keys(itemsMap).reduce((n,a)=>(itemsMap[a].doesPriceFluctuate&&(e[a]?n[a]=.5:t[a]?n[a]=1.5:n[a]=random$1()+.5),n),{}),chooseRandomIndex=e=>Math.round(random$1()*(e.length-1)),chooseRandom=e=>e[chooseRandomIndex(e)],filterItemIdsToSeeds=e=>e.filter(e=>itemsMap[e]?.type===itemType.CROP),getRandomLevelUpReward=e=>itemsMap[chooseRandom(filterItemIdsToSeeds(Object.keys(getLevelEntitlements(e).items)))],getRandomLevelUpRewardQuantity=e=>e*10,INVALID_AMOUNT_MESSAGE=`Amount is invalid.`,INVALID_SCALE_MESSAGE=`Scale is invalid.`,NON_DECIMAL_CURRENCY_MESSAGE=`Currency is not decimal.`;function assert(e,t){if(!e)throw Error(`[Dinero.js] ${t}`)}function createDinero({calculator:e,onCreate:t,formatter:n={toNumber:Number,toString:String}}){return function a({amount:o,currency:{code:s,base:l,exponent:u},scale:d=u}){let f={code:s,base:l,exponent:u};return t?.({amount:o,currency:f,scale:d}),{calculator:e,formatter:n,create:a,toJSON(){return{amount:o,currency:f,scale:d}}}}}var DineroComparisonOperator=function(e){return e[e.LT=-1]=`LT`,e[e.EQ=0]=`EQ`,e[e.GT=1]=`GT`,e}({});function equal$2(e){return(t,n)=>e.compare(t,n)===DineroComparisonOperator.EQ}function lessThan$1(e){return(t,n)=>e.compare(t,n)===DineroComparisonOperator.LT}function absolute(e){let t=equal$2(e),n=lessThan$1(e),a=e.zero();return o=>{if(t(o,a))return a;if(n(o,a)){let t=e.decrement(a);return e.multiply(t,o)}return o}}function isArray(e){return Array.isArray(e)}function computeBase(e){return t=>isArray(t)?t.reduce((t,n)=>e.multiply(t,n)):t}function getDivisors(e){let{multiply:t}=e;return e=>e.reduce((n,a,o)=>{let s=e.slice(o).reduce((e,n)=>t(e,n));return[...n,s]},[])}function toUnits$1(e){let t=getDivisors(e);return function(...[n,a]){let{amount:o,currency:s,scale:l}=n.toJSON(),{power:u,integerDivide:d,modulo:f}=e,m=t((isArray(s.base)?s.base:[s.base]).map(e=>u(e,l))).reduce((e,t,n)=>{let a=e[n],o=d(a,t),s=f(a,t);return[...e.filter((e,t)=>t!==n),o,s]},[o]);return a?a({value:m,currency:s}):m}}function toDecimal$1(e){let t=toUnits$1(e),n=computeBase(e),a=equal$2(e);return function(...[o,s]){let{currency:l,scale:u}=o.toJSON(),d=n(l.base),f=e.zero(),m=Array(10).fill(null).reduce(e.increment,f),h=isArray(l.base),v=a(e.modulo(d,m),f);assert(!h&&v,NON_DECIMAL_CURRENCY_MESSAGE);let y=t(o),b=getDecimal(e,o.formatter)(y,u);return s?s({value:b,currency:l}):b}}function getDecimal(e,t){let n=absolute(e),a=equal$2(e),o=lessThan$1(e),s=e.zero();return(e,l)=>{let u=t.toString(e[0]),d=t.toString(n(e[1])),f=t.toNumber(l),m=`${u}${f>0?`.${d.padStart(f,`0`)}`:``}`,h=a(e[0],s),v=o(e[1],s);return h&&v?`-${m}`:m}}function toDecimal(...[e,t]){let{calculator:n}=e;return toDecimal$1(n)(e,t)}var USD={code:`USD`,base:10,exponent:2},add$1=(e,t)=>e+t,compare$1=(e,t)=>e<t?DineroComparisonOperator.LT:e>t?DineroComparisonOperator.GT:DineroComparisonOperator.EQ,decrement=e=>e-1,increment=e=>e+1,integerDivide=(e,t)=>Math.trunc(e/t),modulo=(e,t)=>e%t,multiply$1=(e,t)=>e*t,power=(e,t)=>e**t,subtract$1=(e,t)=>e-t;function zero(){return 0}var dinero=createDinero({calculator:{add:add$1,compare:compare$1,decrement,increment,integerDivide,modulo,multiply:multiply$1,power,subtract:subtract$1,zero},onCreate({amount:e,scale:t}){assert(Number.isInteger(e),INVALID_AMOUNT_MESSAGE),assert(Number.isInteger(t),INVALID_SCALE_MESSAGE)}}),moneyString=e=>toDecimal(dinero({amount:Math.round(e*100),currency:USD}),({value:e})=>Number(e).toLocaleString(`en-US`,{style:`currency`,currency:`USD`})),fruit_names_default=`Akee.Apple.Apricot.Avocado.Açaí.Banana.Bilberry.Blackberry.Blackcurrant.Blueberry.Boysenberry.Cantaloupe.Cherimoya.Cherry.Chico.Clementine.Cloudberry.Coconut.Crabapple.Cranberry.Cucumber.Currant.Damson.Durian.Elderberry.Feijoa.Fig.Goji.Gooseberry.Grape.Grapefruit.Guava.Honeyberry.Honeydew.Huckleberry.Jabuticaba.Jackfruit.Jambul.Jostaberry.Jujube.Juniper.Kiwano.Kiwi.Kumquat.Lemon.Lime.Longan.Loquat.Lychee.Mandarine.Mango.Mangosteen.Marion.Melon.Mulberry.Nance.Nectarine.Olive.Orange.Papaya.Peach.Pear.Persimmon.Pineapple.Pineberry.Pitaya.Plantain.Plum.Plumcot.Pomegranate.Pomelo.Prune.Pumpkin.Quince.Raisin.Rambutan.Raspberry.Salak.Salal.Salmonberry.Sapote.Satsuma.Soursop.Strawberry.Surinam.Tamarillo.Tamarind.Tangerine.Tomato.Watermelon.Yuzu.Zucchini`.split(`.`),convertStringToInteger$1=e=>e.split(``).reduce((e,t,n)=>e+t.charCodeAt(0)*n,0),getDefaultCowName=({id:e})=>fruit_names_default[convertStringToInteger$1(e)%fruit_names_default.length],getCowDisplayName=(e,t,n)=>e.originalOwnerId!==t&&!n?getDefaultCowName(e):e.name,animalNames=`Aardvark.Albatross.Alligator.Alpaca.Angelfish.Anglerfish.Ant.Anteater.Antelope.Antlion.Ape.Armadillo.Asp.Baboon.Badger.Bandicoot.Barnacle.Barracuda.Basilisk.Bass.Bat.Bear.Beaver.Bee.Beetle.Bird.Bison.Blackbird.Boar.Bobcat.Bonobo.Bug.Butterfly.Buzzard.Camel.Capybara.Cardinal.Caribou.Cat.Caterpillar.Catfish.Cattle.Chameleon.Cheetah.Chickadee.Chicken.Chimpanzee.Chinchilla.Chipmunk.Clam.Clownfish.Cobra.Condor.Coral.Cougar.Coyote.Crab.Crane.Crawdad.Crayfish.Cricket.Crocodile.Crow.Cuckoo.Deer.Dingo.Dinosaur.Dog.Dolphin.Donkey.Dove.Dragon.Dragonfly.Duck.Eagle.Earthworm.Echidna.Egret.Elephant.Elk.Emu.Ermine.Falcon.Ferret.Finch.Firefly.Fish.Flamingo.Fowl.Fox.Frog.Gazelle.Gecko.Gerbil.Gibbon.Giraffe.Goat.Goldfish.Goose.Gopher.Gorilla.Grasshopper.Grouse.Gull.Guppy.Hamster.Hare.Harrier.Hawk.Hedgehog.Heron.Hippopotamus.Horse.Hummingbird.Hyena.Iguana.Impala.Jackal.Jaguar.Jay.Jellyfish.Kangaroo.Kingfisher.Kiwi.Koala.Koi.Ladybug.Lark.Lemming.Lemur.Leopard.Lion.Llama.Lobster.Loon.Lynx.Macaw.Mackerel.Mammal.Manatee.Mandrill.Marlin.Marmoset.Marmot.Marsupial.Mastodon.Meerkat.Mink.Minnow.Mockingbird.Mole.Mongoose.Monkey.Moose.Mosquito.Mouse.Mule.Muskox.Narwhal.Ocelot.Octopus.Opossum.Orangutan.Orca.Ostrich.Otter.Owl.Ox.Panda.Panther.Parakeet.Parrot.Partridge.Peacock.Pelican.Penguin.Pig.Pigeon.Platypus.Pony.Porcupine.Porpoise.Puffin.Puma.Python.Quail.Quokka.Rabbit.Raccoon.Raven.Reindeer.Rhinoceros.Roadrunner.Rooster.Salamander.Salmon.Seahorse.Shark.Sheep.Shrew.Sloth.Snail.Sparrow.Squid.Squirrel.Starfish.Stingray.Stoat.Stork.Sturgeon.Swan.Swift.Swordfish.Tapir.Tarsier.Tern.Tiger.Tortoise.Toucan.Turkey.Turtle.Tyrannosaurus.Vole.Wallaby.Walrus.Warbler.Whale.Wildcat.Wolf.Wolverine.Wombat.Woodpecker.Wren.Yak.Zebra`.split(`.`),adjectives=`Adorable.Adventurous.Agreeable.Alert.Amused.Attractive.Average.Beautiful.Blushing.Brainy.Brave.Bright.Busy.Calm.Careful.Cautious.Charming.Cheerful.Clever.Cloudy.Colorful.Comfortable.Concerned.Cooperative.Courageous.Crazy.Curious.Cute.Delightful.Determined.Distinct.Dizzy.Elated.Elegant.Enchanting.Encouraging.Energetic.Enthusiastic.Excited.Exuberant.Famous.Fancy.Fantastic.Fierce.Fine.Friendly.Funny.Gentle.Gifted.Glamorous.Gleaming.Glorious.Gorgeous.Graceful.Handsome.Happy.Healthy.Helpful.Hilarious.Important.Inquisitive.Jolly.Joyous.Kind.Light.Lively.Lovely.Lucky.Magnificent.Mysterious.Nice.Nutty.Outrageous.Outstanding.Perfect.Pleasant.Poised.Powerful.Precious.Proud.Puzzled.Quaint.Relieved.Shiny.Silly.Sleepy.Smiling.Sparkling.Splendid.Stormy.Strange.Successful.Tame.Thankful.Thoughtful.Tough.Victorious.Vivacious.Wandering.Wide-eyed.Wild.Witty.Zany`.split(`.`),convertStringToInteger=function(e){return e.split(``).reduce(function(e,t,n){return e+t.charCodeAt(0)*n},0)},funAnimalName=function(e,t){var n=t===void 0?{}:t,a=n.adjectives,o=a===void 0?adjectives:a,s=n.animalNames,l=s===void 0?animalNames:s,u=convertStringToInteger(e),d=o[u%o.length],f=l[(u+convertStringToInteger(d))%l.length];return d+` `+f},getPlayerName=memoize(e=>funAnimalName(e)),integerString=e=>toDecimal(dinero({amount:Math.round(e),currency:USD,scale:0}),({value:e})=>Number(e).toLocaleString(`en-US`)),CROWS_DESTROYED=(e,t)=>`Oh no! Crows destroyed ${t} crop${t>1?`s`:``}!`,COW_PEN_PURCHASED=(e,t)=>`Purchased a cow pen with capacity for ${t} cows! You can visit your cow pen by going to the "Cows" page.`,CELLAR_PURCHASED=(e,t)=>`Purchased a cellar with capacity for ${t} kegs! View your keg inventory by going to the "Cellar" page.`,MILKS_PRODUCED=(e,t)=>{let n=`Your cows produced milk:
|
|
139
|
+
0 22,12A10,10 0 0,0 12,2Z`}))},iconStyles={fontSize:20,marginInlineEnd:8},defaultIconVariants={default:void 0,success:import_react$24.createElement(CheckIcon,{style:iconStyles}),warning:import_react$24.createElement(WarningIcon,{style:iconStyles}),error:import_react$24.createElement(ErrorIcon,{style:iconStyles}),info:import_react$24.createElement(InfoIcon,{style:iconStyles})};function createChainedFunction(e,t){return e.reduce(function(e,n){return n==null?e:function(){var a=[...arguments],o=[].concat(a);t&&o.indexOf(t)===-1&&o.push(t),e.apply(this,o),n.apply(this,o)}},function(){})}var useEnhancedEffect=typeof window<`u`?import_react$24.useLayoutEffect:import_react$24.useEffect;function useEventCallback(e){var t=(0,import_react$24.useRef)(e);return useEnhancedEffect(function(){t.current=e}),(0,import_react$24.useCallback)(function(){return t.current.apply(void 0,arguments)},[])}var Snackbar=(0,import_react$24.forwardRef)(function(e,t){var n=e.children,a=e.autoHideDuration,o=e.ClickAwayListenerProps,s=e.disableWindowBlurListener,l=s!==void 0&&s,u=e.onClose,d=e.onMouseEnter,f=e.onMouseLeave,m=e.open,h=e.resumeHideDuration,v=_objectWithoutPropertiesLoose$2(e,[`children`,`autoHideDuration`,`ClickAwayListenerProps`,`disableWindowBlurListener`,`onClose`,`onMouseEnter`,`onMouseLeave`,`open`,`resumeHideDuration`]),y=(0,import_react$24.useRef)(),b=useEventCallback(function(){u&&u.apply(void 0,arguments)}),x=useEventCallback(function(e){!u||e==null||(clearTimeout(y.current),y.current=setTimeout(function(){b(null,REASONS.TIMEOUT)},e))});(0,import_react$24.useEffect)(function(){return m&&x(a),function(){clearTimeout(y.current)}},[m,a,x]);var S=function(){clearTimeout(y.current)},C=(0,import_react$24.useCallback)(function(){a!=null&&x(h??a*.5)},[a,h,x]);return(0,import_react$24.useEffect)(function(){if(!l&&m)return window.addEventListener(`focus`,C),window.addEventListener(`blur`,S),function(){window.removeEventListener(`focus`,C),window.removeEventListener(`blur`,S)}},[l,C,m]),(0,import_react$24.createElement)(ClickAwayListener,_extends$2({onClickAway:function(e){u&&u(e,REASONS.CLICKAWAY)}},o),(0,import_react$24.createElement)(`div`,_extends$2({onMouseEnter:function(e){d&&d(e),S()},onMouseLeave:function(e){f&&f(e),C()},ref:t},v),n))}),componentName$1=`SnackbarItem`,classes$1={contentRoot:componentName$1+`-contentRoot`,lessPadding:componentName$1+`-lessPadding`,variantSuccess:componentName$1+`-variantSuccess`,variantError:componentName$1+`-variantError`,variantInfo:componentName$1+`-variantInfo`,variantWarning:componentName$1+`-variantWarning`,message:componentName$1+`-message`,action:componentName$1+`-action`,wrappedRoot:componentName$1+`-wrappedRoot`},StyledSnackbar=styled$1(Snackbar)(function(e){var t,n=e.theme,a=n.palette.mode||n.palette.type,o=emphasize(n.palette.background.default,a===`light`?.8:.98);return t={},t[`&.`+classes$1.wrappedRoot]={position:`relative`,transform:`translateX(0)`,top:0,right:0,bottom:0,left:0},t[`.`+classes$1.contentRoot]=_extends$2({},n.typography.body2,{backgroundColor:o,color:n.palette.getContrastText(o),alignItems:`center`,padding:`6px 16px`,borderRadius:`4px`,boxShadow:`0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)`}),t[`.`+classes$1.lessPadding]={paddingLeft:8*2.5},t[`.`+classes$1.variantSuccess]={backgroundColor:`#43a047`,color:`#fff`},t[`.`+classes$1.variantError]={backgroundColor:`#d32f2f`,color:`#fff`},t[`.`+classes$1.variantInfo]={backgroundColor:`#2196f3`,color:`#fff`},t[`.`+classes$1.variantWarning]={backgroundColor:`#ff9800`,color:`#fff`},t[`.`+classes$1.message]={display:`flex`,alignItems:`center`,padding:`8px 0`},t[`.`+classes$1.action]={display:`flex`,alignItems:`center`,marginLeft:`auto`,paddingLeft:16,marginRight:-8},t}),SnackbarItem=function(e){var t=e.classes,n=_objectWithoutPropertiesLoose$2(e,[`classes`]),a=(0,import_react$24.useRef)(),o=(0,import_react$24.useState)(!0),s=o[0],l=o[1];(0,import_react$24.useEffect)(function(){return function(){a.current&&clearTimeout(a.current)}},[]);var u=createChainedFunction([n.snack.onClose,n.onClose],n.snack.key),d=function(){n.snack.requestClose&&u(null,REASONS.INSTRCUTED)},f=function(){a.current=setTimeout(function(){l(!s)},125)},m=n.style,h=n.ariaAttributes,v=n.className,y=n.hideIconVariant,b=n.iconVariant,x=n.snack,S=n.action,C=n.content,T=n.TransitionComponent,E=n.TransitionProps,D=n.transitionDuration,O=_objectWithoutPropertiesLoose$2(n,[`style`,`dense`,`ariaAttributes`,`className`,`hideIconVariant`,`iconVariant`,`snack`,`action`,`content`,`TransitionComponent`,`TransitionProps`,`transitionDuration`,`onEnter`,`onEntered`,`onEntering`,`onExit`,`onExited`,`onExiting`]),k=x.key,j=x.open,M=x.className,N=x.variant,F=x.content,I=x.action,L=x.ariaAttributes,R=x.anchorOrigin,z=x.message,B=x.TransitionComponent,V=x.TransitionProps,H=x.transitionDuration,U=_objectWithoutPropertiesLoose$2(x,[`persist`,`key`,`open`,`entered`,`requestClose`,`className`,`variant`,`content`,`action`,`ariaAttributes`,`anchorOrigin`,`message`,`TransitionComponent`,`TransitionProps`,`transitionDuration`,`onEnter`,`onEntered`,`onEntering`,`onExit`,`onExited`,`onExiting`]),W=_extends$2({},defaultIconVariants,{},b)[N],G=_extends$2({"aria-describedby":`notistack-snackbar`},objectMerge(L,h)),ee=B||T||DEFAULTS.TransitionComponent,te=objectMerge(H,D,DEFAULTS.transitionDuration),K=_extends$2({direction:getTransitionDirection(R)},objectMerge(V,E)),q=I||S;typeof q==`function`&&(q=q(k));var ne=F||C;typeof ne==`function`&&(ne=ne(k,x.message));var re=[`onEnter`,`onEntering`,`onEntered`,`onExit`,`onExiting`,`onExited`].reduce(function(e,t){var a;return _extends$2({},e,(a={},a[t]=createChainedFunction([n.snack[t],n[t]],n.snack.key),a))},{});return import_react$24.createElement(Collapse,{unmountOnExit:!0,timeout:175,in:s,onExited:re.onExited},import_react$24.createElement(StyledSnackbar,Object.assign({},O,U,{open:j,className:clsx(t.root,classes$1.wrappedRoot,t[transformer.toAnchorOrigin(R)]),onClose:u}),import_react$24.createElement(ee,Object.assign({appear:!0,in:j,timeout:te},K,{onExit:re.onExit,onExiting:re.onExiting,onExited:f,onEnter:re.onEnter,onEntering:re.onEntering,onEntered:createChainedFunction([re.onEntered,d])}),ne||import_react$24.createElement(SnackbarContent,Object.assign({},G,{role:`alert`,style:m,className:clsx(classes$1.contentRoot,classes$1[transformer.toVariant(N)],t[transformer.toVariant(N)],v,M,!y&&W&&classes$1.lessPadding)}),import_react$24.createElement(`div`,{id:G[`aria-describedby`],className:classes$1.message},y?null:W,z),q&&import_react$24.createElement(`div`,{className:classes$1.action},q)))))},collapse={container:`& > .MuiCollapse-container, & > .MuiCollapse-root`,wrapper:`& > .MuiCollapse-container > .MuiCollapse-wrapper, & > .MuiCollapse-root > .MuiCollapse-wrapper`},xsWidthMargin=16,componentName$2=`SnackbarContainer`,classes$2={root:componentName$2+`-root`,rootDense:componentName$2+`-rootDense`,top:componentName$2+`-top`,bottom:componentName$2+`-bottom`,left:componentName$2+`-left`,right:componentName$2+`-right`,center:componentName$2+`-center`},Root$1=styled$1(`div`)(function(e){var t,n,a,o,s,l,u=e.theme;return l={},l[`&.`+classes$2.root]=(t={boxSizing:`border-box`,display:`flex`,maxHeight:`100%`,position:`fixed`,zIndex:u.zIndex.snackbar,height:`auto`,width:`auto`,transition:`top 300ms ease 0ms, right 300ms ease 0ms, bottom 300ms ease 0ms, left 300ms ease 0ms, margin 300ms ease 0ms, max-width 300ms ease 0ms`,pointerEvents:`none`},t[collapse.container]={pointerEvents:`all`},t[collapse.wrapper]={padding:SNACKBAR_INDENTS.snackbar.default+`px 0px`,transition:`padding 300ms ease 0ms`},t.maxWidth=`calc(100% - `+SNACKBAR_INDENTS.view.default*2+`px)`,t[u.breakpoints.down(`sm`)]={width:`100%`,maxWidth:`calc(100% - `+xsWidthMargin*2+`px)`},t),l[`&.`+classes$2.rootDense]=(n={},n[collapse.wrapper]={padding:SNACKBAR_INDENTS.snackbar.dense+`px 0px`},n),l[`&.`+classes$2.top]={top:SNACKBAR_INDENTS.view.default-SNACKBAR_INDENTS.snackbar.default,flexDirection:`column`},l[`&.`+classes$2.bottom]={bottom:SNACKBAR_INDENTS.view.default-SNACKBAR_INDENTS.snackbar.default,flexDirection:`column-reverse`},l[`&.`+classes$2.left]=(a={left:SNACKBAR_INDENTS.view.default},a[u.breakpoints.up(`sm`)]={alignItems:`flex-start`},a[u.breakpoints.down(`sm`)]={left:xsWidthMargin+`px`},a),l[`&.`+classes$2.right]=(o={right:SNACKBAR_INDENTS.view.default},o[u.breakpoints.up(`sm`)]={alignItems:`flex-end`},o[u.breakpoints.down(`sm`)]={right:xsWidthMargin+`px`},o),l[`&.`+classes$2.center]=(s={left:`50%`,transform:`translateX(-50%)`},s[u.breakpoints.up(`sm`)]={alignItems:`center`},s),l}),SnackbarContainer$1=import_react$24.memo(function(e){var t=e.className,n=e.anchorOrigin,a=e.dense,o=_objectWithoutPropertiesLoose$2(e,[`className`,`anchorOrigin`,`dense`]),s=clsx(classes$2[n.vertical],classes$2[n.horizontal],classes$2.root,t,a&&classes$2.rootDense);return import_react$24.createElement(Root$1,Object.assign({className:s},o))}),SnackbarProvider=function(e){_inheritsLoose(t,e);function t(t){var n=e.call(this,t)||this;return n.enqueueSnackbar=function(e,t){t===void 0&&(t={});var a=t,o=a.key,s=a.preventDuplicate,l=_objectWithoutPropertiesLoose$2(a,[`key`,`preventDuplicate`]),u=isDefined(o),d=u?o:new Date().getTime()+Math.random(),f=merge(l,n.props,DEFAULTS),m=_extends$2({key:d},l,{message:e,open:!0,entered:!1,requestClose:!1,variant:f(`variant`),anchorOrigin:f(`anchorOrigin`),autoHideDuration:f(`autoHideDuration`)});return l.persist&&(m.autoHideDuration=void 0),n.setState(function(t){if(s===void 0&&n.props.preventDuplicate||s){var a=function(t){return u?t.key===o:t.message===e},l=t.queue.findIndex(a)>-1,d=t.snacks.findIndex(a)>-1;if(l||d)return t}return n.handleDisplaySnack(_extends$2({},t,{queue:[].concat(t.queue,[m])}))}),d},n.handleDisplaySnack=function(e){return e.snacks.length>=n.maxSnack?n.handleDismissOldest(e):n.processQueue(e)},n.processQueue=function(e){var t=e.queue,n=e.snacks;return t.length>0?_extends$2({},e,{snacks:[].concat(n,[t[0]]),queue:t.slice(1,t.length)}):e},n.handleDismissOldest=function(e){if(e.snacks.some(function(e){return!e.open||e.requestClose}))return e;var t=!1,a=!1;e.snacks.reduce(function(e,t){return e+(t.open&&t.persist?1:0)},0)===n.maxSnack&&(a=!0);var o=e.snacks.map(function(e){return!t&&(!e.persist||a)?(t=!0,e.entered?(e.onClose&&e.onClose(null,REASONS.MAXSNACK,e.key),n.props.onClose&&n.props.onClose(null,REASONS.MAXSNACK,e.key),_extends$2({},e,{open:!1})):_extends$2({},e,{requestClose:!0})):_extends$2({},e)});return _extends$2({},e,{snacks:o})},n.handleEnteredSnack=function(e,t,a){if(!isDefined(a))throw Error(`handleEnteredSnack Cannot be called with undefined key`);n.setState(function(e){return{snacks:e.snacks.map(function(e){return e.key===a?_extends$2({},e,{entered:!0}):_extends$2({},e)})}})},n.handleCloseSnack=function(e,t,a){if(n.props.onClose&&n.props.onClose(e,t,a),t!==REASONS.CLICKAWAY){var o=a===void 0;n.setState(function(e){var t=e.snacks,n=e.queue;return{snacks:t.map(function(e){return!o&&e.key!==a?_extends$2({},e):e.entered?_extends$2({},e,{open:!1}):_extends$2({},e,{requestClose:!0})}),queue:n.filter(function(e){return e.key!==a})}})}},n.closeSnackbar=function(e){var t=n.state.snacks.find(function(t){return t.key===e});isDefined(e)&&t&&t.onClose&&t.onClose(null,REASONS.INSTRUCTED,e),n.handleCloseSnack(null,REASONS.INSTRUCTED,e)},n.handleExitedSnack=function(e,t,a){var o=t||a;if(!isDefined(o))throw Error(`handleExitedSnack Cannot be called with undefined key`);n.setState(function(e){var t=n.processQueue(_extends$2({},e,{snacks:e.snacks.filter(function(e){return e.key!==o})}));return t.queue.length===0?t:n.handleDismissOldest(t)})},n.state={snacks:[],queue:[],contextValue:{enqueueSnackbar:n.enqueueSnackbar.bind(_assertThisInitialized$1(n)),closeSnackbar:n.closeSnackbar.bind(_assertThisInitialized$1(n))}},n}var n=t.prototype;return n.render=function(){var e=this,t=this.state.contextValue,n=this.props,a=n.iconVariant,o=n.dense,s=o===void 0?DEFAULTS.dense:o,l=n.hideIconVariant,u=l===void 0?DEFAULTS.hideIconVariant:l,d=n.domRoot,f=n.children,m=n.classes,h=m===void 0?{}:m,v=_objectWithoutPropertiesLoose$2(n,[`maxSnack`,`preventDuplicate`,`variant`,`anchorOrigin`,`iconVariant`,`dense`,`hideIconVariant`,`domRoot`,`children`,`classes`]),y=this.state.snacks.reduce(function(e,t){var n,a=originKeyExtractor(t.anchorOrigin),o=e[a]||[];return _extends$2({},e,(n={},n[a]=[].concat(o,[t]),n))},{}),b=Object.keys(y).map(function(t){var n=y[t];return import_react$24.createElement(SnackbarContainer$1,{key:t,dense:s,anchorOrigin:n[0].anchorOrigin,className:clsx(h.containerRoot,h[transformer.toContainerAnchorOrigin(t)])},n.map(function(t){return import_react$24.createElement(SnackbarItem,Object.assign({},v,{key:t.key,snack:t,dense:s,iconVariant:a,hideIconVariant:u,classes:omitContainerKeys(h),onClose:e.handleCloseSnack,onExited:createChainedFunction([e.handleExitedSnack,e.props.onExited]),onEntered:createChainedFunction([e.handleEnteredSnack,e.props.onEntered])}))}))});return import_react$24.createElement(SnackbarContext.Provider,{value:t},f,d?(0,import_react_dom.createPortal)(b,d):b)},_createClass$2(t,[{key:`maxSnack`,get:function(){return this.props.maxSnack||DEFAULTS.maxSnack}}]),t}(import_react$24.Component),withSnackbar=function(e){var t=import_react$24.forwardRef(function(t,n){return import_react$24.createElement(SnackbarContext.Consumer,null,function(a){return import_react$24.createElement(e,_extends$2({},t,{ref:n,enqueueSnackbar:a.enqueueSnackbar,closeSnackbar:a.closeSnackbar}))})});return(0,import_hoist_non_react_statics_cjs$1.default)(t,e),t},react_hotkeys_production_min_exports=__exportAll({GlobalHotKeys:()=>GlobalHotKeys$1$1,HotKeys:()=>HotKeys,IgnoreKeys:()=>IgnoreKeys$1,ObserveKeys:()=>ObserveKeys$1,configure:()=>configure$1,getApplicationKeyMap:()=>getApplicationKeyMap,recordKeyCombination:()=>recordKeyCombination,withHotKeys:()=>withHotKeys,withIgnoreKeys:()=>withIgnoreKeys,withObserveKeys:()=>withObserveKeys});function _typeof$4(e){return _typeof$4=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_typeof$4(e)}function _classCallCheck$1(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function _defineProperties$1(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,`value`in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function _createClass$1(e,t,n){return t&&_defineProperties$1(e.prototype,t),n&&_defineProperties$1(e,n),e}function _defineProperty$3(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _extends$1(){return _extends$1=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends$1.apply(this,arguments)}function _objectSpread$1(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t],a=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(a=a.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),a.forEach(function(t){_defineProperty$3(e,t,n[t])})}return e}function _inherits(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function`);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _getPrototypeOf(e){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_getPrototypeOf(e)}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function isNativeReflectConstruct(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function _construct(e,t,n){return _construct=isNativeReflectConstruct()?Reflect.construct:function(e,t,n){var a=[null];a.push.apply(a,t);var o=new(Function.bind.apply(e,a));return n&&_setPrototypeOf(o,n.prototype),o},_construct.apply(null,arguments)}function _isNativeFunction(e){return Function.toString.call(e).indexOf(`[native code]`)!==-1}function _wrapNativeSuper(e){var t=typeof Map==`function`?new Map:void 0;return _wrapNativeSuper=function(e){if(e===null||!_isNativeFunction(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(n,e)},_wrapNativeSuper(e)}function _objectWithoutPropertiesLoose$1(e,t){if(e==null)return{};var n={},a=Object.keys(e),o,s;for(s=0;s<a.length;s++)o=a[s],!(t.indexOf(o)>=0)&&(n[o]=e[o]);return n}function _objectWithoutProperties$1(e,t){if(e==null)return{};var n=_objectWithoutPropertiesLoose$1(e,t),a,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)a=s[o],!(t.indexOf(a)>=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}function _assertThisInitialized(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function _possibleConstructorReturn(e,t){return t&&(typeof t==`object`||typeof t==`function`)?t:_assertThisInitialized(e)}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=_getPrototypeOf(e),e!==null););return e}function _get(e,t,n){return _get=typeof Reflect<`u`&&Reflect.get?Reflect.get:function(e,t,n){var a=_superPropBase(e,t);if(a){var o=Object.getOwnPropertyDescriptor(a,t);return o.get?o.get.call(n):o.value}},_get(e,t,n||e)}function _toConsumableArray$1(e){return _arrayWithoutHoles$1(e)||_iterableToArray$1(e)||_nonIterableSpread$1()}function _arrayWithoutHoles$1(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}}function _iterableToArray$1(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)===`[object Arguments]`)return Array.from(e)}function _nonIterableSpread$1(){throw TypeError(`Invalid attempt to spread non-iterable instance`)}function dictionaryFrom(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;return e.reduce(function(e,n){return e[n]=t||{value:n},e},{})}function resolveShiftedAlias(e){return ShiftedKeysDictionary[e]||[e.length===1?e.toUpperCase():e]}function hasKey(e,t){return e.hasOwnProperty(t)}function invertArrayDictionary(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(n,a){var o=e[a];return o.forEach(function(e){hasKey(n,e)||(n[e]=[]),n[e].push(a)}),t.includeOriginal&&(!hasKey(n,a)&&(n[a]=[]),n[a]=[].concat(_toConsumableArray$1(n[a]),_toConsumableArray$1(o))),n},{})}function resolveUnshiftedAlias(e){return UnshiftedKeysDictionary[e]||[e.length===1?e.toLowerCase():e]}function isString(e){return typeof e==`string`}function stripSuperfluousWhitespace(e){return isString(e)?e.trim().replace(/\s+/g,` `):e}function standardizeKeyName(e){var t=e.toLowerCase();return MousetrapToReactKeyNamesDictionary[t]||KeyShorthandDictionary[t]||(e.match(/^f\d+$/)?e.toUpperCase():e)}function isNonPrintableKeyName(e){return!!NonPrintableKeysDictionary[e]}function isCustomKeyName(e){return Configuration.option(`_customKeyNamesDict`)[e]}function isValidKey(e){return isNonPrintableKeyName(e)||String.fromCharCode(e.charCodeAt(0))===e||isCustomKeyName(e)}function normalizedCombinationId(e){return e.sort().join(`+`)}function parseCombination(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};return e.replace(/^\+|(\s|[^+]\+)\+/,`$1plus`).split(`+`).reduce(function(e,n){var a=standardizeKeyName(n);if(t.ensureValidKeys&&!isValidKey(a))throw new InvalidKeyNameError;return e[a]=!0,e},{})}function resolveUnaltedAlias(e){return UnaltedKeysDictionary[e]||[e]}function resolveAltedAlias(e){return AltedKeysDictionary[e]||[e]}function resolveUnaltShiftedAlias(e){return UnaltShiftedKeysDictionary[e]||resolveUnshiftedAlias(e)}function resolveAltShiftedAlias(e){return AltShiftedKeysDictionary[e]||[e]}function resolveKeyAlias(e){return KeyOSAndLayoutAliasesDictionary$1[e]||[e]}function applicableAliasFunctions(e){if(e.Shift)return e.Alt?[resolveAltShiftedAlias,resolveUnaltShiftedAlias]:[resolveShiftedAlias,resolveUnshiftedAlias];if(e.Alt)return[resolveAltedAlias,resolveUnaltedAlias];var t=function(e){return[e]};return[t,t]}function isUndefined(e){return e===void 0}function isObject(e){return!Array.isArray(e)&&_typeof$4(e)===`object`&&e!==null}function isEmpty$2(e){return isObject(e)?Object.keys(e).length===0:!e||e.length===0}function size(e){return isObject(e)?Object.keys(e).length:e.length}function buildKeyAliases(e){return Object.keys(e).reduce(function(t,n){return resolveKeyAlias(n).forEach(function(a){applicableAliasFunctions(e).forEach(function(e){e(a).forEach(function(e){(e!==n||n!==a)&&(t[e]=n)})})}),t},{})}function arrayFrom(e){return Array.isArray(e)?e:e?[e]:[]}function without(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[],n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=dictionaryFrom(arrayFrom(t));return Array.isArray(e)?e.reduce(function(e,t){return a[t]&&(n.stringifyFirst||a[t].value===t)||e.push(t),e},[]):isObject(e)?Object.keys(e).reduce(function(t,n){return a[n]||(t[n]=e[n]),t},{}):e}function removeAtIndex(e,t){return[].concat(_toConsumableArray$1(e.slice(0,t)),_toConsumableArray$1(e.slice(t+1)))}function normalizeActionOptions(e,t){if(isObject(e)){var n=e.sequence,a=e.action;return{keySequence:n,keyEventType:isUndefined(a)?KeyEventType[t.defaultKeyEvent]:KeyEventType[a]}}return{keySequence:e,keyEventType:KeyEventType[t.defaultKeyEvent]}}function indexFromEnd(e,t){return e[e.length-(t+1)]}function keyupIsHiddenByCmd(e){return e.length===1||hasKey(KeysWithKeyUpHiddenByCmd,e)}function canBeMatched(e,t){var n=size(t.keyDictionary);return Configuration.option(`allowCombinationSubmatches`)||keyUpIsBeingHidden(e)?e.getNumberOfKeys()>=n:e.getNumberOfKeys()===n}function keyUpIsBeingHidden(e){return!!e.isKeyStillPressed(`Meta`)&&e.some(function(e){return keyupIsHiddenByCmd(e)})}function copyAttributes(e,t,n){return n.forEach(function(n){hasKey(e,n)&&(t[n]=e[n])}),t}function describeKeyEventType(e){switch(parseInt(e,10)){case 0:return`keydown`;case 1:return`keypress`;default:return`keyup`}}function hasKeyPressEvent(e){return!isNonPrintableKeyName(e)}function stateFromEvent(e){return e.simulated?KeyEventState.simulated:KeyEventState.seen}function getEventCharCode(e){var t,n=e.keyCode;return`charCode`in e?(t=e.charCode,t===0&&n===13&&(t=13)):t=n,t===10&&(t=13),32<=t||t===13?t:0}function reactsGetEventKey(e){if(e.key){var t=normalizeKey[e.key]||e.key;if(t!==`Unidentified`)return t}if(e.type===`keypress`){var n=getEventCharCode(e);return n===13?`Enter`:String.fromCharCode(n)}return e.type===`keydown`||e.type===`keyup`?translateToKey[e.keyCode]||`Unidentified`:``}function getKeyName(e){var t=function(){var t=Configuration.option(`customKeyCodes`),n=e.keyCode||e.charCode;return hasKey(t,n)?t[n]:e.nativeEvent?e.key:reactsGetEventKey(e)}();return t===`+`?`plus`:t}function isCmdKey(e){return e===`Meta`}function contains(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{};return Array.isArray(e)||isString(e)?n.stringifyFirst?!isUndefined(e.find(function(e){return e.toString()===t.toString()})):e.indexOf(t)!==-1:isObject(e)?hasKey(e,t):n.stringifyFirst?e.toString()===t.toString():e===t}function capitalize$1(e){return e.replace(/\b\w/g,function(e){return e.toUpperCase()})}function normalizeEventName(e){return`${capitalize$1(e.slice(0,3))}${capitalize$1(e.slice(3))}`}function isFromFocusOnlyComponent(e){return!isUndefined(e)}function backwardsCompatibleContext(e,t){var n=t.deprecatedAPI,a=n.contextTypes,o=n.childContextTypes,s=t.newAPI.contextType;if(import_react.createContext===void 0)e.contextTypes=a,e.childContextTypes=o,e.prototype.getChildContext=function(){return this._childContext};else{var l=import_react.createContext(s);e.contextType=l,e.prototype._originalRender=e.prototype.render,e.prototype.render=function(){var e=this._originalRender();return e?import_react.createElement(l.Provider,{value:this._childContext},e):null}}return e}function withHotKeys(e){function t(e,t){return _objectSpread$1({},o[e]||{},t[e]||{})}function n(e){return t(`handlers`,e)}function a(e){return t(`keyMap`,e)}var o=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},s=function(t){function o(e){var t;return _classCallCheck$1(this,o),t=_possibleConstructorReturn(this,_getPrototypeOf(o).call(this,e)),t._handleFocus=t._handleFocus.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleBlur=t._handleBlur.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleKeyDown=t._handleKeyDown.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleKeyPress=t._handleKeyPress.bind(_assertThisInitialized(_assertThisInitialized(t))),t._handleKeyUp=t._handleKeyUp.bind(_assertThisInitialized(_assertThisInitialized(t))),t._componentIsFocused=t._componentIsFocused.bind(_assertThisInitialized(_assertThisInitialized(t))),t._id=KeyEventManager.getInstance().registerKeyMap(e.keyMap),t._childContext={hotKeysParentId:t._id},t}return _inherits(o,t),_createClass$1(o,[{key:`render`,value:function(){var t=this.props;t.keyMap,t.handlers,t.allowChanges,t.root;var n=_objectWithoutProperties$1(t,[`keyMap`,`handlers`,`allowChanges`,`root`]),a={onFocus:this._wrapFunction(`onFocus`,this._handleFocus),onBlur:this._wrapFunction(`onBlur`,this._handleBlur),tabIndex:Configuration.option(`defaultTabIndex`)};return this._shouldBindKeyListeners()&&(a.onKeyDown=this._handleKeyDown,a.onKeyPress=this._handleKeyPress,a.onKeyUp=this._handleKeyUp),import_react.createElement(e,_extends$1({hotKeys:a},n))}},{key:`_shouldBindKeyListeners`,value:function(){var e=a(this.props);return!isEmpty$2(e)||this.props.root||Configuration.option(`enableHardSequences`)&&this._handlersIncludeHardSequences(e,n(this.props))}},{key:`_handlersIncludeHardSequences`,value:function(e,t){return Object.keys(t).some(function(t){return!e[t]&&KeyCombinationSerializer.isValidKeySerialization(t)})}},{key:`_wrapFunction`,value:function(e,t){var n=this;return typeof this.props[e]==`function`?function(a){n.props[e](a),t(a)}:t}},{key:`_focusTreeIdsPush`,value:function(e){this._focusTreeIds||=[],this._focusTreeIds.push(e)}},{key:`_focusTreeIdsShift`,value:function(){this._focusTreeIds&&this._focusTreeIds.shift()}},{key:`_getFocusTreeId`,value:function(){if(this._focusTreeIds)return this._focusTreeIds[0]}},{key:`componentDidUpdate`,value:function(){var e=KeyEventManager.getInstance();if(e.reregisterKeyMap(this._id,this.props.keyMap),this._componentIsFocused()&&(this.props.allowChanges||!Configuration.option(`ignoreKeymapAndHandlerChangesByDefault`))){var t=this.props,n=t.keyMap,a=t.handlers;e.updateEnabledHotKeys(this._getFocusTreeId(),this._id,n,a,this._getComponentOptions())}}},{key:`_componentIsFocused`,value:function(){return!0===this._focused}},{key:`componentDidMount`,value:function(){var e=KeyEventManager.getInstance(),t=this.context.hotKeysParentId;e.registerComponentMount(this._id,t)}},{key:`_handleFocus`,value:function(){if(this.props.onFocus){var e;(e=this.props).onFocus.apply(e,arguments)}var t=KeyEventManager.getInstance().enableHotKeys(this._id,a(this.props),n(this.props),this._getComponentOptions());isUndefined(t)||this._focusTreeIdsPush(t),this._focused=!0}},{key:`componentWillUnmount`,value:function(){var e=KeyEventManager.getInstance();e.deregisterKeyMap(this._id),e.registerComponentUnmount(),this._handleBlur()}},{key:`_handleBlur`,value:function(){if(this.props.onBlur){var e;(e=this.props).onBlur.apply(e,arguments)}KeyEventManager.getInstance().disableHotKeys(this._getFocusTreeId(),this._id)||this._focusTreeIdsShift(),this._focused=!1}},{key:`_handleKeyDown`,value:function(e){KeyEventManager.getInstance().handleKeydown(e,this._getFocusTreeId(),this._id,this._getEventOptions())&&this._focusTreeIdsShift()}},{key:`_handleKeyPress`,value:function(e){KeyEventManager.getInstance().handleKeyPress(e,this._getFocusTreeId(),this._id,this._getEventOptions())&&this._focusTreeIdsShift()}},{key:`_handleKeyUp`,value:function(e){KeyEventManager.getInstance().handleKeyUp(e,this._getFocusTreeId(),this._id,this._getEventOptions())&&this._focusTreeIdsShift()}},{key:`_getComponentOptions`,value:function(){return{defaultKeyEvent:Configuration.option(`defaultKeyEvent`)}}},{key:`_getEventOptions`,value:function(){return{ignoreEventsCondition:Configuration.option(`ignoreEventsCondition`)}}}]),o}(import_react.PureComponent);return _defineProperty$3(s,`propTypes`,{keyMap:import_prop_types.default.object,handlers:import_prop_types.default.object,onFocus:import_prop_types.default.func,onBlur:import_prop_types.default.func,allowChanges:import_prop_types.default.bool,root:import_prop_types.default.bool}),backwardsCompatibleContext(s,{deprecatedAPI:{contextTypes:{hotKeysParentId:import_prop_types.default.number},childContextTypes:{hotKeysParentId:import_prop_types.default.number}},newAPI:{contextType:{hotKeysParentId:void 0}}})}function withHotKeysIgnoreOverride(e){var t,n,a=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{only:[],except:[]},o=2<arguments.length?arguments[2]:void 0;return n=t=function(t){function n(e){var t;return _classCallCheck$1(this,n),t=_possibleConstructorReturn(this,_getPrototypeOf(n).call(this,e)),t._handleKeyEvent=t._handleKeyEvent.bind(_assertThisInitialized(_assertThisInitialized(t))),t._reloadDictionaries=t._reloadDictionaries.bind(_assertThisInitialized(_assertThisInitialized(t))),t}return _inherits(n,t),_createClass$1(n,[{key:`render`,value:function(){var t=this.props;t.only,t.except;var n=_objectWithoutProperties$1(t,[`only`,`except`]),a={onKeyDown:this._handleKeyEvent,onKeyPress:this._handleKeyEvent,onKeyUp:this._handleKeyEvent,onFocus:this._reloadDictionaries};return import_react.createElement(e,_extends$1({hotKeys:a},n))}},{key:`_reloadDictionaries`,value:function(){var e=this.props,t=e.only,n=e.except;this._onlyDict=keyDictionary(t),this._exceptDict=keyDictionary(n)}},{key:`_shouldIgnoreEvent`,value:function(e){var t=e.key;return isEmpty$2(this._onlyDict)?!!isEmpty$2(this._exceptDict)||!hasKey(this._exceptDict,t):isEmpty$2(this._exceptDict)?hasKey(this._onlyDict,t):hasKey(this._onlyDict,t)&&!hasKey(this._exceptDict,t)}},{key:`_handleKeyEvent`,value:function(e){this._shouldIgnoreEvent(e)&&KeyEventManager.getInstance()[o](e)}}]),n}(import_react.PureComponent),_defineProperty$3(t,`propTypes`,{only:import_prop_types.default.oneOfType([import_prop_types.default.string,import_prop_types.default.arrayOf(import_prop_types.default.string)]),except:import_prop_types.default.oneOfType([import_prop_types.default.string,import_prop_types.default.arrayOf(import_prop_types.default.string)])}),_defineProperty$3(t,`defaultProps`,a),n}function keyDictionary(e){return arrayFrom(e).reduce(function(e,t){var n=standardizeKeyName(t);if(!isValidKey(n))throw new InvalidKeyNameError(t);return[resolveAltShiftedAlias,resolveUnaltShiftedAlias,resolveShiftedAlias,resolveUnshiftedAlias,resolveAltedAlias,resolveUnaltedAlias].forEach(function(t){e[t(n)]=!0}),e},{})}function withIgnoreKeys(e){return withHotKeysIgnoreOverride(e,1<arguments.length&&arguments[1]!==void 0?arguments[1]:{only:[],except:[]},`ignoreEvent`)}function withObserveKeys(e){return withHotKeysIgnoreOverride(e,1<arguments.length&&arguments[1]!==void 0?arguments[1]:{only:[],except:[]},`observeIgnoredEvents`)}function configure$1(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};Configuration.init(e)}function getApplicationKeyMap(){return KeyEventManager.getInstance().getApplicationKeyMap()}function recordKeyCombination(e){return KeyEventManager.getInstance().addKeyCombinationListener(e)}var import_prop_types,import_react,_defaultConfiguration,_configuration,Configuration,Logger,KeyEventType,ModifierFlagsDictionary,ShiftedKeysDictionary,UnshiftedKeysDictionary,KeyOSAndLayoutAliasesDictionary$1,MousetrapToReactKeyNamesDictionary,KeyShorthandDictionary,translateToKey,NonPrintableKeysDictionary,InvalidKeyNameError,KeySequenceParser,AltedKeysDictionary,UnaltedKeysDictionary,AltShiftedKeysDictionary,UnaltShiftedKeysDictionary,KeyCombinationSerializer,KeyEventSequenceIndex,KeyEventState,KeyEventStateArrayManager,KeyCombination,KeyHistory,Registry,ComponentTree,ComponentOptionsListIterator,ComponentOptionsList,KeysWithKeyUpHiddenByCmd,i,KeyCombinationMatcher,KeyHistoryMatcher,ActionResolver,SEQUENCE_ATTRIBUTES,KEYMAP_ATTRIBUTES,AbstractKeyEventStrategy,KeyEventCounter,normalizeKey,EventResponse,EventPropagator,FocusOnlyKeyEventStrategy,GlobalKeyEventStrategy,KeyEventManager,HotKeys,GlobalHotKeys$2,GlobalHotKeys$1$1,IgnoreKeys$1,ObserveKeys$1,init_react_hotkeys_production_min=__esmMin((()=>{for(import_prop_types=__toESM(require_prop_types()),import_react=__toESM(require_react()),_defaultConfiguration={logLevel:`warn`,defaultKeyEvent:`keydown`,defaultComponent:`div`,defaultTabIndex:`-1`,ignoreTags:[`input`,`select`,`textarea`],enableHardSequences:!1,ignoreKeymapAndHandlerChangesByDefault:!0,ignoreEventsCondition:function(e){var t=e.target;if(t&&t.tagName){var n=t.tagName.toLowerCase();return Configuration.option(`_ignoreTagsDict`)[n]||t.isContentEditable}return!1},ignoreRepeatedEventsWhenKeyHeldDown:!0,simulateMissingKeyPressEvents:!0,stopEventPropagationAfterHandling:!0,stopEventPropagationAfterIgnoring:!0,allowCombinationSubmatches:!1,customKeyCodes:{}},_configuration=_objectSpread$1({},_defaultConfiguration),_configuration._ignoreTagsDict=dictionaryFrom(_configuration.ignoreTags,!0),Configuration=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`init`,value:function(e){var t=this,n=e.ignoreTags,a=e.customKeyCodes;n&&(e._ignoreTagsDict=dictionaryFrom(e.ignoreTags)),a&&(e._customKeyNamesDict=dictionaryFrom(Object.values(e.customKeyCodes))),[`verbose`,`debug`,`info`].indexOf(e.logLevel)!==-1&&console.warn(`React HotKeys: You have requested log level '${e.logLevel}' but for performance reasons, logging below severity level 'warning' is disabled in production. Please use the development build for complete logs.`),Object.keys(e).forEach(function(n){t.set(n,e[n])})}},{key:`set`,value:function(e,t){_configuration[e]=t}},{key:`reset`,value:function(e){_configuration[e]=_defaultConfiguration[e]}},{key:`option`,value:function(e){return _configuration[e]}}]),e}(),Logger=function(){function e(){var t=this,n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:`warn`;if(_classCallCheck$1(this,e),_defineProperty$3(this,`verbose`,this.noop),_defineProperty$3(this,`debug`,this.noop),_defineProperty$3(this,`info`,this.noop),_defineProperty$3(this,`warn`,this.noop),_defineProperty$3(this,`error`,this.noop),this.logLevel=this.constructor.levels[n],this.logLevel>=this.constructor.levels.error)this.error=console.error;else return;if(this.logLevel>=this.constructor.levels.warn)this.warn=console.warn;else return;[`info`,`debug`,`verbose`].some(function(e){return!(t.logLevel>=t.constructor.levels[e])||(t[e]=console.log,!1)})}return _createClass$1(e,[{key:`noop`,value:function(){}}]),e}(),_defineProperty$3(Logger,`logIcons`,[`📕`,`📗`,`📘`,`📙`]),_defineProperty$3(Logger,`componentIcons`,[`🔺`,`⭐️`,`🔷`,`🔶`,`⬛️`]),_defineProperty$3(Logger,`eventIcons`,[`❤️`,`💚`,`💙`,`💛`,`💜`,`🧡`]),_defineProperty$3(Logger,`levels`,{none:0,error:1,warn:2,info:3,debug:4,verbose:5}),KeyEventType={keydown:0,keypress:1,keyup:2},ModifierFlagsDictionary={Shift:[`shiftKey`],Meta:[`metaKey`],Control:[`ctrlKey`],Alt:[`altKey`]},ShiftedKeysDictionary={"`":[`~`],1:[`!`],2:[`@`,`"`],3:[`#`,`£`],4:[`$`],5:[`%`],6:[`^`],7:[`&`],8:[`*`],9:[`(`],0:[`)`],"-":[`_`],"=":[`plus`],";":[`:`],"'":[`"`,`@`],",":[`<`],".":[`>`],"/":[`?`],"\\":[`|`],"[":[`{`],"]":[`}`],"#":[`~`]},UnshiftedKeysDictionary=invertArrayDictionary(ShiftedKeysDictionary),KeyOSAndLayoutAliasesDictionary$1=invertArrayDictionary({},{includeOriginal:!0}),MousetrapToReactKeyNamesDictionary={tab:`Tab`,capslock:`CapsLock`,shift:`Shift`,meta:`Meta`,alt:`Alt`,ctrl:`Control`,space:` `,spacebar:` `,escape:`Escape`,esc:`Escape`,left:`ArrowLeft`,right:`ArrowRight`,up:`ArrowUp`,down:`ArrowDown`,return:`Enter`,del:`Delete`,command:`Meta`,option:`Alt`,enter:`Enter`,backspace:`Backspace`,ins:`Insert`,pageup:`PageUp`,pagedown:`PageDown`,end:`End`,home:`Home`,contextmenu:`ContextMenu`,numlock:`Clear`},KeyShorthandDictionary={cmd:`Meta`},translateToKey={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},NonPrintableKeysDictionary=dictionaryFrom(Object.values(translateToKey),!0),InvalidKeyNameError=function(e){function t(){var e,n;_classCallCheck$1(this,t);var a=[...arguments];return n=_possibleConstructorReturn(this,(e=_getPrototypeOf(t)).call.apply(e,[this].concat(a))),_defineProperty$3(_assertThisInitialized(_assertThisInitialized(n)),`name`,`InvalidKeyNameError`),n}return _inherits(t,e),t}(_wrapNativeSuper(Error)),KeySequenceParser=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`parse`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=stripSuperfluousWhitespace(e).split(` `);try{var a=n.slice(0,n.length-1),o=n[n.length-1],s=a.map(function(e){var n=parseCombination(e,t);return normalizedCombinationId(Object.keys(n))}).join(` `),l=parseCombination(o,t),u={id:normalizedCombinationId(Object.keys(l)),keyDictionary:l,keyEventType:t.keyEventType,size:Object.keys(l).length};return{sequence:{prefix:s,size:a.length+1},combination:u}}catch{return{sequence:null,combination:null}}}}]),e}(),AltedKeysDictionary={"`":["`"],1:[`¡`],2:[`™`],3:[`£`],4:[`¢`],5:[`∞`],6:[`§`],7:[`¶`],8:[`•`],9:[`ª`],0:[`º`],"-":[`–`],"=":[`≠`],a:[`å`],b:[`∫`],c:[`ç`],d:[`∂`],e:[`´`],f:[`ƒ`],g:[`©`],h:[`˙`],i:[`ˆ`],j:[`∆`],k:[`˚`],l:[`¬`],m:[`µ`],n:[`˜`],o:[`ø`],p:[`π`],q:[`œ`],r:[`®`],s:[`ß`],t:[`†`],u:[`¨`],v:[`√`],w:[`∑`],x:[`≈`],y:[`¥`],z:[`Ω`],"[":[`“`],"]":[`‘`],"\\":[`«`],"'":[`æ`],";":[`…`],",":[`≤`],".":[`≥`],"/":[`÷`]},UnaltedKeysDictionary=invertArrayDictionary(AltedKeysDictionary),AltShiftedKeysDictionary={"`":["`"],1:[`⁄`],2:[`€`],3:[`‹`],4:[`›`],5:[`fi`],6:[`fl`],7:[`‡`],8:[`°`],9:[`·`],0:[`‚`],"-":[`—`],"=":[`±`],a:[`Å`],b:[`ı`],c:[`Ç`],d:[`Î`],e:[`´`],f:[`Ï`],g:[`˝`],h:[`Ó`],i:[`ˆ`],j:[`Ô`],k:[``],l:[`Ò`],m:[`Â`],n:[`˜`],o:[`Ø`],p:[`π`],q:[`Œ`],r:[`‰`],s:[`Í`],t:[`Î`],u:[`¨`],v:[`◊`],w:[`„`],x:[`˛`],y:[`Á`],z:[`¸`],"[":[`”`],"]":[`’`],"\\":[`»`],"'":[`Æ`],";":[`Ú`],",":[`¯`],".":[`˘`]},UnaltShiftedKeysDictionary=invertArrayDictionary(AltShiftedKeysDictionary),KeyCombinationSerializer=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`serialize`,value:function(e){var t=e.Shift,n=e.Alt,a={};return Object.keys(e).sort().forEach(function(e){var o=[];if(t)if(n){var s=resolveUnaltShiftedAlias(e),l=resolveAltShiftedAlias(e);o=[].concat(_toConsumableArray$1(o),[e],_toConsumableArray$1(s),_toConsumableArray$1(l))}else{var u=resolveUnshiftedAlias(e),d=resolveShiftedAlias(e);o=[].concat(_toConsumableArray$1(o),[e],_toConsumableArray$1(u),_toConsumableArray$1(d))}else if(n){var f=resolveUnaltedAlias(e),m=resolveAltedAlias(e);o=[].concat(_toConsumableArray$1(o),[e],_toConsumableArray$1(f),_toConsumableArray$1(m))}else{o.push(e);var h=KeyOSAndLayoutAliasesDictionary$1[e];h&&(o=[].concat(_toConsumableArray$1(o),_toConsumableArray$1(h)))}var v=Object.keys(a);0<v.length?v.forEach(function(e){o.forEach(function(t){a[e+`+${t}`]=_objectSpread$1({},a[e],_defineProperty$3({},t,!0))}),delete a[e]}):o.forEach(function(e){a[e]=_defineProperty$3({},e,!0)})}),Object.values(a).map(function(e){return Object.keys(e).sort().join(`+`)})}},{key:`isValidKeySerialization`,value:function(e){return 0<e.length&&!!KeySequenceParser.parse(e,{ensureValidKeys:!0}).combination}}]),e}(),KeyEventSequenceIndex={previous:0,current:1},KeyEventState={unseen:0,seen:1,simulated:2},KeyEventStateArrayManager=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`newRecord`,value:function(e,t){var n=[KeyEventState.unseen,KeyEventState.unseen,KeyEventState.unseen];if(!isUndefined(e))for(var a=0;a<=e;a++)n[a]=t;return n}},{key:`setBit`,value:function(e,t,n){return e[t]=n,e}},{key:`clone`,value:function(e){for(var t=this.newRecord(),n=0;n<e.length;n++)t[n]=e[n];return t}}]),e}(),KeyCombination=function(){function e(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};_classCallCheck$1(this,e),this._keys=t,this._includesKeyUp=!1,this._update()}return _createClass$1(e,[{key:`getIds`,value:function(){return this._ids}},{key:`getKeyAliases`,value:function(){return this._keyAliases}},{key:`getNormalizedKeyName`,value:function(e){return this._keys[e]?e:this._keyAliases[e]||e}},{key:`getNumberOfKeys`,value:function(){return size(this._keys)}},{key:`any`,value:function(){return 0<Object.keys(this._getKeyStates()).length}},{key:`isEnding`,value:function(){return this._includesKeyUp}},{key:`hasEnded`,value:function(){return isEmpty$2(this.keysStillPressedDict())}},{key:`addKey`,value:function(e,t){this._setKeyState(e,[KeyEventStateArrayManager.newRecord(),KeyEventStateArrayManager.newRecord(KeyEventType.keydown,t)])}},{key:`setKeyState`,value:function(e,t,n){var a=this._getKeyState(e);if(this.isKeyIncluded(e)){var o=KeyEventStateArrayManager.clone(a[1]),s=KeyEventStateArrayManager.clone(o);KeyEventStateArrayManager.setBit(s,t,n),this._setKeyState(e,[o,s])}else this.addKey(e,n);t===KeyEventType.keyup&&(this._includesKeyUp=!0)}},{key:`forEachKey`,value:function(e){return Object.keys(this._keys).forEach(e)}},{key:`some`,value:function(e){return Object.keys(this._keys).some(e)}},{key:`getKeyDictionary`,value:function(){return dictionaryFrom(Object.keys(this._getKeyStates()),!0)}},{key:`keysStillPressedDict`,value:function(){var e=this;return Object.keys(this._keys).reduce(function(t,n){return e.isKeyStillPressed(n)&&(t[n]=e._getKeyState(n)),t},{})}},{key:`isKeyIncluded`,value:function(e){return!!this._getKeyState(e)}},{key:`isKeyStillPressed`,value:function(e){return this.isEventTriggered(e,KeyEventType.keypress)&&!this.isKeyReleased(e)}},{key:`isKeyReleased`,value:function(e){return this.isEventTriggered(e,KeyEventType.keyup)}},{key:`isEventTriggered`,value:function(e,t){return this._getKeyStateType(e,KeyEventSequenceIndex.current,t)}},{key:`wasEventPreviouslyTriggered`,value:function(e,t){return this._getKeyStateType(e,KeyEventSequenceIndex.previous,t)}},{key:`isKeyPressSimulated`,value:function(e){return this._isKeyEventSimulated(e,KeyEventType.keypress)}},{key:`isKeyUpSimulated`,value:function(e){return this._isKeyEventSimulated(e,KeyEventType.keyup)}},{key:`describe`,value:function(){return this.getIds()[0]}},{key:`toJSON`,value:function(){return{keys:this._getKeyStates(),ids:this.getIds(),keyAliases:this.getKeyAliases()}}},{key:`_getKeyStateType`,value:function(e,t,n){var a=this._getKeyState(e);return a&&a[t][n]}},{key:`_update`,value:function(){this._ids=KeyCombinationSerializer.serialize(this._keys),this._keyAliases=buildKeyAliases(this._keys)}},{key:`_isKeyEventSimulated`,value:function(e,t){return this.isEventTriggered(e,t)===KeyEventState.simulated}},{key:`_getKeyStates`,value:function(){return this._keys}},{key:`_getKeyState`,value:function(e){var t=this._keys[e];if(t)return t;var n=this._keyAliases[e];if(n)return this._keys[n]}},{key:`_setKeyState`,value:function(e,t){var n=this.getNormalizedKeyName(e);this._keys[n]=t,this._update()}}]),e}(),KeyHistory=function(){function e(t){var n=t.maxLength,a=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;_classCallCheck$1(this,e),this._records=[],this._maxLength=n,a?this._push(a):this._push(new KeyCombination)}return _createClass$1(e,[{key:`getMostRecentCombinations`,value:function(e){return this._records.slice(-e,-1)}},{key:`any`,value:function(){return this._records.some(function(e){return e.any()})}},{key:`getLength`,value:function(){return this._records.length}},{key:`getCurrentCombination`,value:function(){return this._records[this.getLength()-1]}},{key:`addKeyToCurrentCombination`,value:function(e,t,n){this._ensureInitialKeyCombination(),this.getCurrentCombination().setKeyState(e,t,n)}},{key:`setMaxLength`,value:function(e){this._maxLength=e,this._trimHistory()}},{key:`startNewKeyCombination`,value:function(e,t){this._ensureInitialKeyCombination();var n=new KeyCombination(this.getCurrentCombination().keysStillPressedDict());n.addKey(e,t),this._push(n)}},{key:`toJSON`,value:function(){return this._records.map(function(e){return e.toJSON()})}},{key:`_ensureInitialKeyCombination`,value:function(){this.getLength()===0&&this._push(new KeyCombination)}},{key:`_push`,value:function(e){this._trimHistory(),this._records.push(e)}},{key:`_trimHistory`,value:function(){for(;this.getLength()>this._maxLength;)this._shift()}},{key:`_shift`,value:function(){this._records.shift()}}]),e}(),Registry=function(){function e(){_classCallCheck$1(this,e),this._registry={}}return _createClass$1(e,[{key:`get`,value:function(e){return this._registry[e]}},{key:`set`,value:function(e,t){this._registry[e]=t}},{key:`remove`,value:function(e){delete this._registry[e]}},{key:`toJSON`,value:function(){return this._registry}}]),e}(),ComponentTree=function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`add`,value:function(e,n){_get(_getPrototypeOf(t.prototype),`set`,this).call(this,e,{childIds:[],parentId:null,keyMap:n})}},{key:`update`,value:function(e,n){var a=_get(_getPrototypeOf(t.prototype),`get`,this).call(this,e);_get(_getPrototypeOf(t.prototype),`set`,this).call(this,e,_objectSpread$1({},a,{keyMap:n}))}},{key:`setParent`,value:function(e,t){this.get(e).parentId=t,this._addChildId(t,e)}},{key:`remove`,value:function(e){var n=this._getParentId(e);this._removeChildId(n,e),_get(_getPrototypeOf(t.prototype),`remove`,this).call(this,e)}},{key:`_getParentId`,value:function(e){var t=this.get(e);return t&&t.parentId}},{key:`_addChildId`,value:function(e,t){this.get(e).childIds.push(t)}},{key:`_removeChildId`,value:function(e,t){var n=this.get(e);n&&(n.childIds=without(n.childIds,t))}}]),t}(Registry),ComponentOptionsListIterator=function(){function e(t){_classCallCheck$1(this,e),this._list=t,this._position=-1}return _createClass$1(e,[{key:`getPosition`,value:function(){return this._position}},{key:`getComponent`,value:function(){return this._list.getAtPosition(this.getPosition())}},{key:`next`,value:function(){return this.getPosition()+1<this._list.getLength()?(this._position++,this.getComponent()):null}}]),e}(),ComponentOptionsList=function(){function e(){_classCallCheck$1(this,e),this._list=[],this._idToIndex={},this._longestSequence=1,this._longestSequenceComponentId=null,this._keyMapEventRecord=KeyEventStateArrayManager.newRecord()}return _createClass$1(e,[{key:`getNewIterator`,value:function(){return new ComponentOptionsListIterator(this)}},{key:`add`,value:function(e,t,n,a){if(this.containsId(e))return this.update(e,t,n,a);var o=this._build(e,t,n,a);this._list.push(o);var s=this._getLastIndex();return this._idToIndex[e]=s}},{key:`containsId`,value:function(e){return!!this.get(e)}},{key:`get`,value:function(e){return this.getAtPosition(this.getIndexById(e))}},{key:`getIndexById`,value:function(e){return this._idToIndex[e]}},{key:`update`,value:function(e,t,n,a){var o=this._isUpdatingComponentWithLongestSequence(e),s=this.getLongestSequence(),l=this._build(e,t,n,a);o&&l.sequenceLength!==s&&(l.sequenceLength>s?this._longestSequence=l.sequenceLength:this._recalculateLongestSequence()),this._list[this.getIndexById(e)]=l}},{key:`remove`,value:function(e){var t=this._isUpdatingComponentWithLongestSequence(e);this.removeAtPosition(this.getIndexById(e)),t&&this._recalculateLongestSequence()}},{key:`any`,value:function(){return this.getLength()!==0}},{key:`isRoot`,value:function(e){return this.getIndexById(e)>=this.getLength()-1}},{key:`getLongestSequence`,value:function(){return this._longestSequence}},{key:`anyActionsForEventType`,value:function(e){return!!this._keyMapEventRecord[e]}},{key:`getLength`,value:function(){return this._list.length}},{key:`getAtPosition`,value:function(e){return this._list[e]}},{key:`removeAtPosition`,value:function(e){this._list=removeAtIndex(this._list,e);for(var t=e;t<this.getLength();)this._idToIndex[this.getAtPosition(t).componentId]=t,t++}},{key:`toJSON`,value:function(){return this._list}},{key:`_getLastIndex`,value:function(){return this.getLength()-1}},{key:`_build`,value:function(e,t,n,a){var o=this._applyHardSequences(t,n),s=o.keyMap,l=o.handlers;return{actions:this._buildActionDictionary(_objectSpread$1({},t,s),a,e),handlers:l,componentId:e,options:a}}},{key:`_isUpdatingComponentWithLongestSequence`,value:function(e){return e===this._getLongestSequenceComponentId()}},{key:`_getLongestSequenceComponentId`,value:function(){return this._longestSequenceComponentId}},{key:`_recalculateLongestSequence`,value:function(){for(var e=this.getNewIterator();e.next();){var t=e.getComponent(),n=t.longestSequence,a=t.componentId;n>this.getLongestSequence()&&(this._longestSequenceComponentId=a,this._longestSequence=n)}}},{key:`_applyHardSequences`,value:function(e,t){return Configuration.option(`enableHardSequences`)?Object.keys(t).reduce(function(n,a){return!e[a]&&KeyCombinationSerializer.isValidKeySerialization(a)&&(n.keyMap[a]=a),n.handlers[a]=t[a],n},{keyMap:{},handlers:{}}):{keyMap:e,handlers:t}}},{key:`_buildActionDictionary`,value:function(e,t,n){var a=this;return Object.keys(e).reduce(function(o,s){var l=e[s];return function(){return isObject(l)&&hasKey(l,`sequences`)?arrayFrom(l.sequences):arrayFrom(l)}().forEach(function(e){var l=normalizeActionOptions(e,t),u=l.keySequence,d=l.keyEventType;a._addActionOptions(o,n,s,u,d)}),o},{})}},{key:`_addActionOptions`,value:function(e,t,n,a,o){var s=KeySequenceParser.parse(a,{keyEventType:o}),l=s.sequence,u=s.combination;l.size>this.getLongestSequence()&&(this._longestSequence=l.size,this._longestSequenceComponentId=t),this._keyMapEventRecord[o]=KeyEventState.seen,e[n]||(e[n]=[]),e[n].push(_objectSpread$1({prefix:l.prefix,actionName:n,sequenceLength:l.size},u))}}]),e}(),KeysWithKeyUpHiddenByCmd={Enter:!0,Backspace:!0,ArrowRight:!0,ArrowLeft:!0,ArrowUp:!0,ArrowDown:!0,CapsLock:!0},i=1;13>i;i++)KeysWithKeyUpHiddenByCmd[`F${i}`]=!0;KeyCombinationMatcher=function(){function e(){_classCallCheck$1(this,e),this._actionConfigs={},this._order=null}return _createClass$1(e,[{key:`addMatch`,value:function(e,t){if(this._includesMatcherForCombination(e.id)){var n=e.keyEventType,a=e.actionName,o=e.id;this._addHandlerToActionConfig(o,{keyEventType:n,actionName:a,handler:t})}else this._addNewActionConfig(e,t)}},{key:`findMatch`,value:function(e,t,n){this._order||this._setOrder();var a=!0,o=!1,s=void 0;try{for(var l,u=this._order[Symbol.iterator]();!(a=(l=u.next()).done);a=!0){var d=l.value,f=this._actionConfigs[d];if(this._matchesActionConfig(e,t,n,f))return f}}catch(e){o=!0,s=e}finally{try{a||u.return==null||u.return()}finally{if(o)throw s}}return null}},{key:`toJSON`,value:function(){return{actionConfigs:this._actionConfigs,order:this._order}}},{key:`_matchesActionConfig`,value:function(e,t,n,a){if(!canBeMatched(e,a)||!a.events[n])return!1;var o=!1;return Object.keys(a.keyDictionary).every(function(a){return!!e.isEventTriggered(a,n)&&(t&&t===e.getNormalizedKeyName(a)&&(o=!e.wasEventPreviouslyTriggered(a,n)),!0)})&&o}},{key:`_setOrder`,value:function(){var e=Object.values(this._actionConfigs).reduce(function(e,t){var n=t.id,a=t.size;return e[a]||(e[a]=[]),e[a].push(n),e},{});this._order=Object.keys(e).sort(function(e,t){return t-e}).reduce(function(t,n){return t.concat(e[n])},[])}},{key:`_addNewActionConfig`,value:function(e,t){var n=e.prefix,a=e.sequenceLength,o=e.id,s=e.keyDictionary,l=e.size,u=e.keyEventType,d=e.actionName;this._setCombinationMatcher(o,{prefix:n,sequenceLength:a,id:o,keyDictionary:s,size:l,events:{}}),this._addHandlerToActionConfig(o,{keyEventType:u,actionName:d,handler:t})}},{key:`_addHandlerToActionConfig`,value:function(e,t){var n=t.keyEventType,a=t.actionName,o=t.handler,s=this._getCombinationMatcher(e);this._setCombinationMatcher(e,_objectSpread$1({},s,{events:_objectSpread$1({},s.events,_defineProperty$3({},n,{actionName:a,handler:o}))}))}},{key:`_setCombinationMatcher`,value:function(e,t){this._actionConfigs[e]=t}},{key:`_getCombinationMatcher`,value:function(e){return this._actionConfigs[e]}},{key:`_includesMatcherForCombination`,value:function(e){return!!this._getCombinationMatcher(e)}}]),e}(),KeyHistoryMatcher=function(){function e(){_classCallCheck$1(this,e),this._combinationMatchers={},this._eventRecord=KeyEventStateArrayManager.newRecord()}return _createClass$1(e,[{key:`addMatch`,value:function(e,t){this._getOrCreateCombinationMatcher(e.prefix).addMatch(e,t),KeyEventStateArrayManager.setBit(this._eventRecord,e.keyEventType,KeyEventState.seen),(!this._longestSequence||this._longestSequence<e.sequenceLength)&&(this._longestSequence=e.sequenceLength)}},{key:`findMatch`,value:function(e,t,n){var a=this._findCombinationMatcher(e);return a?a.findMatch(e.getCurrentCombination(),e.getCurrentCombination().getNormalizedKeyName(t),n):null}},{key:`hasMatchesForEventType`,value:function(e){return!!this._eventRecord[e]}},{key:`getLongestSequence`,value:function(){return this._longestSequence}},{key:`toJSON`,value:function(){var e=this;return Object.keys(this._combinationMatchers).reduce(function(t,n){return t[n]=e._combinationMatchers[n].toJSON(),t},{})}},{key:`_getOrCreateCombinationMatcher`,value:function(e){return this._combinationMatchers[e]||(this._combinationMatchers[e]=new KeyCombinationMatcher),this._combinationMatchers[e]}},{key:`_findCombinationMatcher`,value:function(e){var t=e.getMostRecentCombinations(this.getLongestSequence());if(t.length===0)return this._combinationMatchers[``];for(var n=t.map(function(e){return e.getIds()}),a=n.map(function(e){return e.length}),o=Array(n.length).fill(0),s=!1;!s;){var l=o.map(function(e,t){return n[t][e]}).join(` `);if(this._combinationMatchers[l])return this._combinationMatchers[l];for(var u=0,d=!0;d&&u<o.length;){var f=(indexFromEnd(o,u)+1)%(indexFromEnd(a,u)||1);o[o.length-(u+1)]=f,d=f==0,d&&u++}s=u===o.length}}}]),e}(),ActionResolver=function(){function e(t){_classCallCheck$1(this,e),this._keyMapMatchers=[],this._unmatchedHandlerStatus=[],this._handlersDictionary={},this._keySequencesDictionary={};for(var n=t.getNewIterator();n.next();){var a=n.getComponent().handlers;this._unmatchedHandlerStatus.push([Object.keys(a).length,{}]),this._keyMapMatchers.push(new KeyHistoryMatcher)}this._componentList=t,this._componentListIterator=t.getNewIterator()}return _createClass$1(e,[{key:`getKeyHistoryMatcher`,value:function(e){if(this._componentHasUnmatchedHandlers(e))for(;this._componentListIterator.next();)this._addHandlersFromComponent(),this._addActionsFromComponent();return this._getKeyHistoryMatcher(e)}},{key:`componentHasActionsBoundToEventType`,value:function(e,t){return this.getKeyHistoryMatcher(e).hasMatchesForEventType(t)}},{key:`findMatchingKeySequenceInComponent`,value:function(e,t,n,a){return this.componentHasActionsBoundToEventType(e,a)?this.getKeyHistoryMatcher(e).findMatch(t,n,a):null}},{key:`_getKeyHistoryMatcher`,value:function(e){return this._keyMapMatchers[e]}},{key:`_addActionsFromComponent`,value:function(){var e=this,t=this._componentListIterator.getComponent().actions;Object.keys(t).forEach(function(n){var a=e._getHandlers(n);if(a){var o=a[0],s=e._componentList.getAtPosition(o).handlers[n],l=e._getKeyHistoryMatcher(o);t[n].forEach(function(t){var n=[t.prefix,t.id].join(` `);e._isClosestHandlerFound(n,t)||(l.addMatch(t,s),e._addKeySequence(n,[o,t.keyEventType]))}),a.forEach(function(t){var a=e._getUnmatchedHandlerStatus(t);a[1][n]||(a[1][n]=!0,a[0]--)})}})}},{key:`_getHandlers`,value:function(e){return this._handlersDictionary[e]}},{key:`_addHandlersFromComponent`,value:function(){var e=this,t=this._componentListIterator.getComponent().handlers;Object.keys(t).forEach(function(t){e._addHandler(t)})}},{key:`_addHandler`,value:function(e){this._handlersDictionary[e]||(this._handlersDictionary[e]=[]),this._handlersDictionary[e].push(this._componentListIterator.getPosition())}},{key:`_addKeySequence`,value:function(e,t){this._keySequencesDictionary[e]||(this._keySequencesDictionary[e]=[]),this._keySequencesDictionary[e].push(t)}},{key:`_componentHasUnmatchedHandlers`,value:function(e){return 0<this._getUnmatchedHandlerStatus(e)[0]}},{key:`_getUnmatchedHandlerStatus`,value:function(e){return this._unmatchedHandlerStatus[e]}},{key:`_isClosestHandlerFound`,value:function(e,t){return this._keySequencesDictionary[e]&&this._keySequencesDictionary[e].some(function(e){return e[1]===t.keyEventType})}}]),e}(),SEQUENCE_ATTRIBUTES=[`sequence`,`action`],KEYMAP_ATTRIBUTES=[`name`,`description`,`group`],AbstractKeyEventStrategy=function(){function e(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},n=1<arguments.length?arguments[1]:void 0;_classCallCheck$1(this,e),this.logger=t.logger||new Logger(`warn`),this.componentId=-1,this.keyEventManager=n,this._componentTree=new ComponentTree,this.rootComponentId=null,this._reset(),this.resetKeyHistory()}return _createClass$1(e,[{key:`_reset`,value:function(){this.componentList=new ComponentOptionsList,this._initHandlerResolutionState()}},{key:`_newKeyHistory`,value:function(){return new KeyHistory({maxLength:this.componentList.getLongestSequence()})}},{key:`getKeyHistory`,value:function(){return this._keyHistory||=this._newKeyHistory(),this._keyHistory}},{key:`_initHandlerResolutionState`,value:function(){this._actionResolver=null}},{key:`resetKeyHistory`,value:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};this.keypressEventsToSimulate=[],this.keyupEventsToSimulate=[],this._keyHistory=this.getKeyHistory().any()&&!e.force?new KeyHistory({maxLength:this.componentList.getLongestSequence()},new KeyCombination(this.getCurrentCombination().keysStillPressedDict())):this._newKeyHistory()}},{key:`getApplicationKeyMap`,value:function(){return this.rootComponentId===null?{}:this._buildApplicationKeyMap([this.rootComponentId],{})}},{key:`_buildApplicationKeyMap`,value:function(e,t){var n=this;return e.forEach(function(e){var a=n._componentTree.get(e),o=a.childIds,s=a.keyMap;s&&Object.keys(s).forEach(function(e){var a=s[e];t[e]={},isObject(a)?hasKey(a,`sequences`)?(copyAttributes(a,t[e],KEYMAP_ATTRIBUTES),t[e].sequences=n._createSequenceFromConfig(a.sequences)):(copyAttributes(a,t[e],KEYMAP_ATTRIBUTES),t[e].sequences=[copyAttributes(a,{},SEQUENCE_ATTRIBUTES)]):t[e].sequences=n._createSequenceFromConfig(a)}),n._buildApplicationKeyMap(o,t)}),t}},{key:`_createSequenceFromConfig`,value:function(e){return arrayFrom(e).map(function(e){return isObject(e)?copyAttributes(e,{},SEQUENCE_ATTRIBUTES):{sequence:e}})}},{key:`registerKeyMap`,value:function(e){return this.componentId+=1,this._componentTree.add(this.componentId,e),this.componentId}},{key:`reregisterKeyMap`,value:function(e,t){this._componentTree.update(e,t)}},{key:`registerComponentMount`,value:function(e,t){isUndefined(t)?this.rootComponentId=e:this._componentTree.setParent(e,t)}},{key:`deregisterKeyMap`,value:function(e){this._componentTree.remove(e),e===this.rootComponentId&&(this.rootComponentId=null)}},{key:`_addComponent`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0;this.componentList.add(e,t,n,a),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence())}},{key:`_allKeysAreReleased`,value:function(){return this.getCurrentCombination().hasEnded()}},{key:`getCurrentCombination`,value:function(){return this.getKeyHistory().getCurrentCombination()}},{key:`_shouldSimulate`,value:function(e,t){var n=hasKeyPressEvent(t),a=this.getCurrentCombination();return e===KeyEventType.keypress?!n||n&&a.isKeyStillPressed(`Meta`):e===KeyEventType.keyup&&keyupIsHiddenByCmd(t)&&a.isKeyReleased(`Meta`)}},{key:`_cloneAndMergeEvent`,value:function(e,t){return _objectSpread$1({},Object.keys(ModifierFlagsDictionary).reduce(function(t,n){return t[n]=e[n],t},{}),t)}},{key:`_callClosestMatchingHandler`,value:function(e,t,n,a,o){for(this._actionResolver||=new ActionResolver(this.componentList);o<=a;){this._actionResolver.getKeyHistoryMatcher(o);var s=this._actionResolver.findMatchingKeySequenceInComponent(o,this.getKeyHistory(),t,n);if(this.getCurrentCombination(),s){var l=s.events[n];return Configuration.option(`allowCombinationSubmatches`)&&KeyCombinationSerializer.serialize(s.keyDictionary),l.handler(e),this._stopEventPropagationAfterHandlingIfEnabled(e,o),!0}this._actionResolver.componentHasActionsBoundToEventType(o,n),o++}}},{key:`_stopEventPropagationAfterHandlingIfEnabled`,value:function(e,t){return!!Configuration.option(`stopEventPropagationAfterHandling`)&&(this._stopEventPropagation(e,t),!0)}},{key:`_stopEventPropagation`,value:function(){throw Error(`_stopEventPropagation must be overridden by a subclass`)}},{key:`_checkForModifierFlagDiscrepancies`,value:function(e,t,n){var a=this;Object.keys(ModifierFlagsDictionary).forEach(function(o){if(t!==o||n!==KeyEventType.keyup){var s=a.getCurrentCombination(),l=s.isKeyStillPressed(o);ModifierFlagsDictionary[o].forEach(function(t){!1===e[t]&&l&&s.setKeyState(o,KeyEventType.keyup,stateFromEvent(e))})}})}},{key:`_logPrefix`,value:function(){}}]),e}(),KeyEventCounter=function(){function e(){_classCallCheck$1(this,e)}return _createClass$1(e,null,[{key:`getId`,value:function(){return isUndefined(this._id)&&(this._id=0),this._id}},{key:`incrementId`,value:function(){this._id=this.getId()+1}}]),e}(),normalizeKey={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},EventResponse={unseen:0,ignored:1,seen:2,recorded:3,handled:4},EventPropagator=function(){function e(t,n){var a=n.logger,o=n.logPrefix;_classCallCheck$1(this,e),this._componentList=t,this._previousPropagation=null,this.logger=a,this._logPrefix=o,this._reset()}return _createClass$1(e,[{key:`_reset`,value:function(){this._previousPosition=-1,this._position=-1,this._actionHandled=!1,this._ignoreEvent=!1,this._observeIgnoredEvents=!1,this._stopping=!1,this._componentId=null,this._key=null,this._type=null}},{key:`isFirstPropagationStep`,value:function(){var e=this.getPreviousPosition();return e===-1||e>=this._position}},{key:`isForKey`,value:function(e){return this._key===e}},{key:`isForEventType`,value:function(e){return this._type===e}},{key:`startNewPropagationStep`,value:function(e,t,n,a){return this._position=this._componentList.getIndexById(e),this._componentId=e,this.isFirstPropagationStep()&&(KeyEventCounter.incrementId(),this._key=t.key,this._type=a),!(t.repeat&&Configuration.option(`ignoreRepeatedEventsWhenKeyHeldDown`))||(this.ignoreEvent(t),!1)}},{key:`finishPropagationStep`,value:function(){this.isStopped()||this._componentList.isRoot(this._componentId)?(this._previousPropagation=this._clone(),this._reset()):this._previousPosition=this._position}},{key:`getPreviousPropagation`,value:function(){return this._previousPropagation||=this._clone({copyState:!1}),this._previousPropagation}},{key:`getPreviousPosition`,value:function(){return this._previousPosition}},{key:`observeIgnoredEvents`,value:function(){this._observeIgnoredEvents=!0}},{key:`ignoreEvent`,value:function(e){return this.setIgnoreEvent(!0),!!(this.isIgnoringEvent()&&Configuration.option(`stopEventPropagationAfterIgnoring`))&&(this.stop(e),this.finishPropagationStep(),!0)}},{key:`setIgnoreEvent`,value:function(e){this._ignoreEvent=e}},{key:`isIgnoringEvent`,value:function(){return!this._observeIgnoredEvents&&this._ignoreEvent}},{key:`isStopped`,value:function(){return this._stopping}},{key:`stop`,value:function(e){return!this.isStopped()&&(this._stopping=!0,e.simulated||e.stopPropagation(),!0)}},{key:`isPendingPropagation`,value:function(){var e=this.getPreviousPosition();return e!==-1&&e+1<this._position}},{key:`isHandled`,value:function(){return this._actionHandled}},{key:`setHandled`,value:function(){this._actionHandled=!0}},{key:`_clone`,value:function(){var t=(0<arguments.length&&arguments[0]!==void 0?arguments[0]:{}).copyState,n=new e(this._componentList,{logger:this.logger,logPrefix:this._logPrefix});return(t===void 0||t)&&Object.assign(n,this),n}}]),e}(),FocusOnlyKeyEventStrategy=function(e){function t(){var e,n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},a=1<arguments.length?arguments[1]:void 0;return _classCallCheck$1(this,t),e=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,n,a)),e.focusTreeId=0,e}return _inherits(t,e),_createClass$1(t,[{key:`_reset`,value:function(){_get(_getPrototypeOf(t.prototype),`_reset`,this).call(this),this.keypressEventsToSimulate=[],this.focusTreeId+=1,this.eventPropagator=new EventPropagator(this.componentList,{logger:this.logger,logPrefix:this._logPrefix.bind(this)})}},{key:`enableHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0;if(this.resetOnNextFocus&&=(this._reset(),!1),!this.componentList.containsId(e))return this._addComponent(e,t,n,a),this.focusTreeId}},{key:`updateEnabledHotKeys`,value:function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},o=4<arguments.length?arguments[4]:void 0;e===this.focusTreeId&&this.componentList.containsId(t)&&(this.componentList.update(t,n,a,o),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence()),this._initHandlerResolutionState())}},{key:`disableHotKeys`,value:function(e,t){return this.resetOnNextFocus||=!0,this.eventPropagator.isPendingPropagation()}},{key:`handleKeydown`,value:function(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},o=getKeyName(e);if(t!==this.focusTreeId)return this.eventPropagator.ignoreEvent(e),!0;if(this.eventPropagator.startNewPropagationStep(n,e,o,KeyEventType.keydown)){if(this._howToHandleKeyEvent(e,t,n,o,a,KeyEventType.keydown)===EventResponse.handled){var s=stateFromEvent(e),l=this.getCurrentCombination();l.isKeyIncluded(o)||l.isEnding()?this._startAndLogNewKeyCombination(o,t,n,s):this._addToAndLogCurrentKeyCombination(o,KeyEventType.keydown,t,n,s),this._callHandlerIfActionNotHandled(e,o,KeyEventType.keydown,n,t)}return this._simulateKeyPressForNonPrintableKeys(e,o,t,n,a),this.eventPropagator.finishPropagationStep(),!1}}},{key:`_howToHandleKeyEvent`,value:function(e,t,n,a,o,s){if(this.eventPropagator.isFirstPropagationStep()){if(o.ignoreEventsCondition(e)&&this.eventPropagator.ignoreEvent(e))return this._eventIsToBeIgnored(e,n,a,s);this._checkForModifierFlagDiscrepancies(e,a,s)}else if(this.eventPropagator.isIgnoringEvent())return this._eventIsToBeIgnored(e,n,a,s);return EventResponse.handled}},{key:`_eventIsToBeIgnored`,value:function(e,t,n,a){return EventResponse.ignored}},{key:`handleKeyPress`,value:function(e,t,n,a){var o=getKeyName(e),s=this.getCurrentCombination();if(s.isKeyPressSimulated(o))return this.eventPropagator.ignoreEvent(e),!0;if(this.eventPropagator.startNewPropagationStep(n,e,o,KeyEventType.keypress)){var l=t!==this.focusTreeId,u=this._howToHandleKeyEvent(e,t,n,o,a,KeyEventType.keypress);return this.eventPropagator.isFirstPropagationStep(n)&&s.isKeyIncluded(o)&&this._addToAndLogCurrentKeyCombination(o,KeyEventType.keypress,t,n,stateFromEvent(e)),u===EventResponse.handled&&this._callHandlerIfActionNotHandled(e,o,KeyEventType.keypress,n,t),this.eventPropagator.finishPropagationStep(),l}}},{key:`handleKeyUp`,value:function(e,t,n,a){var o=getKeyName(e),s=this.getCurrentCombination();if(s.isKeyUpSimulated(o))return this.eventPropagator.ignoreEvent(e),!0;if(this.eventPropagator.startNewPropagationStep(n,e,o,KeyEventType.keyup)){var l=t!==this.focusTreeId,u=this._howToHandleKeyEvent(e,t,n,o,a,KeyEventType.keyup);return this.eventPropagator.isFirstPropagationStep(n)&&s.isKeyIncluded(o)&&this._addToAndLogCurrentKeyCombination(o,KeyEventType.keyup,t,n,stateFromEvent(e)),u===EventResponse.handled&&this._callHandlerIfActionNotHandled(e,o,KeyEventType.keyup,n,t),this._simulateKeyUpEventsHiddenByCmd(e,o,t,n,a),this.eventPropagator.finishPropagationStep(),l}}},{key:`closeHangingKeyCombination`,value:function(e,t){var n=this.getCurrentCombination();n.isKeyIncluded(e)&&!n.isEventTriggered(e,t)&&n.setKeyState(e,t,KeyEventState.simulated)}},{key:`_simulateKeyPressForNonPrintableKeys`,value:function(e,t,n,a,o){this._handleEventSimulation(`keypressEventsToSimulate`,`simulatePendingKeyPressEvents`,this._shouldSimulate(KeyEventType.keypress,t),{event:e,key:t,focusTreeId:n,componentId:a,options:o})}},{key:`_simulateKeyUpEventsHiddenByCmd`,value:function(e,t,n,a,o){var s=this;isCmdKey(t)&&this.getCurrentCombination().forEachKey(function(t){isCmdKey(t)||s._handleEventSimulation(`keyupEventsToSimulate`,`simulatePendingKeyUpEvents`,s._shouldSimulate(KeyEventType.keyup,t),{event:e,key:t,focusTreeId:n,componentId:a,options:o})})}},{key:`_stopEventPropagation`,value:function(e,t){this.eventPropagator.stop(e)}},{key:`getEventPropagator`,value:function(){return this.eventPropagator}},{key:`_startAndLogNewKeyCombination`,value:function(e,t,n,a){this.getKeyHistory().startNewKeyCombination(e,a)}},{key:`_addToAndLogCurrentKeyCombination`,value:function(e,t,n,a,o){this.getKeyHistory().addKeyToCurrentCombination(e,t,o)}},{key:`_handleEventSimulation`,value:function(e,t,n,a){var o=a.event,s=a.key,l=a.focusTreeId,u=a.componentId,d=a.options;if(n&&Configuration.option(`simulateMissingKeyPressEvents`)){var f=this._cloneAndMergeEvent(o,{key:s,simulated:!0});this[e].push({event:f,focusTreeId:l,componentId:u,options:d})}(this.componentList.isRoot(u)||this.eventPropagator.isStopped())&&!this.keyEventManager.isGlobalListenersBound()&&this[t]()}},{key:`simulatePendingKeyPressEvents`,value:function(){this._simulatePendingKeyEvents(`keypressEventsToSimulate`,`handleKeyPress`)}},{key:`simulatePendingKeyUpEvents`,value:function(){this._simulatePendingKeyEvents(`keyupEventsToSimulate`,`handleKeyUp`)}},{key:`_simulatePendingKeyEvents`,value:function(e,t){var n=this;0<this[e].length&&KeyEventCounter.incrementId(),this[e].forEach(function(e){var a=e.event,o=e.focusTreeId,s=e.componentId,l=e.options;n[t](a,o,s,l)}),this[e]=[]}},{key:`_callHandlerIfActionNotHandled`,value:function(e,t,n,a,o){if(this.getCurrentCombination().describe(),this.componentList.anyActionsForEventType(n)&&!this.eventPropagator.isHandled()){var s=this.eventPropagator.getPreviousPosition(),l=this.componentList.getIndexById(a);this._callClosestMatchingHandler(e,t,n,l,s===-1?0:s)&&this.eventPropagator.setHandled()}}},{key:`_logPrefix`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=Logger.logIcons,a=Logger.eventIcons,o=Logger.componentIcons,s=`HotKeys (`;if(!1!==t.focusTreeId){var l=isUndefined(t.focusTreeId)?this.focusTreeId:t.focusTreeId;s+=`F${l}${n[l%n.length]}-`}if(!1!==t.eventId){var u=isUndefined(t.eventId)?KeyEventCounter.getId():t.eventId;s+=`E${u}${a[u%a.length]}-`}s+=`C${e}${o[e%o.length]}`;var d=this.componentList.getIndexById(e);return isUndefined(d)||(s+=`-P${d}${o[d%o.length]}:`),`${s})`}}]),t}(AbstractKeyEventStrategy),GlobalKeyEventStrategy=function(e){function t(){var e,n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},a=1<arguments.length?arguments[1]:void 0;return _classCallCheck$1(this,t),e=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,n,a)),e.listenersBound=!1,e.eventOptions={ignoreEventsCondition:Configuration.option(`ignoreEventsCondition`)},e.listeners={},e}return _inherits(t,e),_createClass$1(t,[{key:`enableHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;this.eventOptions=o,this._addComponent(e,t,n,a),this._updateDocumentHandlers(),this._initHandlerResolutionState()}},{key:`updateEnabledHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;this.eventOptions=o,this.componentList.update(e,t,n,a),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence()),this._updateDocumentHandlers(),this._initHandlerResolutionState()}},{key:`disableHotKeys`,value:function(e){this.componentList.remove(e),this.getKeyHistory().setMaxLength(this.componentList.getLongestSequence()),this._updateDocumentHandlers(),this._initHandlerResolutionState()}},{key:`_updateDocumentHandlers`,value:function(){var e=this,t=this._listenersShouldBeBound();!this.listenersBound&&t?(Object.values(KeyEventType).forEach(function(t){var n=describeKeyEventType(t);document[`on${n}`]=function(t){e.keyEventManager[`handleGlobal${normalizeEventName(n)}`](t)}}),this.listenersBound=!0):this.listenersBound&&!t&&(Object.values(KeyEventType).forEach(function(e){var t=describeKeyEventType(e);delete document[`on${t}`]}),this.listenersBound=!1)}},{key:`_listenersShouldBeBound`,value:function(){return this.componentList.any()||this.listeners.keyCombination}},{key:`handleKeydown`,value:function(e){var t=getKeyName(e);if(e.repeat&&Configuration.option(`ignoreRepeatedEventsWhenKeyHeldDown`))return!0;this._checkForModifierFlagDiscrepancies(e,t,KeyEventType.keydown);var n=this._howReactAppRespondedTo(e,t,KeyEventType.keydown);if(!(n===EventResponse.unseen&&this.eventOptions.ignoreEventsCondition(e))){if(n!==EventResponse.ignored){var a=stateFromEvent(e),o=this.getCurrentCombination();o.isKeyIncluded(t)||o.isEnding()?this._startAndLogNewKeyCombination(t,a):this._addToAndLogCurrentKeyCombination(t,KeyEventType.keydown,a)}contains([EventResponse.ignored,EventResponse.handled],n)||this._callHandlerIfExists(e,t,KeyEventType.keydown),this._simulateKeyPressForNonPrintableKeys(e,t)}}},{key:`_howReactAppRespondedTo`,value:function(e,t,n){var a=this.keyEventManager.reactAppHistoryWithEvent(t,n);return a===EventResponse.handled||a===EventResponse.ignored||a===EventResponse.seen||KeyEventCounter.incrementId(),a}},{key:`handleKeyPress`,value:function(e){var t=getKeyName(e);if(e.repeat&&Configuration.option(`ignoreRepeatedEventsWhenKeyHeldDown`))return!0;var n=this.getCurrentCombination();if(n.isKeyPressSimulated(t))return!0;var a=this._howReactAppRespondedTo(e,t,KeyEventType.keypress);n.isKeyIncluded(t)&&this._addToAndLogCurrentKeyCombination(t,KeyEventType.keypress,stateFromEvent(e)),a===EventResponse.unseen&&(this.keyEventManager.closeHangingKeyCombination(t,KeyEventType.keypress),this.eventOptions.ignoreEventsCondition(e))||!contains([EventResponse.ignored,EventResponse.handled],a)&&this._callHandlerIfExists(e,t,KeyEventType.keypress)}},{key:`handleKeyUp`,value:function(e){var t=getKeyName(e),n=this.getCurrentCombination();if(n.isKeyUpSimulated(t))return!0;var a=this._howReactAppRespondedTo(e,t,KeyEventType.keyup);n.isKeyIncluded(t)&&this._addToAndLogCurrentKeyCombination(t,KeyEventType.keyup,stateFromEvent(e)),a===EventResponse.unseen?(this.keyEventManager.closeHangingKeyCombination(t,KeyEventType.keyup),this.eventOptions.ignoreEventsCondition(e)||!contains([EventResponse.ignored,EventResponse.handled],a)&&this._callHandlerIfExists(e,t,KeyEventType.keyup)):!contains([EventResponse.ignored,EventResponse.handled],a)&&this._callHandlerIfExists(e,t,KeyEventType.keyup),this._simulateKeyUpEventsHiddenByCmd(e,t),this.listeners.keyCombination&&this._allKeysAreReleased()&&this.listeners.keyCombination({keys:n.getKeyDictionary(),id:n.describe()})}},{key:`_simulateKeyPressForNonPrintableKeys`,value:function(e,t){this.keyEventManager.simulatePendingKeyPressEvents(),this._handleEventSimulation(`handleKeyPress`,this._shouldSimulate(KeyEventType.keypress,t),{event:e,key:t})}},{key:`_simulateKeyUpEventsHiddenByCmd`,value:function(e,t){var n=this;isCmdKey(t)&&(this.keyEventManager.simulatePendingKeyUpEvents(),this.getCurrentCombination().forEachKey(function(t){isCmdKey(t)||n._handleEventSimulation(`handleKeyUp`,n._shouldSimulate(KeyEventType.keyup,t),{event:e,key:t})}))}},{key:`_startAndLogNewKeyCombination`,value:function(e,t){this.getKeyHistory().startNewKeyCombination(e,t)}},{key:`_addToAndLogCurrentKeyCombination`,value:function(e,t,n){this.getKeyHistory().addKeyToCurrentCombination(e,t,n)}},{key:`_handleEventSimulation`,value:function(e,t,n){var a=n.event,o=n.key;if(t&&Configuration.option(`simulateMissingKeyPressEvents`)){var s=this._cloneAndMergeEvent(a,{key:o,simulated:!0});this[e](s)}}},{key:`_callHandlerIfExists`,value:function(e,t,n){this.getCurrentCombination().describe(),this.componentList.anyActionsForEventType(n)&&this._callClosestMatchingHandler(e,t,n)}},{key:`_callClosestMatchingHandler`,value:function(e,n,a){for(var o,s=this.componentList.getNewIterator();s.next();)if(o=_get(_getPrototypeOf(t.prototype),`_callClosestMatchingHandler`,this).call(this,e,n,a,s.getPosition(),0),o)return}},{key:`_stopEventPropagation`,value:function(e,t){e.simulated||e.stopPropagation()}},{key:`addKeyCombinationListener`,value:function(e){var t=this,n=function(){delete t.listeners.keyCombination};return this.listeners.keyCombination=function(t){e(t),n()},this._updateDocumentHandlers(),n}},{key:`_logPrefix`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=Logger.eventIcons,a=Logger.componentIcons,o=`HotKeys (GLOBAL`;if(!1!==t.eventId){var s=isUndefined(t.eventId)?KeyEventCounter.getId():t.eventId;o=`${o}-E${s}${n[s%n.length]}`}return isUndefined(e)?`${o}):`:`${o}-C${e}${a[e%a.length]}):`}}]),t}(AbstractKeyEventStrategy),KeyEventManager=function(){function e(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};_classCallCheck$1(this,e),this.logger=t.logger||new Logger(Configuration.option(`logLevel`)),this._focusOnlyEventStrategy=new FocusOnlyKeyEventStrategy({configuration:t,logger:this.logger},this),this._globalEventStrategy=new GlobalKeyEventStrategy({configuration:t,logger:this.logger},this),this.mountedComponentsCount=0}return _createClass$1(e,null,[{key:`getInstance`,value:function(){var t=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return this.instance||=new e(t),this.instance}},{key:`clear`,value:function(){delete this.instance}}]),_createClass$1(e,[{key:`getApplicationKeyMap`,value:function(){return Object.assign(this._globalEventStrategy.getApplicationKeyMap(),this._focusOnlyEventStrategy.getApplicationKeyMap())}},{key:`registerKeyMap`,value:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return this._focusOnlyEventStrategy.registerKeyMap(e)}},{key:`reregisterKeyMap`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};this._focusOnlyEventStrategy.reregisterKeyMap(e,t)}},{key:`deregisterKeyMap`,value:function(e){this._focusOnlyEventStrategy.deregisterKeyMap(e)}},{key:`registerComponentMount`,value:function(e,t){return this._incrementComponentCount(),this._focusOnlyEventStrategy.registerComponentMount(e,t)}},{key:`registerComponentUnmount`,value:function(){this._decrementComponentCount()}},{key:`_incrementComponentCount`,value:function(){var e=this,t=this.mountedComponentsCount;this.mountedComponentsCount+=1,t===0&&this.mountedComponentsCount===1&&(window.onblur=function(){return e._clearKeyHistory()})}},{key:`_decrementComponentCount`,value:function(){var e=this.mountedComponentsCount;--this.mountedComponentsCount,e===1&&this.mountedComponentsCount===0&&delete window.onblur}},{key:`_clearKeyHistory`,value:function(){this._focusOnlyEventStrategy.resetKeyHistory({force:!0}),this._globalEventStrategy.resetKeyHistory({force:!0})}},{key:`registerGlobalKeyMap`,value:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return this._globalEventStrategy.registerKeyMap(e)}},{key:`registerGlobalComponentUnmount`,value:function(){this._decrementComponentCount()}},{key:`registerGlobalComponentMount`,value:function(e,t){return this._incrementComponentCount(),this._globalEventStrategy.registerComponentMount(e,t)}},{key:`reregisterGlobalKeyMap`,value:function(e,t){this._globalEventStrategy.reregisterKeyMap(e,t)}},{key:`deregisterGlobalKeyMap`,value:function(e){this._globalEventStrategy.deregisterKeyMap(e)}},{key:`addKeyCombinationListener`,value:function(e){return this._globalEventStrategy.addKeyCombinationListener(e)}},{key:`enableHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0;return this._focusOnlyEventStrategy.enableHotKeys(e,t,n,a)}},{key:`updateEnabledHotKeys`,value:function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},o=4<arguments.length?arguments[4]:void 0;return this._focusOnlyEventStrategy.updateEnabledHotKeys(e,t,n,a,o)}},{key:`disableHotKeys`,value:function(e,t){return this._focusOnlyEventStrategy.disableHotKeys(e,t)}},{key:`handleKeydown`,value:function(e,t,n,a){if(isFromFocusOnlyComponent(t))return this._focusOnlyEventStrategy.handleKeydown(e,t,n,a)}},{key:`handleKeyPress`,value:function(e,t,n,a){if(isFromFocusOnlyComponent(t))return this._focusOnlyEventStrategy.handleKeyPress(e,t,n,a)}},{key:`handleKeyUp`,value:function(e,t,n,a){if(isFromFocusOnlyComponent(t))return this._focusOnlyEventStrategy.handleKeyUp(e,t,n,a)}},{key:`enableGlobalHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;return this._globalEventStrategy.enableHotKeys(e,t,n,a,o)}},{key:`updateEnabledGlobalHotKeys`,value:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;return this._globalEventStrategy.updateEnabledHotKeys(e,t,n,a,o)}},{key:`disableGlobalHotKeys`,value:function(e){return this._globalEventStrategy.disableHotKeys(e)}},{key:`handleGlobalKeyDown`,value:function(e){return this._globalEventStrategy.handleKeydown(e)}},{key:`handleGlobalKeyPress`,value:function(e){return this._globalEventStrategy.handleKeyPress(e)}},{key:`handleGlobalKeyUp`,value:function(e){return this._globalEventStrategy.handleKeyUp(e)}},{key:`ignoreEvent`,value:function(e){this._focusOnlyEventStrategy.getEventPropagator().ignoreEvent(e)}},{key:`observeIgnoredEvents`,value:function(e){this._focusOnlyEventStrategy.getEventPropagator().observeIgnoredEvents(e)}},{key:`closeHangingKeyCombination`,value:function(e,t){this._focusOnlyEventStrategy.closeHangingKeyCombination(e,t)}},{key:`reactAppHistoryWithEvent`,value:function(e,t){var n=this._focusOnlyEventStrategy.eventPropagator.getPreviousPropagation();return n.isForKey(e)&&n.isForEventType(t)?n.isHandled()?EventResponse.handled:n.isIgnoringEvent()?EventResponse.ignored:EventResponse.seen:EventResponse.unseen}},{key:`simulatePendingKeyPressEvents`,value:function(){this._focusOnlyEventStrategy.simulatePendingKeyPressEvents()}},{key:`simulatePendingKeyUpEvents`,value:function(){this._focusOnlyEventStrategy.simulatePendingKeyUpEvents()}},{key:`isGlobalListenersBound`,value:function(){return this._globalEventStrategy.listenersBound}}]),e}(),HotKeys=withHotKeys(function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){var e=this.props,t=e.hotKeys,n=e.innerRef,a=e.component,o=_objectWithoutProperties$1(e,[`hotKeys`,`innerRef`,`component`]),s=a||Configuration.option(`defaultComponent`);return import_react.createElement(s,_objectSpread$1({},t,{ref:n},o))}}]),t}(import_react.Component)),HotKeys.propTypes={innerRef:import_prop_types.default.oneOfType([import_prop_types.default.object,import_prop_types.default.func])},GlobalHotKeys$2=function(e){function t(e){var n;return _classCallCheck$1(this,t),n=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e)),n._id=KeyEventManager.getInstance().registerGlobalKeyMap(e.keyMap),n._childContext={globalHotKeysParentId:n._id},n}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){return this.props.children||null}},{key:`componentDidUpdate`,value:function(){var e=KeyEventManager.getInstance();if(e.reregisterGlobalKeyMap(this._id,this.props.keyMap),this.props.allowChanges||!Configuration.option(`ignoreKeymapAndHandlerChangesByDefault`)){var t=this.props,n=t.keyMap,a=t.handlers;e.updateEnabledGlobalHotKeys(this._id,n,a,this._getComponentOptions(),this._getEventOptions())}}},{key:`componentDidMount`,value:function(){var e=this.props,t=e.keyMap,n=e.handlers,a=this.context.globalHotKeysParentId,o=KeyEventManager.getInstance();o.registerGlobalComponentMount(this._id,a),o.enableGlobalHotKeys(this._id,t,n,this._getComponentOptions(),this._getEventOptions())}},{key:`componentWillUnmount`,value:function(){var e=KeyEventManager.getInstance();e.deregisterGlobalKeyMap(this._id),e.disableGlobalHotKeys(this._id),e.registerGlobalComponentUnmount()}},{key:`_getComponentOptions`,value:function(){return{defaultKeyEvent:Configuration.option(`defaultKeyEvent`)}}},{key:`_getEventOptions`,value:function(){return{ignoreEventsCondition:Configuration.option(`ignoreEventsCondition`)}}}]),t}(import_react.Component),_defineProperty$3(GlobalHotKeys$2,`propTypes`,{keyMap:import_prop_types.default.object,handlers:import_prop_types.default.object,allowChanges:import_prop_types.default.bool}),GlobalHotKeys$1$1=backwardsCompatibleContext(GlobalHotKeys$2,{deprecatedAPI:{contextTypes:{globalHotKeysParentId:import_prop_types.default.number},childContextTypes:{globalHotKeysParentId:import_prop_types.default.number}},newAPI:{contextType:{globalHotKeysParentId:void 0}}}),IgnoreKeys$1=withHotKeysIgnoreOverride(function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){var e=this.props,t=e.hotKeys,n=_objectWithoutProperties$1(e,[`hotKeys`]),a=n.component||Configuration.option(`defaultComponent`);return import_react.createElement(a,_objectSpread$1({},t,n))}}]),t}(import_react.Component),{},`ignoreEvent`),ObserveKeys$1=withHotKeysIgnoreOverride(function(e){function t(){return _classCallCheck$1(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,e),_createClass$1(t,[{key:`render`,value:function(){var e=this.props,t=e.hotKeys,n=_objectWithoutProperties$1(e,[`hotKeys`]),a=n.component||Configuration.option(`defaultComponent`);return import_react.createElement(a,_objectSpread$1({},t,n))}}]),t}(import_react.Component),{},`observeIgnoredEvents`)})),require_index_es=__commonJSMin(((e,t)=>{t.exports=(init_react_hotkeys_production_min(),__toCommonJS(react_hotkeys_production_min_exports))})),import_index_es=require_index_es(),cropType={ASPARAGUS:`ASPARAGUS`,BLUEBERRY:`BLUEBERRY`,CARROT:`CARROT`,CORN:`CORN`,GARLIC:`GARLIC`,GRAPE:`GRAPE`,JALAPENO:`JALAPENO`,OLIVE:`OLIVE`,ONION:`ONION`,PEA:`PEA`,POTATO:`POTATO`,PUMPKIN:`PUMPKIN`,SOYBEAN:`SOYBEAN`,SPINACH:`SPINACH`,SUNFLOWER:`SUNFLOWER`,STRAWBERRY:`STRAWBERRY`,SUGARCANE:`SUGARCANE`,SWEET_POTATO:`SWEET_POTATO`,TOMATO:`TOMATO`,WATERMELON:`WATERMELON`,WHEAT:`WHEAT`,WEED:`WEED`},recipeType={FERMENTATION:`FERMENTATION`,FORGE:`FORGE`,KITCHEN:`KITCHEN`,RECYCLING:`RECYCLING`,WINE:`WINE`,WOOD_CHIPPER:`WOOD_CHIPPER`},fieldMode={CHOP:`CHOP`,CLEANUP:`CLEANUP`,FERTILIZE:`FERTILIZE`,HARVEST:`HARVEST`,HARVEST_FRUIT:`HARVEST_FRUIT`,MINE:`MINE`,OBSERVE:`OBSERVE`,PLANT:`PLANT`,SET_SPRINKLER:`SET_SPRINKLER`,SET_SCARECROW:`SET_SCARECROW`,SET_LIGHTNING_ROD:`SET_LIGHTNING_ROD`,WATER:`WATER`},stageFocusType={NONE:`NONE`,HOME:`HOME`,FIELD:`FIELD`,FOREST:`FOREST`,SHOP:`SHOP`,COW_PEN:`COW_PEN`,INVENTORY:`INVENTORY`,WORKSHOP:`WORKSHOP`,CELLAR:`CELLAR`},cropLifeStage={SEED:`SEED`,GROWING:`GROWING`,GROWN:`GROWN`},treeLifeStage={...cropLifeStage,DEAD:`DEAD`},itemType={COW_FEED:`COW_FEED`,CRAFTED_ITEM:`CRAFTED_ITEM`,CROP:`CROP`,FERTILIZER:`FERTILIZER`,FUEL:`FUEL`,HUGGING_MACHINE:`HUGGING_MACHINE`,LIGHTNING_ROD:`LIGHTNING_ROD`,MILK:`MILK`,MULCH:`MULCH`,ORE:`ORE`,SCARECROW:`SCARECROW`,SPRINKLER:`SPRINKLER`,STONE:`STONE`,TOOL_UPGRADE:`TOOL_UPGRADE`,TREE:`TREE`,WEED:`WEED`,WOOD:`WOOD`},treeType={APPLE:`APPLE`,BANANA:`BANANA`},fertilizerType={NONE:`NONE`,STANDARD:`STANDARD`,RAINBOW:`RAINBOW`},genders={FEMALE:`FEMALE`,MALE:`MALE`},cowColors={BLUE:`BLUE`,BROWN:`BROWN`,GREEN:`GREEN`,ORANGE:`ORANGE`,PURPLE:`PURPLE`,RAINBOW:`RAINBOW`,WHITE:`WHITE`,YELLOW:`YELLOW`},{RAINBOW:RAINBOW$2,...standardCowColors}=cowColors,dialogView={NONE:`NONE`,ACCOUNTING:`ACCOUNTING`,ACHIEVEMENTS:`ACHIEVEMENTS`,FARMERS_LOG:`FARMERS_LOG`,KEYBINDINGS:`KEYBINDINGS`,ONLINE_PEERS:`ONLINE_PEERS`,PRICE_EVENTS:`PRICE_EVENTS`,SETTINGS:`SETTINGS`,STATS:`STATS`},toolType={AXE:`AXE`,PICKER_POLE:`PICKER_POLE`,SCYTHE:`SCYTHE`,SHOVEL:`SHOVEL`,HOE:`HOE`,WATERING_CAN:`WATERING_CAN`},toolLevel={UNAVAILABLE:`UNAVAILABLE`,DEFAULT:`DEFAULT`,BRONZE:`BRONZE`,IRON:`IRON`,SILVER:`SILVER`,GOLD:`GOLD`},cowTradeRejectionReason={REQUESTED_COW_UNAVAILABLE:`REQUESTED_COW_UNAVAILABLE`},cropFamily={GRAPE:`GRAPE`},grapeVariety={CHARDONNAY:`CHARDONNAY`,SAUVIGNON_BLANC:`SAUVIGNON_BLANC`,CABERNET_SAUVIGNON:`CABERNET_SAUVIGNON`,TEMPRANILLO:`TEMPRANILLO`,NEBBIOLO:`NEBBIOLO`},season={SPRING:`SPRING`,SUMMER:`SUMMER`,FALL:`FALL`,WINTER:`WINTER`},{freeze:freeze$10}=Object,BREAKPOINTS={XS:0,SM:600,MD:960,LG:1280,XL:1920},LOAN_GARNISHMENT_RATE=.05,LOAN_INTEREST_RATE=.02,FERTILIZER_BONUS=.5,SEASON_LENGTH_DAYS=15,SEASON_HIGH_DEMAND_BONUS=.2,SEASON_LOW_DEMAND_PENALTY=.2,ONE_YEAR_LENGTH_DAYS=60,PURCHASEABLE_FIELD_SIZES=freeze$10(new Map([[1,{columns:8,rows:12,price:1e3}],[2,{columns:10,rows:16,price:5e3}],[3,{columns:12,rows:18,price:2e4}]])),PURCHASABLE_FOREST_SIZES=freeze$10(new Map([[1,{columns:4,rows:2,price:1e5}],[2,{columns:4,rows:3,price:2e5}],[3,{columns:4,rows:4,price:3e5}]])),LARGEST_PURCHASABLE_FIELD_SIZE=PURCHASEABLE_FIELD_SIZES.get(PURCHASEABLE_FIELD_SIZES.size),PURCHASEABLE_COMBINES=freeze$10(new Map([[1,{type:`Basic`,price:25e4}]])),PURCHASEABLE_COMPOSTERS=freeze$10(new Map([[1,{type:`Basic`,price:1e3}]])),PURCHASEABLE_SMELTERS=freeze$10(new Map([[1,{type:`Basic`,price:25e4}]])),PURCHASEABLE_WOOD_CHIPPERS=freeze$10(new Map([[1,{type:`Basic`,price:5e4}]])),PURCHASEABLE_COW_PENS=freeze$10(new Map([[1,{cows:10,price:1500}],[2,{cows:20,price:1e4}],[3,{cows:30,price:5e4}]])),PURCHASEABLE_CELLARS=freeze$10(new Map([[1,{space:10,price:25e4}],[2,{space:20,price:75e4}],[3,{space:30,price:2e6}]])),CROW_CHANCE=.4,PRECIPITATION_CHANCE=.1,STORM_CHANCE=.5,SCARECROW_ITEM_ID=`scarecrow`,SPRINKLER_ITEM_ID=`sprinkler`,COW_STARTING_WEIGHT_BASE=1800,MALE_COW_WEIGHT_MULTIPLIER=1.1,COW_HUG_BENEFIT=.05,COW_WEIGHT_MULTIPLIER_FEED_BENEFIT=.1,COW_WEIGHT_MULTIPLIER_MINIMUM=.5,COW_WEIGHT_MULTIPLIER_MAXIMUM=1.5,COW_FEED_ITEM_ID=`cow-feed`,HUGGING_MACHINE_ITEM_ID=`hugging-machine`,COW_MINIMUM_HAPPINESS_TO_BREED=.8,NOTIFICATION_DURATION=6e3,PRICE_EVENT_CHANCE=.2,STAGE_TITLE_MAP={[stageFocusType.HOME]:`Home`,[stageFocusType.FIELD]:`Field`,[stageFocusType.FOREST]:`Forest`,[stageFocusType.SHOP]:`Shop`,[stageFocusType.COW_PEN]:`Cows`,[stageFocusType.WORKSHOP]:`Workshop`,[stageFocusType.CELLAR]:`Cellar`},RECIPE_INGREDIENT_VALUE_MULTIPLIER=1.25,I_AM_RICH_BONUSES=[.05,.1,.25],PERSISTED_STATE_KEYS=`allowCustomPeerCowNames.cellarInventory.completedAchievements.cowBreedingPen.cowColorsPurchased.cowForSale.cowInventory.cowsSold.cowsTraded.cropsHarvested.dayCount.experience.farmName.field.forest.hasProducedRainbowFertilizer.historicalDailyLosses.historicalDailyRevenue.historicalValueAdjustments.hoveredPlotRangeSize.playerId.inventory.inventoryLimit.isCombineEnabled.itemsSold.cellarItemsSold.learnedRecipes.loanBalance.loansTakenOut.money.mulchApplied.newDayNotifications.notificationLog.priceCrashes.priceSurges.profitabilityStreak.purchasedCombine.purchasedComposter.purchasedCowPen.purchasedCellar.purchasedField.purchasedForest.purchasedSmelter.purchasedWoodChipper.recipesMade.record7dayProfitAverage.recordProfitabilityStreak.recordSingleDayProfit.revenue.showHomeScreen.showNotifications.todaysLosses.todaysPurchases.todaysRevenue.todaysStartingInventory.toolLevels.treeFruitsHarvested.treesChopped.useAlternateEndDayButtonPosition.valueAdjustments.version`.split(`.`),PEER_METADATA_STATE_KEYS=[`cowsSold`,`cropsHarvested`,`dayCount`,`experience`,`playerId`,`money`,`pendingPeerMessages`,`version`],DEFAULT_ROOM=`global`,LEFT=`left`,RIGHT=`right`,TOOLBELT_FIELD_MODES=new Set([fieldMode.CLEANUP,fieldMode.HARVEST,fieldMode.WATER,fieldMode.MINE]),RESOURCE_SPAWN_CHANCE=.3,ORE_SPAWN_CHANCE=.25,COAL_SPAWN_CHANCE=.15,STONE_SPAWN_CHANCE=.4,SALT_ROCK_SPAWN_CHANCE=.3,BRONZE_SPAWN_CHANCE=.4,GOLD_SPAWN_CHANCE=.07,IRON_SPAWN_CHANCE=.33,SILVER_SPAWN_CHANCE=.2,HOE_LEVEL_TO_SEED_RECLAIM_RATE={[toolLevel.DEFAULT]:0,[toolLevel.BRONZE]:.25,[toolLevel.IRON]:.5,[toolLevel.SILVER]:.75,[toolLevel.GOLD]:1},AXE_WOOD_YIELD_RANGE={[toolLevel.DEFAULT]:[1,2],[toolLevel.BRONZE]:[2,4],[toolLevel.IRON]:[4,6],[toolLevel.SILVER]:[6,8],[toolLevel.GOLD]:[8,10]},PICKER_POLE_LEVEL_TO_FRUIT_YIELD={[toolLevel.DEFAULT]:1,[toolLevel.BRONZE]:2,[toolLevel.IRON]:3,[toolLevel.SILVER]:4,[toolLevel.GOLD]:5},TREE_LIFESPAN_VARIANCE_MAX=.05,TREE_DEATH_CHANCE_BASE=.05,TREE_DEATH_CHANCE_INCREMENT_PER_DAY=.02,TREE_DEATH_CHANCE_MAX=.85,COW_COLORS_HEX_MAP={[cowColors.BLUE]:`#8ff0f9`,[cowColors.BROWN]:`#b45f28`,[cowColors.GREEN]:`#65f295`,[cowColors.ORANGE]:`#ff7031`,[cowColors.PURPLE]:`#d884f2`,[cowColors.WHITE]:`#ffffff`,[cowColors.YELLOW]:`#fff931`},COW_TRADE_TIMEOUT=1e4,WEEDS_SPAWN_CHANCE=.15,KEG_INTEREST_RATE=.02,KEG_SPOILAGE_RATE_MULTIPLIER=.001,WINE_INTEREST_RATE=.015,EXPERIENCE_VALUES={CELLAR_ACQUIRED:10,CELLAR_EXPANDED:5,COMPOSTER_ACQUIRED:10,COW_BRED:1,COW_PEN_ACQUIRED:10,COW_PEN_EXPANDED:5,COW_TRADED:1,FERMENTATION_RECIPE_MADE:1,FIELD_EXPANDED:5,FOREST_EXPANDED:10,FORGE_RECIPE_MADE:3,ITEM_SOLD:1,KEG_SOLD:2,KITCHEN_RECIPE_MADE:2,LOAN_PAID_OFF:25,NEW_YEAR:5,RAINBOW_COW_BRED:2,RECYCLING_RECIPE_MADE:1,SMELTER_ACQUIRED:10,WOOD_CHIPPER_ACQUIRED:10,WOOD_CHIPPER_RECIPE_MADE:1},STANDARD_VIEW_LIST=[stageFocusType.SHOP,stageFocusType.FIELD],Z_INDEX={END_DAY_BUTTON:1100},HEARTBEAT_INTERVAL_PERIOD=10*1e3,blue_stripe_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAv0lEQVRoQ+2aOw6AIBBEofAiHtqzeBrvYGNjsUaDBsFqMWw2eZZWDJ/HzGicVpFxCNWz7CF4eB/nTcTLYL/GeQk4p9+riEeAVxEvAR5FVAK8iYhQKAOwBQigkPVlB4WsqQWFchcIhRRIxgtZbJscHHihe9tarQSJrAzTvVcCCvWe8fLMQSEo1FiqkchIZOkQaWkGhaAQFEr1unW7oKUZvZD1ytEL0Qs1fg0lkWk9zF9ZGi+EF8IL4YVs/2pxT6EDTzqfZhoHJYMAAAAASUVORK5CYIIA`,light_blue_stripe_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAiklEQVRoge3UsQnAMAwFUUd4Du8/Q8bJEK4CTpEuAYOrs+BUPjW/uuPsY7RafnfdpWTwaPV9fi+Lx46jVjx2HLXiMXtm8Jg9M3jsOGrFrRDtVoh2K0S7FaLdCtFuhWi3QrRbIdqtEO1WiHYrRLsVot0K0W6FaLdCtFsh2q0Q7VaIditEuxWiPX2FHsE1Al0X/e79AAAAAElFTkSuQmCC`,colors={itemBackground:`#f7b459`,heart:`#ff4040`,error:`#ce0000`,success:`#2e7d32`,cardBackground:`#ffe3a1`,cardBackgroundNested:`#ffd46e`,cow:{blue:`#8ff0f9`,brown:`#b45f28`,green:`#65f295`,orange:`#ff7031`,purple:`#d884f2`,white:`#ffffff`,yellow:`#fff931`}},breakpoints={smallPhone:320,mediumPhone:400,largePhone:450,sm:600,md:960,lg:1280,xl:1920},layout={cardMaxWidth:550,sidebarWidth:`22em`,narrowSidebarWidth:320,fieldSpaceForRightSideControls:`4.5em`},fillSx={bottom:0,left:0,position:`absolute`,right:0,top:0},squareImgSx={backgroundRepeat:`no-repeat`,backgroundSize:`cover`,display:`block`,width:`100%`},cardStyleSx=e=>({background:colors.cardBackground,border:`solid 2px #b68000`,transition:e.transitions.create(`background`,{duration:e.transitions.duration.enteringScreen,easing:e.transitions.easing.easeOut})}),cardStyleSelectedSx={background:lighten$6(colors.cardBackground,.4)},centerTabsSx={margin:`0 auto`,maxWidth:600,"& .MuiTabs-flexContainer":{justifyContent:`center`},"& > .MuiTabs-root":{marginTop:`4em`},'& [role="tabpanel"]':{background:`rgba(255, 255, 255, 0.5)`,borderRadius:`0 0 0.5em 0.5em`,padding:`0.5em 0.5em 0.5em`,"& .card-list > li:last-child":{marginBottom:0}}},spriteShadowSx={filter:`drop-shadow(2px 2px 2px rgba(100, 100, 100, 0.4))`},quickSelectSx=(e,t)=>({...cardStyleSx(e),bottom:`7.5em`,left:`50%`,maxWidth:`calc(100% - 2em)`,position:`fixed`,transform:`translateX(-50%)`,"@media (orientation: landscape)":{bottom:`auto`,[`@media (max-height: ${breakpoints.largePhone}px)`]:{top:`5em`,maxWidth:`calc(100% - 12em)`,left:`calc(50% - (${layout.fieldSpaceForRightSideControls} / 2))`},[`@media (max-width: ${breakpoints.md}px)`]:{display:t?`none`:void 0}},[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{left:`auto`,maxHeight:`calc(100vh - 20em)`,minWidth:`4em`,overflow:`auto`,right:`0.75em`,top:`9em`,transform:`none`,bottom:`8em`},"@media (orientation: portrait)":{display:t?`none`:void 0},"& .MuiGrid-root":{borderRadius:`0.25em`,overflowX:`scroll`,overflowY:`hidden`,padding:`0.5em`,position:`relative`,[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{overflowX:`hidden`,flexDirection:`column`},"& > *":{[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{alignItems:`center`,width:`3em`}}},"& .Toolbelt":{display:`flex`,flexFlow:`column`,justifyContent:`center`},"& .MuiDivider-root":{margin:`0 0.5em`,[`@media (orientation: landscape) and (min-height: ${breakpoints.largePhone}px)`]:{margin:`0.5em 0`,height:`1px`,width:`100%`,borderRightWidth:0,borderBottomWidth:`thin`}}});init_createTheme();var globalStyleOverrides={body:{overscrollBehavior:`contain`},"ul, ol":{listStyle:`none`,margin:0,padding:0},p:{margin:0},".markdown":{"& p":{margin:`1em 0`},"& ul li":{listStyle:`disc`,marginLeft:`1em`},"& strong":{fontWeight:`bold`}},img:{imageRendering:`pixelated`},strong:{fontWeight:`bold`},".visually_hidden:not(:focus):not(:active)":{clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,overflow:`hidden`,position:`absolute`,whiteSpace:`nowrap`,width:`1px`},"h4, h5, h6, p, p.MuiTypography-root":{fontFamily:`"Public Sans", sans-serif`},"h3, h4, h5, h6":{fontWeight:`bold`},h2:{fontSize:`1.4em`},"h3, h4":{margin:`1em 0`},"p, .MuiTypography-body2":{lineHeight:`1.5em`},"ul.card-list":{flexGrow:1,marginBottom:`1em`,"& li":{margin:`1em 0`},"& > li":{margin:`1em auto`,maxWidth:layout.cardMaxWidth}},'input[type="number"]':{minWidth:`140px`},th:{fontWeight:`bold`},"h1, h2, h3, h4, h5, h6, legend, td, th, .MuiTypography-h1, .MuiTypography-h2, .MuiTypography-h3, .MuiTypography-h4, .MuiTypography-h5, .MuiTypography-h6, .MuiButtonBase-root":{fontFamily:`"Francois One", sans-serif`},".danger-text":{color:colors.error},".success-text":{color:colors.success},hr:{background:`none`},".MuiDivider-vertical":{width:`auto`},".Farmhand.notification-container":{marginTop:`8em`,paddingTop:0,[`@media (min-width: ${breakpoints.md}px)`]:{marginTop:`4em`,marginRight:`4em`},"& .MuiCollapse-wrapperInner":{width:`100%`},"& .MuiCollapse-wrapper":{marginBottom:0}},".spacer":{minHeight:`7.5em`}},mui_theme_default=createTheme({palette:{mode:`light`},shape:{},typography:{fontFamily:`"Public Sans", sans-serif`,button:{fontFamily:`"Francois One", sans-serif`,textTransform:`none`},h6:{fontFamily:`"Francois One", sans-serif`,fontSize:`1.4em`},h5:{fontFamily:`"Francois One", sans-serif`}},components:{MuiCssBaseline:{styleOverrides:globalStyleOverrides},MuiTabs:{styleOverrides:{root:({theme:e})=>({background:`#ffeec6`,borderColor:`#9b6d00`,borderWidth:2,borderStyle:`solid`,borderRadius:`${e.shape.borderRadius}px ${e.shape.borderRadius}px 0 0`})}},MuiInput:{styleOverrides:{root:{margin:`1rem 0`}}},MuiCard:{styleOverrides:{root:({theme:e})=>({...cardStyleSx(e),"&.is-selected":cardStyleSelectedSx,"& .MuiCard-root":{background:colors.cardBackgroundNested}})}},MuiTableContainer:{styleOverrides:{root:({theme:e})=>({...cardStyleSx(e),"&.is-selected":cardStyleSelectedSx})}},MuiCardHeader:{styleOverrides:{avatar:{"& img":spriteShadowSx}}},MuiCardContent:{styleOverrides:{root:{"&:last-child":{padding:`16px`}}}},MuiTableCell:{styleOverrides:{root:{borderColor:`#e9c777`}}},MuiButtonBase:{styleOverrides:{root:{textTransform:`none`}}},MuiPaper:{styleOverrides:{rounded:{backgroundColor:`#fff7e7`}}},MuiTooltip:{styleOverrides:{tooltip:{"& p":{textAlign:`center`}}}},MuiDialog:{styleOverrides:{root:{display:`block`},paper:{backgroundImage:`url(${light_blue_stripe_bg_default})`}}},MuiDivider:{styleOverrides:{root:{margin:`1.5em 0`}}},MuiAlert:{styleOverrides:{root:{marginBottom:`1em`,"@media (min-width: 0px) and (orientation: landscape)":{top:`3.5em`},[`@media (min-width: ${breakpoints.sm}px)`]:{top:`4.5em`},"& p":{margin:`1em 0`,"&:first-of-type":{marginTop:0},"&:last-child":{marginBottom:0}},"& strong":{fontWeight:`bold`},"& li":{marginLeft:`1em`},"& ul li":{listStyle:`disc`},"& ol li":{listStyle:`decimal`}}}}}});init_styled();var Span=styled$1(`span`)({}),Div=styled$1(`div`)({}),P$1=styled$1(`p`)({}),Ol=styled$1(`ol`)({}),Ul=styled$1(`ul`)({}),Li=styled$1(`li`)({}),Img=styled$1(`img`)({}),Form=styled$1(`form`)({}),Header=styled$1(`header`)({}),H3=styled$1(`h3`)({}),A=styled$1(`a`)({}),require_shifty=__commonJSMin(((e,t)=>{(function(n,a){typeof e==`object`&&typeof t==`object`?t.exports=a():typeof define==`function`&&define.amd?define(`shifty`,[],a):typeof e==`object`?e.shifty=a():n.shifty=a()})(self,(function(){return function(){var e={933:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.setBezierFunction=t.getCubicBezierTransition=void 0;let a=n(55);t.getCubicBezierTransition=(e=.25,t=.25,n=.75,a=.75)=>o=>function(e,t,n,a,o,s){let l=0,u=0,d=0,f=0,m=0,h=0,v=e=>((l*e+u)*e+d)*e,y=e=>(3*l*e+2*u)*e+d,b=e=>e>=0?e:0-e;return d=3*t,u=3*(a-t)-d,l=1-d-u,h=3*n,m=3*(o-n)-h,f=1-h-m,x=e,S=(e=>1/(200*e))(s),(e=>((f*e+m)*e+h)*e)(((e,t)=>{let n,a,o,s,l,u;for(o=e,u=0;u<8;u++){if(s=v(o)-e,b(s)<t)return o;if(l=y(o),b(l)<1e-6)break;o-=s/l}if(n=0,a=1,o=e,o<n)return n;if(o>a)return a;for(;n<a;){if(s=v(o),b(s-e)<t)return o;e>s?n=o:a=o,o=.5*(a-n)+n}return o})(x,S));var x,S}(o,e,t,n,a,1),t.setBezierFunction=(e,n,o,s,l)=>{let u=(0,t.getCubicBezierTransition)(n,o,s,l);return u.displayName=e,u.x1=n,u.y1=o,u.x2=s,u.y2=l,a.Tweenable.easing[e]=u}},156:function(e,t,n){var a=this&&this.__createBinding||(Object.create?function(e,t,n,a){a===void 0&&(a=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!(`get`in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,a,o)}:function(e,t,n,a){a===void 0&&(a=n),e[a]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)n==="default"||Object.prototype.hasOwnProperty.call(t,n)||a(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.standardEasingFunctions=t.setBezierFunction=t.Scene=t.interpolate=t.tween=t.Tweenable=t.shouldScheduleUpdate=t.processTweens=void 0;let s=n(55);Object.defineProperty(t,"processTweens",{enumerable:!0,get:function(){return s.processTweens}}),Object.defineProperty(t,"shouldScheduleUpdate",{enumerable:!0,get:function(){return s.shouldScheduleUpdate}}),Object.defineProperty(t,"Tweenable",{enumerable:!0,get:function(){return s.Tweenable}}),Object.defineProperty(t,"tween",{enumerable:!0,get:function(){return s.tween}});var l=n(243);Object.defineProperty(t,"interpolate",{enumerable:!0,get:function(){return l.interpolate}});var u=n(612);Object.defineProperty(t,"Scene",{enumerable:!0,get:function(){return u.Scene}});var d=n(933);Object.defineProperty(t,"setBezierFunction",{enumerable:!0,get:function(){return d.setBezierFunction}});var f=n(809);Object.defineProperty(t,"standardEasingFunctions",{enumerable:!0,get:function(){return f.standardEasingFunctions}}),o(n(613),t),t.VERSION=`3.0.6`},243:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.interpolate=void 0;let a=n(55),o=new a.Tweenable,{filters:s}=a.Tweenable;t.interpolate=(e,t,n,l=a.Tweenable.easing.linear,u=0)=>{let d=Object.assign({},e),f=(0,a.composeEasingObject)(e,l);o._filters.length=0,o.setState({}),o._currentState=d,o._originalState=e,o._targetState=t,o._easing=f;for(let e in s)s[e].doesApply(o)&&o._filters.push(s[e]);o._applyFilter(`tweenCreated`),o._applyFilter(`beforeTween`);let m=(0,a.tweenProps)(n,d,e,t,1,u,f);return o._applyFilter(`afterTween`),m}},612:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Scene=void 0,t.Scene=class{constructor(...e){this._tweenables=[],e.forEach(this.add.bind(this))}get tweenables(){return[...this._tweenables]}get promises(){return this._tweenables.map((e=>e.then()))}add(e){return this._tweenables.push(e),e}remove(e){let t=this._tweenables.indexOf(e);return t>-1&&this._tweenables.splice(t,1),e}empty(){return this.tweenables.map(this.remove.bind(this))}get isPlaying(){return this._tweenables.some((({isPlaying:e})=>e))}tween(){return this._tweenables.forEach((e=>e.tween())),this}pause(){return this._tweenables.forEach((e=>e.pause())),this}resume(){return this._tweenables.filter((({hasEnded:e})=>!e)).forEach((e=>e.resume())),this}stop(e){return this._tweenables.forEach((t=>t.stop(e))),this}}},809:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.standardEasingFunctions=void 0,t.standardEasingFunctions=Object.freeze({linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>-((e-1)**2-1),easeInOutQuad:e=>(e/=.5)<1?.5*e**2:-.5*((e-=2)*e-2),easeInCubic:e=>e**3,easeOutCubic:e=>(e-1)**3+1,easeInOutCubic:e=>(e/=.5)<1?.5*e**3:.5*((e-2)**3+2),easeInQuart:e=>e**4,easeOutQuart:e=>-((e-1)**4-1),easeInOutQuart:e=>(e/=.5)<1?.5*e**4:-.5*((e-=2)*e**3-2),easeInQuint:e=>e**5,easeOutQuint:e=>(e-1)**5+1,easeInOutQuint:e=>(e/=.5)<1?.5*e**5:.5*((e-2)**5+2),easeInSine:e=>1-Math.cos(Math.PI/2*e),easeOutSine:e=>Math.sin(Math.PI/2*e),easeInOutSine:e=>-.5*(Math.cos(Math.PI*e)-1),easeInExpo:e=>e===0?0:2**(10*(e-1)),easeOutExpo:e=>e===1?1:1-2**(-10*e),easeInOutExpo:e=>e===0?0:e===1?1:(e/=.5)<1?.5*2**(10*(e-1)):.5*(2-2**(-10*--e)),easeInCirc:e=>-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-1)**2),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeOutBounce:e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,easeInBack:e=>e*e*(2.70158*e-1.70158),easeOutBack:e=>--e*e*(2.70158*e+1.70158)+1,easeInOutBack:e=>{let t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},elastic:e=>-1*4**(-8*e)*Math.sin((6*e-1)*(2*Math.PI)/2)+1,swingFromTo:e=>{let t=1.70158;return(e/=.5)<1?e*e*((1+(t*=1.525))*e-t)*.5:.5*((e-=2)*e*((1+(t*=1.525))*e+t)+2)},swingFrom:e=>e*e*(2.70158*e-1.70158),swingTo:e=>--e*e*(2.70158*e+1.70158)+1,bounce:e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,bouncePast:e=>e<1/2.75?7.5625*e*e:e<2/2.75?2-(7.5625*(e-=1.5/2.75)*e+.75):e<2.5/2.75?2-(7.5625*(e-=2.25/2.75)*e+.9375):2-(7.5625*(e-=2.625/2.75)*e+.984375),easeFromTo:e=>(e/=.5)<1?.5*e**4:-.5*((e-=2)*e**3-2),easeFrom:e=>e**4,easeTo:e=>e**.25})},525:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.afterTween=t.beforeTween=t.tweenCreated=t.doesApply=void 0;let a=n(613),o=/(\d|-|\.)/,s=/([^\-0-9.]+)/g,l=/[0-9.-]+/g,u=(()=>{let e=l.source,t=`,\\s*`;return RegExp(`rgba?\\(${e}${t}${e}${t}${e}(${t}${e})?\\)`,`g`)})(),d=/^.*\(/,f=/#([0-9]|[a-f]){3,6}/gi,m=`VAL`,h=(e,t)=>e.map(((e,n)=>`_${t}_${n}`)),v=e=>{let t=e.match(s);return t?(t.length===1||e.charAt(0).match(o))&&t.unshift(``):t=[``,``],t.join(`VAL`)};function y(e){return parseInt(e,16)}let b=e=>`rgb(${(e=>{if((e=e.replace(/#/,``)).length===3){let[t,n,a]=e.split(``);e=t+t+n+n+a+a}return[y(e.substring(0,2)),y(e.substring(2,4)),y(e.substring(4,6))]})(e).join(`,`)})`,x=(e,t,n)=>{let a=t.match(e),o=t.replace(e,`VAL`);return a&&a.forEach((e=>o=o.replace(`VAL`,n(e)))),o},S=e=>{for(let t in e){let n=e[t];typeof n==`string`&&n.match(f)&&(e[t]=x(f,n,b))}},C=e=>{var t,n;let a=e.match(l)??[],o=a.slice(0,3).map((e=>Math.floor(Number(e)))),s=e.match(d)?.[0];if(a.length===3)return`${s}${o.join(`,`)})`;if(a.length===4)return`${s}${o.join(`,`)},${a[3]})`;throw Error(`Invalid rgbChunk: ${e}`)},T=e=>{var t;return e.match(l)??[]},E=(e,t)=>{let n={};return t.forEach((t=>{n[t]=e[t],delete e[t]})),n},D=(e,t)=>t.map((t=>Number(e[t]))),O=(e,t)=>(t.forEach((t=>e=e.replace(`VAL`,String(+t.toFixed(4))))),e);t.doesApply=e=>{for(let t in e._currentState)if(typeof e._currentState[t]==`string`)return!0;return!1},t.tweenCreated=function(e){let{_currentState:t,_originalState:n,_targetState:a}=e;[t,n,a].forEach(S),e._tokenData=(e=>{var t;let n={};for(let t in e){let a=e[t];typeof a==`string`&&(n[t]={formatString:v(a),chunkNames:h(T(a)?.map(Number),t)})}return n})(t)},t.beforeTween=function(e){let{_currentState:t,_originalState:n,_targetState:o,_easing:s,_tokenData:l}=e;typeof s!=`function`&&l&&((e,t)=>{var n;for(let n in t){let{chunkNames:o}=t[n],s=e[n];if(typeof s==`string`){let t=s.split(` `),n=t[t.length-1];for(let s=0;s<o.length;s++){let l=o[s],u=t[s]??n;(0,a.isEasingKey)(u)&&(e[l]=u)}}else o.forEach((t=>e[t]=s));delete e[n]}})(s,l),[t,n,o].forEach((e=>((e,t)=>{for(let n in t)T(String(e[n])).forEach(((a,o)=>e[t[n].chunkNames[o]]=+a)),delete e[n]})(e,l??{})))},t.afterTween=function(e){let{_currentState:t,_originalState:n,_targetState:a,_easing:o,_tokenData:s}=e;[t,n,a].forEach((e=>((e,t)=>{for(let n in t){let{chunkNames:a,formatString:o}=t[n],s=O(o,D(E(e,a),a));e[n]=x(u,s,C)}})(e,s??{}))),typeof o!=`function`&&s&&((e,t)=>{for(let n in t){let{chunkNames:a}=t[n],o=e[a[0]];e[n]=typeof o==`string`?a.map((t=>{let n=e[t];return delete e[t],n})).join(` `):o}})(o,s)}},55:function(e,t,n){var a,o=this&&this.__createBinding||(Object.create?function(e,t,n,a){a===void 0&&(a=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!(`get`in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,a,o)}:function(e,t,n,a){a===void 0&&(a=n),e[a]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),l=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n in e)n!=="default"&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return s(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.shouldScheduleUpdate=t.tween=t.Tweenable=t.composeEasingObject=t.scheduleUpdate=t.processTweens=t.tweenProps=t.getListTail=t.getListHead=t.resetList=void 0;let u=n(809),d=n(933),f=n(613),m=l(n(525)),h=`linear`,v=1e3/60,y=typeof window<`u`?window:n.g,b=`afterTween`,x=`beforeTween`,S=`string`,C=`function`,T=y.requestAnimationFrame;T||=typeof window>`u`?setTimeout:window.webkitRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.mozCancelRequestAnimationFrame&&window.mozRequestAnimationFrame||setTimeout;let E=()=>{},D=null,O=null;t.resetList=()=>{D=O=null},t.getListHead=()=>D,t.getListTail=()=>O,t.tweenProps=(e,t,n,a,o,s,l)=>{var d;let f,m=0,h=e<s?0:(e-s)/o,v;for(let e in t){if(typeof l==C)v=l;else{let t=l[e];v=typeof t==C?t:L.easing[t]??u.standardEasingFunctions.linear}m=v(h),f=n[e],t[e]=f+(a[e]-f)*m}return t};let k=(e,n)=>{var a;let o=e._timestamp??0,s=e._currentState,l=e._delay;if(n<o+l)return;let u=e._duration,d=e._targetState,f=o+l+u,m=n>f?f:n;e._hasEnded=m>=f;let h=u-(f-m);if(e._hasEnded)return e._render(d,h,e._data),e.stop(!0);e._applyFilter(x),m<o+l?o=u=m=1:o+=l,(0,t.tweenProps)(m,s,e._originalState,d,u,o,e._easing),e._applyFilter(b),e._render(s,h,e._data)};t.processTweens=()=>{let e,t=L.now(),n=D;for(;n;)e=n._next,k(n,t),n=e};let{now:j}=Date,M,N=!1;t.scheduleUpdate=()=>{M=j(),N&&T.call(y,t.scheduleUpdate,16.666666666666668),(0,t.processTweens)()},t.composeEasingObject=(e,t=h,n={})=>{if(typeof t==S&&(0,f.isEasingKey)(t))return L.easing[t];if(Array.isArray(t))return(0,d.getCubicBezierTransition)(...t);if(typeof n==`object`)if(typeof t==S||typeof t==C)for(let a in e)n[a]=t;else for(let a in e)n[a]=t[a]||h;return n};let F=(()=>{let e,t;return n=>{e=null,t=null,n===D?(D=n._next,D?D._previous=null:O=null):n===O?(O=n._previous,O?O._next=null:D=null):(e=n._previous,t=n._next,e&&(e._next=t),t&&(t._previous=e)),n._previous=n._next=null}})(),I=typeof Promise==C?Promise:null;class L{constructor(e={},t){this[a]=`Promise`,this._next=null,this._previous=null,this._config={},this._data={},this._delay=0,this._duration=500,this._filters=[],this._timestamp=null,this._hasEnded=!1,this._resolve=null,this._reject=null,this._originalState={},this._targetState={},this._start=E,this._render=E,this._promiseCtor=I,this._promise=null,this._isPlaying=!1,this._pausedAtTime=null,this._easing={},this._currentState=e||{},t&&this.setConfig(t)}_applyFilter(e){var t;for(let n=this._filters.length;n>0;n--){let a=this._filters[n-n];(t=a[e])==null||t.call(a,this)}}tween(e){return this._isPlaying&&this.stop(),!e&&this._config||this.setConfig(e),this._pausedAtTime=null,this._timestamp=L.now(),this._start(this.state,this._data),this._delay&&this._render(this._currentState,0,this._data),this._resume(this._timestamp)}setConfig(e={}){var n;let{_config:a}=this,o;for(o in e)a[o]=e[o];let{promise:s=this._promiseCtor,start:l=E,finish:u,render:d=E}=a;this._data=a.data||this._data,this._isPlaying=!1,this._pausedAtTime=null,this._delay=e.delay||0,this._start=l,this._render=d,this._duration=a.duration||500,this._promiseCtor=s,u&&(this._resolve=u);let{from:f,to:m={}}=e,{_currentState:h,_originalState:v,_targetState:y}=this;for(let e in f)h[e]=f[e];let b=!1;for(let e in h){let t=h[e];b||typeof t!=S||(b=!0),v[e]=t,y[e]=m[e]??t}if(this._easing=(0,t.composeEasingObject)(this._currentState,a.easing,this._easing),this._filters.length=0,b){for(let e in L.filters)L.filters[e].doesApply(this)&&this._filters.push(L.filters[e]);this._applyFilter(`tweenCreated`)}return this}then(e,t){if(!this._promiseCtor)throw Error(`Promise implementation is unavailable`);return this._promise=new this._promiseCtor(((e,t)=>{this._resolve=e,this._reject=t})),this._promise.then(e,t)}catch(e){return this.then().catch(e)}finally(e){return this.then().finally(e)}get state(){return Object.assign({},this._currentState)}setState(e){this._currentState=e}pause(){return this._isPlaying?(this._pausedAtTime=L.now(),this._isPlaying=!1,F(this),this):this}resume(){return this._resume()}_resume(e=L.now()){if(this._timestamp===null)return this.tween();if(this._isPlaying&&this._promise)return this;this._pausedAtTime&&=(this._timestamp+=e-this._pausedAtTime,null),this._isPlaying=!0;let n=!!D;return D===null?(D=this,O=this):(this._previous=O,O&&(O._next=this),O=this),n||(0,t.shouldScheduleUpdate)(!0),this}seek(e){var t;e=Math.max(e,0);let n=L.now();return(this._timestamp??0)+e===0||(this._timestamp=n-e,k(this,n)),this}stop(e=!1){var n;return this._isPlaying?(this._isPlaying=!1,F(this),e&&(this._applyFilter(x),(0,t.tweenProps)(1,this._currentState,this._originalState,this._targetState,1,0,this._easing),this._applyFilter(b),this._applyFilter(`afterTweenEnd`)),(n=this._resolve)==null||n.call(this,{data:this._data,state:this._currentState,tweenable:this}),this._resolve=null,this._reject=null,this):this}cancel(e=!1){var t;let{_currentState:n,_data:a,_isPlaying:o}=this;return o?((t=this._reject)==null||t.call(this,{data:a,state:n,tweenable:this}),this._resolve=null,this._reject=null,this.stop(e)):this}get isPlaying(){return this._isPlaying}get hasEnded(){return this._hasEnded}data(e=null){return e&&(this._data=Object.assign({},e)),this._data}dispose(){for(let e in this)delete this[e]}}t.Tweenable=L,a=Symbol.toStringTag,L.now=()=>(N||(M=j()),M),L.setScheduleFunction=e=>T=e,L.filters={token:m},L.easing=Object.create(u.standardEasingFunctions),t.tween=function(e={}){return new L({},{}).tween(e)},t.shouldScheduleUpdate=e=>{e&&N||(N=e,e&&(0,t.scheduleUpdate)())}},613:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.isEasingKey=void 0;let a=n(55);t.isEasingKey=e=>e in a.Tweenable.easing}},t={};function n(a){var o=t[a];if(o!==void 0)return o.exports;var s=t[a]={exports:{}};return e[a].call(s.exports,s,s.exports,n),s.exports}return n.g=function(){if(typeof globalThis==`object`)return globalThis;try{return this||Function(`return this`)()}catch{if(typeof window==`object`)return window}}(),n(156)}()}))}));init_generateUtilityClasses(),init_generateUtilityClass();function getAppBarUtilityClass(e){return generateUtilityClass(`MuiAppBar`,e)}var appBarClasses=generateUtilityClasses(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$56=[`className`,`color`,`enableColorOnDark`,`position`],useUtilityClasses$50=e=>{let{color:t,position:n,classes:a}=e;return composeClasses({root:[`root`,`color${capitalize_default(t)}`,`position${capitalize_default(n)}`]},getAppBarUtilityClass,a)},joinVars=(e,t)=>e?`${e?.replace(`)`,``)}, ${t})`:t,AppBarRoot=styled$1(Paper,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${capitalize_default(n.position)}`],t[`color${capitalize_default(n.color)}`]]}})(({theme:e,ownerState:t})=>{let n=e.palette.mode===`light`?e.palette.grey[100]:e.palette.grey[900];return _extends$3({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0},t.position===`fixed`&&{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}},t.position===`absolute`&&{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0},t.position===`sticky`&&{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0},t.position===`static`&&{position:`static`},t.position===`relative`&&{position:`relative`},!e.vars&&_extends$3({},t.color==="default"&&{backgroundColor:n,color:e.palette.getContrastText(n)},t.color&&t.color!=="default"&&t.color!==`inherit`&&t.color!==`transparent`&&{backgroundColor:e.palette[t.color].main,color:e.palette[t.color].contrastText},t.color===`inherit`&&{color:`inherit`},e.palette.mode===`dark`&&!t.enableColorOnDark&&{backgroundColor:null,color:null},t.color===`transparent`&&_extends$3({backgroundColor:`transparent`,color:`inherit`},e.palette.mode===`dark`&&{backgroundImage:`none`})),e.vars&&_extends$3({},t.color==="default"&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette.AppBar.defaultBg:joinVars(e.vars.palette.AppBar.darkBg,e.vars.palette.AppBar.defaultBg),"--AppBar-color":t.enableColorOnDark?e.vars.palette.text.primary:joinVars(e.vars.palette.AppBar.darkColor,e.vars.palette.text.primary)},t.color&&!t.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette[t.color].main:joinVars(e.vars.palette.AppBar.darkBg,e.vars.palette[t.color].main),"--AppBar-color":t.enableColorOnDark?e.vars.palette[t.color].contrastText:joinVars(e.vars.palette.AppBar.darkColor,e.vars.palette[t.color].contrastText)},![`inherit`,`transparent`].includes(t.color)&&{backgroundColor:`var(--AppBar-background)`},{color:t.color===`inherit`?`inherit`:`var(--AppBar-color)`},t.color===`transparent`&&{backgroundImage:`none`,backgroundColor:`transparent`,color:`inherit`}))}),AppBar$1=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAppBar`}),{className:a,color:o=`primary`,enableColorOnDark:s=!1,position:l=`fixed`}=n,u=_objectWithoutPropertiesLoose$3(n,_excluded$56),d=_extends$3({},n,{color:o,position:l,enableColorOnDark:s}),f=useUtilityClasses$50(d);return(0,import_jsx_runtime.jsx)(AppBarRoot,_extends$3({square:!0,component:`header`,ownerState:d,elevation:4,className:clsx$1(f.root,a,l===`fixed`&&`mui-fixed`),ref:t},u))});init_generateUtilityClasses(),init_generateUtilityClass();function getToolbarUtilityClass(e){return generateUtilityClass(`MuiToolbar`,e)}var toolbarClasses=generateUtilityClasses(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled();var _excluded$55=[`className`,`component`,`disableGutters`,`variant`],useUtilityClasses$49=e=>{let{classes:t,disableGutters:n,variant:a}=e;return composeClasses({root:[`root`,!n&&`gutters`,a]},getToolbarUtilityClass,t)},ToolbarRoot=styled$1(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(({theme:e,ownerState:t})=>_extends$3({position:`relative`,display:`flex`,alignItems:`center`},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}},t.variant===`dense`&&{minHeight:48}),({theme:e,ownerState:t})=>t.variant===`regular`&&e.mixins.toolbar),Toolbar=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiToolbar`}),{className:a,component:o=`div`,disableGutters:s=!1,variant:l=`regular`}=n,u=_objectWithoutPropertiesLoose$3(n,_excluded$55),d=_extends$3({},n,{component:o,disableGutters:s,variant:l}),f=useUtilityClasses$49(d);return(0,import_jsx_runtime.jsx)(ToolbarRoot,_extends$3({as:o,className:clsx$1(f.root,a),ref:t,ownerState:d},u))});init_generateUtilityClasses(),init_generateUtilityClass();function getTypographyUtilityClass(e){return generateUtilityClass(`MuiTypography`,e)}var typographyClasses=generateUtilityClasses(`MuiTypography`,[`root`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`subtitle1`,`subtitle2`,`body1`,`body2`,`inherit`,`button`,`caption`,`overline`,`alignLeft`,`alignRight`,`alignCenter`,`alignJustify`,`noWrap`,`gutterBottom`,`paragraph`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_styleFunctionSx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$54=[`align`,`className`,`component`,`gutterBottom`,`noWrap`,`paragraph`,`variant`,`variantMapping`],useUtilityClasses$48=e=>{let{align:t,gutterBottom:n,noWrap:a,paragraph:o,variant:s,classes:l}=e;return composeClasses({root:[`root`,s,e.align!==`inherit`&&`align${capitalize_default(t)}`,n&&`gutterBottom`,a&&`noWrap`,o&&`paragraph`]},getTypographyUtilityClass,l)},TypographyRoot=styled$1(`span`,{name:`MuiTypography`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],n.align!==`inherit`&&t[`align${capitalize_default(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(({theme:e,ownerState:t})=>_extends$3({margin:0},t.variant===`inherit`&&{font:`inherit`},t.variant!==`inherit`&&e.typography[t.variant],t.align!==`inherit`&&{textAlign:t.align},t.noWrap&&{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},t.gutterBottom&&{marginBottom:`0.35em`},t.paragraph&&{marginBottom:16})),defaultVariantMapping={h1:`h1`,h2:`h2`,h3:`h3`,h4:`h4`,h5:`h5`,h6:`h6`,subtitle1:`h6`,subtitle2:`h6`,body1:`p`,body2:`p`,inherit:`p`},colorTransformations={primary:`primary.main`,textPrimary:`text.primary`,secondary:`secondary.main`,textSecondary:`text.secondary`,error:`error.main`},transformDeprecatedColors=e=>colorTransformations[e]||e,Typography=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiTypography`}),a=transformDeprecatedColors(n.color),o=extendSxProp(_extends$3({},n,{color:a})),{align:s=`inherit`,className:l,component:u,gutterBottom:d=!1,noWrap:f=!1,paragraph:m=!1,variant:h=`body1`,variantMapping:v=defaultVariantMapping}=o,y=_objectWithoutPropertiesLoose$3(o,_excluded$54),b=_extends$3({},o,{align:s,color:a,className:l,component:u,gutterBottom:d,noWrap:f,paragraph:m,variant:h,variantMapping:v}),x=u||(m?`p`:v[h]||defaultVariantMapping[h])||`span`,S=useUtilityClasses$48(b);return(0,import_jsx_runtime.jsx)(TypographyRoot,_extends$3({as:x,ref:t,ownerState:b,className:clsx$1(S.root,l)},y))});init_createSvgIcon();var CheckCircle_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z`}),`CheckCircle`);init_createSvgIcon();var Warning_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z`}),`Warning`);init_generateUtilityClasses(),init_generateUtilityClass();function getStepIconUtilityClass(e){return generateUtilityClass(`MuiStepIcon`,e)}var stepIconClasses=generateUtilityClasses(`MuiStepIcon`,[`root`,`active`,`completed`,`error`,`text`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_SvgIcon();var _circle,_excluded$53=[`active`,`className`,`completed`,`error`,`icon`],useUtilityClasses$47=e=>{let{classes:t,active:n,completed:a,error:o}=e;return composeClasses({root:[`root`,n&&`active`,a&&`completed`,o&&`error`],text:[`text`]},getStepIconUtilityClass,t)},StepIconRoot=styled$1(SvgIcon,{name:`MuiStepIcon`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>({display:`block`,transition:e.transitions.create(`color`,{duration:e.transitions.duration.shortest}),color:(e.vars||e).palette.text.disabled,[`&.${stepIconClasses.completed}`]:{color:(e.vars||e).palette.primary.main},[`&.${stepIconClasses.active}`]:{color:(e.vars||e).palette.primary.main},[`&.${stepIconClasses.error}`]:{color:(e.vars||e).palette.error.main}})),StepIconText=styled$1(`text`,{name:`MuiStepIcon`,slot:`Text`,overridesResolver:(e,t)=>t.text})(({theme:e})=>({fill:(e.vars||e).palette.primary.contrastText,fontSize:e.typography.caption.fontSize,fontFamily:e.typography.fontFamily})),StepIcon=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiStepIcon`}),{active:a=!1,className:o,completed:s=!1,error:l=!1,icon:u}=n,d=_objectWithoutPropertiesLoose$3(n,_excluded$53),f=_extends$3({},n,{active:a,completed:s,error:l}),m=useUtilityClasses$47(f);if(typeof u==`number`||typeof u==`string`){let e=clsx$1(o,m.root);return l?(0,import_jsx_runtime.jsx)(StepIconRoot,_extends$3({as:Warning_default,className:e,ref:t,ownerState:f},d)):s?(0,import_jsx_runtime.jsx)(StepIconRoot,_extends$3({as:CheckCircle_default,className:e,ref:t,ownerState:f},d)):(0,import_jsx_runtime.jsxs)(StepIconRoot,_extends$3({className:e,ref:t,ownerState:f},d,{children:[_circle||=(0,import_jsx_runtime.jsx)(`circle`,{cx:`12`,cy:`12`,r:`12`}),(0,import_jsx_runtime.jsx)(StepIconText,{className:m.text,x:`12`,y:`12`,textAnchor:`middle`,dominantBaseline:`central`,ownerState:f,children:u})]}))}return u}),require_FileSaver_min=__commonJSMin(((e,t)=>{(function(t,n){typeof define==`function`&&define.amd?define([],n):e===void 0?(n(),t.FileSaver={exports:{}}.exports):n()})(e,function(){function e(e,t){return t===void 0?t={autoBom:!1}:typeof t!=`object`&&(console.warn(`Deprecated: Expected third argument to be a object`),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function n(e,t,n){var a=new XMLHttpRequest;a.open(`GET`,e),a.responseType=`blob`,a.onload=function(){u(a.response,t,n)},a.onerror=function(){console.error(`could not download file`)},a.send()}function a(e){var t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function o(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{var t=document.createEvent(`MouseEvents`);t.initMouseEvent(`click`,!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var s=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:{}.global==={}?{}:void 0,l=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),u=s.saveAs||(typeof window!=`object`||window!==s?function(){}:`download`in HTMLAnchorElement.prototype&&!l?function(e,t,l){var u=s.URL||s.webkitURL,d=document.createElement(`a`);t=t||e.name||`download`,d.download=t,d.rel=`noopener`,typeof e==`string`?(d.href=e,d.origin===location.origin?o(d):a(d.href)?n(e,t,l):o(d,d.target=`_blank`)):(d.href=u.createObjectURL(e),setTimeout(function(){u.revokeObjectURL(d.href)},4e4),setTimeout(function(){o(d)},0))}:`msSaveOrOpenBlob`in navigator?function(t,s,l){if(s=s||t.name||`download`,typeof t!=`string`)navigator.msSaveOrOpenBlob(e(t,l),s);else if(a(t))n(t,s,l);else{var u=document.createElement(`a`);u.href=t,u.target=`_blank`,setTimeout(function(){o(u)})}}:function(e,t,a,o){if(o||=open(``,`_blank`),o&&(o.document.title=o.document.body.innerText=`downloading...`),typeof e==`string`)return n(e,t,a);var u=e.type===`application/octet-stream`,d=/constructor/i.test(s.HTMLElement)||s.safari,f=/CriOS\/[\d]+/.test(navigator.userAgent);if((f||u&&d||l)&&typeof FileReader<`u`){var m=new FileReader;m.onloadend=function(){var e=m.result;e=f?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),o?o.location.href=e:location=e,o=null},m.readAsDataURL(e)}else{var h=s.URL||s.webkitURL,v=h.createObjectURL(e);o?o.location=v:location.href=v,o=null,setTimeout(function(){h.revokeObjectURL(v)},4e4)}});s.saveAs=u.saveAs=u,t!==void 0&&(t.exports=u)})})),require_window=__commonJSMin(((e,t)=>{t.exports=typeof window<`u`?window:{}})),import_shifty=require_shifty(),import_FileSaver_min=require_FileSaver_min(),import_window=__toESM(require_window()),PROGRESS_SAVED_MESSAGE=`Progress saved!`,RAIN_MESSAGE=`It rained in the night!`,STORM_MESSAGE=`There was a storm in the night!`,STORM_DESTROYS_SCARECROWS_MESSAGE=`There was a storm in the night! No scarecrows survived!`,LIGHTNING_ROD_STRUCK_MESSAGE=`There was a storm in the night! Your lightning rod took a hit protecting the field.`,LIGHTNING_ROD_DESTROYED_MESSAGE=`There was a storm in the night! Your lightning rod was destroyed protecting the field.`,LIGHTNING_ROD_REPLANTED_MESSAGE=`There was a storm in the night! Your lightning rod took a lethal hit, but a rainbow-fertilized replacement was instantly planted in its place!`,FARM_PRODUCTS_TOOLTIP_TEXT=`This figure only includes sales of grown crops, crafted items, and animal products.`,COW_SOLD_TOOLTIP_TEXT=`This figure only includes cows you were not the original owner for.`,DATA_DELETED=`Your local game data has been deleted.`,INVALID_DATA_PROVIDED=`Invalid Farmhand data provided.`,UPDATE_AVAILABLE=`A game update is available! Click this message to reload and see what's new.`,SERVER_ERROR=`There was an issue connecting to the server. Please try again in a moment.`,CONNECTING_TO_SERVER=`Connecting...`,DISCONNECTING_FROM_SERVER=`Disconnecting...`,DISCONNECTED_FROM_SERVER=`You are now playing offline.`,REQUESTED_COW_TRADE_UNAVAILABLE=`The requested cow is no longer available.`,UNKNOWN_COW_TRADE_FAILURE=`Something went wrong with your cow trade request. Please try again!`,COW_ALREADY_OWNED=`It looks like you already have this cow!`,OUT_OF_COW_FEED_NOTIFICATION=`You're out of cow feed! Buy some more before your cows get hungry and run away!`,INVENTORY_FULL_NOTIFICATION=`Your inventory is full!`,SHOVELED=`Shoveled plot`,WATERING_CAN_ALT_TEXT=`A watering can for hydrating plants.`,WATERING_CAN_HIDDEN_TEXT=`Select the watering can to water your crops`,SCYTHE_ALT_TEXT=`A scythe for crop harvesting.`,SCYTHE_HIDDEN_TEXT=`Select the scythe to harvest ripened crops`,HOE_ALT_TEXT=`A hoe for removing crops and disposing of them. Also returns replantable items to your inventory.`,HOE_HIDDEN_TEXT=`Select the hoe to clear crops, or replantable field items`,SHOVEL_ALT_TEXT=`A shovel for digging up rocks.`,SHOVEL_HIDDEN_TEXT=`Select the shovel to dig for ore`,AXE_ALT_TEXT=`An axe for chopping down trees.`,AXE_HIDDEN_TEXT=`Select the axe to chop down trees in the forest for wood`,PICKER_POLE_ALT_TEXT=`A picker pole for gathering tree fruit.`,PICKER_POLE_HIDDEN_TEXT=`Select the picker pole to pick ripe fruit from trees in the forest`,TOOL_LEVEL_INFO={SCYTHE:{DEFAULT:`**Basic**: Harvests one crop per plot.`,BRONZE:`**Bronze**: Harvests two crops per plot.`,IRON:`**Iron**: Harvests three crops per plot.`,SILVER:`**Silver**: Harvests four crops per plot.`,GOLD:`**Gold**: Harvests five crops per plot.`},SHOVEL:{DEFAULT:`**Basic**: Has a 30% chance of digging up resources.`,BRONZE:`**Bronze**: Has a 40% chance of digging up resources.`,IRON:`**Iron**: Has a 50% chance of digging up resources.`,SILVER:`**Silver**: Has a 60% chance of digging up resources.`,GOLD:`**Gold**: Has a 70% chance of digging up resources.`},WATERING_CAN:{DEFAULT:`**Basic**: Keeps plots watered for one day.`,BRONZE:`**Bronze**: Keeps plots watered for two days.`,IRON:`**Iron**: Keeps plots watered for three days.`,SILVER:`**Silver**: Keeps plots watered for four days.`,GOLD:`**Gold**: Keeps plots watered for five days.`},HOE:{DEFAULT:`**Basic**: Destroys crops.`,BRONZE:`**Bronze**: 25% chance to retrieve seeds when digging up crops.`,IRON:`**Iron**: 50% chance to retrieve seeds when digging up crops.`,SILVER:`**Silver**: 75% chance to retrieve seeds when digging up crops.`,GOLD:`**Gold**: 100% chance to retrieve seeds when digging up crops.`},AXE:{DEFAULT:`**Basic**: Chops down trees for 1-2 wood.`,BRONZE:`**Bronze**: Chops down trees for 2-4 wood.`,IRON:`**Iron**: Chops down trees for 4-6 wood.`,SILVER:`**Silver**: Chops down trees for 6-8 wood.`,GOLD:`**Gold**: Chops down trees for 8-10 wood.`},PICKER_POLE:{DEFAULT:`**Basic**: Picks 1 fruit per harvest.`,BRONZE:`**Bronze**: Picks 2 fruit per harvest.`,IRON:`**Iron**: Picks 3 fruit per harvest.`,SILVER:`**Silver**: Picks 4 fruit per harvest.`,GOLD:`**Gold**: Picks 5 fruit per harvest.`}},FORGE_AVAILABLE_NOTIFICATION=`**The Forge** is now available in the Workshop!`,RECYCLING_AVAILABLE_NOTIFICATION=`**Recycling** is now available in the Workshop!`,FOREST_AVAILABLE_NOTIFICATION=`The **Forest** is now available!`,WOOD_CHIPPER_AVAILABLE_NOTIFICATION=`**Wood Chipper** recipes are now available in the Workshop!`,COW_COLOR_NAMES={[cowColors.BLUE]:`Blue`,[cowColors.BROWN]:`Brown`,[cowColors.GREEN]:`Green`,[cowColors.ORANGE]:`Orange`,[cowColors.PURPLE]:`Purple`,[cowColors.RAINBOW]:`Rainbow`,[cowColors.WHITE]:`White`,[cowColors.YELLOW]:`Yellow`},SHOVEL_UNLOCKED=`You've unlocked a new tool for the field, The **Shovel**!`,require_src=__commonJSMin(((e,t)=>{function n(e,t){var n=t&&t.cache?t.cache:v,a=t&&t.serializer?t.serializer:m;return(t&&t.strategy?t.strategy:u)(e,{cache:n,serializer:a})}function a(e){return e==null||typeof e==`number`||typeof e==`boolean`}function o(e,t,n,o){var s=a(o)?o:n(o),l=t.get(s);return l===void 0&&(l=e.call(this,o),t.set(s,l)),l}function s(e,t,n){var a=Array.prototype.slice.call(arguments,3),o=n(a),s=t.get(o);return s===void 0&&(s=e.apply(this,a),t.set(o,s)),s}function l(e,t,n,a,o){return n.bind(t,e,a,o)}function u(e,t){var n=e.length===1?o:s;return l(e,this,n,t.cache.create(),t.serializer)}function d(e,t){var n=s;return l(e,this,n,t.cache.create(),t.serializer)}function f(e,t){var n=o;return l(e,this,n,t.cache.create(),t.serializer)}function m(){return JSON.stringify(arguments)}function h(){this.cache=Object.create(null)}h.prototype.has=function(e){return e in this.cache},h.prototype.get=function(e){return this.cache[e]},h.prototype.set=function(e,t){this.cache[e]=t};var v={create:function(){return new h}};t.exports=n,t.exports.strategies={variadic:d,monadic:f}})),import_src=__toESM(require_src()),MemoizeCache=class{cache={};cacheSize;constructor({cacheSize:e=10}={}){this.cacheSize=e}has(e){return e in this.cache}get(e){return this.cache[e]}set(e,t){Object.keys(this.cache).length>this.cacheSize&&(this.cache={}),this.cache[e]=t}},memoize=(e,t={})=>(0,import_src.default)(e,{cache:{create:()=>new MemoizeCache(t)},...t}),getCropLifecycleDuration=memoize(({cropTimeline:e})=>e.reduce((e,t)=>e+t,0)),{freeze:freeze$9}=Object,crop=({cropTimeline:e=[],growsInto:t,tier:n=1,isSeed:a=!!t,cropLifecycleDuration:o=getCropLifecycleDuration({cropTimeline:e}),id:s=``,name:l=``,...u})=>freeze$9({id:s,name:l,cropTimeline:e,doesPriceFluctuate:!0,tier:n,type:itemType.CROP,value:10+o*n*(a?1:3),...a&&{enablesFieldMode:fieldMode.PLANT,growsInto:t,isPlantableCrop:!0},...u}),fromSeed=({cropTimeline:e,cropType:t,growsInto:n,tier:a=1,highDemandSeasons:o,lowDemandSeasons:s},{variantIdx:l=0,canBeFermented:u=!1}={})=>({id:(Array.isArray(n)?n:[n])[l]||``,cropTimeline:e||[],cropType:t,doesPriceFluctuate:!0,tier:a,type:itemType.CROP,highDemandSeasons:o,lowDemandSeasons:s,...u&&e&&{daysToFerment:getCropLifecycleDuration({cropTimeline:e})*a}}),cropVariety=({imageId:e,cropFamily:t,variety:n,...a})=>({imageId:e,cropFamily:t,variety:n,...crop({...a})}),isGrape=e=>`cropFamily`in e&&e.cropFamily===cropFamily.GRAPE,grape=e=>({...e,...cropVariety({...e,cropFamily:cropFamily.GRAPE})}),grapeSeed=crop({cropType:cropType.GRAPE,cropTimeline:[3,4],growsInto:[`grape-chardonnay`,`grape-sauvignon-blanc`,`grape-cabernet-sauvignon`,`grape-tempranillo`,`grape-nebbiolo`],highDemandSeasons:[season.SPRING,season.FALL],id:`grape-seed`,lowDemandSeasons:[season.WINTER],name:`Grape Seed`,tier:7}),grapeVarietyNameMap={[grapeVariety.CHARDONNAY]:`Chardonnay`,[grapeVariety.SAUVIGNON_BLANC]:`Sauvignon Blanc`,[grapeVariety.CABERNET_SAUVIGNON]:`Cabernet Sauvignon`,[grapeVariety.TEMPRANILLO]:`Tempranillo`,[grapeVariety.NEBBIOLO]:`Nebbiolo`},wineVarietyValueMap={[grapeVariety.CHARDONNAY]:1,[grapeVariety.SAUVIGNON_BLANC]:8,[grapeVariety.CABERNET_SAUVIGNON]:3,[grapeVariety.TEMPRANILLO]:5,[grapeVariety.NEBBIOLO]:10},grapeChardonnay=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-chardonnay`)}),name:`Chardonnay Grape`,imageId:`grape-green`,variety:grapeVariety.CHARDONNAY,wineId:`wine-chardonnay`}),grapeSauvignonBlanc=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-sauvignon-blanc`)}),name:`Sauvignon Blanc Grape`,imageId:`grape-green`,variety:grapeVariety.SAUVIGNON_BLANC,wineId:`wine-sauvignon-blanc`}),grapeCabernetSauvignon=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-cabernet-sauvignon`)}),name:`Cabernet Sauvignon Grape`,imageId:`grape-purple`,variety:grapeVariety.CABERNET_SAUVIGNON,wineId:`wine-cabernet-sauvignon`}),grapeTempranillo=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-tempranillo`)}),name:`Tempranillo Grape`,imageId:`grape-purple`,variety:grapeVariety.TEMPRANILLO,wineId:`wine-tempranillo`}),grapeNebbiolo=grape({...fromSeed(grapeSeed,{variantIdx:grapeSeed.growsInto?.indexOf(`grape-nebbiolo`)}),name:`Nebbiolo Grape`,imageId:`grape-purple`,variety:grapeVariety.NEBBIOLO,wineId:`wine-nebbiolo`}),grapeVarietyToGrapeItemMap={[grapeVariety.CHARDONNAY]:grapeChardonnay,[grapeVariety.SAUVIGNON_BLANC]:grapeSauvignonBlanc,[grapeVariety.CABERNET_SAUVIGNON]:grapeCabernetSauvignon,[grapeVariety.TEMPRANILLO]:grapeTempranillo,[grapeVariety.NEBBIOLO]:grapeNebbiolo},getYeastRequiredForWine=e=>wineVarietyValueMap[e]*5,asparagusSeed=crop({cropType:cropType.ASPARAGUS,cropTimeline:[4,2,2,1],growsInto:`asparagus`,highDemandSeasons:[season.SUMMER],id:`asparagus-seed`,lowDemandSeasons:[season.WINTER],name:`Asparagus Seed`,tier:4}),asparagus=crop({...fromSeed(asparagusSeed,{canBeFermented:!0}),name:`Asparagus`}),blueberrySeed=crop({cropType:cropType.BLUEBERRY,cropTimeline:[2,1],growsInto:`blueberry`,highDemandSeasons:[season.FALL],id:`blueberry-seed`,lowDemandSeasons:[season.SPRING],name:`Blueberry Seed`,tier:7}),blueberry=crop({...fromSeed(blueberrySeed,{canBeFermented:!0}),name:`Blueberry`}),carrotSeed=crop({cropType:cropType.CARROT,cropTimeline:[2,1,1,1],growsInto:`carrot`,highDemandSeasons:[season.SPRING],id:`carrot-seed`,name:`Carrot Seed`,tier:1}),carrot=crop({...fromSeed(carrotSeed,{canBeFermented:!0}),name:`Carrot`}),cornSeed=crop({cropType:cropType.CORN,cropTimeline:[3,1,1,1,2,2],growsInto:`corn`,highDemandSeasons:[season.SUMMER,season.FALL],id:`corn-seed`,lowDemandSeasons:[season.SPRING,season.WINTER],name:`Corn Kernels`,tier:2}),corn=crop({...fromSeed(cornSeed,{canBeFermented:!0}),name:`Corn`}),garlicSeed=crop({cropType:cropType.GARLIC,cropTimeline:[2,1,1,1],growsInto:`garlic`,highDemandSeasons:[season.FALL,season.WINTER],id:`garlic-seed`,lowDemandSeasons:[season.SPRING],name:`Garlic Bulb`,tier:5}),garlic=crop({...fromSeed(garlicSeed,{canBeFermented:!0}),name:`Garlic`}),jalapenoSeed=crop({cropType:cropType.JALAPENO,cropTimeline:[2,1,1,1],growsInto:`jalapeno`,highDemandSeasons:[season.SPRING,season.SUMMER],id:`jalapeno-seed`,lowDemandSeasons:[season.FALL,season.WINTER],name:`Jalapeño Seed`,tier:4}),jalapeno=crop({...fromSeed(jalapenoSeed,{canBeFermented:!0}),name:`Jalapeño`}),oliveSeed=crop({cropType:cropType.OLIVE,cropTimeline:[3,6],growsInto:`olive`,highDemandSeasons:[season.WINTER],id:`olive-seed`,lowDemandSeasons:[season.FALL],name:`Olive Seed`,tier:6}),olive=crop({...fromSeed(oliveSeed,{canBeFermented:!0}),name:`Olive`}),onionSeed=crop({cropType:cropType.ONION,cropTimeline:[3,1,2,1],growsInto:`onion`,id:`onion-seed`,name:`Onion Seeds`,tier:2}),onion=crop({...fromSeed(onionSeed,{canBeFermented:!0}),name:`Onion`}),peaSeed=crop({cropType:cropType.PEA,cropTimeline:[2,3],growsInto:`pea`,highDemandSeasons:[season.SPRING],id:`pea-seed`,lowDemandSeasons:[season.WINTER],name:`Pea Seed`,tier:5}),pea=crop({...fromSeed(peaSeed,{canBeFermented:!0}),name:`Pea`}),potatoSeed=crop({cropType:cropType.POTATO,cropTimeline:[2,1,1,1],growsInto:`potato`,highDemandSeasons:[season.FALL,season.WINTER],id:`potato-seed`,lowDemandSeasons:[season.SPRING,season.SUMMER],name:`Potato Seeds`,tier:2}),potato=crop({...fromSeed(potatoSeed,{canBeFermented:!0}),name:`Potato`}),pumpkinSeed=crop({cropType:cropType.PUMPKIN,cropTimeline:[3,1,1,1,1,1],growsInto:`pumpkin`,highDemandSeasons:[season.FALL],id:`pumpkin-seed`,lowDemandSeasons:[season.SPRING],name:`Pumpkin Seed`,tier:1}),pumpkin=crop({...fromSeed(pumpkinSeed,{canBeFermented:!0}),name:`Pumpkin`}),soybeanSeed=crop({cropType:cropType.SOYBEAN,cropTimeline:[2,2],growsInto:`soybean`,id:`soybean-seed`,name:`Soybean Seeds`,tier:3}),soybean=crop({...fromSeed(soybeanSeed,{canBeFermented:!0}),name:`Soybean`}),spinachSeed=crop({cropType:cropType.SPINACH,cropTimeline:[2,4],growsInto:`spinach`,highDemandSeasons:[season.SPRING,season.SUMMER],id:`spinach-seed`,lowDemandSeasons:[season.WINTER],name:`Spinach Seed`,tier:1}),spinach=crop({...fromSeed(spinachSeed,{canBeFermented:!0}),name:`Spinach`}),sunflowerSeed=crop({cropType:cropType.SUNFLOWER,cropTimeline:[1,1,1,1,1,1],growsInto:`sunflower`,highDemandSeasons:[season.SUMMER],id:`sunflower-seed`,lowDemandSeasons:[season.WINTER],name:`Sunflower Seed`,tier:6}),sunflower=crop({...fromSeed(sunflowerSeed,{canBeFermented:!0}),name:`Sunflower`}),strawberrySeed=crop({cropType:cropType.STRAWBERRY,cropTimeline:[6,2],growsInto:`strawberry`,highDemandSeasons:[season.SUMMER],id:`strawberry-seed`,lowDemandSeasons:[season.WINTER],name:`Strawberry Seed`,tier:5}),strawberry=crop({...fromSeed(strawberrySeed),name:`Strawberry`}),sugarcaneSeed=crop({cropType:cropType.SUGARCANE,cropTimeline:[2,2,3],growsInto:`sugarcane`,id:`sugarcane-seed`,name:`Sugarcane Seed`,tier:7}),sugarcane=crop({...fromSeed(sugarcaneSeed),name:`Sugarcane`}),sweetPotatoSeed=crop({cropType:cropType.SWEET_POTATO,cropTimeline:[2,1,1,2,2],growsInto:`sweet-potato`,highDemandSeasons:[season.FALL,season.WINTER],id:`sweet-potato-seed`,lowDemandSeasons:[season.SPRING],name:`Sweet Potato Slip`,tier:6}),sweetPotato=crop({...fromSeed(sweetPotatoSeed,{canBeFermented:!0}),name:`Sweet Potato`}),tomatoSeed=crop({cropType:cropType.TOMATO,cropTimeline:[2,1,1,1,2,2,2],growsInto:`tomato`,highDemandSeasons:[season.SPRING,season.SUMMER],id:`tomato-seed`,lowDemandSeasons:[season.WINTER],name:`Tomato Seeds`,tier:3}),tomato=crop({...fromSeed(tomatoSeed,{canBeFermented:!0}),name:`Tomato`}),watermelonSeed=crop({cropType:cropType.WATERMELON,cropTimeline:[2,10],growsInto:`watermelon`,highDemandSeasons:[season.SUMMER],id:`watermelon-seed`,lowDemandSeasons:[season.FALL,season.WINTER],name:`Watermelon Seed`,tier:4}),watermelon=crop({...fromSeed(watermelonSeed),name:`Watermelon`}),wheatSeed=crop({cropType:cropType.WHEAT,cropTimeline:[1,1],growsInto:`wheat`,id:`wheat-seed`,name:`Wheat Seeds`,tier:3}),wheat=crop({...fromSeed(wheatSeed),name:`Wheat`}),{freeze:freeze$8}=Object,getFruitLifecycleDuration=e=>e.reduce((e,t)=>e+t,0),SAPLING_FRUIT_CYCLES_TO_BREAK_EVEN=4,tree=({treeTimeline:e=[],fruitTimeline:t=[],growsInto:n,tier:a=1,isSeed:o=!!n,id:s=``,name:l=``,...u})=>{let d=10+getFruitLifecycleDuration(t)*a*3;return freeze$8({id:s,name:l,treeTimeline:e,fruitTimeline:t,doesPriceFluctuate:!0,tier:a,type:itemType.TREE,value:o?d*SAPLING_FRUIT_CYCLES_TO_BREAK_EVEN:d,...o&&{growsInto:n,isPlantableTree:!0},...u})},fromSapling=({treeTimeline:e,fruitTimeline:t,treeType:n,growsInto:a,tier:o=1,lifespan:s},{variantIdx:l=0}={})=>({id:(Array.isArray(a)?a:[a])[l]||``,treeTimeline:e||[],fruitTimeline:t||[],treeType:n,doesPriceFluctuate:!0,tier:o,type:itemType.TREE,lifespan:s}),appleSapling=tree({treeType:treeType.APPLE,treeTimeline:[5,5,5,5,5],lifespan:200,fruitTimeline:[2,2,2],growsInto:`apple`,id:`apple-sapling`,name:`Apple Sapling`,tier:2}),apple=tree({...fromSapling(appleSapling),name:`Apple`}),bananaSapling=tree({treeType:treeType.BANANA,treeTimeline:[4,4,4,4,4],lifespan:200,fruitTimeline:[3,3,3,3],growsInto:`banana`,id:`banana-sapling`,name:`Banana Sapling`,tier:3}),banana=tree({...fromSapling(bananaSapling),name:`Banana`}),{freeze:freeze$7}=Object,bronzeOre=freeze$7({description:`A piece of bronze ore.`,doesPriceFluctuate:!0,id:`bronze-ore`,name:`Bronze Ore`,type:itemType.ORE,value:25,spawnChance:BRONZE_SPAWN_CHANCE}),{freeze:freeze$6}=Object,coal$1=freeze$6({description:`A piece of coal.`,doesPriceFluctuate:!1,id:`coal`,name:`Coal`,type:itemType.FUEL,spawnChance:COAL_SPAWN_CHANCE,value:2}),{freeze:freeze$5}=Object,goldOre=freeze$5({description:`A piece of gold ore.`,doesPriceFluctuate:!0,id:`gold-ore`,name:`Gold Ore`,type:itemType.ORE,value:500,spawnChance:GOLD_SPAWN_CHANCE}),{freeze:freeze$4}=Object,ironOre=freeze$4({description:`A piece of iron ore.`,doesPriceFluctuate:!0,id:`iron-ore`,name:`Iron Ore`,type:itemType.ORE,value:40,spawnChance:IRON_SPAWN_CHANCE}),{freeze:freeze$3}=Object,silverOre=freeze$3({description:`A piece of silver ore.`,doesPriceFluctuate:!0,id:`silver-ore`,name:`Silver Ore`,type:itemType.ORE,value:100,spawnChance:SILVER_SPAWN_CHANCE}),{freeze:freeze$2}=Object,stone=freeze$2({description:`A piece of rock.`,doesPriceFluctuate:!1,id:`stone`,name:`Stone`,spawnChance:STONE_SPAWN_CHANCE,type:itemType.STONE,value:10}),{freeze:freeze$1}=Object,saltRock=freeze$1({description:`A large chunk of salt.`,doesPriceFluctuate:!0,id:`salt-rock`,name:`Salt Rock`,spawnChance:SALT_ROCK_SPAWN_CHANCE,type:itemType.STONE,value:10}),items_exports=__exportAll({apple:()=>apple,appleSapling:()=>appleSapling,asparagus:()=>asparagus,asparagusSeed:()=>asparagusSeed,banana:()=>banana,bananaSapling:()=>bananaSapling,blueberry:()=>blueberry,blueberrySeed:()=>blueberrySeed,bronzeOre:()=>bronzeOre,carrot:()=>carrot,carrotSeed:()=>carrotSeed,chocolateMilk:()=>chocolateMilk,coal:()=>coal$1,corn:()=>corn,cornSeed:()=>cornSeed,cowFeed:()=>cowFeed$1,garlic:()=>garlic,garlicSeed:()=>garlicSeed,goldOre:()=>goldOre,grapeCabernetSauvignon:()=>grapeCabernetSauvignon,grapeChardonnay:()=>grapeChardonnay,grapeNebbiolo:()=>grapeNebbiolo,grapeSauvignonBlanc:()=>grapeSauvignonBlanc,grapeSeed:()=>grapeSeed,grapeTempranillo:()=>grapeTempranillo,huggingMachine:()=>huggingMachine,ironOre:()=>ironOre,jalapeno:()=>jalapeno,jalapenoSeed:()=>jalapenoSeed,milk1:()=>milk1,milk2:()=>milk2,milk3:()=>milk3,olive:()=>olive,oliveSeed:()=>oliveSeed,onion:()=>onion,onionSeed:()=>onionSeed,pea:()=>pea,peaSeed:()=>peaSeed,potato:()=>potato,potatoSeed:()=>potatoSeed,pumpkin:()=>pumpkin,pumpkinSeed:()=>pumpkinSeed,rainbowFertilizer:()=>rainbowFertilizer,rainbowMilk1:()=>rainbowMilk1,rainbowMilk2:()=>rainbowMilk2,rainbowMilk3:()=>rainbowMilk3,saltRock:()=>saltRock,scarecrow:()=>scarecrow,silverOre:()=>silverOre,soybean:()=>soybean,soybeanSeed:()=>soybeanSeed,spinach:()=>spinach,spinachSeed:()=>spinachSeed,sprinkler:()=>sprinkler,stone:()=>stone,strawberry:()=>strawberry,strawberrySeed:()=>strawberrySeed,sugarcane:()=>sugarcane,sugarcaneSeed:()=>sugarcaneSeed,sunflower:()=>sunflower,sunflowerSeed:()=>sunflowerSeed,sweetPotato:()=>sweetPotato,sweetPotatoSeed:()=>sweetPotatoSeed,tomato:()=>tomato,tomatoSeed:()=>tomatoSeed,watermelon:()=>watermelon,watermelonSeed:()=>watermelonSeed,weed:()=>weed,wheat:()=>wheat,wheatSeed:()=>wheatSeed,wood:()=>wood}),{freeze}=Object,{COW_FEED,FERTILIZER,HUGGING_MACHINE,MILK,SCARECROW,SPRINKLER,WEED:WEED$1,WOOD}=itemType,weed=freeze({id:`weed`,name:`Weed`,value:.1,doesPriceFluctuate:!1,type:WEED$1}),wood=freeze({description:`A sturdy piece of wood, chopped from a tree.`,doesPriceFluctuate:!1,id:`wood`,name:`Wood`,type:WOOD,value:10}),rainbowFertilizer=freeze({description:`Helps crops grow a little faster and automatically replants them upon harvesting. Consumes seeds upon replanting and disappears if none are available. Also works for Scarecrows.`,enablesFieldMode:fieldMode.FERTILIZE,id:`rainbow-fertilizer`,name:`Rainbow Fertilizer`,type:FERTILIZER,value:15}),sprinkler=freeze({description:`Automatically waters adjacent plants every day.`,enablesFieldMode:fieldMode.SET_SPRINKLER,hoveredPlotRangeSize:1,id:`sprinkler`,isReplantable:!0,name:`Sprinkler`,type:SPRINKLER,value:120}),scarecrow=freeze({description:`Prevents crows from eating your crops. One scarecrow covers an entire field, but they are afraid of storms.`,enablesFieldMode:fieldMode.SET_SCARECROW,hoveredPlotRangeSize:2**53-1,id:`scarecrow`,isReplantable:!0,name:`Scarecrow`,type:SCARECROW,value:160}),cowFeed$1=freeze({id:COW_FEED_ITEM_ID,description:`Each cow automatically consumes one unit of Cow Feed per day. Fed cows gain and maintain weight.`,name:`Cow Feed`,type:COW_FEED,value:5}),huggingMachine=freeze({id:HUGGING_MACHINE_ITEM_ID,description:`Automatically hugs one cow three times every day.`,name:`Hugging Machine`,type:HUGGING_MACHINE,value:500}),milk1=freeze({id:`milk-1`,name:`Grade C Milk`,type:MILK,value:40}),milk2=freeze({id:`milk-2`,name:`Grade B Milk`,type:MILK,value:80}),milk3=freeze({id:`milk-3`,name:`Grade A Milk`,type:MILK,value:120}),rainbowMilk1=freeze({id:`rainbow-milk-1`,name:`Grade C Rainbow Milk`,type:MILK,value:60}),rainbowMilk2=freeze({id:`rainbow-milk-2`,name:`Grade B Rainbow Milk`,type:MILK,value:120}),rainbowMilk3=freeze({id:`rainbow-milk-3`,name:`Grade A Rainbow Milk`,type:MILK,value:180}),chocolateMilk=freeze({id:`chocolate-milk`,name:`Chocolate Milk`,type:MILK,value:80}),itemsMap$2={...Object.keys(items_exports).reduce((e,t)=>{let n=items_exports[t];return e[n.id]=n,e},{})},recipes_exports=__exportAll({appleJuice:()=>appleJuice,applePie:()=>applePie,bananaBread:()=>bananaBread,bananaCreamPie:()=>bananaCreamPie,basicLightningRod:()=>basicLightningRod,bread:()=>bread,bronzeIngot:()=>bronzeIngot$1,burger:()=>burger,butter:()=>butter,carrotSoup:()=>carrotSoup,cheese:()=>cheese,chicknPotPie:()=>chicknPotPie,chocolate:()=>chocolate,chocolateSoyMilk:()=>chocolateSoyMilk,compost:()=>compost,fertilizer:()=>fertilizer,flour:()=>flour,frenchOnionSoup:()=>frenchOnionSoup,friedTofu:()=>friedTofu,garlicBread:()=>garlicBread,garlicFries:()=>garlicFries,goldIngot:()=>goldIngot$1,grapeSyrup:()=>grapeSyrup,hotSauce:()=>hotSauce,ironIngot:()=>ironIngot$1,jackolantern:()=>jackolantern,mulch:()=>mulch,oliveOil:()=>oliveOil,onionRings:()=>onionRings,popcorn:()=>popcorn,pumpkinPie:()=>pumpkinPie,rainbowCheese:()=>rainbowCheese,rainbowMulch:()=>rainbowMulch,salsa:()=>salsa,salt:()=>salt,silverIngot:()=>silverIngot$1,soyMilk:()=>soyMilk,spaghetti:()=>spaghetti,spicyAppleJam:()=>spicyAppleJam,spicyCheese:()=>spicyCheese,spicyPickledGarlic:()=>spicyPickledGarlic,strawberryJam:()=>strawberryJam,sugar:()=>sugar,summerSalad:()=>summerSalad,sunButter:()=>sunButter,superiorLightningRod:()=>superiorLightningRod,sweetPotatoFries:()=>sweetPotatoFries,sweetPotatoPie:()=>sweetPotatoPie,tofu:()=>tofu,ultimateLightningRod:()=>ultimateLightningRod,vegetableOil:()=>vegetableOil,wineCabernetSauvignon:()=>wineCabernetSauvignon,wineChardonnay:()=>wineChardonnay,wineNebbiolo:()=>wineNebbiolo,wineSauvignonBlanc:()=>wineSauvignonBlanc,wineTempranillo:()=>wineTempranillo,woodChips:()=>woodChips,yeast:()=>yeast}),itemsMap$1={...itemsMap$2},convertToRecipe=e=>{let t=Object.freeze({type:itemType.CRAFTED_ITEM,value:Object.keys(e.ingredients).reduce((t,n)=>t+RECIPE_INGREDIENT_VALUE_MULTIPLIER*itemsMap$1[n].value*e.ingredients[n],0),...e});return itemsMap$1[e.id]=t,t},salt=convertToRecipe({id:`salt`,name:`Salt`,ingredients:{[saltRock.id]:1},condition:e=>(e.itemsSold[saltRock.id]||0)>=30,description:`Useful for seasoning food and fermentation.`,recipeType:recipeType.KITCHEN}),flour=convertToRecipe({id:`flour`,name:`Flour`,ingredients:{[wheat.id]:10},condition:e=>(e.itemsSold[wheat.id]||0)>=20,recipeType:recipeType.KITCHEN}),sugar=convertToRecipe({id:`sugar`,name:`Sugar`,ingredients:{[sugarcane.id]:5},condition:e=>(e.itemsSold[sugarcane.id]||0)>=25,recipeType:recipeType.KITCHEN}),yeast=convertToRecipe({id:`yeast`,name:`Yeast`,ingredients:{[flour.id]:5},condition:e=>(e.itemsSold[flour.id]||0)>=25,recipeType:recipeType.KITCHEN}),getWineRecipeFromGrape=e=>({...convertToRecipe({id:e.wineId,name:`${grapeVarietyNameMap[e.variety]} Wine`,type:itemType.CRAFTED_ITEM,ingredients:{[e.id]:50,[yeast.id]:getYeastRequiredForWine(e.variety)},recipeType:recipeType.WINE,condition:()=>!1}),variety:e.variety}),bread=convertToRecipe({id:`bread`,name:`Bread`,ingredients:{[flour.id]:10,[yeast.id]:5},condition:e=>(e.itemsSold[flour.id]||0)>=30&&(e.itemsSold[yeast.id]||0)>=15,recipeType:recipeType.KITCHEN}),butter=convertToRecipe({id:`butter`,name:`Butter`,ingredients:{[milk3.id]:5},condition:e=>(e.itemsSold[milk3.id]||0)>=30,recipeType:recipeType.KITCHEN}),sunButter=convertToRecipe({id:`sun-butter`,name:`Sun Butter`,ingredients:{[sunflower.id]:25},condition:e=>(e.itemsSold[sunflower.id]||0)>=200,recipeType:recipeType.KITCHEN}),oliveOil=convertToRecipe({id:`olive-oil`,name:`Olive Oil`,ingredients:{[olive.id]:250},condition:e=>(e.itemsSold[olive.id]||0)>=500,recipeType:recipeType.KITCHEN}),cheese=convertToRecipe({id:`cheese`,name:`Cheese`,ingredients:{[milk3.id]:8},condition:e=>(e.itemsSold[milk3.id]||0)>=20,recipeType:recipeType.KITCHEN}),rainbowCheese=convertToRecipe({id:`rainbowCheese`,name:`Rainbow Cheese`,ingredients:{[rainbowMilk3.id]:10},condition:e=>(e.itemsSold[rainbowMilk3.id]||0)>=30,recipeType:recipeType.KITCHEN}),chocolate=convertToRecipe({id:`chocolate`,name:`Chocolate`,ingredients:{[chocolateMilk.id]:10},condition:e=>(e.itemsSold[chocolateMilk.id]||0)>=25,recipeType:recipeType.KITCHEN}),carrotSoup=convertToRecipe({id:`carrot-soup`,name:`Carrot Soup`,ingredients:{[carrot.id]:4},condition:e=>(e.itemsSold[carrot.id]||0)>=10,recipeType:recipeType.KITCHEN}),jackolantern=convertToRecipe({id:`jackolantern`,name:`Jack-o'-lantern`,ingredients:{[pumpkin.id]:1},condition:e=>(e.itemsSold[pumpkin.id]||0)>=50,recipeType:recipeType.KITCHEN}),spaghetti=convertToRecipe({id:`spaghetti`,name:`Spaghetti`,ingredients:{[wheat.id]:10,[tomato.id]:2},condition:e=>(e.itemsSold[wheat.id]||0)>=20&&(e.itemsSold[tomato.id]||0)>=5,recipeType:recipeType.KITCHEN}),frenchOnionSoup=convertToRecipe({id:`french-onion-soup`,name:`French Onion Soup`,ingredients:{[onion.id]:5,[cheese.id]:2,[salt.id]:2},condition:e=>(e.itemsSold[onion.id]||0)>=15&&(e.itemsSold[cheese.id]||0)>=10,recipeType:recipeType.KITCHEN}),burger=convertToRecipe({id:`burger`,name:`Burger`,ingredients:{[bread.id]:1,[cheese.id]:1,[onion.id]:1,[soybean.id]:12,[spinach.id]:1,[tomato.id]:1},condition:e=>(e.itemsSold[bread.id]||0)>=5&&(e.itemsSold[cheese.id]||0)>=5&&(e.itemsSold[onion.id]||0)>=5&&(e.itemsSold[soybean.id]||0)>=25&&(e.itemsSold[spinach.id]||0)>=5&&(e.itemsSold[tomato.id]||0)>=5,recipeType:recipeType.KITCHEN}),summerSalad=convertToRecipe({id:`summer-salad`,name:`Summer Salad`,ingredients:{[spinach.id]:6,[corn.id]:1,[carrot.id]:1},condition:e=>(e.itemsSold[spinach.id]||0)>=30&&(e.itemsSold[corn.id]||0)>5&&(e.itemsSold[carrot.id]||0)>5,recipeType:recipeType.KITCHEN}),soyMilk=convertToRecipe({id:`soy-milk`,name:`Soy Milk`,ingredients:{[soybean.id]:20},condition:e=>(e.itemsSold[soybean.id]||0)>=100,recipeType:recipeType.KITCHEN}),chocolateSoyMilk=convertToRecipe({id:`chocolate-soy-milk`,name:`Chocolate Soy Milk`,ingredients:{[soyMilk.id]:1,[chocolate.id]:1},condition:e=>(e.itemsSold[soyMilk.id]||0)>=5&&(e.itemsSold[chocolate.id]||0)>=5,recipeType:recipeType.KITCHEN}),tofu=convertToRecipe({id:`tofu`,name:`Tofu`,ingredients:{[soyMilk.id]:4},condition:e=>(e.itemsSold[soyMilk.id]||0)>=20,recipeType:recipeType.KITCHEN}),chicknPotPie=convertToRecipe({id:`chickn-pot-pie`,name:`Chick'n Pot Pie`,ingredients:{[tofu.id]:6,[pea.id]:10,[carrot.id]:8,[wheat.id]:12,[soyMilk.id]:3},condition:e=>(e.itemsSold[tofu.id]||0)>=30&&(e.itemsSold[pea.id]||0)>=225&&(e.itemsSold[carrot.id]||0)>=300&&(e.itemsSold[wheat.id]||0)>=425&&(e.itemsSold[soyMilk.id]||0)>=15,recipeType:recipeType.KITCHEN,isPie:!0}),hotSauce=convertToRecipe({id:`hot-sauce`,name:`Hot Sauce`,ingredients:{[jalapeno.id]:10,[salt.id]:1},condition:e=>(e.itemsSold[jalapeno.id]||0)>=50,recipeType:recipeType.KITCHEN}),salsa=convertToRecipe({id:`salsa`,name:`Salsa`,ingredients:{[jalapeno.id]:1,[onion.id]:1,[tomato.id]:1,[corn.id]:1},condition:e=>(e.itemsSold[jalapeno.id]||0)>=5&&(e.itemsSold[onion.id]||0)>=5&&(e.itemsSold[tomato.id]||0)>=5&&(e.itemsSold[corn.id]||0)>=5,recipeType:recipeType.KITCHEN}),spicyCheese=convertToRecipe({id:`spicy-cheese`,name:`Spicy Cheese`,ingredients:{[jalapeno.id]:4,[milk3.id]:10},condition:e=>(e.itemsSold[jalapeno.id]||0)>=20&&(e.itemsSold[milk3.id]||0)>=50,recipeType:recipeType.KITCHEN}),vegetableOil=convertToRecipe({id:`vegetable-oil`,name:`Vegetable Oil`,ingredients:{[soybean.id]:350},condition:e=>(e.itemsSold[soybean.id]||0)>=900,recipeType:recipeType.KITCHEN}),friedTofu=convertToRecipe({id:`fried-tofu`,name:`Deep Fried Tofu`,ingredients:{[tofu.id]:1,[vegetableOil.id]:2},condition:e=>(e.itemsSold[tofu.id]||0)>=50&&(e.itemsSold[vegetableOil.id]||0)>=50,recipeType:recipeType.KITCHEN}),spicyPickledGarlic=convertToRecipe({id:`spicy-pickled-garlic`,name:`Spicy Pickled Garlic`,ingredients:{[jalapeno.id]:2,[garlic.id]:5},condition:e=>(e.itemsSold[jalapeno.id]||0)>=12&&(e.itemsSold[garlic.id]||0)>=25,recipeType:recipeType.KITCHEN}),garlicFries=convertToRecipe({id:`garlic-fries`,name:`Garlic Fries`,ingredients:{[potato.id]:5,[garlic.id]:3,[vegetableOil.id]:1,[salt.id]:2},condition:e=>(e.itemsSold[potato.id]||0)>=50&&(e.itemsSold[garlic.id]||0)>=30,recipeType:recipeType.KITCHEN}),garlicBread=convertToRecipe({id:`garlic-bread`,name:`Garlic Bread`,ingredients:{[bread.id]:1,[garlic.id]:5,[oliveOil.id]:1},condition:e=>(e.itemsSold[bread.id]||0)>=30&&(e.itemsSold[oliveOil.id]||0)>=20&&(e.itemsSold[garlic.id]||0)>=50,recipeType:recipeType.KITCHEN}),strawberryJam=convertToRecipe({id:`strawberry-jam`,name:`Strawberry Jam`,ingredients:{[strawberry.id]:10},condition:e=>(e.itemsSold[strawberry.id]||0)>=60,recipeType:recipeType.KITCHEN}),spicyAppleJam=convertToRecipe({id:`spicy-apple-jam`,name:`Spicy Apple Jam`,ingredients:{[apple.id]:10,[jalapeno.id]:3},condition:e=>(e.itemsSold[apple.id]||0)>=60&&(e.itemsSold[jalapeno.id]||0)>=15,recipeType:recipeType.KITCHEN}),popcorn=convertToRecipe({id:`popcorn`,name:`Popcorn`,ingredients:{[corn.id]:2,[butter.id]:1},condition:e=>(e.itemsSold[corn.id]||0)>=12&&(e.itemsSold[butter.id]||0)>=6,recipeType:recipeType.KITCHEN}),pumpkinPie=convertToRecipe({id:`pumpkin-pie`,name:`Pumpkin Pie`,ingredients:{[pumpkin.id]:4,[wheat.id]:10,[butter.id]:2},condition:e=>(e.itemsSold[pumpkin.id]||0)>=200&&(e.itemsSold[wheat.id]||0)>=250&&(e.itemsSold[butter.id]||0)>=75,recipeType:recipeType.KITCHEN,isPie:!0}),applePie=convertToRecipe({id:`apple-pie`,name:`Apple Pie`,ingredients:{[apple.id]:4,[flour.id]:2,[butter.id]:2},condition:e=>(e.itemsSold[apple.id]||0)>=60&&(e.itemsSold[flour.id]||0)>=15&&(e.itemsSold[butter.id]||0)>=75,recipeType:recipeType.KITCHEN,isPie:!0}),appleJuice=convertToRecipe({id:`apple-juice`,name:`Apple Juice`,ingredients:{[apple.id]:6,[sugar.id]:2},condition:e=>(e.itemsSold[apple.id]||0)>=60&&(e.itemsSold[sugar.id]||0)>=10,recipeType:recipeType.KITCHEN}),grapeSyrup=convertToRecipe({id:`grape-syrup`,name:`Grape Syrup`,ingredients:{[grapeCabernetSauvignon.id]:8},condition:e=>(e.itemsSold[grapeCabernetSauvignon.id]||0)>=25,recipeType:recipeType.KITCHEN}),bananaBread=convertToRecipe({id:`banana-bread`,name:`Banana Bread`,ingredients:{[banana.id]:4,[flour.id]:3,[oliveOil.id]:1},condition:e=>(e.itemsSold[banana.id]||0)>=60&&(e.itemsSold[flour.id]||0)>=20&&(e.itemsSold[oliveOil.id]||0)>=20,recipeType:recipeType.KITCHEN}),bananaCreamPie=convertToRecipe({id:`banana-cream-pie`,name:`Banana Cream Pie`,ingredients:{[banana.id]:4,[flour.id]:2,[butter.id]:2,[sugar.id]:2,[milk3.id]:5},condition:e=>(e.itemsSold[banana.id]||0)>=60&&(e.itemsSold[flour.id]||0)>=15&&(e.itemsSold[butter.id]||0)>=75&&(e.itemsSold[sugar.id]||0)>=10&&(e.itemsSold[milk3.id]||0)>=30,recipeType:recipeType.KITCHEN}),sweetPotatoPie=convertToRecipe({id:`sweet-potato-pie`,name:`Sweet Potato Pie`,ingredients:{[sweetPotato.id]:6,[wheat.id]:10,[butter.id]:2},condition:e=>(e.itemsSold[sweetPotato.id]||0)>=200&&(e.itemsSold[wheat.id]||0)>=250&&(e.itemsSold[butter.id]||0)>=75,recipeType:recipeType.KITCHEN,isPie:!0}),sweetPotatoFries=convertToRecipe({id:`sweet-potato-fries`,name:`Sweet Potato Fries`,ingredients:{[sweetPotato.id]:10,[vegetableOil.id]:1,[salt.id]:1},condition:e=>(e.itemsSold[sweetPotato.id]||0)>=100,recipeType:recipeType.KITCHEN}),onionRings=convertToRecipe({id:`onion-rings`,name:`Onion Rings`,ingredients:{[onion.id]:1,[vegetableOil.id]:1,[wheat.id]:5,[soyMilk.id]:1,[salt.id]:3},condition:e=>(e.itemsSold[onion.id]||0)>=50&&(e.itemsSold[vegetableOil.id]||0)>20&&(e.itemsSold[soyMilk.id]||0)>20&&(e.itemsSold[wheat.id]||0)>30,recipeType:recipeType.KITCHEN}),bronzeIngot$1=convertToRecipe({id:`bronze-ingot`,name:`Bronze Ingot`,ingredients:{[bronzeOre.id]:5,[coal$1.id]:5},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[bronzeOre.id]||0)>=50,recipeType:recipeType.FORGE}),ironIngot$1=convertToRecipe({id:`iron-ingot`,name:`Iron Ingot`,ingredients:{[ironOre.id]:5,[coal$1.id]:12},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[ironOre.id]||0)>=50,recipeType:recipeType.FORGE}),silverIngot$1=convertToRecipe({id:`silver-ingot`,name:`Silver Ingot`,ingredients:{[silverOre.id]:5,[coal$1.id]:8},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[silverOre.id]||0)>=50,recipeType:recipeType.FORGE}),goldIngot$1=convertToRecipe({id:`gold-ingot`,name:`Gold Ingot`,ingredients:{[goldOre.id]:5,[coal$1.id]:10},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[goldOre.id]||0)>=50,recipeType:recipeType.FORGE}),basicLightningRod=convertToRecipe({id:`basic-lightning-rod`,name:`Basic Lightning Rod`,type:itemType.LIGHTNING_ROD,description:`Place in the field to protect it from lightning during storms. Can withstand 10 strikes before being destroyed.`,enablesFieldMode:fieldMode.SET_LIGHTNING_ROD,hoveredPlotRangeSize:2**53-1,lightningStrikeCapacity:10,destructionYield:{itemId:ironOre.id,quantity:4},ingredients:{[ironIngot$1.id]:5},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[ironIngot$1.id]||0)>=10,recipeType:recipeType.FORGE}),superiorLightningRod=convertToRecipe({id:`superior-lightning-rod`,name:`Superior Lightning Rod`,type:itemType.LIGHTNING_ROD,description:`Place in the field to protect it from lightning during storms. Can withstand 25 strikes before being destroyed.`,enablesFieldMode:fieldMode.SET_LIGHTNING_ROD,hoveredPlotRangeSize:2**53-1,lightningStrikeCapacity:25,destructionYield:{itemId:silverOre.id,quantity:4},ingredients:{[ironIngot$1.id]:4,[silverIngot$1.id]:3},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[silverIngot$1.id]||0)>=10,recipeType:recipeType.FORGE}),ultimateLightningRod=convertToRecipe({id:`ultimate-lightning-rod`,name:`Ultimate Lightning Rod`,type:itemType.LIGHTNING_ROD,description:`Place in the field to protect it from lightning during storms. Can withstand 100 strikes before being destroyed.`,enablesFieldMode:fieldMode.SET_LIGHTNING_ROD,hoveredPlotRangeSize:2**53-1,lightningStrikeCapacity:100,destructionYield:{itemId:goldOre.id,quantity:4},ingredients:{[ironIngot$1.id]:4,[goldIngot$1.id]:3},condition:e=>e.purchasedSmelter>0&&(e.itemsSold[goldIngot$1.id]||0)>=10,recipeType:recipeType.FORGE}),compost=convertToRecipe({id:`compost`,name:`Compost`,ingredients:{[weed.id]:10},condition:e=>e.purchasedComposter>0&&(e.itemsSold[weed.id]||0)>=100,description:`Can be used to make fertilizer.`,recipeType:recipeType.RECYCLING,type:itemType.CRAFTED_ITEM}),fertilizer=convertToRecipe({id:`fertilizer`,name:`Fertilizer`,ingredients:{[compost.id]:3},condition:e=>e.purchasedComposter>0&&(e.itemsSold[compost.id]||0)>=10,description:`Helps crops grow and mature a little faster.`,enablesFieldMode:fieldMode.FERTILIZE,recipeType:recipeType.RECYCLING,type:itemType.FERTILIZER,value:25}),woodChips=convertToRecipe({id:`wood-chips`,name:`Wood Chips`,ingredients:{[wood.id]:1},condition:e=>e.purchasedWoodChipper>0&&(e.itemsSold[wood.id]||0)>=20,description:`Chipped wood, useful for making mulch.`,recipeType:recipeType.WOOD_CHIPPER,type:itemType.CRAFTED_ITEM}),mulch=convertToRecipe({id:`mulch`,name:`Mulch`,ingredients:{[woodChips.id]:3,[compost.id]:1},condition:e=>e.purchasedWoodChipper>0&&(e.itemsSold[woodChips.id]||0)>=10,description:`Helps trees grow a little faster.`,enablesFieldMode:fieldMode.FERTILIZE,recipeType:recipeType.WOOD_CHIPPER,type:itemType.MULCH,value:50}),rainbowMulch=convertToRecipe({id:`rainbow-mulch`,name:`Rainbow Mulch`,ingredients:{[woodChips.id]:3,[rainbowFertilizer.id]:1},condition:e=>e.purchasedWoodChipper>0&&(e.itemsSold[woodChips.id]||0)>=10&&e.hasProducedRainbowFertilizer,description:`Helps trees grow a little faster and speeds up fruit regrowth too.`,enablesFieldMode:fieldMode.FERTILIZE,recipeType:recipeType.WOOD_CHIPPER,type:itemType.MULCH}),wineChardonnay=getWineRecipeFromGrape({...grapeChardonnay}),wineSauvignonBlanc=getWineRecipeFromGrape({...grapeSauvignonBlanc}),wineCabernetSauvignon=getWineRecipeFromGrape({...grapeCabernetSauvignon}),wineTempranillo=getWineRecipeFromGrape({...grapeTempranillo}),wineNebbiolo=getWineRecipeFromGrape({...grapeNebbiolo}),coalNeededForIngots=(e,t=1)=>{switch(e){case bronzeIngot$1.id:return t*2;case ironIngot$1.id:return Math.round(t*3.5);case silverIngot$1.id:return Math.round(t*2.5);case goldIngot$1.id:return t*3;default:return t}},{bronzeIngot,ironIngot,silverIngot,goldIngot}=recipes_exports,{coal}=items_exports,upgrades={[toolType.HOE]:{[toolLevel.DEFAULT]:{id:`hoe-default`,name:`Basic Hoe`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`hoe-bronze`,description:`Gives 25% chance to retrieve seeds when digging up crops`,name:`Bronze Hoe`,ingredients:{[bronzeIngot.id]:8,[coal.id]:coalNeededForIngots(bronzeIngot.id,8)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`hoe-iron`,description:`Gives 50% chance to retrieve seeds when digging up crops`,name:`Iron Hoe`,ingredients:{[ironIngot.id]:8,[coal.id]:coalNeededForIngots(ironIngot.id,8)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`hoe-silver`,description:`Gives 75% chance to retrieve seeds when digging up crops`,name:`Silver Hoe`,ingredients:{[silverIngot.id]:8,[coal.id]:coalNeededForIngots(silverIngot.id,8)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`hoe-gold`,description:`Gives 100% chance to retrieve seeds when digging up crops`,name:`Gold Hoe`,ingredients:{[goldIngot.id]:8,[coal.id]:coalNeededForIngots(goldIngot.id,8)},isMaxLevel:!0}},[toolType.SCYTHE]:{[toolLevel.DEFAULT]:{id:`scythe-default`,name:`Basic Scythe`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`scythe-bronze`,description:`Increases crop yield by 1 when harvesting`,name:`Bronze Scythe`,ingredients:{[bronzeIngot.id]:10,[coal.id]:coalNeededForIngots(bronzeIngot.id,10)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`scythe-iron`,description:`Increases crop yield by 2 when harvesting`,name:`Iron Scythe`,ingredients:{[ironIngot.id]:10,[coal.id]:coalNeededForIngots(ironIngot.id,10)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`scythe-silver`,description:`Increases crop yield by 3 when harvesting`,name:`Silver Scythe`,ingredients:{[silverIngot.id]:10,[coal.id]:coalNeededForIngots(silverIngot.id,10)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`scythe-gold`,description:`Increases crop yield by 4 when harvesting`,name:`Gold Scythe`,ingredients:{[goldIngot.id]:10,[coal.id]:coalNeededForIngots(goldIngot.id,10)},isMaxLevel:!0}},[toolType.SHOVEL]:{[toolLevel.DEFAULT]:{id:`shovel-default`,name:`Basic Shovel`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`shovel-bronze`,description:`Increases chance of finding ore`,name:`Bronze Shovel`,ingredients:{[bronzeIngot.id]:15,[coal.id]:coalNeededForIngots(bronzeIngot.id,15)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`shovel-iron`,description:`Increases chance of finding ore`,name:`Iron Shovel`,ingredients:{[ironIngot.id]:15,[coal.id]:coalNeededForIngots(ironIngot.id,15)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`shovel-silver`,description:`Increases chance of finding ore`,name:`Silver Shovel`,ingredients:{[silverIngot.id]:15,[coal.id]:coalNeededForIngots(silverIngot.id,15)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`shovel-gold`,description:`Increases chance of finding ore`,name:`Gold Shovel`,ingredients:{[goldIngot.id]:15,[coal.id]:coalNeededForIngots(goldIngot.id,15)},isMaxLevel:!0}},[toolType.AXE]:{[toolLevel.DEFAULT]:{id:`axe-default`,name:`Basic Axe`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`axe-bronze`,description:`Increases wood yield when chopping down trees`,name:`Bronze Axe`,ingredients:{[bronzeIngot.id]:12,[coal.id]:coalNeededForIngots(bronzeIngot.id,12)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`axe-iron`,description:`Increases wood yield when chopping down trees`,name:`Iron Axe`,ingredients:{[ironIngot.id]:12,[coal.id]:coalNeededForIngots(ironIngot.id,12)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`axe-silver`,description:`Increases wood yield when chopping down trees`,name:`Silver Axe`,ingredients:{[silverIngot.id]:12,[coal.id]:coalNeededForIngots(silverIngot.id,12)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`axe-gold`,description:`Increases wood yield when chopping down trees`,name:`Gold Axe`,ingredients:{[goldIngot.id]:12,[coal.id]:coalNeededForIngots(goldIngot.id,12)},isMaxLevel:!0}},[toolType.PICKER_POLE]:{[toolLevel.DEFAULT]:{id:`picker-pole-default`,name:`Basic Picker Pole`,nextLevel:toolLevel.BRONZE},[toolLevel.BRONZE]:{id:`picker-pole-bronze`,description:`Picks 2 fruit per harvest`,name:`Bronze Picker Pole`,ingredients:{[bronzeIngot.id]:12,[coal.id]:coalNeededForIngots(bronzeIngot.id,12)},nextLevel:toolLevel.IRON},[toolLevel.IRON]:{id:`picker-pole-iron`,description:`Picks 3 fruit per harvest`,name:`Iron Picker Pole`,ingredients:{[ironIngot.id]:12,[coal.id]:coalNeededForIngots(ironIngot.id,12)},nextLevel:toolLevel.SILVER},[toolLevel.SILVER]:{id:`picker-pole-silver`,description:`Picks 4 fruit per harvest`,name:`Silver Picker Pole`,ingredients:{[silverIngot.id]:12,[coal.id]:coalNeededForIngots(silverIngot.id,12)},nextLevel:toolLevel.GOLD},[toolLevel.GOLD]:{id:`picker-pole-gold`,description:`Picks 5 fruit per harvest`,name:`Gold Picker Pole`,ingredients:{[goldIngot.id]:12,[coal.id]:coalNeededForIngots(goldIngot.id,12)},isMaxLevel:!0}}};for(let e in upgrades){let t=upgrades[e];for(let n in t)Object.assign(t[n],{toolType:e,value:0,doesPriceFluctuate:!1,type:itemType.TOOL_UPGRADE,level:n})}var{ASPARAGUS,BLUEBERRY,CARROT,CORN,GARLIC,GRAPE,JALAPENO,OLIVE,ONION,PEA,POTATO,PUMPKIN,SOYBEAN,SPINACH,SUNFLOWER,STRAWBERRY,SUGARCANE,SWEET_POTATO,TOMATO,WATERMELON,WHEAT,WEED}=cropType,recipeCategories={[recipeType.KITCHEN]:{},[recipeType.FORGE]:{},[recipeType.FERMENTATION]:{},[recipeType.RECYCLING]:{},[recipeType.WINE]:{},[recipeType.WOOD_CHIPPER]:{}},recipesMap={};for(let e of Object.keys(recipes_exports)){let t=recipes_exports[e];recipeCategories[t.recipeType][t.id]=t,recipesMap[t.id]=t}var upgradesMap={};for(let e of Object.keys(upgrades))for(let t of Object.values(upgrades[e]))upgradesMap[t.id]=t;var itemsMap={...itemsMap$2,...recipesMap,...upgradesMap},fermentableItemsMap=Object.fromEntries(Object.entries(itemsMap).filter(([e])=>`daysToFerment`in itemsMap[e])),cropItemIdToSeedItemMap=Object.entries(itemsMap$2).reduce((e,[t,n])=>{let{growsInto:a}=n;if(a){let n=Array.isArray(a)?a:[a];for(let a of n)e[a]=itemsMap$2[t]}return e},{}),cropTypeToIdMap={[ASPARAGUS]:`asparagus`,[BLUEBERRY]:`blueberry`,[CARROT]:`carrot`,[CORN]:`corn`,[GARLIC]:`garlic`,[GRAPE]:grapeSeed.growsInto,[JALAPENO]:`jalapeno`,[OLIVE]:`olive`,[ONION]:`onion`,[PEA]:`pea`,[POTATO]:`potato`,[PUMPKIN]:`pumpkin`,[SOYBEAN]:`soybean`,[SPINACH]:`spinach`,[STRAWBERRY]:`strawberry`,[SUGARCANE]:`sugarcane`,[SUNFLOWER]:`sunflower`,[SWEET_POTATO]:`sweet-potato`,[TOMATO]:`tomato`,[WATERMELON]:`watermelon`,[WHEAT]:`wheat`,[WEED]:`weed`},{SEED:SEED$6,GROWING:GROWING$3,GROWN:GROWN$14}=cropLifeStage,getLifeStageRange=memoize(e=>{let t=Array(e[0]).fill(SEED$6);return t=t.concat(e.slice(1).reduce((e,t)=>e.concat(Array(t).fill(GROWING$3)),[])),t},{}),{GROWN:GROWN$13}=cropLifeStage,getLifeStageForTimeline=(e,t)=>getLifeStageRange(e)[Math.floor(t)]||GROWN$13,{GROWN:GROWN$12,DEAD:DEAD$3}=treeLifeStage,getTreeLifeStage=e=>{let{itemId:t,daysOld:n=0,daysGrown:a=n}=e,o=itemsMap[t];if(!o)throw Error(`${t} is not a valid item`);let{treeTimeline:s}=o;if(!s)throw Error(`${t} has no treeTimeline`);let l=getLifeStageForTimeline(s,a),u=e.lifespan??o.lifespan;return l!==GROWN$12||u===void 0?l:n>=s.reduce((e,t)=>e+t,0)+u?DEAD$3:GROWN$12},VIEW_QUERY_PARAM_NAME=`view`,splitHash=()=>{let e=import_window.default.location.hash.replace(/^#/,``),t=e.indexOf(`?`);return t===-1?{path:e,query:``}:{path:e.slice(0,t),query:e.slice(t+1)}},writeHashQueryParams=(e,t=`replace`)=>{let{path:n}=splitHash(),a=e.toString(),o=`${n}${a?`?${a}`:``}`,{origin:s,pathname:l,search:u}=import_window.default.location,d=`${s}${l}${u}#${o}`;t===`push`?import_window.default.history.pushState({},``,d):import_window.default.history.replaceState({},``,d)},getHashQueryParams=()=>new URLSearchParams(splitHash().query),setHashQueryParam=(e,t,n=`replace`)=>{let a=getHashQueryParams();a.set(e,t),writeHashQueryParams(a,n)},removeHashQueryParam=(e,t=`replace`)=>{let n=getHashQueryParams();n.delete(e),writeHashQueryParams(n,t)},withCurrentHashQuery=e=>{let t=getHashQueryParams().toString();return t?`${e}?${t}`:e},isPlantedTree=e=>!!(e&&`itemId`in e),moneyTotal=(...e)=>e.reduce((e,t)=>e+=Math.round(t*100),0)/100,assignPersistedKey=(e,t,n)=>{let a=t[n];a!==void 0&&(e[n]=a)},reduceByPersistedKeys=e=>PERSISTED_STATE_KEYS.reduce((t,n)=>(assignPersistedKey(t,e,n),t),{}),isItemAGrownCrop=e=>e.type===itemType.CROP&&!e.growsInto,isItemAGrownFruit=e=>e.type===itemType.TREE&&!e.isPlantableTree,FARM_PRODUCT_TYPES=[itemType.CRAFTED_ITEM,itemType.FUEL,itemType.MILK,itemType.ORE,itemType.STONE],isItemAFarmProduct=e=>!!(isItemAGrownCrop(e)||isItemAGrownFruit(e)||FARM_PRODUCT_TYPES.includes(e.type)),farmProductsSold=memoize(e=>Object.entries(e).reduce((e,[t,n])=>e+(isItemAFarmProduct(itemsMap[t])&&n||0),0)),levels=[];levels[1]={unlocksShopItem:carrotSeed.id},levels[2]={unlocksShopItem:spinachSeed.id},levels[3]={unlocksShopItem:fertilizer.id},levels[4]={unlocksShopItem:pumpkinSeed.id},levels[5]={unlocksShopItem:sprinkler.id},levels[6]={unlocksTool:[toolType.SHOVEL]},levels[8]={increasesSprinklerRange:!0},levels[10]={unlocksShopItem:cornSeed.id},levels[12]={increasesSprinklerRange:!0},levels[14]={unlocksShopItem:potatoSeed.id},levels[15]={unlocksStageFocusType:stageFocusType.FOREST,unlocksShopItem:appleSapling.id,unlocksTool:[toolType.AXE,toolType.PICKER_POLE]},levels[16]={unlocksShopItem:onionSeed.id},levels[17]={unlocksShopItem:mulch.id},levels[18]={unlocksShopItem:soybeanSeed.id},levels[20]={unlocksShopItem:wheatSeed.id},levels[21]={unlocksShopItem:bananaSapling.id},levels[22]={unlocksShopItem:tomatoSeed.id},levels[24]={unlocksShopItem:asparagusSeed.id},levels[26]={unlocksShopItem:jalapenoSeed.id},levels[28]={unlocksShopItem:watermelonSeed.id},levels[30]={unlocksShopItem:peaSeed.id},levels[32]={unlocksShopItem:strawberrySeed.id},levels[34]={unlocksShopItem:garlicSeed.id},levels[36]={unlocksShopItem:sweetPotatoSeed.id},levels[38]={unlocksShopItem:oliveSeed.id},levels[40]={unlocksShopItem:sunflowerSeed.id},levels[42]={unlocksShopItem:grapeSeed.id},levels[44]={unlocksShopItem:sugarcaneSeed.id},levels[46]={unlocksShopItem:blueberrySeed.id};for(let e=0;e<levels.length;e++)levels[e]={id:e,...levels[e]};Object.freeze(levels);var unlockableItems=levels.reduce((e,{id:t,unlocksShopItem:n})=>(n&&t!==void 0&&(e[n]=t),e),{}),itemUnlockLevels=Object.entries(unlockableItems).reduce((e,[t,n])=>(e[String(n)]=t,e),{}),getLevelEntitlements=memoize(e=>{let t={sprinklerRange:1,items:{},tools:{},stageFocusType:{}};return levels.find(({unlocksShopItem:n,unlocksStageFocusType:a,unlocksTool:o,id:s,increasesSprinklerRange:l})=>{if(l&&t.sprinklerRange++,n&&(t.items[n]=!0),o)for(let e of o)t.tools[e]=!0;return a&&(t.stageFocusType[a]=!0),s===e}),t});function levelAchieved(e=0){return Math.floor(Math.sqrt(e)/10)+1}var transformStateDataForImport=e=>{let t={...e};[`version`].forEach(e=>delete t[e]),t.experience===0&&(t.experience=farmProductsSold(t.itemsSold||{})),t.showHomeScreen===!1&&t.stageFocus===stageFocusType.HOME&&(t={...t,stageFocus:STANDARD_VIEW_LIST[0]});{let{cowId1:e,cowId2:n}=t.cowBreedingPen,a=t.cowInventory.reduce((e,t)=>(e[t.id]=t,e),{});[e,n].some(e=>e&&!(e in a))&&(t.cowBreedingPen={cowId1:null,cowId2:null,daysUntilBirth:-1})}t.id&&(t.playerId=t.id,delete t.id);for(let e of[toolType.AXE,toolType.PICKER_POLE])if(t.toolLevels&&!t.toolLevels[e]){let n=!!getLevelEntitlements(levelAchieved(t.experience??0)).tools[e];t.toolLevels={...t.toolLevels,[e]:n?toolLevel.DEFAULT:toolLevel.UNAVAILABLE}}return t},require_alea=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=l();t.next=function(){var e=2091639*t.s0+t.c*23283064365386963e-26;return t.s0=t.s1,t.s1=t.s2,t.s2=e-(t.c=e|0)},t.c=1,t.s0=n(` `),t.s1=n(` `),t.s2=n(` `),t.s0-=n(e),t.s0<0&&(t.s0+=1),t.s1-=n(e),t.s1<0&&(t.s1+=1),t.s2-=n(e),t.s2<0&&(t.s2+=1),n=null}function o(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function s(e,t){var n=new a(e),s=t&&t.state,l=n.next;return l.int32=function(){return n.next()*4294967296|0},l.double=function(){return l()+(l()*2097152|0)*11102230246251565e-32},l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}function l(){var e=4022871197;return function(t){t=String(t);for(var n=0;n<t.length;n++){e+=t.charCodeAt(n);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26}}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.alea=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xor128=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=``;t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(e|0)?t.x=e:n+=e;for(var a=0;a<n.length+64;a++)t.x^=n.charCodeAt(a)|0,t.next()}function o(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function s(e,t){var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xor128=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xorwow=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=``;t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^(e^e<<1))|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(e|0)?t.x=e:n+=e;for(var a=0;a<n.length+64;a++)t.x^=n.charCodeAt(a)|0,a==n.length&&(t.d=t.x<<10^t.x>>>4),t.next()}function o(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function s(e,t){var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xorwow=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xorshift7=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this;t.next=function(){var e=t.x,n=t.i,a=e[n],o;return a^=a>>>7,o=a^a<<24,a=e[n+1&7],o^=a^a>>>10,a=e[n+3&7],o^=a^a>>>3,a=e[n+4&7],o^=a^a<<7,a=e[n+7&7],a^=a<<13,o^=a^a<<9,e[n]=o,t.i=n+1&7,o};function n(e,t){var n,a=[];if(t===(t|0))a[0]=t;else for(t=``+t,n=0;n<t.length;++n)a[n&7]=a[n&7]<<15^t.charCodeAt(n)+a[n+1&7]<<13;for(;a.length<8;)a.push(0);for(n=0;n<8&&a[n]===0;++n);for(n==8?a[7]=-1:a[n],e.x=a,e.i=0,n=256;n>0;--n)e.next()}n(t,e)}function o(e,t){return t.x=e.x.slice(),t.i=e.i,t}function s(e,t){e??=+new Date;var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(s.x&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xorshift7=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_xor4096=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this;t.next=function(){var e=t.w,n=t.X,a=t.i,o,s;return t.w=e=e+1640531527|0,s=n[a+34&127],o=n[a=a+1&127],s^=s<<13,o^=o<<17,s^=s>>>15,o^=o>>>12,s=n[a]=s^o,t.i=a,s+(e^e>>>16)|0};function n(e,t){var n,a,o,s,l,u=[],d=128;for(t===(t|0)?(a=t,t=null):(t+=`\0`,a=0,d=Math.max(d,t.length)),o=0,s=-32;s<d;++s)t&&(a^=t.charCodeAt((s+32)%t.length)),s===0&&(l=a),a^=a<<10,a^=a>>>15,a^=a<<4,a^=a>>>13,s>=0&&(l=l+1640531527|0,n=u[s&127]^=a+l,o=n==0?o+1:0);for(o>=128&&(u[(t&&t.length||0)&127]=-1),o=127,s=512;s>0;--s)a=u[o+34&127],n=u[o=o+1&127],a^=a<<13,n^=n<<17,a^=a>>>15,n^=n>>>12,u[o]=a^n;e.w=l,e.X=u,e.i=o}n(t,e)}function o(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function s(e,t){e??=+new Date;var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(s.X&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.xor4096=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require_tychei=__commonJSMin(((e,t)=>{(function(e,t,n){function a(e){var t=this,n=``;t.next=function(){var e=t.b,n=t.c,a=t.d,o=t.a;return e=e<<25^e>>>7^n,n=n-a|0,a=a<<24^a>>>8^o,o=o-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-a|0,t.d=a<<16^n>>>16^o,t.a=o-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=e|0):n+=e;for(var a=0;a<n.length+20;a++)t.b^=n.charCodeAt(a)|0,t.next()}function o(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function s(e,t){var n=new a(e),s=t&&t.state,l=function(){return(n.next()>>>0)/4294967296};return l.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},l.int32=n.next,l.quick=l,s&&(typeof s==`object`&&o(s,n),l.state=function(){return o(n,{})}),l}t&&t.exports?t.exports=s:n&&n.amd?n(function(){return s}):this.tychei=s})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),require___vite_browser_external=__commonJSMin(((e,t)=>{t.exports={}})),require_seedrandom$1=__commonJSMin(((e,t)=>{(function(e,n,a){var o=256,s=6,l=52,u=`random`,d=a.pow(o,s),f=a.pow(2,l),m=f*2,h=o-1,v;function y(e,t,l){var h=[];t=t==1?{entropy:!0}:t||{};var v=C(S(t.entropy?[e,E(n)]:e??T(),3),h),y=new b(h),D=function(){for(var e=y.g(s),t=d,n=0;e<f;)e=(e+n)*o,t*=o,n=y.g(1);for(;e>=m;)e/=2,t/=2,n>>>=1;return(e+n)/t};return D.int32=function(){return y.g(4)|0},D.quick=function(){return y.g(4)/4294967296},D.double=D,C(E(y.S),n),(t.pass||l||function(e,t,n,o){return o&&(o.S&&x(o,y),e.state=function(){return x(y,{})}),n?(a[u]=e,t):e})(D,v,`global`in t?t.global:this==a,t.state)}function b(e){var t,n=e.length,a=this,s=0,l=a.i=a.j=0,u=a.S=[];for(n||(e=[n++]);s<o;)u[s]=s++;for(s=0;s<o;s++)u[s]=u[l=h&l+e[s%n]+(t=u[s])],u[l]=t;(a.g=function(e){for(var t,n=0,s=a.i,l=a.j,u=a.S;e--;)t=u[s=h&s+1],n=n*o+u[h&(u[s]=u[l=h&l+t])+(u[l]=t)];return a.i=s,a.j=l,n})(o)}function x(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function S(e,t){var n=[],a=typeof e,o;if(t&&a==`object`)for(o in e)try{n.push(S(e[o],t-1))}catch{}return n.length?n:a==`string`?e:e+`\0`}function C(e,t){for(var n=e+``,a,o=0;o<n.length;)t[h&o]=h&(a^=t[h&o]*19)+n.charCodeAt(o++);return E(t)}function T(){try{var t;return v&&(t=v.randomBytes)?t=t(o):(t=new Uint8Array(o),(e.crypto||e.msCrypto).getRandomValues(t)),E(t)}catch{var a=e.navigator,s=a&&a.plugins;return[+new Date,e,s,e.screen,E(n)]}}function E(e){return String.fromCharCode.apply(0,e)}if(C(a.random(),n),typeof t==`object`&&t.exports){t.exports=y;try{v=require___vite_browser_external()}catch{}}else typeof define==`function`&&define.amd?define(function(){return y}):a[`seed`+u]=y})(typeof self<`u`?self:e,[],Math)})),require_seedrandom=__commonJSMin(((e,t)=>{var n=require_alea(),a=require_xor128(),o=require_xorwow(),s=require_xorshift7(),l=require_xor4096(),u=require_tychei(),d=require_seedrandom$1();d.alea=n,d.xor128=a,d.xorwow=o,d.xorshift7=s,d.xor4096=l,d.tychei=u,t.exports=d})),import_seedrandom=__toESM(require_seedrandom()),RandomNumberService=class{seededRandom=null;constructor(){let e=new URLSearchParams(import_window.default.location?.search).get(`seed`);e&&this.seedRandomNumber(e)}seedRandomNumber(e){this.seededRandom=(0,import_seedrandom.default)(e)}generateRandomNumber(){return this.seededRandom?this.seededRandom():Math.random()}unseedRandomNumber(){this.seededRandom=null}isRandomNumberLessThan(e){return this.generateRandomNumber()<=e}},randomNumberService=new RandomNumberService,addCowToInventory=(e,t)=>{let{cowInventory:n}=e;return{...e,cowInventory:[...n,t]}},random$1=()=>randomNumberService.generateRandomNumber(),generateValueAdjustments=(e={},t={})=>Object.keys(itemsMap).reduce((n,a)=>(itemsMap[a].doesPriceFluctuate&&(e[a]?n[a]=.5:t[a]?n[a]=1.5:n[a]=random$1()+.5),n),{}),chooseRandomIndex=e=>Math.round(random$1()*(e.length-1)),chooseRandom=e=>e[chooseRandomIndex(e)],filterItemIdsToSeeds=e=>e.filter(e=>itemsMap[e]?.type===itemType.CROP),getRandomLevelUpReward=e=>itemsMap[chooseRandom(filterItemIdsToSeeds(Object.keys(getLevelEntitlements(e).items)))],getRandomLevelUpRewardQuantity=e=>e*10,INVALID_AMOUNT_MESSAGE=`Amount is invalid.`,INVALID_SCALE_MESSAGE=`Scale is invalid.`,NON_DECIMAL_CURRENCY_MESSAGE=`Currency is not decimal.`;function assert(e,t){if(!e)throw Error(`[Dinero.js] ${t}`)}function createDinero({calculator:e,onCreate:t,formatter:n={toNumber:Number,toString:String}}){return function a({amount:o,currency:{code:s,base:l,exponent:u},scale:d=u}){let f={code:s,base:l,exponent:u};return t?.({amount:o,currency:f,scale:d}),{calculator:e,formatter:n,create:a,toJSON(){return{amount:o,currency:f,scale:d}}}}}var DineroComparisonOperator=function(e){return e[e.LT=-1]=`LT`,e[e.EQ=0]=`EQ`,e[e.GT=1]=`GT`,e}({});function equal$2(e){return(t,n)=>e.compare(t,n)===DineroComparisonOperator.EQ}function lessThan$1(e){return(t,n)=>e.compare(t,n)===DineroComparisonOperator.LT}function absolute(e){let t=equal$2(e),n=lessThan$1(e),a=e.zero();return o=>{if(t(o,a))return a;if(n(o,a)){let t=e.decrement(a);return e.multiply(t,o)}return o}}function isArray(e){return Array.isArray(e)}function computeBase(e){return t=>isArray(t)?t.reduce((t,n)=>e.multiply(t,n)):t}function getDivisors(e){let{multiply:t}=e;return e=>e.reduce((n,a,o)=>{let s=e.slice(o).reduce((e,n)=>t(e,n));return[...n,s]},[])}function toUnits$1(e){let t=getDivisors(e);return function(...[n,a]){let{amount:o,currency:s,scale:l}=n.toJSON(),{power:u,integerDivide:d,modulo:f}=e,m=t((isArray(s.base)?s.base:[s.base]).map(e=>u(e,l))).reduce((e,t,n)=>{let a=e[n],o=d(a,t),s=f(a,t);return[...e.filter((e,t)=>t!==n),o,s]},[o]);return a?a({value:m,currency:s}):m}}function toDecimal$1(e){let t=toUnits$1(e),n=computeBase(e),a=equal$2(e);return function(...[o,s]){let{currency:l,scale:u}=o.toJSON(),d=n(l.base),f=e.zero(),m=Array(10).fill(null).reduce(e.increment,f),h=isArray(l.base),v=a(e.modulo(d,m),f);assert(!h&&v,NON_DECIMAL_CURRENCY_MESSAGE);let y=t(o),b=getDecimal(e,o.formatter)(y,u);return s?s({value:b,currency:l}):b}}function getDecimal(e,t){let n=absolute(e),a=equal$2(e),o=lessThan$1(e),s=e.zero();return(e,l)=>{let u=t.toString(e[0]),d=t.toString(n(e[1])),f=t.toNumber(l),m=`${u}${f>0?`.${d.padStart(f,`0`)}`:``}`,h=a(e[0],s),v=o(e[1],s);return h&&v?`-${m}`:m}}function toDecimal(...[e,t]){let{calculator:n}=e;return toDecimal$1(n)(e,t)}var USD={code:`USD`,base:10,exponent:2},add$1=(e,t)=>e+t,compare$1=(e,t)=>e<t?DineroComparisonOperator.LT:e>t?DineroComparisonOperator.GT:DineroComparisonOperator.EQ,decrement=e=>e-1,increment=e=>e+1,integerDivide=(e,t)=>Math.trunc(e/t),modulo=(e,t)=>e%t,multiply$1=(e,t)=>e*t,power=(e,t)=>e**t,subtract$1=(e,t)=>e-t;function zero(){return 0}var dinero=createDinero({calculator:{add:add$1,compare:compare$1,decrement,increment,integerDivide,modulo,multiply:multiply$1,power,subtract:subtract$1,zero},onCreate({amount:e,scale:t}){assert(Number.isInteger(e),INVALID_AMOUNT_MESSAGE),assert(Number.isInteger(t),INVALID_SCALE_MESSAGE)}}),moneyString=e=>toDecimal(dinero({amount:Math.round(e*100),currency:USD}),({value:e})=>Number(e).toLocaleString(`en-US`,{style:`currency`,currency:`USD`})),fruit_names_default=`Akee.Apple.Apricot.Avocado.Açaí.Banana.Bilberry.Blackberry.Blackcurrant.Blueberry.Boysenberry.Cantaloupe.Cherimoya.Cherry.Chico.Clementine.Cloudberry.Coconut.Crabapple.Cranberry.Cucumber.Currant.Damson.Durian.Elderberry.Feijoa.Fig.Goji.Gooseberry.Grape.Grapefruit.Guava.Honeyberry.Honeydew.Huckleberry.Jabuticaba.Jackfruit.Jambul.Jostaberry.Jujube.Juniper.Kiwano.Kiwi.Kumquat.Lemon.Lime.Longan.Loquat.Lychee.Mandarine.Mango.Mangosteen.Marion.Melon.Mulberry.Nance.Nectarine.Olive.Orange.Papaya.Peach.Pear.Persimmon.Pineapple.Pineberry.Pitaya.Plantain.Plum.Plumcot.Pomegranate.Pomelo.Prune.Pumpkin.Quince.Raisin.Rambutan.Raspberry.Salak.Salal.Salmonberry.Sapote.Satsuma.Soursop.Strawberry.Surinam.Tamarillo.Tamarind.Tangerine.Tomato.Watermelon.Yuzu.Zucchini`.split(`.`),convertStringToInteger$1=e=>e.split(``).reduce((e,t,n)=>e+t.charCodeAt(0)*n,0),getDefaultCowName=({id:e})=>fruit_names_default[convertStringToInteger$1(e)%fruit_names_default.length],getCowDisplayName=(e,t,n)=>e.originalOwnerId!==t&&!n?getDefaultCowName(e):e.name,animalNames=`Aardvark.Albatross.Alligator.Alpaca.Angelfish.Anglerfish.Ant.Anteater.Antelope.Antlion.Ape.Armadillo.Asp.Baboon.Badger.Bandicoot.Barnacle.Barracuda.Basilisk.Bass.Bat.Bear.Beaver.Bee.Beetle.Bird.Bison.Blackbird.Boar.Bobcat.Bonobo.Bug.Butterfly.Buzzard.Camel.Capybara.Cardinal.Caribou.Cat.Caterpillar.Catfish.Cattle.Chameleon.Cheetah.Chickadee.Chicken.Chimpanzee.Chinchilla.Chipmunk.Clam.Clownfish.Cobra.Condor.Coral.Cougar.Coyote.Crab.Crane.Crawdad.Crayfish.Cricket.Crocodile.Crow.Cuckoo.Deer.Dingo.Dinosaur.Dog.Dolphin.Donkey.Dove.Dragon.Dragonfly.Duck.Eagle.Earthworm.Echidna.Egret.Elephant.Elk.Emu.Ermine.Falcon.Ferret.Finch.Firefly.Fish.Flamingo.Fowl.Fox.Frog.Gazelle.Gecko.Gerbil.Gibbon.Giraffe.Goat.Goldfish.Goose.Gopher.Gorilla.Grasshopper.Grouse.Gull.Guppy.Hamster.Hare.Harrier.Hawk.Hedgehog.Heron.Hippopotamus.Horse.Hummingbird.Hyena.Iguana.Impala.Jackal.Jaguar.Jay.Jellyfish.Kangaroo.Kingfisher.Kiwi.Koala.Koi.Ladybug.Lark.Lemming.Lemur.Leopard.Lion.Llama.Lobster.Loon.Lynx.Macaw.Mackerel.Mammal.Manatee.Mandrill.Marlin.Marmoset.Marmot.Marsupial.Mastodon.Meerkat.Mink.Minnow.Mockingbird.Mole.Mongoose.Monkey.Moose.Mosquito.Mouse.Mule.Muskox.Narwhal.Ocelot.Octopus.Opossum.Orangutan.Orca.Ostrich.Otter.Owl.Ox.Panda.Panther.Parakeet.Parrot.Partridge.Peacock.Pelican.Penguin.Pig.Pigeon.Platypus.Pony.Porcupine.Porpoise.Puffin.Puma.Python.Quail.Quokka.Rabbit.Raccoon.Raven.Reindeer.Rhinoceros.Roadrunner.Rooster.Salamander.Salmon.Seahorse.Shark.Sheep.Shrew.Sloth.Snail.Sparrow.Squid.Squirrel.Starfish.Stingray.Stoat.Stork.Sturgeon.Swan.Swift.Swordfish.Tapir.Tarsier.Tern.Tiger.Tortoise.Toucan.Turkey.Turtle.Tyrannosaurus.Vole.Wallaby.Walrus.Warbler.Whale.Wildcat.Wolf.Wolverine.Wombat.Woodpecker.Wren.Yak.Zebra`.split(`.`),adjectives=`Adorable.Adventurous.Agreeable.Alert.Amused.Attractive.Average.Beautiful.Blushing.Brainy.Brave.Bright.Busy.Calm.Careful.Cautious.Charming.Cheerful.Clever.Cloudy.Colorful.Comfortable.Concerned.Cooperative.Courageous.Crazy.Curious.Cute.Delightful.Determined.Distinct.Dizzy.Elated.Elegant.Enchanting.Encouraging.Energetic.Enthusiastic.Excited.Exuberant.Famous.Fancy.Fantastic.Fierce.Fine.Friendly.Funny.Gentle.Gifted.Glamorous.Gleaming.Glorious.Gorgeous.Graceful.Handsome.Happy.Healthy.Helpful.Hilarious.Important.Inquisitive.Jolly.Joyous.Kind.Light.Lively.Lovely.Lucky.Magnificent.Mysterious.Nice.Nutty.Outrageous.Outstanding.Perfect.Pleasant.Poised.Powerful.Precious.Proud.Puzzled.Quaint.Relieved.Shiny.Silly.Sleepy.Smiling.Sparkling.Splendid.Stormy.Strange.Successful.Tame.Thankful.Thoughtful.Tough.Victorious.Vivacious.Wandering.Wide-eyed.Wild.Witty.Zany`.split(`.`),convertStringToInteger=function(e){return e.split(``).reduce(function(e,t,n){return e+t.charCodeAt(0)*n},0)},funAnimalName=function(e,t){var n=t===void 0?{}:t,a=n.adjectives,o=a===void 0?adjectives:a,s=n.animalNames,l=s===void 0?animalNames:s,u=convertStringToInteger(e),d=o[u%o.length],f=l[(u+convertStringToInteger(d))%l.length];return d+` `+f},getPlayerName=memoize(e=>funAnimalName(e)),integerString=e=>toDecimal(dinero({amount:Math.round(e),currency:USD,scale:0}),({value:e})=>Number(e).toLocaleString(`en-US`)),CROWS_DESTROYED=(e,t)=>`Oh no! Crows destroyed ${t} crop${t>1?`s`:``}!`,COW_PEN_PURCHASED=(e,t)=>`Purchased a cow pen with capacity for ${t} cows! You can visit your cow pen by going to the "Cows" page.`,CELLAR_PURCHASED=(e,t)=>`Purchased a cellar with capacity for ${t} kegs! View your keg inventory by going to the "Cellar" page.`,MILKS_PRODUCED=(e,t)=>{let n=`Your cows produced milk:
|
|
140
140
|
`;return Object.keys(t).sort().forEach(e=>n+=` - ${t[e]} ${e}${t[e]>1?`s`:``}
|
|
141
141
|
`),n},FRUIT_READY_TO_HARVEST=(e,t)=>{let n=`Fruit is ready to pick in the forest:
|
|
142
142
|
`;return Object.keys(t).sort().forEach(e=>n+=` - ${t[e]} ${e} tree${t[e]>1?`s`:``}
|
|
@@ -151,7 +151,7 @@ You earned: ${n}`,LOAN_PAYOFF=e=>`You paid off your loan to the bank! You're fin
|
|
|
151
151
|
`;return Object.keys(t).sort().forEach(e=>n+=` - ${t[e]} ${e}${t[e]>1?`s`:``}
|
|
152
152
|
`),n},NEW_COW_OFFERED_FOR_TRADE=(e,t)=>`A new cow is being offered for trade by ${getPlayerName(t.playerId)}!`,FOREST_EXPANDED=(e,t)=>`The Forest has expanded! You can now plant up to ${t} trees.`,EXPERIENCE_GAUGE_TOOLTIP_LABEL=(e,t,n)=>t===1?`Just 1 more experience point needed to reach level ${integerString(n)}!`:`${integerString(t)} more experience points needed to reach level ${integerString(n)}`,inventorySpaceConsumed=memoize(e=>e.reduce((e,{quantity:t=0})=>e+t,0),{}),inventorySpaceRemaining=({inventory:e,inventoryLimit:t})=>t===-1?1/0:Math.max(0,t-inventorySpaceConsumed(e)),addItemToInventory=(e,t,n=1,a=!1)=>{let{id:o}=t,s=[...e.inventory],l=a?n:Math.min(n,inventorySpaceRemaining(e));if(l===0)return e;let u=s.findIndex(({id:e})=>o===e);if(~u){let e=s[u];s[u]={...e,quantity:e.quantity+l}}else s.push({id:o,quantity:l});return{...e,inventory:s}},showNotification=(e,t,n=`info`,a=void 0)=>{let{showNotifications:o,todaysNotifications:s}=e;return{...e,...o&&{latestNotification:{message:t,onClick:a,severity:n}},todaysNotifications:s.find(e=>e.message===t)?s:s.concat({message:t,onClick:a,severity:n})}},unlockTool=(e,t)=>{let{toolLevels:n}=e;return n[t]===toolLevel.UNAVAILABLE?{...e,toolLevels:{...n,[t]:toolLevel.DEFAULT}}:e},processLevelUp=(e,t)=>{let{experience:n,selectedItemId:a}=e,o=levelAchieved(n);for(let s=o;s>t;s--){let t=levels[s]||{},o;if(Object.keys(t).length<2)o=getRandomLevelUpReward(s),e=addItemToInventory(e,o,getRandomLevelUpRewardQuantity(s),!0);else if(t?.unlocksTool)for(let n of t.unlocksTool)e=unlockTool(e,n);else if(t&&t.increasesSprinklerRange&&a===`sprinkler`){let{sprinklerRange:t}=getLevelEntitlements(levelAchieved(n));t>e.hoveredPlotRangeSize&&(e={...e,hoveredPlotRangeSize:t})}e=showNotification(e,LEVEL_GAINED_NOTIFICATION(``,s,o),`success`)}return e},addExperience=(e,t)=>{let{experience:n}=e,a=levelAchieved(n),o={...e,experience:n+t};return o=processLevelUp(o,a),o},addPeer=(e,t)=>{let n={...e.peers};return n[t]=null,{...e,peers:n,activePlayers:(e.activePlayers??1)+1}},addRevenue=(e,t)=>{let{money:n,revenue:a,todaysRevenue:o}=e;return{...e,money:moneyTotal(n,t),revenue:moneyTotal(a,t),todaysRevenue:moneyTotal(o,t)}},adjustLoan=(e,t)=>{let n=moneyTotal(e.loanBalance,t),a=moneyTotal(e.money,t);return n===0&&t<0?e=showNotification(e,LOAN_PAYOFF(),`success`):t>0&&(e={...showNotification(e,LOAN_INCREASED(``,n),`info`),loansTakenOut:e.loansTakenOut+1}),{...e,loanBalance:n,money:a}},getInventoryQuantityMap=memoize(e=>e.reduce((e,{id:t,quantity:n})=>(e[t]=n,e),{})),shouldStormToday=()=>random$1()<STORM_CHANCE,getPlotContentType=({itemId:e})=>e?itemsMap[e].type:null,memoizationSerializer=e=>JSON.stringify([...e].map(e=>typeof e==`function`?e.toString():e)),findInField=memoize((e,t)=>{for(let n of e)for(let e of n)if(t(e))return e;return null},{serializer:memoizationSerializer}),setWasWateredProperty=(e,t)=>e===null?null:getPlotContentType(e)===itemType.CROP?{...e,wasWateredToday:t}:{...e},setWasWatered=e=>setWasWateredProperty(e,!0),fieldHasScarecrow=e=>!!(e&&findInField(e,plotContainsScarecrow)),applyChanceEvent=(e,t)=>e.reduce((e,[t,n])=>t()?n(e):e,t),plotContainsScarecrow=e=>!!(e&&e.itemId===`scarecrow`),applyDestructionYield=(e,t)=>t?.destructionYield?addItemToInventory(e,itemsMap[t.destructionYield.itemId],t.destructionYield.quantity):e,plotContainsLightningRod=e=>!!(e&&itemsMap[e.itemId]?.type===itemType.LIGHTNING_ROD),fieldHasLightningRod=e=>!!(e&&findInField(e,plotContainsLightningRod));function updateField(e,t){return e.map((e,n)=>e.map((e,a)=>t(e,a,n)))}var decrementItemFromInventory=(e,t,n=1)=>{let a=[...e.inventory],o=a.findIndex(({id:e})=>e===t);if(o===-1)return e;let{quantity:s}=a[o];return s>n?a[o]={...a[o],quantity:s-n}:a.splice(o,1),{...e,inventory:a}},waterField=e=>({...e,field:updateField(e.field,setWasWatered)}),applyPrecipitation=e=>{let{field:t}=e,n=0,a,o=[],s=[];if(shouldStormToday())if(fieldHasLightningRod(t)){let n={...getInventoryQuantityMap(e.inventory)},l=!1,u=!1;t=updateField(t,e=>{if(!e||!plotContainsLightningRod(e))return e;let t=itemsMap[e.itemId],a=(e.lightningStrikesSustained??0)+1;if(a>=(t.lightningStrikeCapacity??1/0)){let a=n[e.itemId]||0;return e.fertilizerType===fertilizerType.RAINBOW&&a>0?(n[e.itemId]=a-1,s.push(e.itemId),u=!0,{...e,lightningStrikesSustained:0}):(l=!0,o.push(t),null)}return{...e,lightningStrikesSustained:a}}),a={message:l?LIGHTNING_ROD_DESTROYED_MESSAGE:u?LIGHTNING_ROD_REPLANTED_MESSAGE:LIGHTNING_ROD_STRUCK_MESSAGE,severity:l?`error`:u?`success`:`info`}}else if(fieldHasScarecrow(t)){a={message:STORM_DESTROYS_SCARECROWS_MESSAGE,severity:`error`};let{scarecrow:o=0}=getInventoryQuantityMap(e.inventory);t=updateField(t,e=>plotContainsScarecrow(e)?o&&e&&e.fertilizerType===fertilizerType.RAINBOW?(o--,n++,e):null:e)}else a={message:STORM_MESSAGE,severity:`info`};else a={message:RAIN_MESSAGE,severity:`info`};e=decrementItemFromInventory({...e,field:t},`scarecrow`,n);for(let t of s)e=decrementItemFromInventory(e,t);for(let t of o)e=applyDestructionYield(e,t);return e={...e,newDayNotifications:[...e.newDayNotifications,a]},e=waterField(e),e},areHuggingMachinesInInventory=memoize(e=>e.some(({id:e})=>e===HUGGING_MACHINE_ITEM_ID)),modifyCow=(e,t,n)=>{let a=[...e.cowInventory],o=a.find(({id:e})=>e===t);if(!o)return e;let s=a.indexOf(o);return s===-1?e:(a[s]={...o,...n(o)},{...e,cowInventory:a})},changeCowAutomaticHugState=(e,t,n)=>n&&(t.isUsingHuggingMachine||!areHuggingMachinesInInventory(e.inventory))?e:(e=modifyCow(e,t.id,e=>({...e,isUsingHuggingMachine:n})),e=n?decrementItemFromInventory(e,HUGGING_MACHINE_ITEM_ID):addItemToInventory(e,itemsMap[HUGGING_MACHINE_ITEM_ID]),e),cowCanBeAdded=(e,t,n)=>{let{cowId1:a,cowId2:o}=t,s=a!==null&&o!==null,l=a===e.id||o===e.id;return!!n.find(({id:t})=>t===e.id)&&!s&&!l},changeCowBreedingPenResident=(e,t,n)=>{let{cowBreedingPen:a,cowInventory:o}=e,{cowId1:s,cowId2:l}=a,u=s===t.id||l===t.id,d={...a};if(n&&!cowCanBeAdded(t,a,o)||!n&&!u)return e;if(n){let e=s===null?`cowId1`:`cowId2`;d={...d,[e]:t.id}}else s===t.id&&(d={...d,cowId1:d.cowId2}),d={...d,cowId2:null};return{...e,cowBreedingPen:{...d,daysUntilBirth:3}}},changeCowName=(e,t,n)=>modifyCow(e,t,()=>({name:n.slice(0,30)})),doesInventorySpaceRemain=e=>inventorySpaceRemaining(e)>0,getChopWoodYieldRange=(e,t)=>{let n=AXE_WOOD_YIELD_RANGE[e];if(!n)return null;let[a,o]=n;return t?[a,o]:[Math.max(1,Math.floor(a/2)),Math.max(1,Math.floor(o/2))]},{SEED:SEED$5,GROWN:GROWN$11}=cropLifeStage,getFruitLifeStage=(e,t)=>{if((t??getTreeLifeStage(e))!==GROWN$11)return SEED$5;let{itemId:n,daysSinceLastHarvest:a=0}=e,o=itemsMap[n];if(!o)throw Error(`${n} is not a valid item`);let{fruitTimeline:s}=o;if(!s)throw Error(`${n} has no fruitTimeline`);return getLifeStageForTimeline(s,a)},modifyForestPlotAt=(e,t,n,a)=>{let{forest:o}=e,s=o[n];if(!s)return e;let l=[...s];l[t]=a(l[t]);let u=[...o];return u[n]=l,{...e,forest:u}},{GROWN:GROWN$10}=cropLifeStage,{DEAD:DEAD$2}=treeLifeStage,{UNAVAILABLE:UNAVAILABLE$1}=toolLevel,getWoodYield=(e,t)=>{let n=getChopWoodYieldRange(e,t);if(!n)return 0;let[a,o]=n;return a+Math.floor(random$1()*(o-a+1))},chopForestPlot=(e,t,n)=>{let a=e.forest[n]?.[t];if(!isPlantedTree(a)||e.toolLevels[toolType.AXE]===UNAVAILABLE$1||!doesInventorySpaceRemain(e))return e;let o=getTreeLifeStage(a);if(getFruitLifeStage(a,o)===GROWN$10){let t=itemsMap[a.itemId];t&&(e=addItemToInventory(e,t),e={...e,treeFruitsHarvested:{...e.treeFruitsHarvested,[t.id]:(e.treeFruitsHarvested[t.id]||0)+1}})}let s=itemsMap.wood;if(s){let t=getWoodYield(e.toolLevels[toolType.AXE],o===GROWN$10||o===DEAD$2);t>0&&(e=addItemToInventory(e,s,t))}return e={...e,treesChopped:e.treesChopped+1},modifyForestPlotAt(e,t,n,()=>null)},{SEED:SEED$4,GROWING:GROWING$2,GROWN:GROWN$9}=cropLifeStage,getCropLifeStage=e=>{let{itemId:t,daysWatered:n=0}=e,{cropTimeline:a}=itemsMap[t];if(!a)throw Error(`${t} has no cropTimeline`);return getLifeStageRange(a)[Math.floor(n)]||GROWN$9},getSeedItemIdFromFinalStageCropItemId=memoize(e=>{let t=Object.values(itemsMap).find(t=>{let{growsInto:n}=t;return Array.isArray(n)?n.includes(e):n===e})?.id;if(!t)throw Error(`Crop item ID ${e} does not have a corresponding seed`);return t},{cacheSize:Object.keys(itemsMap).length}),modifyFieldPlotAt=(e,t,n,a)=>{let{field:o}=e,s=[...o[n]];s[t]=a(s[t]);let l=[...o];return l[n]=s,{...e,field:l}},removeFieldPlotAt=(e,t,n)=>modifyFieldPlotAt(e,t,n,()=>null),{GROWN:GROWN$8}=cropLifeStage,clearPlot=(e,t,n)=>{let a=e.field[n][t],o=e.toolLevels[toolType.HOE];if(!a||a.isShoveled)return e;if(getPlotContentType(a)===itemType.LIGHTNING_ROD){let o=itemsMap[a.itemId];return e=removeFieldPlotAt(e,t,n),a.lightningStrikesSustained?e:applyDestructionYield(e,o)}if(getPlotContentType(a)===itemType.CROP&&getCropLifeStage(a)!==GROWN$8&&randomNumberService.isRandomNumberLessThan(HOE_LEVEL_TO_SEED_RECLAIM_RATE[o]||0)){let t=getSeedItemIdFromFinalStageCropItemId(a.itemId);e=addItemToInventory(e,itemsMap[t])}let s=itemsMap[a.itemId];return s.isReplantable&&!doesInventorySpaceRemain(e)?e:(e=removeFieldPlotAt(e,t,n),s.isReplantable||getPlotContentType(a)===itemType.WEED||getCropLifeStage(a)===GROWN$8?addItemToInventory(e,s):e)},computeCowInventoryForNextDay=e=>({...e,cowInventory:e.cowInventory.map(e=>({...e,daysOld:e.daysOld+1,daysSinceMilking:e.daysSinceMilking+1,daysSinceProducingFertilizer:(e.daysSinceProducingFertilizer||0)+1,happiness:Math.max(0,e.isUsingHuggingMachine?Math.min(1,e.happiness+2*COW_HUG_BENEFIT):e.happiness-COW_HUG_BENEFIT),happinessBoostsToday:e.isUsingHuggingMachine?3:0}))}),byteToHex=[];for(let e=0;e<256;++e)byteToHex.push((e+256).toString(16).slice(1));function unsafeStringify(e,t=0){return(byteToHex[e[t+0]]+byteToHex[e[t+1]]+byteToHex[e[t+2]]+byteToHex[e[t+3]]+`-`+byteToHex[e[t+4]]+byteToHex[e[t+5]]+`-`+byteToHex[e[t+6]]+byteToHex[e[t+7]]+`-`+byteToHex[e[t+8]]+byteToHex[e[t+9]]+`-`+byteToHex[e[t+10]]+byteToHex[e[t+11]]+byteToHex[e[t+12]]+byteToHex[e[t+13]]+byteToHex[e[t+14]]+byteToHex[e[t+15]]).toLowerCase()}var rnds8=new Uint8Array(16);function rng(){return crypto.getRandomValues(rnds8)}function v4(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():_v4(e,t,n)}function _v4(e,t,n){e||={};let a=e.random??e.rng?.()??rng();if(a.length<16)throw Error(`Random bytes length must be >= 16`);if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=a[e];return t}return unsafeStringify(a)}var generateCow=(e={})=>{let t=e.gender||chooseRandom(Object.values(genders)),n=e.color||chooseRandom(Object.values(standardCowColors)),a=e.id||v4(),o={baseWeight:Math.round(COW_STARTING_WEIGHT_BASE*(t===genders.MALE?MALE_COW_WEIGHT_MULTIPLIER:1)-200+random$1()*400),color:n,colorsInBloodline:{[n]:!0},daysOld:1,daysSinceMilking:0,daysSinceProducingFertilizer:0,gender:t,happiness:0,happinessBoostsToday:0,id:a,isBred:!1,isUsingHuggingMachine:!1,name:``,ownerId:``,originalOwnerId:``,timesTraded:0,weightMultiplier:1,...e};return o.name=getDefaultCowName(o),o},castToMoney=e=>Math.round(e*100)/100,applyLoanInterest=e=>{let t=moneyTotal(e.loanBalance,castToMoney(e.loanBalance*LOAN_INTEREST_RATE)),n=t>0?[...e.newDayNotifications,{severity:`warning`,message:LOAN_BALANCE_NOTIFICATION(``,t)}]:e.newDayNotifications;return{...e,loanBalance:t,newDayNotifications:n}},getPriceEventForCrop=e=>({itemId:e.id,daysRemaining:getCropLifecycleDuration(e)-1}),getFinalCropItemIdFromSeedItemId=(e,t=0)=>{let{growsInto:n}=itemsMap[e];return Array.isArray(n)?n[t]:n},getRandomUnlockedCrop=e=>{let t=chooseRandom(e),n=itemsMap[t],a=getFinalCropItemIdFromSeedItemId(t,Array.isArray(n.growsInto)?chooseRandomIndex(n.growsInto):0);if(!a)throw Error(`Seed item ID ${t} has no corresponding final crop ID`);return itemsMap[a]},createPriceEvent=(e,t,n)=>({...e,[n]:{...e[n],[t.itemId]:t}}),TYPE_CRASH=`priceCrashes`,TYPE_SURGE=`priceSurges`,generatePriceEvents=e=>{let t={...e.priceCrashes},n={...e.priceSurges},a=[...e.newDayNotifications],o;if(random$1()<.2){let{items:s}=getLevelEntitlements(levelAchieved(e.experience)),l=getRandomUnlockedCrop(filterItemIdsToSeeds(Object.keys(s))),{id:u}=l;if(!(t[u]||n[u])){let t=random$1()<.5?TYPE_CRASH:TYPE_SURGE;o=createPriceEvent(e,getPriceEventForCrop(l),t),a.push(t===TYPE_CRASH?{message:PRICE_CRASH(``,l),severity:`warning`}:{message:PRICE_SURGE(``,l),severity:`success`})}}return{...e,...o,newDayNotifications:a}},WineService=class{maturityDayMultiplier=3;getDaysToMature=e=>wineVarietyValueMap[e]*this.maturityDayMultiplier;isWineRecipe=e=>`recipeType`in e&&e.recipeType===recipeType.WINE;getMaxWineYield=({grape:e,inventory:t,cellarInventory:n,cellarSize:a})=>{let{[e.id]:o=0,[itemsMap.yeast?.id??``]:s=0}=getInventoryQuantityMap(t),l=a-n.length,u=Math.floor(o/50),d=Math.floor(s/getYeastRequiredForWine(e.variety));return Math.min(l,u,d)}},wineService=new WineService,getKegDisplayName=e=>wineService.isWineRecipe(e)?e.name:FERMENTED_CROP_NAME(``,e),CellarService=class{_uuid=v4;getItemInstancesInCellar=memoize((e,t)=>e.filter(e=>e.itemId===t.id).length,{cacheSize:Object.keys(fermentableItemsMap).length});generateKeg=e=>{let t={id:this._uuid(),itemId:e.id,daysUntilMature:e.daysToFerment??0};return wineService.isWineRecipe(e)&&(t.daysUntilMature=getYeastRequiredForWine(e.variety)),t};doesCellarSpaceRemain=(e,t)=>e.length<(PURCHASEABLE_CELLARS.get(t)?.space??0);doesKegSpoil=e=>{let t=itemsMap[e.itemId];return!wineService.isWineRecipe(t)}},cellarService=new CellarService,getKegSpoilageRate=e=>!cellarService.doesKegSpoil(e)||e.daysUntilMature>0?0:Math.abs(e.daysUntilMature)*KEG_SPOILAGE_RATE_MULTIPLIER,removeKegFromCellar=(e,t)=>{let{cellarInventory:n}=e,a=n.findIndex(({id:e})=>e===t);if(a===-1)return console.error(`removeKegFromCellar: kegId ${t} not found`),e;let o=[...n.slice(0,a),...n.slice(a+1,n.length)];return e={...e,cellarInventory:o},e},processCellarSpoilage=e=>{let{cellarInventory:t}=e,n=[...t];for(let t=n.length-1;t>-1;t--){let a=n[t],o=itemsMap[a.itemId],s=getKegSpoilageRate(a);!wineService.isWineRecipe(o)&&randomNumberService.isRandomNumberLessThan(s)&&(e=removeKegFromCellar(e,a.id),e={...e,newDayNotifications:[...e.newDayNotifications,{message:KEG_SPOILED_MESSAGE`${a}`,severity:`error`}]})}return e={...e},e},processCellar=e=>{e=processCellarSpoilage(e);let{cellarInventory:t}=e,n=[...t],a={};for(let e=0;e<n.length;e++){let t=n[e],o=t.daysUntilMature-1,s=itemsMap[t.itemId];if(wineService.isWineRecipe(s)&&t.daysUntilMature>0&&o<=0){let e=getKegDisplayName(s);a[e]=(a[e]||0)+1}n[e]={...t,daysUntilMature:o}}let o=[...e.newDayNotifications];return Object.keys(a).length&&o.push({message:KEGS_READY_TO_SELL(``,a),severity:`success`}),e={...e,cellarInventory:n,newDayNotifications:o},e},removeCowFromInventory=(e,t)=>{let n=[...e.cowInventory],{isUsingHuggingMachine:a}=t;return n.splice(n.indexOf(t),1),a&&(e=addItemToInventory(e,itemsMap[HUGGING_MACHINE_ITEM_ID])),e=changeCowBreedingPenResident(e,t,!1),{...e,cowInventory:n}},processCowAttrition=e=>{let t=[...e.newDayNotifications],n=[...e.cowInventory];for(let a=0;a<n.length;a++){let o=n[a];Number(o.weightMultiplier.toFixed(2))===.5&&(e=removeCowFromInventory(e,o),t.push({message:COW_ATTRITION_MESSAGE(``,o),severity:`error`}))}return{...e,newDayNotifications:t}},findCowById=memoize((e,t)=>e.find(e=>t===e.id)),generateOffspringCow=(e,t,n,a={})=>{if(e.gender===t.gender)throw Error(`${JSON.stringify(e)} ${JSON.stringify(t)} cannot produce offspring because they have the same gender`);let o=e.gender===genders.MALE?e:t,s=e.gender===genders.MALE?t:e,l={[o.color]:!0,[s.color]:!0,...o.colorsInBloodline,...s.colorsInBloodline};return delete l[cowColors.RAINBOW],generateCow({color:Object.keys(l).length===Object.keys(standardCowColors).length?cowColors.RAINBOW:chooseRandom([s.color,o.color]),colorsInBloodline:l,baseWeight:(o.baseWeight+s.baseWeight)/2,isBred:!0,ownerId:n,originalOwnerId:n,...a})},processCowBreeding=e=>{let{cowBreedingPen:t,cowInventory:n,playerId:a,newDayNotifications:o,purchasedCowPen:s}=e,{cowId1:l,cowId2:u}=t;if(!u)return e;let d=l?findCowById(n,l):null,f=u?findCowById(n,u):null;if(!d||!f||d.gender===f.gender)return e;let m=d.happiness>=.8&&f.happiness>=.8?t.daysUntilBirth-1:3,h=PURCHASEABLE_COW_PENS.get(s),v=h&&n.length<h.cows&&m===0,y=v?generateOffspringCow(d,f,a):null;if(y){let t=y.color===cowColors.RAINBOW?EXPERIENCE_VALUES.RAINBOW_COW_BRED:EXPERIENCE_VALUES.COW_BRED;e=addExperience(e,t)}return{...e,cowInventory:v&&y?[...n,y]:n,cowBreedingPen:{...t,daysUntilBirth:v?3:m},newDayNotifications:y?[...o,{message:COW_BORN_MESSAGE(``,d,f,y),severity:`success`}]:o}},getCowFertilizerItem=({color:e})=>itemsMap[e===cowColors.RAINBOW?`rainbow-fertilizer`:`fertilizer`],scaleNumber=(e,t,n,a,o)=>(e-t)*(o-a)/(n-t)+a,getCowFertilizerProductionRate=e=>e.gender===genders.MALE?scaleNumber(e.weightMultiplier,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM,7,1):1/0,processCowFertilizerProduction=e=>{let t=[...e.cowInventory],n=[...e.newDayNotifications],{length:a}=t,o={},s=e.hasProducedRainbowFertilizer;for(let n=0;n<a;n++){let a=t[n];if((a.daysSinceProducingFertilizer||0)>getCowFertilizerProductionRate(a)){t[n]={...a,daysSinceProducingFertilizer:0};let l=getCowFertilizerItem(a),{name:u}=l;if(!doesInventorySpaceRemain(e))break;o[u]=(o[u]||0)+1,e=addItemToInventory(e,l),l.id===`rainbow-fertilizer`&&(s=!0)}}return Object.keys(o).length&&n.push({message:FERTILIZERS_PRODUCED(``,o),severity:`success`}),{...e,cowInventory:t,hasProducedRainbowFertilizer:s,newDayNotifications:n}},clampNumber=(e,t,n)=>e<=t?t:e>=n?n:e,processFeedingCows=e=>{let t=[...e.cowInventory],{length:n}=t,a=[...e.newDayNotifications],o=[...e.inventory],s=o[o.findIndex(({id:e})=>e===COW_FEED_ITEM_ID)],l=s?s.quantity:0,u=0;for(let e=0;e<n;e++){let n=t[e],a=u<l;t[e]={...n,weightMultiplier:clampNumber(a?n.weightMultiplier+COW_WEIGHT_MULTIPLIER_FEED_BENEFIT:n.weightMultiplier-COW_WEIGHT_MULTIPLIER_FEED_BENEFIT,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM)},a&&u++}return l<=n&&n>0&&a.push({message:OUT_OF_COW_FEED_NOTIFICATION,severity:`error`}),decrementItemFromInventory({...e,cowInventory:t,inventory:o,newDayNotifications:a},COW_FEED_ITEM_ID,u)},incrementPlotContentAge=e=>e&&getPlotContentType(e)===itemType.CROP?{...e,daysOld:(e.daysOld||0)+1,daysWatered:(e.daysWatered||0)+(e.wasWateredToday?1+(e.fertilizerType===fertilizerType.NONE?0:FERTILIZER_BONUS):0)}:e,updatePlotShoveledState=e=>e&&e.isShoveled&&e.daysUntilClear!==void 0&&e.daysUntilClear>1?{...e,daysUntilClear:e.daysUntilClear-1}:e&&!e.isShoveled?e:null,getPlotContentFromItemId=e=>({itemId:e,fertilizerType:fertilizerType.NONE});function spawnWeeds(e){if(e)return e;let t=null;return randomNumberService.isRandomNumberLessThan(.15)&&(t=getPlotContentFromItemId(weed.id)),t}var fieldReducer=(e,t)=>t(e),resetWasWatered=e=>setWasWateredProperty(e,!1),fieldUpdaters=[incrementPlotContentAge,resetWasWatered,spawnWeeds,updatePlotShoveledState],processField=e=>({...e,field:updateField(e.field,e=>fieldUpdaters.reduce(fieldReducer,e))}),{GROWN:GROWN$7}=cropLifeStage,{NONE:NONE$2,RAINBOW:RAINBOW$1}=fertilizerType,incrementTreeAge=e=>{if(!e)return null;let t=e.daysOld+1;if(!isPlantedTree(e))return{...e,daysOld:t};let n=e.fertilizerType!=null&&e.fertilizerType!==NONE$2,a=e.fertilizerType===RAINBOW$1,o=(e.daysGrown??e.daysOld)+(n?1+FERTILIZER_BONUS:1),s={...e,daysOld:t,daysGrown:o};return{...s,daysSinceLastHarvest:getTreeLifeStage(s)===GROWN$7?s.daysSinceLastHarvest+(a?1+FERTILIZER_BONUS:1):s.daysSinceLastHarvest}},processForest=e=>{let t=e.forest.map(e=>e.map(incrementTreeAge)),n={};t.forEach((t,a)=>t.forEach((t,o)=>{let s=e.forest[a]?.[o];if(!isPlantedTree(s)||!isPlantedTree(t)||getFruitLifeStage(s)===GROWN$7||getFruitLifeStage(t)!==GROWN$7)return;let{name:l}=itemsMap[t.itemId]??{};l&&(n[l]=(n[l]||0)+1)}));let a=[...e.newDayNotifications];return Object.keys(n).length&&a.push({message:FRUIT_READY_TO_HARVEST(``,n),severity:`success`}),{...e,forest:t,newDayNotifications:a}},getCowMilkItem=({color:e,happiness:t})=>{if(e===cowColors.BROWN)return chocolateMilk;let n=e===cowColors.RAINBOW;return t<1/3?n?rainbowMilk1:milk1:t<2/3?n?rainbowMilk2:milk2:n?rainbowMilk3:milk3},getCowMilkRate=e=>e.gender===genders.FEMALE?scaleNumber(e.weightMultiplier,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM,7,2):1/0,processMilkingCows=e=>{let t=[...e.cowInventory],n=[...e.newDayNotifications],{length:a}=t,o={};for(let n=0;n<a;n++){let a=t[n];if(a.daysSinceMilking>getCowMilkRate(a)){t[n]={...a,daysSinceMilking:0};let s=getCowMilkItem(a),{name:l}=s;if(!doesInventorySpaceRemain(e))break;o[l]=(o[l]||0)+1,e=addItemToInventory(e,s)}}return Object.keys(o).length&&n.push({message:MILKS_PRODUCED(``,o),severity:`success`}),{...e,cowInventory:t,newDayNotifications:n}},doesPlotContainCrop=e=>e!==null&&getPlotContentType(e)===itemType.CROP;function forEachPlot(e,t){e.field.forEach((e,n)=>e.forEach((e,a)=>t(e,a,n)))}var applyCrows=e=>{let{field:t,purchasedField:n}=e;if(fieldHasScarecrow(t)||randomNumberService.isRandomNumberLessThan(.6))return e;let a=[...e.newDayNotifications],o=[],s=[];forEachPlot(e,(t,n,a)=>{doesPlotContainCrop(e.field[a][n])&&s.push({x:n,y:a})});let l=Math.min(s.length,Math.floor(random$1()*(n+1)*5)),u=0;for(let t=0;t<l;t++){let t=Math.floor(random$1()*s.length),n=s.splice(t,1)[0];e=modifyFieldPlotAt(e,n.x,n.y,()=>null),u+=1}return u>0&&o.push(CROWS_DESTROYED(``,u)),o.length&&a.push({message:o.join(`
|
|
153
153
|
|
|
154
|
-
`),severity:`error`}),{...e,newDayNotifications:a}},processNerfs=e=>applyChanceEvent([[()=>!0,applyCrows]],e),getRangeCoords=(e,t,n)=>{let a=2*e+1,o=t-e,s=n-e;return Array(a).fill(null).map((e,t)=>Array(a).fill(null).map((e,n)=>({x:o+n,y:s+t})))},processSprinklers=e=>{let{field:t,experience:n}=e,a=new Map,o=[...t],{sprinklerRange:s}=getLevelEntitlements(levelAchieved(n));return t.forEach((n,l)=>{n.forEach((n,u)=>{!n||getPlotContentType(n)!==itemType.SPRINKLER||getRangeCoords(s,u,l).flat().forEach(({x:n,y:s})=>{let l=t[s];if(!l)return;let u=l[n];u&&getPlotContentType(u)===itemType.CROP&&(a.has(u)||(o=modifyFieldPlotAt({...e,field:o},n,s,setWasWatered).field),a.set(u,{x:n,y:s}))})})}),{...e,field:o}},shouldPrecipitateToday=()=>random$1()<PRECIPITATION_CHANCE,processWeather=e=>applyChanceEvent([[shouldPrecipitateToday,applyPrecipitation]],e),rotateNotificationLogs=e=>{let t=[...e.notificationLog],{dayCount:n,newDayNotifications:a}=e,o={error:[],info:[],success:[],warning:[]};return a.forEach(({message:e,severity:t})=>o[t].push(e)),a.length&&t.unshift({day:n,notifications:o}),t.length=Math.min(t.length,14),{...e,notificationLog:t}},get7DayAverage=e=>e.reduce((e,t)=>moneyTotal(e,t),0)/7,getProfit=(e,t)=>moneyTotal(e,t),updateFinancialRecords=e=>{let{profitabilityStreak:t,todaysLosses:n,todaysRevenue:a,record7dayProfitAverage:o,recordProfitabilityStreak:s}=e,{historicalDailyLosses:l,historicalDailyRevenue:u,recordSingleDayProfit:d}=e;l=[n,...l].slice(0,7),u=[a,...u].slice(0,7);let f=get7DayAverage(l.map((e,t)=>moneyTotal(u[t],e))),m=a+n>0?t+1:0;return{...e,historicalDailyLosses:l,historicalDailyRevenue:u,profitabilityStreak:m,record7dayProfitAverage:Math.max(o,f),recordProfitabilityStreak:Math.max(s,m),recordSingleDayProfit:Math.max(d,getProfit(a,n)),todaysLosses:0,todaysRevenue:0}},updateInventoryRecordsForNextDay=e=>({...e,todaysPurchases:{},todaysStartingInventory:e.inventory.reduce((e,{id:t,quantity:n})=>(e[t]=n,e),{})}),decrementPriceEventDays=e=>Object.keys(e).reduce((t,n)=>{let a=e[n];if(!a)return t;let{itemId:o,daysRemaining:s}=a;return s>1&&(t[n]={itemId:o,daysRemaining:s-1}),t},{}),updatePriceEvents=e=>{let{priceCrashes:t,priceSurges:n}=e;return{...e,priceCrashes:decrementPriceEventDays(t),priceSurges:decrementPriceEventDays(n)}},adjustItemValues=e=>({...e,historicalValueAdjustments:[e.valueAdjustments],valueAdjustments:generateValueAdjustments(e.priceCrashes,e.priceSurges)}),computeStateForNextDay=(e,t=!1)=>(e=(t?[processField]:[computeCowInventoryForNextDay,processCowBreeding,processField,processForest,processNerfs,processWeather,processSprinklers,processFeedingCows,processCowAttrition,processMilkingCows,processCowFertilizerProduction,processCellar,updatePriceEvents,updateFinancialRecords,updateInventoryRecordsForNextDay,generatePriceEvents,applyLoanInterest,rotateNotificationLogs]).concat([adjustItemValues]).reduce((e,t)=>t({...e}),{...e,cowForSale:generateCow(),dayCount:e.dayCount+1,todaysNotifications:[]}),e.dayCount%60==0&&(e=addExperience(e,EXPERIENCE_VALUES.NEW_YEAR)),e),{FERTILIZE:FERTILIZE$3,OBSERVE:OBSERVE$5}=fieldMode,fertilizerItemIdToTypeMap={[itemsMap.fertilizer.id]:fertilizerType.STANDARD,[itemsMap[`rainbow-fertilizer`].id]:fertilizerType.RAINBOW},fertilizePlot=(e,t,n)=>{let{field:a,selectedItemId:o}=e,s=a[n][t];if(!s||itemsMap[o]?.type!==itemType.FERTILIZER)return e;let{id:l}=itemsMap[o],u=e.inventory.find(e=>e.id===l),d=getPlotContentType(s);if(!s||!u||s.fertilizerType!==fertilizerType.NONE||o===`fertilizer`&&d!==itemType.CROP||o===`rainbow-fertilizer`&&d!==itemType.CROP&&d!==itemType.SCARECROW)return e;let{quantity:f}=u;e=decrementItemFromInventory(e,l);let m=f>1;return e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerItemIdToTypeMap[l]}),{...e,fieldMode:m?FERTILIZE$3:OBSERVE$5,selectedItemId:m?l:``}},forRange=(e,t,n,a,o,...s)=>{let l=Math.max(a-n,0),u=Math.min(a+n,e.field[0].length-1),d=Math.max(o-n,0),f=Math.min(o+n,e.field.length-1);for(let n=d;n<=f;n++)for(let a=l;a<=u;a++)e=t(e,a,n,...s);return e},{GROWN:GROWN$6}=cropLifeStage,{UNAVAILABLE}=toolLevel,harvestForestPlot=(e,t,n)=>{let a=e.forest[n]?.[t];if(!a||!(`itemId`in a)||e.toolLevels[toolType.PICKER_POLE]===UNAVAILABLE||!doesInventorySpaceRemain(e)||getFruitLifeStage(a)!==GROWN$6)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=PICKER_POLE_LEVEL_TO_FRUIT_YIELD[e.toolLevels[toolType.PICKER_POLE]]??1,l=Math.min(s,inventorySpaceRemaining(e));return e=addItemToInventory(e,o,s),e={...e,treeFruitsHarvested:{...e.treeFruitsHarvested,[o.id]:(e.treeFruitsHarvested[o.id]||0)+l}},modifyForestPlotAt(e,t,n,e=>e&&`itemId`in e?{...e,daysSinceLastHarvest:0}:e)},getCropFromItemId=e=>({...getPlotContentFromItemId(e),daysOld:0,daysWatered:0,wasWateredToday:!1}),plantInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let{field:o}=e;if(o[n][t])return e;let{growsInto:s}=itemsMap[a],l=getFinalCropItemIdFromSeedItemId(a,Array.isArray(s)?chooseRandomIndex(s):0);return l?(e=modifyFieldPlotAt(e,t,n,()=>getCropFromItemId(l)),e=decrementItemFromInventory(e,a),e=processSprinklers(e),{...e,selectedItemId:e.inventory.find(({id:e})=>e===a)?a:``}):e},{GROWN:GROWN$5}=cropLifeStage;function getHarvestedQuantity(e){let t=1;switch(e.toolLevels[toolType.SCYTHE]){case toolLevel.BRONZE:t+=1;break;case toolLevel.IRON:t+=2;break;case toolLevel.SILVER:t+=3;break;case toolLevel.GOLD:t+=4;break;default:t=1}return t}function harvestCrops(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=getSeedItemIdFromFinalStageCropItemId(o.id),l=a.fertilizerType===fertilizerType.RAINBOW,u=getHarvestedQuantity(e);e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,u);let{cropType:d}=o;if(!d)return e;l&&getInventoryQuantityMap(e.inventory)[s]>0&&(e=plantInPlot(e,t,n,s),e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerType.RAINBOW}));let{cropsHarvested:f}=e;return{...e,cropsHarvested:{...f,[d]:(f[d]||0)+u}}}function harvestWeed(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId],s=getHarvestedQuantity(e);return e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,s),e}var harvestPlot=(e,t,n)=>{let a=e.field[n][t];return!a||!doesInventorySpaceRemain(e)?e:getPlotContentType(a)===itemType.CROP&&getCropLifeStage(a)===GROWN$5?harvestCrops(e,t,n):getPlotContentType(a)===itemType.WEED?harvestWeed(e,t,n):e},hugCow=(e,t)=>modifyCow(e,t,e=>e.happinessBoostsToday>=3?e:{happiness:Math.min(1,e.happiness+COW_HUG_BENEFIT),happinessBoostsToday:e.happinessBoostsToday+1}),maxYieldOfRecipe=memoize(({ingredients:e},t)=>{let n=getInventoryQuantityMap(t);return Math.min(...Object.keys(e).map(t=>Math.floor(n[t]/e[t])))||0},{}),canMakeRecipe=(e,t,n)=>maxYieldOfRecipe(e,t)>=n,consumeIngredients=(e,t,n=1,a=0)=>t.ingredients&&!canMakeRecipe(t,e.inventory,n)?e:(e=addExperience(e,a),Object.keys(t.ingredients||{}).reduce((e,a)=>decrementItemFromInventory(e,a,t.ingredients[a]*n),e)),EXPERIENCE_FOR_RECIPE={[recipeType.FERMENTATION]:EXPERIENCE_VALUES.FERMENTATION_RECIPE_MADE,[recipeType.FORGE]:EXPERIENCE_VALUES.FORGE_RECIPE_MADE,[recipeType.KITCHEN]:EXPERIENCE_VALUES.KITCHEN_RECIPE_MADE,[recipeType.RECYCLING]:EXPERIENCE_VALUES.RECYCLING_RECIPE_MADE,[recipeType.WOOD_CHIPPER]:EXPERIENCE_VALUES.WOOD_CHIPPER_RECIPE_MADE},makeRecipe=(e,t,n=1)=>{let a=e;return e=consumeIngredients(e,t,n,EXPERIENCE_FOR_RECIPE[t.recipeType]||0),e===a?e:(e={...e,recipesMade:{...e.recipesMade,[t.id]:(e.recipesMade[t.id]||0)+n}},addItemToInventory(e,t,n))},saltRequirementMultiplier=2/3,getSaltRequirementsForFermentationRecipe=e=>{let{daysToFerment:t=0,tier:n=1}=e;return Math.ceil((t??0)*saltRequirementMultiplier)*n},getMaxYieldOfFermentationRecipe=(e,t,n,a)=>{let{[e.id]:o=0,[itemsMap.salt.id]:s=0}=getInventoryQuantityMap(t),l=Math.floor(s/getSaltRequirementsForFermentationRecipe(e));return Math.min(a-n.length,o,l)},addKegToCellarInventory=(e,t)=>{let{cellarInventory:n}=e;return{...e,cellarInventory:[...n,t]}},makeFermentationRecipe=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0};if(getMaxYieldOfFermentationRecipe(t,a,o,l)<n)return e;for(let a=0;a<n;a++){let n=cellarService.generateKeg(t);e=addKegToCellarInventory(e,n)}let u=getSaltRequirementsForFermentationRecipe(t);return e=decrementItemFromInventory(e,t.id,n),e=decrementItemFromInventory(e,itemsMap.salt.id,n*u),e},makeWine=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0},u=wineService.getMaxWineYield({grape:t,inventory:a,cellarInventory:o,cellarSize:l}),d=itemsMap[t.wineId],f=Math.min(n,u);for(let t=0;t<f;t++){let t=cellarService.generateKeg(d);e=addKegToCellarInventory(e,t)}e=decrementItemFromInventory(e,t.id,f*50);let m=getYeastRequiredForWine(t.variety);return e=decrementItemFromInventory(e,itemsMap.yeast.id,f*m),e};function randomChoice(e){let t=0,n=[];for(let a of e)t+=a.weight,n.push(a);n.sort((e,t)=>e.weight-t.weight);let a=random$1()*t,o,s=0;for(let e in n){if(o=n[e],a<o.weight+s)return o;s+=o.weight}return n[n.length-1]}var Factory=class{},SPAWNABLE_ORES=[goldOre,ironOre,bronzeOre,silverOre],OreFactory=class extends Factory{oreOptions=[];constructor(){super();for(let e of SPAWNABLE_ORES)this.oreOptions.push({ore:e,weight:e.spawnChance||0})}generate(){return[this.spawn()]}spawn(){return randomChoice(this.oreOptions).ore}},CoalFactory=class extends Factory{generate(){let e=[],t=chooseRandom([1,1,1,2,3]);for(let n=0;n<t;n++)e.push(this.spawnCoal());return e.push(this.spawnStone()),e}spawnCoal(){return coal$1}spawnStone(){return stone}},spawnableResources=[{resource:stone,spawnChance:STONE_SPAWN_CHANCE},{resource:saltRock,spawnChance:SALT_ROCK_SPAWN_CHANCE},{resource:coal$1,spawnChance:COAL_SPAWN_CHANCE}],StoneFactory=class extends Factory{generate(){let e=[];for(let{resource:t,spawnChance:n}of spawnableResources)randomNumberService.isRandomNumberLessThan(n)&&e.push(t);return e}},factoryInstances={},instance=null,ResourceFactory=class e{resourceOptions;constructor(){this.resourceOptions=[{weight:ORE_SPAWN_CHANCE,itemType:itemType.ORE},{weight:COAL_SPAWN_CHANCE,itemType:itemType.FUEL},{weight:STONE_SPAWN_CHANCE,itemType:itemType.STONE}]}static instance(){return instance||=new e,instance}static generateFactoryInstance(e){switch(e){case itemType.STONE:return new StoneFactory;case itemType.FUEL:return new CoalFactory;case itemType.ORE:return new OreFactory;default:return null}}static getFactoryForItemType=t=>(factoryInstances[t]||(factoryInstances[t]=e.generateFactoryInstance(t)),factoryInstances[t]);generateResources(t){let n=[],a=RESOURCE_SPAWN_CHANCE;switch(t){case toolLevel.BRONZE:a+=.1;break;case toolLevel.IRON:a+=.2;break;case toolLevel.SILVER:a+=.3;break;case toolLevel.GOLD:a+=.5;break;default:}if(randomNumberService.isRandomNumberLessThan(a)){let t=randomChoice(this.resourceOptions),a=e.getFactoryForItemType(t.itemType);if(a){let e=a.generate();e&&(n=Array.isArray(e)?e:[e])}}return n}},daysUntilClearPeriods=[1,2,2,3],minePlot=(e,t,n)=>{let{field:a}=e;if(a[n][t])return e;if(!doesInventorySpaceRemain(e))return showNotification(e,INVENTORY_FULL_NOTIFICATION);let o=e.toolLevels[toolType.SHOVEL],s=ResourceFactory.instance().generateResources(o),[l]=s,u=chooseRandom(daysUntilClearPeriods);if(l){let e=s.map(({spawnChance:e})=>e).filter(e=>e!=null),t=Math.min(...e);u+=Math.round(random$1()*(1-t)*10)}for(let t of s)e=addItemToInventory(e,t);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:``,fertilizerType:fertilizerType.NONE,isShoveled:!0,daysUntilClear:u,oreId:l?.id??null})),{...e}},{FERTILIZE:FERTILIZE$2,OBSERVE:OBSERVE$4}=fieldMode,mulchItemIdToTypeMap={mulch:fertilizerType.STANDARD,"rainbow-mulch":fertilizerType.RAINBOW},mulchForestPlot=(e,t,n)=>{let{forest:a,selectedItemId:o}=e,s=a[n]?.[t];if(!s||!isPlantedTree(s)||itemsMap[o]?.type!==itemType.MULCH)return e;let l=o,u=e.inventory.find(e=>e.id===l);if(!u||(s.fertilizerType??fertilizerType.NONE)!==fertilizerType.NONE)return e;let{quantity:d}=u;e=decrementItemFromInventory(e,l);let f=d>1;return e={...e,mulchApplied:{...e.mulchApplied,[l]:(e.mulchApplied[l]||0)+1}},e=modifyForestPlotAt(e,t,n,e=>!e||!isPlantedTree(e)?e:{...e,fertilizerType:mulchItemIdToTypeMap[l]}),{...e,fieldMode:f?FERTILIZE$2:OBSERVE$4,selectedItemId:f?l:``}},offerCow=(e,t)=>(e={...e,cowIdOfferedForTrade:t},e),getTreeDeathChance=e=>Math.min(TREE_DEATH_CHANCE_MAX,TREE_DEATH_CHANCE_BASE+e*TREE_DEATH_CHANCE_INCREMENT_PER_DAY),MAX_ITERATIONS=1e3,getRandomLifespanExtension=()=>{let e=0;for(;e<MAX_ITERATIONS&&random$1()>=getTreeDeathChance(e);)e++;return e},getRandomizedLifespan=e=>{let t=e*(1-random$1()*TREE_LIFESPAN_VARIANCE_MAX);return Math.round(t+getRandomLifespanExtension())},{NONE:NONE$1}=fertilizerType,plantTreeInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let o=e.forest[n];if(!o||o[t])return e;let s=getFinalCropItemIdFromSeedItemId(a);if(!s)return e;let l=itemsMap[s]?.lifespan,u=l===void 0?void 0:getRandomizedLifespan(l);return e=modifyForestPlotAt(e,t,n,()=>({itemId:s,daysOld:0,daysSinceLastHarvest:0,daysGrown:0,fertilizerType:NONE$1,...u!==void 0&&{lifespan:u}})),e=decrementItemFromInventory(e,a),{...e,selectedForestItemId:e.inventory.find(({id:e})=>e===a)?a:``}},prependPendingPeerMessage=(e,t,n=`info`)=>({...e,pendingPeerMessages:[{playerId:e.playerId,message:t,severity:n},...e.pendingPeerMessages].slice(0,5)}),purchaseCombine=(e,t)=>{let{money:n,purchasedCombine:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COMBINES.get(t)?.price||0;return{...e,purchasedCombine:t,money:moneyTotal(n,-o)}},updateLearnedRecipes=e=>({...e,learnedRecipes:Object.keys(recipesMap).reduce((t,n)=>(recipesMap[n].condition(e)&&(t[n]=!0),t),{})}),purchaseComposter=(e,t)=>{let{money:n,purchasedComposter:a}=e;return a>=t?e:(e={...e,purchasedComposter:t,money:moneyTotal(n,-(PURCHASEABLE_COMPOSTERS.get(t)?.price??0))},e=showNotification(e,RECYCLING_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.COMPOSTER_ACQUIRED),updateLearnedRecipes(e))},getCowWeight=({baseWeight:e,weightMultiplier:t})=>Math.round(e*t),getCowValue=(e,t=!1)=>t?getCowWeight(e)*clampNumber(scaleNumber(e.daysOld,1,100,0,1),0,1):getCowWeight(e)*1.5,purchaseCow=(e,t)=>{let{cowInventory:n,cowColorsPurchased:a,playerId:o,money:s,purchasedCowPen:l}=e,{color:u}=t,d=getCowValue(t,!1);return s<d||l===0||n.length>=(PURCHASEABLE_COW_PENS.get(l)?.cows??0)?e:(e=addCowToInventory(e,{...t,ownerId:o,originalOwnerId:o}),{...e,cowColorsPurchased:{...a,[u]:(a[u]||0)+1},money:moneyTotal(s,-d),cowForSale:generateCow()})},purchaseCowPen=(e,t)=>{let{money:n,purchasedCowPen:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COW_PENS.get(t);if(!o)return e;let{cows:s,price:l}=o;e=showNotification(e,COW_PEN_PURCHASED(``,s),`success`);let u=t>1?EXPERIENCE_VALUES.COW_PEN_EXPANDED:EXPERIENCE_VALUES.COW_PEN_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCowPen:t,money:moneyTotal(n,-l)}},purchaseCellar=(e,t)=>{let{money:n,purchasedCellar:a}=e;if(a>=t)return e;let o=PURCHASEABLE_CELLARS.get(t);if(!o)return e;let{price:s,space:l}=o;e=showNotification(e,CELLAR_PURCHASED(``,l),`success`);let u=t>1?EXPERIENCE_VALUES.CELLAR_EXPANDED:EXPERIENCE_VALUES.CELLAR_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCellar:t,money:moneyTotal(n,-s)}},nullArray=memoize(e=>Object.freeze(Array(e).fill(null)),{cacheSize:30}),purchaseField=(e,t)=>{let{field:n,money:a,purchasedField:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FIELD_EXPANDED);let s=PURCHASEABLE_FIELD_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s;return{...e,purchasedField:t,field:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},purchaseForest=(e,t)=>{let{forest:n,money:a,purchasedForest:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FOREST_EXPANDED);let s=PURCHASABLE_FOREST_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s,f=t===1?FOREST_AVAILABLE_NOTIFICATION:FOREST_EXPANDED`${d*l}`;return e=showNotification(e,f,`success`),{...e,purchasedForest:t,forest:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},getAdjustedItemValue=(e,t)=>Number(((e[t]||1)*itemsMap[t].value).toFixed(2)),purchaseItem=(e,t,n=1)=>{let{money:a,todaysPurchases:o,valueAdjustments:s}=e,l=Math.min(n,inventorySpaceRemaining(e));if(l===0)return e;let u=getAdjustedItemValue(s,t.id)*l;return u>a?e:(e=prependPendingPeerMessage(e,PURCHASED_ITEM_PEER_NOTIFICATION(``,n,t)),addItemToInventory({...e,money:moneyTotal(a,-u),todaysPurchases:{...o,[t.id]:(o[t.id]||0)+l}},t,l))},purchaseSmelter=(e,t)=>{let{money:n,purchasedSmelter:a}=e;return a>=t?e:(e={...e,purchasedSmelter:t,money:moneyTotal(n,-(PURCHASEABLE_SMELTERS.get(t)?.price??0))},e=showNotification(e,FORGE_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.SMELTER_ACQUIRED),updateLearnedRecipes(e))},getCostOfNextStorageExpansion=e=>500+(e-100)/100*50,purchaseStorageExpansion=e=>{let{money:t,inventoryLimit:n}=e,a=getCostOfNextStorageExpansion(n);return t<a||n===-1?e:{...e,inventoryLimit:n+100,money:moneyTotal(t,-a)}},purchaseWoodChipper=(e,t)=>{let{money:n,purchasedWoodChipper:a}=e;return a>=t?e:(e={...e,purchasedWoodChipper:t,money:moneyTotal(n,-(PURCHASEABLE_WOOD_CHIPPERS.get(t)?.price??0))},e=showNotification(e,WOOD_CHIPPER_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.WOOD_CHIPPER_ACQUIRED),updateLearnedRecipes(e))},removePeer=(e,t)=>{let n={...e.peers};return delete n[t],{...e,peers:n,activePlayers:(e.activePlayers??1)-1}},selectCow=(e,{id:t})=>({...e,selectedCowId:t}),cowColorToIdMap={[cowColors.BLUE]:`blue`,[cowColors.BROWN]:`brown`,[cowColors.GREEN]:`green`,[cowColors.ORANGE]:`orange`,[cowColors.PURPLE]:`purple`,[cowColors.RAINBOW]:`rainbow`,[cowColors.WHITE]:`white`,[cowColors.YELLOW]:`yellow`},getCowColorId=({color:e})=>`${cowColorToIdMap[e]}-cow`,sellCow=(e,t)=>{let{cowsSold:n}=e,a=getCowColorId(t),o=getCowValue(t,!0);e=removeCowFromInventory(e,t),e=addRevenue(e,o);let s={...n,[a]:(n[a]||0)+1};return e={...e,cowsSold:s},e},SEASON_ORDER=[season.SPRING,season.SUMMER,season.FALL,season.WINTER],seasonNameMap={[season.SPRING]:`Spring`,[season.SUMMER]:`Summer`,[season.FALL]:`Fall`,[season.WINTER]:`Winter`},seasonFilterMap={[season.SPRING]:`none`,[season.SUMMER]:`sepia(0.26) hue-rotate(-10deg) saturate(1.91) brightness(0.93) contrast(1.47)`,[season.FALL]:`sepia(0.13) hue-rotate(-38deg) saturate(1.34) brightness(0.97) contrast(1)`,[season.WINTER]:`sepia(0.59) hue-rotate(129deg) saturate(0.98) brightness(0.93) contrast(1.02)`},getCurrentSeason=e=>SEASON_ORDER[Math.floor((e-1)/15)%SEASON_ORDER.length],getResaleValue=({id:e})=>itemsMap[e].value/2,getSalePriceMultiplier=(e={})=>{let t=1;return e[`i-am-rich-3`]?t+=I_AM_RICH_BONUSES[2]:e[`i-am-rich-2`]?t+=I_AM_RICH_BONUSES[1]:e[`i-am-rich-1`]&&(t+=I_AM_RICH_BONUSES[0]),t},getSeasonalDemandStatus=(e,t)=>e.highDemandSeasons?.includes(t)?`HIGH`:e.lowDemandSeasons?.includes(t)?`LOW`:null,getSeasonalDemandMultiplier=(e,t)=>{let n=getSeasonalDemandStatus(e,t);return n===`HIGH`?1+SEASON_HIGH_DEMAND_BONUS:n===`LOW`?1-SEASON_LOW_DEMAND_PENALTY:1},inventory$1=[cowFeed$1,huggingMachine],inventory=[appleSapling,bananaSapling,mulch,asparagusSeed,carrotSeed,cornSeed,grapeSeed,garlicSeed,jalapenoSeed,oliveSeed,onionSeed,peaSeed,potatoSeed,pumpkinSeed,soybeanSeed,spinachSeed,sunflowerSeed,strawberrySeed,sugarcaneSeed,sweetPotatoSeed,tomatoSeed,watermelonSeed,wheatSeed,fertilizer,scarecrow,sprinkler,cowFeed$1,huggingMachine],itemIds$1=new Set(inventory.map(e=>e.id)),purchasableItemMap=[...inventory$1,...inventory].reduce((e,t)=>(e[t.id]=t,e),{}),isItemSoldInShop=({id:e})=>!!purchasableItemMap[e],sellItem=(e,{id:t},n=1)=>{if(n===0)return e;let a=itemsMap[t],{completedAchievements:o,dayCount:s,itemsSold:l,money:u,valueAdjustments:d}=e,{loanBalance:f}=e,m=isItemSoldInShop(a),h=m?getResaleValue(a):getAdjustedItemValue(d,t),v=m?1:getSeasonalDemandMultiplier(a,getCurrentSeason(s)),y=isItemAFarmProduct(a),b=h*(y?getSalePriceMultiplier(o):1)*v,x=0,S=0;for(let e=0;e<n;e++){let e=y?Math.min(f,castToMoney(b*LOAN_GARNISHMENT_RATE)):0;y&&(S+=EXPERIENCE_VALUES.ITEM_SOLD);let t=b-e;f=moneyTotal(f,-e),x=moneyTotal(x,t)}y&&(e=adjustLoan(e,moneyTotal(f,-e.loanBalance)));let C={...l,[t]:(l[t]||0)+n};return e=a.isPlantableCrop?{...e,money:moneyTotal(u,x)}:addRevenue({...e,money:u},x),e=addExperience(e,S),e={...e,itemsSold:C},e=decrementItemFromInventory(e,t,n),e=prependPendingPeerMessage(e,SOLD_ITEM_PEER_NOTIFICATION(``,n,a),`warning`),updateLearnedRecipes(e)},getItemBaseValue=e=>itemsMap[e].value,getKegValue=e=>{let{itemId:t,daysUntilMature:n}=e,a=itemsMap[t];if(n>0)return 0;let o=0,s=0,l=0;return wineService.isWineRecipe(a)?(o=a.value,s=WINE_INTEREST_RATE,l=Math.min(Math.max(-n,1),100)):(o=(a.tier??1)*getItemBaseValue(t),s=KEG_INTEREST_RATE,l=Math.abs(e.daysUntilMature)),o*(1+s)**l},sellKeg=(e,t)=>{let{itemId:n}=t,a=itemsMap[n],{cellarItemsSold:o,completedAchievements:s,itemsSold:l,money:u}=e,{loanBalance:d}=e,f=0,m=getKegValue(t),h=Math.min(d,castToMoney(m*LOAN_GARNISHMENT_RATE)),v=m*getSalePriceMultiplier(s)-h;d=moneyTotal(d,-h),f=moneyTotal(f,v),e=adjustLoan(e,moneyTotal(d,-e.loanBalance));let y={...l,[n]:(l[n]??0)+1},b={...o,[n]:(o[n]??0)+1};return e={...e,itemsSold:y,cellarItemsSold:b},e=addRevenue({...e,money:u},f),e=addExperience(e,EXPERIENCE_VALUES.KEG_SOLD),e=removeKegFromCellar(e,t.id),e=prependPendingPeerMessage(e,SOLD_FERMENTED_ITEM_PEER_NOTIFICATION`${a}`,`warning`),e=updateLearnedRecipes(e),e},{OBSERVE:OBSERVE$3,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$2}=fieldMode,setLightningRod=(e,t,n)=>{if(e.field[n][t]!==null)return e;let{selectedItemId:a}=e;e=decrementItemFromInventory(e,a);let o=e.inventory.some(e=>e.id===a);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:a,fertilizerType:fertilizerType.NONE,lightningStrikesSustained:0})),{...e,fieldMode:o?SET_LIGHTNING_ROD$2:OBSERVE$3,selectedItemId:o?a:``}},{OBSERVE:OBSERVE$2,SET_SCARECROW:SET_SCARECROW$2}=fieldMode,setScarecrow=(e,t,n)=>{if(e.field[n][t]!==null)return e;e=decrementItemFromInventory(e,SCARECROW_ITEM_ID);let a=e.inventory.some(e=>e.id===SCARECROW_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SCARECROW_ITEM_ID)),{...e,fieldMode:a?SET_SCARECROW$2:OBSERVE$2,selectedItemId:a?SCARECROW_ITEM_ID:``}},{OBSERVE:OBSERVE$1,SET_SPRINKLER:SET_SPRINKLER$2}=fieldMode,setSprinkler=(e,t,n)=>{let{field:a}=e;if(a[n][t]!==null)return e;e=decrementItemFromInventory(e,SPRINKLER_ITEM_ID);let o=e.inventory.some(e=>e.id===SPRINKLER_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SPRINKLER_ITEM_ID)),e=processSprinklers(e),{...e,fieldMode:o?SET_SPRINKLER$2:OBSERVE$1,selectedItemId:o?SPRINKLER_ITEM_ID:``}},dollarString=e=>toDecimal(dinero({amount:Math.round(e),currency:USD,scale:0}),({value:e})=>Number(e).toLocaleString(`en-US`,{style:`currency`,currency:`USD`,minimumFractionDigits:0,maximumFractionDigits:0})),getProfitRecord=(e,t,n)=>Math.max(e,getProfit(t,n)),isOctober=()=>new Date().getMonth()===9,percentageString=e=>`${Math.round(e*100)}%`,{SEED:SEED$3}=cropLifeStage,addMoney=(e,t)=>({...e,money:moneyTotal(e.money,t)}),sumOfCropsHarvested=memoize(e=>Object.values(e).reduce((e,t)=>e+t,0),{}),sumOfPartialRecordValues=memoize(e=>Object.values(e).reduce((e,t)=>e+(t||0),0),{}),PIE_RECIPE_IDS=Object.values(recipesMap).filter(e=>e.isPie).map(e=>e.id),sumOfPiesMade=memoize(e=>PIE_RECIPE_IDS.reduce((t,n)=>t+(e[n]||0),0),{}),cowFeed=itemsMap[COW_FEED_ITEM_ID],progressAchievement=(e,t)=>({condition:n=>t(n)>=e,getProgress:n=>({currentValue:t(n),goal:e})}),achievements=[((e=100)=>({id:`plant-crop`,name:`Plant a Crop`,description:`Purchase a seed and plant it in the field.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>e!==null&&doesPlotContainCrop(e)&&getCropLifeStage(e)===SEED$3),reward:t=>addMoney(t,e)}))(),((e=150)=>({id:`water-crop`,name:`Water a Crop`,description:`Water a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>doesPlotContainCrop(e)&&!!e.wasWateredToday),reward:t=>addMoney(t,e)}))(),((e=200)=>({id:`harvest-crop`,name:`Harvest a Crop`,description:`Harvest a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>sumOfCropsHarvested(e.cropsHarvested)>=1,reward:t=>addMoney(t,e)}))(),((e=EXPERIENCE_VALUES.LOAN_PAID_OFF)=>({id:`financial-freedom`,name:`Financial Freedom`,description:`Pay off your initial loan from the bank.`,rewardDescription:`${e} experience points`,condition:e=>e.loanBalance===0,reward:t=>addExperience(t,e)}))(),((e=1e4)=>({id:`unlock-crop-price-guide`,name:`Prove Yourself as a Farmer`,description:`Show that you can run a farm by earning at least ${dollarString(e)}. Proven farmers get access to the Crop Price Guide, an invaluable tool for making better buying and selling decisions!`,rewardDescription:`Crop Price Guide`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=15)=>({id:`purchase-cow-pen`,name:`Purchase a Cow Pen`,description:`Construct any size cow pen to let your bovine buddies moo-ve on in!`,rewardDescription:`${e} units of ${cowFeed.name}`,condition:e=>e.purchasedCowPen>0,reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=100,t=Object.keys(standardCowColors).length)=>({id:`purchase-all-cow-colors`,name:`Cows of Many Colors`,description:`Show that you love all cows and purchase one of every color.`,rewardDescription:`${e} units of ${cowFeed.name}`,...progressAchievement(t,e=>Object.values(standardCowColors).filter(t=>(e.cowColorsPurchased[t]||0)>0).length),reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=150)=>({id:`play-during-october`,name:`Halloween Harvest`,description:`Play Farmhand in October and get the gift of the season.`,rewardDescription:`${e} units of ${itemsMap.jackolantern.name}`,condition:()=>isOctober(),reward:t=>addItemToInventory(t,itemsMap.jackolantern,e,!0)}))(),((e=100,t=1e4)=>({id:`sell-10000-jack-o-lanterns`,name:`Spooky Pumpkin Patch`,description:`Sell ${integerString(t)} units of ${itemsMap.jackolantern.name}. That's enough to fill a whole pumpkin patch!`,rewardDescription:`${e} units of ${itemsMap.scarecrow.name}`,...progressAchievement(t,e=>e.itemsSold.jackolantern||0),reward:t=>addItemToInventory(t,itemsMap.scarecrow,e,!0)}))(),((e=5e3,t=25)=>({id:`daily-profit-1`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap.fertilizer.name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap.fertilizer,t,!0)}))(),((e=15e3,t=50)=>({id:`daily-profit-2`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`onion-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`onion-seed`],t,!0)}))(),((e=5e4,t=100)=>({id:`daily-profit-3`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`tomato-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`tomato-seed`],t,!0)}))(),((e=2500,t=35,n=itemsMap[`pumpkin-seed`])=>({id:`profit-average-1`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=100,n=itemsMap[`potato-seed`])=>({id:`profit-average-2`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=25e3,t=250,n=itemsMap[`soybean-seed`])=>({id:`profit-average-3`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=5e4,t=300,n=itemsMap[`chocolate-milk`])=>({id:`profit-average-4`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=15e4,t=500,n=itemsMap[`rainbow-milk-3`])=>({id:`profit-average-5`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e6,t=1e3,n=itemsMap.rainbowCheese)=>({id:`profit-average-6`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=itemsMap[`milk-3`],n=5e3,a=itemsMap.fertilizer)=>({id:`sale-goal-1`,name:`Dairy Master`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e3,t=itemsMap[`rainbow-milk-2`],n=500,a=itemsMap.scarecrow)=>({id:`sale-goal-2`,name:`A Big Average Rainbow`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e4,t=itemsMap.burger,n=5e3)=>({id:`sale-goal-3`,name:`Burger Master`,description:`Sell ${integerString(e)} ${t.name} units.`,rewardDescription:`${integerString(n)} additional inventory spaces`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>({...e,inventoryLimit:e.inventoryLimit+n})}))(),((e=1e3,t=100)=>({id:`steady-stasher`,name:`Steady Stasher`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e4,t=1e3)=>({id:`heavy-hoarder`,name:`Heavy Hoarder`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e5,t=1e4)=>({id:`pro-prepper`,name:`Pro Prepper`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=5e5)=>({id:`i-am-rich-1`,name:`I am Rich!`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[0])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e6)=>({id:`i-am-rich-2`,name:`Millionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[1])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e9)=>({id:`i-am-rich-3`,name:`Billionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[2])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=Math.floor(Math.PI*1e6),t=1e3)=>({id:`lord-of-the-pies`,name:`Lord of the Pies`,description:`Have ${dollarString(e)} on hand.`,rewardDescription:`${integerString(t)} units of ${itemsMap[`pumpkin-pie`].name}`,condition:t=>Math.floor(t.money)===e,reward:e=>addItemToInventory(e,itemsMap[`pumpkin-pie`],t,!0)}))(),{id:`gold-digger`,name:`Gold Digger`,description:`Dig up your first piece of gold.`,rewardDescription:`A Gold Ingot`,condition:e=>!!e.inventory.find(e=>e.id===`gold-ore`),reward:e=>addItemToInventory(e,itemsMap[`gold-ingot`],1,!0)},((e=1e3,t=50)=>({id:`orchardist`,name:`Orchardist`,description:`Pick ${integerString(e)} fruits from trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`apple-sapling`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.treeFruitsHarvested)),reward:e=>addItemToInventory(e,itemsMap[`apple-sapling`],t,!0)}))(),((e=100,t=1e5)=>({id:`piemaker`,name:`Piemaker`,description:`Make ${integerString(e)} pies.`,rewardDescription:dollarString(t),...progressAchievement(e,e=>sumOfPiesMade(e.recipesMade)),reward:e=>addMoney(e,t)}))(),((e=250,t=500)=>({id:`deforestation`,name:`Deforestation`,description:`Chop down ${integerString(e)} trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap.wood.name}`,...progressAchievement(e,e=>e.treesChopped),reward:e=>addItemToInventory(e,itemsMap.wood,t,!0)}))(),((e=100,t=25)=>({id:`landscaper`,name:`Landscaper`,description:`Spread ${integerString(e)} bags of mulch (of any type) on trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`rainbow-mulch`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.mulchApplied)),reward:e=>addItemToInventory(e,itemsMap[`rainbow-mulch`],t,!0)}))()],achievementsMap=achievements.reduce((e,t)=>(e[t.id]=t,e),{}),updateAchievements=(e,t)=>achievements.reduce((e,n)=>(!e.completedAchievements[n.id]&&n.condition(e,t)&&(e={...n.reward(e),completedAchievements:{...e.completedAchievements,[n.id]:!0}},e=showNotification(e,ACHIEVEMENT_COMPLETED(``,{name:n.name,rewardDescription:n.rewardDescription}),`success`)),e),e),updatePeer=(e,t,n,a)=>{let o={...e.peers},s=o[a]?.cowOfferedForTrade?.id,l=n.cowOfferedForTrade?.id,u=l&&s!==l;o[a]=n;let{pendingPeerMessages:d=[]}=n;return u&&(e=showNotification(e,NEW_COW_OFFERED_FOR_TRADE`${n}`,`info`,()=>{t.openDialogView(dialogView.ONLINE_PEERS)})),{...e,peers:o,latestPeerMessages:[...d,...e.latestPeerMessages].slice(0,30)}},upgradeTool=(e,t)=>{if(!t.toolType||!t.level)return e;let n=e;if(e=consumeIngredients(e,{...t,ingredients:t.ingredients||{}},1,EXPERIENCE_VALUES.FORGE_RECIPE_MADE),e===n)return e;e=addItemToInventory(e,t,1);let a=upgrades[t.toolType],o=e.toolLevels[t.toolType],s=a?.[o]?.name||``;return e.toolLevels[t.toolType]=t.level,e=showNotification(e,TOOL_UPGRADED_NOTIFICATION(``,s,t.name)),{...e}},waterAllPlots=e=>waterField(e),waterPlot=(e,t,n)=>{let a=e.field[n][t];return a&&getPlotContentType(a)===itemType.CROP?modifyFieldPlotAt(e,t,n,e=>e&&{...e,wasWateredToday:!0}):e},withdrawCow=(e,t)=>{let{cowIdOfferedForTrade:n}=e;return t===n&&(e={...e,cowIdOfferedForTrade:``}),e},reducers_exports=__exportAll({addCowToInventory:()=>addCowToInventory,addExperience:()=>addExperience,addItemToInventory:()=>addItemToInventory,addPeer:()=>addPeer,addRevenue:()=>addRevenue,adjustLoan:()=>adjustLoan,applyPrecipitation:()=>applyPrecipitation,changeCowAutomaticHugState:()=>changeCowAutomaticHugState,changeCowBreedingPenResident:()=>changeCowBreedingPenResident,changeCowName:()=>changeCowName,chopForestPlot:()=>chopForestPlot,clearPlot:()=>clearPlot,computeCowInventoryForNextDay:()=>computeCowInventoryForNextDay,computeStateForNextDay:()=>computeStateForNextDay,createPriceEvent:()=>createPriceEvent,decrementItemFromInventory:()=>decrementItemFromInventory,fertilizePlot:()=>fertilizePlot,forRange:()=>forRange,generatePriceEvents:()=>generatePriceEvents,harvestForestPlot:()=>harvestForestPlot,harvestPlot:()=>harvestPlot,hugCow:()=>hugCow,incrementPlotContentAge:()=>incrementPlotContentAge,makeFermentationRecipe:()=>makeFermentationRecipe,makeRecipe:()=>makeRecipe,makeWine:()=>makeWine,minePlot:()=>minePlot,modifyCow:()=>modifyCow,modifyFieldPlotAt:()=>modifyFieldPlotAt,modifyForestPlotAt:()=>modifyForestPlotAt,mulchForestPlot:()=>mulchForestPlot,offerCow:()=>offerCow,plantInPlot:()=>plantInPlot,plantTreeInPlot:()=>plantTreeInPlot,prependPendingPeerMessage:()=>prependPendingPeerMessage,processCowAttrition:()=>processCowAttrition,processCowBreeding:()=>processCowBreeding,processCowFertilizerProduction:()=>processCowFertilizerProduction,processFeedingCows:()=>processFeedingCows,processField:()=>processField,processForest:()=>processForest,processLevelUp:()=>processLevelUp,processMilkingCows:()=>processMilkingCows,processNerfs:()=>processNerfs,processSprinklers:()=>processSprinklers,processWeather:()=>processWeather,purchaseCellar:()=>purchaseCellar,purchaseCombine:()=>purchaseCombine,purchaseComposter:()=>purchaseComposter,purchaseCow:()=>purchaseCow,purchaseCowPen:()=>purchaseCowPen,purchaseField:()=>purchaseField,purchaseForest:()=>purchaseForest,purchaseItem:()=>purchaseItem,purchaseSmelter:()=>purchaseSmelter,purchaseStorageExpansion:()=>purchaseStorageExpansion,purchaseWoodChipper:()=>purchaseWoodChipper,removeCowFromInventory:()=>removeCowFromInventory,removeFieldPlotAt:()=>removeFieldPlotAt,removeKegFromCellar:()=>removeKegFromCellar,removePeer:()=>removePeer,rotateNotificationLogs:()=>rotateNotificationLogs,selectCow:()=>selectCow,sellCow:()=>sellCow,sellItem:()=>sellItem,sellKeg:()=>sellKeg,setLightningRod:()=>setLightningRod,setScarecrow:()=>setScarecrow,setSprinkler:()=>setSprinkler,showNotification:()=>showNotification,spawnWeeds:()=>spawnWeeds,unlockTool:()=>unlockTool,updateAchievements:()=>updateAchievements,updateFinancialRecords:()=>updateFinancialRecords,updateInventoryRecordsForNextDay:()=>updateInventoryRecordsForNextDay,updateLearnedRecipes:()=>updateLearnedRecipes,updatePeer:()=>updatePeer,updatePlotShoveledState:()=>updatePlotShoveledState,updatePriceEvents:()=>updatePriceEvents,upgradeTool:()=>upgradeTool,waterAllPlots:()=>waterAllPlots,waterField:()=>waterField,waterPlot:()=>waterPlot,withdrawCow:()=>withdrawCow}),{CHOP:CHOP$2,CLEANUP:CLEANUP$4,FERTILIZE:FERTILIZE$1,HARVEST:HARVEST$3,HARVEST_FRUIT:HARVEST_FRUIT$2,MINE:MINE$3,PLANT:PLANT$2,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$1,SET_SCARECROW:SET_SCARECROW$1,SET_SPRINKLER:SET_SPRINKLER$1,WATER:WATER$3}=fieldMode,{GROWN:GROWN$4}=cropLifeStage,ui_events_default={handleItemPurchaseClick(e,t=1){this.purchaseItem(e,t)},handleMakeRecipeClick(e,t=1){this.makeRecipe(e,t)},handleMakeFermentationRecipeClick(e,t=1){this.makeFermentationRecipe(e,t)},handleMakeWineClick(e,t=1){this.makeWine(e,t)},handleSellKegClick(e){this.sellKeg(e)},handleThrowAwayKegClick(e){this.removeKegFromCellar(e.id)},handleUpgradeTool(e){this.upgradeTool(e)},handleCowPurchaseClick(e){this.purchaseCow(e)},handleCowSellClick(e){this.sellCow(e)},handleCowTradeClick(e){this.tradeForPeerCow(e)},handleCowAutomaticHugChange({target:{checked:e}},t){this.changeCowAutomaticHugState(t,e)},handleCowBreedChange({target:e},t){let{checked:n}=e;this.changeCowBreedingPenResident(t,n)},handleCowHugClick(e){this.hugCow(e.id)},handleCowOfferClick(e){this.offerCow(e.id)},handleCowWithdrawClick(e){this.withdrawCow(e.id)},handleCowNameInputChange(e,t){this.changeCowName(t.id,e)},handleItemSellClick(e,t=1){this.sellItem(e,t)},handleViewChange({target:e}){let{value:t}=e;this.setState({stageFocus:t})},handleViewChangeButtonClick(e){this.setState({stageFocus:e})},handleFieldModeSelect(e){this.setState(({selectedItemId:t})=>({selectedItemId:e!==PLANT$2||TOOLBELT_FIELD_MODES.has(e)?``:t,selectedForestItemId:``,fieldMode:e}))},handleItemSelectClick({id:e,enablesFieldMode:t}){this.setState({fieldMode:t,selectedItemId:e})},handleForestItemSelectClick({id:e}){this.setState({fieldMode:PLANT$2,selectedForestItemId:e})},handlePlotClick(e,t){let{fieldMode:n,hoveredPlotRangeSize:a,selectedItemId:o}=this.state;n===PLANT$2?this.forRange(plantInPlot,a,e,t,o):n===HARVEST$3?this.forRange(harvestPlot,a,e,t):n===MINE$3?this.forRange(minePlot,a,e,t):n===CLEANUP$4?this.forRange(clearPlot,a,e,t):n===WATER$3?this.forRange(waterPlot,a,e,t):n===FERTILIZE$1?this.forRange(fertilizePlot,a,e,t):n===SET_SPRINKLER$1?this.setSprinkler(e,t):n===SET_SCARECROW$1?this.setScarecrow(e,t):n===SET_LIGHTNING_ROD$1&&this.setLightningRod(e,t)},handleFieldActionRangeChange(e){this.setState(()=>({hoveredPlotRangeSize:e}))},handleClickEndDayButton(){this.incrementDay(),document.activeElement?.blur()},handleAddMoneyClick(e){this.setState(({money:t})=>({money:moneyTotal(t,e)}))},handleClearPersistedDataClick(){this.clearPersistedData()},handleWaterAllPlotsClick(){this.waterAllPlots(this.state)},handleFieldPurchase(e){this.purchaseField(e)},handleForestPurchase(e){this.purchaseForest(e)},handleForestPlotClick(e,t){let n=this.state.forest[t]?.[e];if(this.state.fieldMode===CHOP$2){isPlantedTree(n)&&this.chopForestPlot(e,t);return}if(this.state.fieldMode===FERTILIZE$1){isPlantedTree(n)&&this.mulchForestPlot(e,t);return}if(!n){let{selectedForestItemId:n,inventory:a}=this.state;n&&a.some(({id:e})=>e===n)&&this.plantTreeInPlot(e,t,n);return}this.state.fieldMode===HARVEST_FRUIT$2&&isPlantedTree(n)&&getTreeLifeStage(n)===GROWN$4&&this.harvestForestPlot(e,t)},handleCombinePurchase(e){this.purchaseCombine(e)},handleComposterPurchase(e){this.purchaseComposter(e)},handleSmelterPurchase(e){this.purchaseSmelter(e)},handleWoodChipperPurchase(e){this.purchaseWoodChipper(e)},handleCowPenPurchase(e){this.purchaseCowPen(e)},handleCellarPurchase(e){this.purchaseCellar(e)},handleStorageExpansionPurchase(){this.purchaseStorageExpansion()},handleMenuToggle(e=void 0){this.setState(({isMenuOpen:t})=>({isMenuOpen:e??!t}))},handleClickNextMenuButton(){this.focusNextView()},handleClickPreviousMenuButton(){this.focusPreviousView()},handleCowSelect(e){this.selectCow(e)},handleCowClick(e){this.selectCow(e),this.hugCow(e.id)},handleCowPenUnmount(){this.setState({selectedCowId:``})},handleClickDialogViewButton(e){this.openDialogView(e)},handleCloseDialogView(){this.state.isAwaitingCowTradeRequest||this.closeDialogView()},handleDialogViewExited(){this.setState({currentDialogView:dialogView.NONE})},handleClickLoanPaydownButton(e){this.adjustLoan(-e)},handleClickTakeOutLoanButton(e){this.adjustLoan(e)},handleExportDataClick(){let e=new Blob([JSON.stringify(reduceByPersistedKeys(this.state),null,2)],{type:`application/json;charset=utf-8`}),[t]=new Date().toISOString().split(`T`);(0,import_FileSaver_min.saveAs)(e,`farmhand-${t}.json`)},handleImportDataClick([e]){let[,t]=e,n=new FileReader;n.addEventListener(`loadend`,e=>{try{let t=e.target,n=String(t?.result),a=reduceByPersistedKeys(transformStateDataForImport(JSON.parse(n)));if(Object.keys(a).some(e=>typeof this.state[e]!=typeof a[e]))throw Error(INVALID_DATA_PROVIDED);this.setState({...transformStateDataForImport({...this.createInitialState?this.createInitialState():{},...a}),hasBooted:!0}),this.showNotification(`Data loaded!`,`success`)}catch(e){console.error(e),this.showNotification(e.message,`error`)}}),n.readAsText(t.slice())},async handleSaveButtonClick(){await this.persistState(),this.showNotification(PROGRESS_SAVED_MESSAGE,`info`)},handleFarmNameUpdate(e){this.setState({farmName:e})},handleCombineEnabledChange(e,t){this.setState({isCombineEnabled:t})},handleUseAlternateEndDayButtonPositionChange(e,t){this.setState({useAlternateEndDayButtonPosition:t})},handleAllowCustomPeerCowNamesChange(e,t){this.setState({allowCustomPeerCowNames:t})},handleShowHomeScreenChange(e,t){this.state.stageFocus===stageFocusType.HOME&&!t&&this.focusNextView(),this.setState({showHomeScreen:t})},handleShowNotificationsChange({target:{checked:e}}){this.setState({showNotifications:e})},handleClickNotificationIndicator(){this.openDialogView(dialogView.FARMERS_LOG)},handleOnlineToggleChange(e){e||this.showNotification(DISCONNECTING_FROM_SERVER,`info`),this.setState(({room:t,cowIdOfferedForTrade:n})=>e?{redirect:withCurrentHashQuery(`/online/${encodeURIComponent(t)}`),cowIdOfferedForTrade:n,isOnline:!0}:{redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``})},handleRoomChange(e){this.setState(()=>({room:e,redirect:withCurrentHashQuery(`/online/${encodeURIComponent(e.trim()||`global`)}`)}))},handleActivePlayerButtonClick(){this.openDialogView(dialogView.ONLINE_PEERS)},handleRNGSeedChange(e){let{origin:t,pathname:n,search:a,hash:o}=import_window.default.location,s=new URLSearchParams(a),l=e.trim();l===``?(randomNumberService.unseedRandomNumber(),s.delete(`seed`),this.showNotification(`Random seed reset`,`info`)):(randomNumberService.seedRandomNumber(l),s.set(`seed`,l),this.showNotification(`Random seed set to "${l}"`,`success`));let u=s.toString(),d=`${t}${n}${u.length>0?`?${u}`:``}${o}`;import_window.default.history.replaceState({},``,d)},handleChatRoomOpenStateChange(e){this.setState({isChatOpen:e})},handleGameUpdateAvailable(e){this.showNotification(UPDATE_AVAILABLE,`success`,()=>{e(!0)})}},createContextData=()=>({gameState:{viewTitle:``,viewList:[],features:{},blockInput:!1,shopInventory:[],isChatAvailable:!1,playerInventory:[],levelEntitlements:{items:{},tools:{},sprinklerRange:0,stageFocusType:{}},fieldToolInventory:[],mulchInventory:[],plantableCropInventory:[],plantableTreeInventory:[],playerInventoryQuantities:{},activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:`NONE`,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:0},cowInventory:[],cowColorsPurchased:{BLUE:0,BROWN:0,GREEN:0,ORANGE:0,PURPLE:0,RAINBOW:0,WHITE:0,YELLOW:0},cowIdOfferedForTrade:``,cowsSold:{},cowsTraded:0,cowTradeTimeoutId:null,cropsHarvested:{ASPARAGUS:0,CARROT:0,CORN:0,GARLIC:0,GRAPE:0,JALAPENO:0,OLIVE:0,ONION:0,PEA:0,POTATO:0,PUMPKIN:0,SOYBEAN:0,SPINACH:0,SUNFLOWER:0,STRAWBERRY:0,SWEET_POTATO:0,TOMATO:0,WATERMELON:0,WHEAT:0,WEED:0},dayCount:0,experience:0,farmName:``,field:[[]],forest:[[]],treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},fieldMode:`OBSERVE`,getCowAccept:()=>{},getCowReject:()=>{},getCowTradeRequest:()=>{},getPeerMetadata:()=>{},hasBooted:!0,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:-1,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:``,inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:-1,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!0,isMenuOpen:!1,itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:!0,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:0,loansTakenOut:0,money:0,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendCowAccept:()=>{},sendCowReject:()=>{},sendCowTradeRequest:()=>{},sendPeerMetadata:()=>{},selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:``,showHomeScreen:!0,showNotifications:!0,stageFocus:`HOME`,todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{AXE:`UNAVAILABLE`,PICKER_POLE:`UNAVAILABLE`,SCYTHE:`DEFAULT`,SHOVEL:`DEFAULT`,HOE:`DEFAULT`,WATERING_CAN:`DEFAULT`},valueAdjustments:{},version:`1.0.0`,todaysNotifications:[],useAlternateEndDayButtonPosition:!1},handlers:{...ui_events_default,debounced:{...ui_events_default}}}),FarmhandContext=(0,import_react$24.createContext)(createContextData()),getDayOfSeason=e=>(e-1)%15+1,usePrefersReducedMotion=()=>{let[e,t]=(0,import_react$24.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,import_react$24.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=e=>{t(e.matches)};return e.addEventListener?e.addEventListener(`change`,n):`addListener`in e&&e.addListener(n),()=>{e.removeEventListener?e.removeEventListener(`change`,n):`removeListener`in e&&e.removeListener(n)}},[]),e},MoneyDisplay=({money:e})=>{let t=`rgb(255, 255, 255)`,n=usePrefersReducedMotion(),[a,o]=(0,import_react$24.useState)(e),[s,l]=(0,import_react$24.useState)(t),u=(0,import_react$24.useRef)(e),d=(0,import_react$24.useRef)(null);return(0,import_react$24.useEffect)(()=>{if(d.current?.cancel(),d.current=null,n||u.current===e){u.current=e,o(e),l(t);return}let a=e>u.current?`rgb(0, 255, 0)`:`rgb(255, 0, 0)`;return d.current=(0,import_shifty.tween)({easing:`easeOutQuad`,duration:750,render:({color:e,money:t})=>{l(String(e)),o(Number(t))},from:{color:a,money:u.current},to:{color:t,money:e}}),u.current=e,()=>{d.current?.cancel(),d.current=null}},[e,n]),(0,import_jsx_runtime.jsx)(`span`,{style:{color:s},children:moneyString(a)})},AppBar=({dayCount:e,handleClickNotificationIndicator:t,money:n,showNotifications:a,todaysNotifications:o,viewTitle:s,areAnyNotificationsErrors:l=o.some(({severity:e})=>e===`error`)})=>(0,import_jsx_runtime.jsx)(AppBar$1,{className:`AppBar top-level`,position:`fixed`,sx:{"& .toolbar":{display:`flex`,"& h2":{color:`#fff`,fontFamily:`"Francois One", monospace`,fontSize:`1.2em`},"& .stage-header":{display:`none`,marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`block`}},"& .season-display":{marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{position:`absolute`,left:`50%`,marginLeft:0,transform:`translateX(-50%)`}},"& .money-display":{position:`absolute`,right:`1em`},"& .notification-indicator-container":{display:`flex`,"& .error-indicator":{marginLeft:`1em`}}}},children:(0,import_jsx_runtime.jsxs)(Toolbar,{className:`toolbar`,children:[!a&&(0,import_jsx_runtime.jsxs)(`div`,{className:`notification-indicator-container`,onClick:t,children:[(0,import_jsx_runtime.jsx)(Typography,{children:(0,import_jsx_runtime.jsx)(StepIcon,{icon:o.length})}),l&&(0,import_jsx_runtime.jsx)(Typography,{className:`error-indicator`,children:(0,import_jsx_runtime.jsx)(StepIcon,{error:!0,icon:``})})]}),(0,import_jsx_runtime.jsx)(Typography,{className:`stage-header`,variant:`h2`,children:s}),(0,import_jsx_runtime.jsx)(Typography,{className:`season-display`,variant:`h2`,children:`Day ${getDayOfSeason(e)} of ${seasonNameMap[getCurrentSeason(e)]}`}),(0,import_jsx_runtime.jsx)(Typography,{className:`money-display`,variant:`h2`,children:(0,import_jsx_runtime.jsx)(MoneyDisplay,{money:n})})]})});AppBar.propTypes={dayCount:import_prop_types$1.number.isRequired,handleClickNotificationIndicator:import_prop_types$1.func.isRequired,money:import_prop_types$1.number.isRequired,showNotifications:import_prop_types$1.bool.isRequired,todaysNotifications:import_prop_types$1.array.isRequired,viewTitle:import_prop_types$1.string.isRequired};function Consumer$29(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(AppBar,{...t,...n,...e})})}var require_lib$5=__commonJSMin(((e,t)=>{function n(e){return e&&typeof e==`object`&&`default`in e?e.default:e}var a=require_react(),o=n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var u=!!(typeof window<`u`&&window.document&&window.document.createElement);function d(e,t,n){if(typeof e!=`function`)throw Error(`Expected reducePropsToState to be a function.`);if(typeof t!=`function`)throw Error(`Expected handleStateChangeOnClient to be a function.`);if(n!==void 0&&typeof n!=`function`)throw Error(`Expected mapStateOnServer to either be undefined or a function.`);function d(e){return e.displayName||e.name||`Component`}return function(f){if(typeof f!=`function`)throw Error(`Expected WrappedComponent to be a React component.`);var m=[],h;function v(){h=e(m.map(function(e){return e.props})),y.canUseDOM?t(h):n&&(h=n(h))}var y=function(e){l(t,e);function t(){return e.apply(this,arguments)||this}t.peek=function(){return h},t.rewind=function(){if(t.canUseDOM)throw Error(`You may only call rewind() on the server. Call peek() to read the current state.`);var e=h;return h=void 0,m=[],e};var n=t.prototype;return n.UNSAFE_componentWillMount=function(){m.push(this),v()},n.componentDidUpdate=function(){v()},n.componentWillUnmount=function(){var e=m.indexOf(this);m.splice(e,1),v()},n.render=function(){return o.createElement(f,this.props)},t}(a.PureComponent);return s(y,`displayName`,`SideEffect(`+d(f)+`)`),s(y,`canUseDOM`,u),y}}t.exports=d})),require_react_fast_compare=__commonJSMin(((e,t)=>{var n=typeof Element<`u`,a=typeof Map==`function`,o=typeof Set==`function`,s=typeof ArrayBuffer==`function`&&!!ArrayBuffer.isView;function l(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var u,d,f;if(Array.isArray(e)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(!l(e[d],t[d]))return!1;return!0}var m;if(a&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;for(m=e.entries();!(d=m.next()).done;)if(!l(d.value[1],t.get(d.value[0])))return!1;return!0}if(o&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;return!0}if(s&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(e[d]!==t[d])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf==`function`&&typeof t.valueOf==`function`)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString==`function`&&typeof t.toString==`function`)return e.toString()===t.toString();if(f=Object.keys(e),u=f.length,u!==Object.keys(t).length)return!1;for(d=u;d--!==0;)if(!Object.prototype.hasOwnProperty.call(t,f[d]))return!1;if(n&&e instanceof Element)return!1;for(d=u;d--!==0;)if(!((f[d]===`_owner`||f[d]===`__v`||f[d]===`__o`)&&e.$$typeof)&&!l(e[f[d]],t[f[d]]))return!1;return!0}return e!==e&&t!==t}t.exports=function(e,t){try{return l(e,t)}catch(e){if((e.message||``).match(/stack|recursion/i))return console.warn(`react-fast-compare cannot handle circular refs`),!1;throw e}}})),import_lib$1=__toESM(require_lib$5()),import_react_fast_compare=__toESM(require_react_fast_compare()),import_object_assign=__toESM(require_object_assign()),ATTRIBUTE_NAMES={BODY:`bodyAttributes`,HTML:`htmlAttributes`,TITLE:`titleAttributes`},TAG_NAMES={BASE:`base`,BODY:`body`,HEAD:`head`,HTML:`html`,LINK:`link`,META:`meta`,NOSCRIPT:`noscript`,SCRIPT:`script`,STYLE:`style`,TITLE:`title`};Object.keys(TAG_NAMES).map(function(e){return TAG_NAMES[e]});var TAG_PROPERTIES={CHARSET:`charset`,CSS_TEXT:`cssText`,HREF:`href`,HTTPEQUIV:`http-equiv`,INNER_HTML:`innerHTML`,ITEM_PROP:`itemprop`,NAME:`name`,PROPERTY:`property`,REL:`rel`,SRC:`src`,TARGET:`target`},REACT_TAG_MAP={accesskey:`accessKey`,charset:`charSet`,class:`className`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,"http-equiv":`httpEquiv`,itemprop:`itemProp`,tabindex:`tabIndex`},HELMET_PROPS={DEFAULT_TITLE:`defaultTitle`,DEFER:`defer`,ENCODE_SPECIAL_CHARACTERS:`encodeSpecialCharacters`,ON_CHANGE_CLIENT_STATE:`onChangeClientState`,TITLE_TEMPLATE:`titleTemplate`},HTML_TAG_MAP=Object.keys(REACT_TAG_MAP).reduce(function(e,t){return e[REACT_TAG_MAP[t]]=t,e},{}),SELF_CLOSING_TAGS=[TAG_NAMES.NOSCRIPT,TAG_NAMES.SCRIPT,TAG_NAMES.STYLE],HELMET_ATTRIBUTE=`data-react-helmet`,_typeof$3=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},classCallCheck=function(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)},createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,`value`in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},inherits=function(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},objectWithoutProperties$1=function(e,t){var n={};for(var a in e)t.indexOf(a)>=0||Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n},possibleConstructorReturn=function(e,t){if(!e)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return t&&(typeof t==`object`||typeof t==`function`)?t:e},encodeSpecialCharacters=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!1?String(e):String(e).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)},getTitleFromPropsList=function(e){var t=getInnermostProperty(e,TAG_NAMES.TITLE),n=getInnermostProperty(e,HELMET_PROPS.TITLE_TEMPLATE);if(n&&t)return n.replace(/%s/g,function(){return Array.isArray(t)?t.join(``):t});var a=getInnermostProperty(e,HELMET_PROPS.DEFAULT_TITLE);return t||a||void 0},getOnChangeClientState=function(e){return getInnermostProperty(e,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},getAttributesFromPropsList=function(e,t){return t.filter(function(t){return t[e]!==void 0}).map(function(t){return t[e]}).reduce(function(e,t){return _extends({},e,t)},{})},getBaseTagFromPropsList=function(e,t){return t.filter(function(e){return e[TAG_NAMES.BASE]!==void 0}).map(function(e){return e[TAG_NAMES.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var a=Object.keys(n),o=0;o<a.length;o++){var s=a[o].toLowerCase();if(e.indexOf(s)!==-1&&n[s])return t.concat(n)}return t},[])},getTagsFromPropsList=function(e,t,n){var a={};return n.filter(function(t){return Array.isArray(t[e])?!0:(t[e]!==void 0&&warn$1(`Helmet: `+e+` should be of type "Array". Instead found type "`+_typeof$3(t[e])+`"`),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var o={};n.filter(function(e){for(var n=void 0,s=Object.keys(e),l=0;l<s.length;l++){var u=s[l],d=u.toLowerCase();t.indexOf(d)!==-1&&!(n===TAG_PROPERTIES.REL&&e[n].toLowerCase()===`canonical`)&&!(d===TAG_PROPERTIES.REL&&e[d].toLowerCase()===`stylesheet`)&&(n=d),t.indexOf(u)!==-1&&(u===TAG_PROPERTIES.INNER_HTML||u===TAG_PROPERTIES.CSS_TEXT||u===TAG_PROPERTIES.ITEM_PROP)&&(n=u)}if(!n||!e[n])return!1;var f=e[n].toLowerCase();return a[n]||(a[n]={}),o[n]||(o[n]={}),a[n][f]?!1:(o[n][f]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var s=Object.keys(o),l=0;l<s.length;l++){var u=s[l];a[u]=(0,import_object_assign.default)({},a[u],o[u])}return e},[]).reverse()},getInnermostProperty=function(e,t){for(var n=e.length-1;n>=0;n--){var a=e[n];if(a.hasOwnProperty(t))return a[t]}return null},reducePropsToState=function(e){return{baseTag:getBaseTagFromPropsList([TAG_PROPERTIES.HREF,TAG_PROPERTIES.TARGET],e),bodyAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY,e),defer:getInnermostProperty(e,HELMET_PROPS.DEFER),encode:getInnermostProperty(e,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML,e),linkTags:getTagsFromPropsList(TAG_NAMES.LINK,[TAG_PROPERTIES.REL,TAG_PROPERTIES.HREF],e),metaTags:getTagsFromPropsList(TAG_NAMES.META,[TAG_PROPERTIES.NAME,TAG_PROPERTIES.CHARSET,TAG_PROPERTIES.HTTPEQUIV,TAG_PROPERTIES.PROPERTY,TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:getTagsFromPropsList(TAG_NAMES.NOSCRIPT,[TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:getOnChangeClientState(e),scriptTags:getTagsFromPropsList(TAG_NAMES.SCRIPT,[TAG_PROPERTIES.SRC,TAG_PROPERTIES.INNER_HTML],e),styleTags:getTagsFromPropsList(TAG_NAMES.STYLE,[TAG_PROPERTIES.CSS_TEXT],e),title:getTitleFromPropsList(e),titleAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE,e)}},rafPolyfill=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){rafPolyfill(t)},0)}}(),cafPolyfill=function(e){return clearTimeout(e)},requestAnimationFrame$1=typeof window<`u`?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||rafPolyfill:{}.requestAnimationFrame||rafPolyfill,cancelAnimationFrame$1=typeof window<`u`?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||cafPolyfill:{}.cancelAnimationFrame||cafPolyfill,warn$1=function(e){return console&&typeof console.warn==`function`&&console.warn(e)},_helmetCallback=null,handleClientStateChange=function(e){_helmetCallback&&cancelAnimationFrame$1(_helmetCallback),e.defer?_helmetCallback=requestAnimationFrame$1(function(){commitTagChanges(e,function(){_helmetCallback=null})}):(commitTagChanges(e),_helmetCallback=null)},commitTagChanges=function(e,t){var n=e.baseTag,a=e.bodyAttributes,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.onChangeClientState,f=e.scriptTags,m=e.styleTags,h=e.title,v=e.titleAttributes;updateAttributes(TAG_NAMES.BODY,a),updateAttributes(TAG_NAMES.HTML,o),updateTitle(h,v);var y={baseTag:updateTags(TAG_NAMES.BASE,n),linkTags:updateTags(TAG_NAMES.LINK,s),metaTags:updateTags(TAG_NAMES.META,l),noscriptTags:updateTags(TAG_NAMES.NOSCRIPT,u),scriptTags:updateTags(TAG_NAMES.SCRIPT,f),styleTags:updateTags(TAG_NAMES.STYLE,m)},b={},x={};Object.keys(y).forEach(function(e){var t=y[e],n=t.newTags,a=t.oldTags;n.length&&(b[e]=n),a.length&&(x[e]=y[e].oldTags)}),t&&t(),d(e,b,x)},flattenArray=function(e){return Array.isArray(e)?e.join(``):e},updateTitle=function(e,t){e!==void 0&&document.title!==e&&(document.title=flattenArray(e)),updateAttributes(TAG_NAMES.TITLE,t)},updateAttributes=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var a=n.getAttribute(HELMET_ATTRIBUTE),o=a?a.split(`,`):[],s=[].concat(o),l=Object.keys(t),u=0;u<l.length;u++){var d=l[u],f=t[d]||``;n.getAttribute(d)!==f&&n.setAttribute(d,f),o.indexOf(d)===-1&&o.push(d);var m=s.indexOf(d);m!==-1&&s.splice(m,1)}for(var h=s.length-1;h>=0;h--)n.removeAttribute(s[h]);o.length===s.length?n.removeAttribute(HELMET_ATTRIBUTE):n.getAttribute(HELMET_ATTRIBUTE)!==l.join(`,`)&&n.setAttribute(HELMET_ATTRIBUTE,l.join(`,`))}},updateTags=function(e,t){var n=document.head||document.querySelector(TAG_NAMES.HEAD),a=n.querySelectorAll(e+`[`+HELMET_ATTRIBUTE+`]`),o=Array.prototype.slice.call(a),s=[],l=void 0;return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var a in t)if(t.hasOwnProperty(a))if(a===TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(a===TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var u=t[a]===void 0?``:t[a];n.setAttribute(a,u)}n.setAttribute(HELMET_ATTRIBUTE,`true`),o.some(function(e,t){return l=t,n.isEqualNode(e)})?o.splice(l,1):s.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),s.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:s}},generateElementAttributesAsString=function(e){return Object.keys(e).reduce(function(t,n){var a=e[n]===void 0?``+n:n+`="`+e[n]+`"`;return t?t+` `+a:a},``)},generateTitleAsString=function(e,t,n,a){var o=generateElementAttributesAsString(n),s=flattenArray(t);return o?`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+`>`+encodeSpecialCharacters(s,a)+`</`+e+`>`:`<`+e+` `+HELMET_ATTRIBUTE+`="true">`+encodeSpecialCharacters(s,a)+`</`+e+`>`},generateTagsAsString=function(e,t,n){return t.reduce(function(t,a){var o=Object.keys(a).filter(function(e){return!(e===TAG_PROPERTIES.INNER_HTML||e===TAG_PROPERTIES.CSS_TEXT)}).reduce(function(e,t){var o=a[t]===void 0?t:t+`="`+encodeSpecialCharacters(a[t],n)+`"`;return e?e+` `+o:o},``),s=a.innerHTML||a.cssText||``,l=SELF_CLOSING_TAGS.indexOf(e)===-1;return t+`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+(l?`/>`:`>`+s+`</`+e+`>`)},``)},convertElementAttributestoReactProps=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[REACT_TAG_MAP[n]||n]=e[n],t},t)},convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[HTML_TAG_MAP[n]||n]=e[n],t},t)},generateTitleAsReactComponent=function(e,t,n){var a,o=convertElementAttributestoReactProps(n,(a={key:t},a[HELMET_ATTRIBUTE]=!0,a));return[import_react$24.createElement(TAG_NAMES.TITLE,o,t)]},generateTagsAsReactComponent=function(e,t){return t.map(function(t,n){var a,o=(a={key:n},a[HELMET_ATTRIBUTE]=!0,a);return Object.keys(t).forEach(function(e){var n=REACT_TAG_MAP[e]||e;n===TAG_PROPERTIES.INNER_HTML||n===TAG_PROPERTIES.CSS_TEXT?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),import_react$24.createElement(e,o)})},getMethodsForTag=function(e,t,n){switch(e){case TAG_NAMES.TITLE:return{toComponent:function(){return generateTitleAsReactComponent(e,t.title,t.titleAttributes,n)},toString:function(){return generateTitleAsString(e,t.title,t.titleAttributes,n)}};case ATTRIBUTE_NAMES.BODY:case ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return convertElementAttributestoReactProps(t)},toString:function(){return generateElementAttributesAsString(t)}};default:return{toComponent:function(){return generateTagsAsReactComponent(e,t)},toString:function(){return generateTagsAsString(e,t,n)}}}},mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,a=e.encode,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.scriptTags,f=e.styleTags,m=e.title,h=m===void 0?``:m,v=e.titleAttributes;return{base:getMethodsForTag(TAG_NAMES.BASE,t,a),bodyAttributes:getMethodsForTag(ATTRIBUTE_NAMES.BODY,n,a),htmlAttributes:getMethodsForTag(ATTRIBUTE_NAMES.HTML,o,a),link:getMethodsForTag(TAG_NAMES.LINK,s,a),meta:getMethodsForTag(TAG_NAMES.META,l,a),noscript:getMethodsForTag(TAG_NAMES.NOSCRIPT,u,a),script:getMethodsForTag(TAG_NAMES.SCRIPT,d,a),style:getMethodsForTag(TAG_NAMES.STYLE,f,a),title:getMethodsForTag(TAG_NAMES.TITLE,{title:h,titleAttributes:v},a)}},HelmetExport=function(e){var t,n;return n=t=function(t){inherits(n,t);function n(){return classCallCheck(this,n),possibleConstructorReturn(this,t.apply(this,arguments))}return n.prototype.shouldComponentUpdate=function(e){return!(0,import_react_fast_compare.default)(this.props,e)},n.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case TAG_NAMES.SCRIPT:case TAG_NAMES.NOSCRIPT:return{innerHTML:t};case TAG_NAMES.STYLE:return{cssText:t}}throw Error(`<`+e.type+` /> elements are self-closing and can not contain children. Refer to our API for more information.`)},n.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,a=e.arrayTypeChildren,o=e.newChildProps,s=e.nestedChildren;return _extends({},a,(t={},t[n.type]=[].concat(a[n.type]||[],[_extends({},o,this.mapNestedChildrenToProps(n,s))]),t))},n.prototype.mapObjectTypeChildren=function(e){var t,n,a=e.child,o=e.newProps,s=e.newChildProps,l=e.nestedChildren;switch(a.type){case TAG_NAMES.TITLE:return _extends({},o,(t={},t[a.type]=l,t.titleAttributes=_extends({},s),t));case TAG_NAMES.BODY:return _extends({},o,{bodyAttributes:_extends({},s)});case TAG_NAMES.HTML:return _extends({},o,{htmlAttributes:_extends({},s)})}return _extends({},o,(n={},n[a.type]=_extends({},s),n))},n.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=_extends({},t);return Object.keys(e).forEach(function(t){var a;n=_extends({},n,(a={},a[t]=e[t],a))}),n},n.prototype.warnOnInvalidChildren=function(e,t){return!0},n.prototype.mapChildrenToProps=function(e,t){var n=this,a={};return import_react$24.Children.forEach(e,function(e){if(!(!e||!e.props)){var o=e.props,s=o.children,l=convertReactPropstoHtmlAttributes(objectWithoutProperties$1(o,[`children`]));switch(n.warnOnInvalidChildren(e,s),e.type){case TAG_NAMES.LINK:case TAG_NAMES.META:case TAG_NAMES.NOSCRIPT:case TAG_NAMES.SCRIPT:case TAG_NAMES.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:s});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:s});break}}}),t=this.mapArrayTypeChildrenToProps(a,t),t},n.prototype.render=function(){var t=this.props,n=t.children,a=_extends({},objectWithoutProperties$1(t,[`children`]));return n&&(a=this.mapChildrenToProps(n,a)),import_react$24.createElement(e,a)},createClass(n,null,[{key:`canUseDOM`,set:function(t){e.canUseDOM=t}}]),n}(import_react$24.Component),t.propTypes={base:import_prop_types$1.default.object,bodyAttributes:import_prop_types$1.default.object,children:import_prop_types$1.default.oneOfType([import_prop_types$1.default.arrayOf(import_prop_types$1.default.node),import_prop_types$1.default.node]),defaultTitle:import_prop_types$1.default.string,defer:import_prop_types$1.default.bool,encodeSpecialCharacters:import_prop_types$1.default.bool,htmlAttributes:import_prop_types$1.default.object,link:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),meta:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),noscript:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),onChangeClientState:import_prop_types$1.default.func,script:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),style:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),title:import_prop_types$1.default.string,titleAttributes:import_prop_types$1.default.object,titleTemplate:import_prop_types$1.default.string},t.defaultProps={defer:!0,encodeSpecialCharacters:!0},t.peek=e.peek,t.rewind=function(){var t=e.rewind();return t||=mapStateOnServer({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:``,titleAttributes:{}}),t},n}((0,import_lib$1.default)(reducePropsToState,handleClientStateChange,mapStateOnServer)(function(){return null}));HelmetExport.renderStatic=HelmetExport.rewind,init_generateUtilityClasses(),init_generateUtilityClass();function getButtonUtilityClass(e){return generateUtilityClass(`MuiButton`,e)}var buttonClasses=generateUtilityClasses(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge`.split(`.`)),ButtonGroupContext=import_react$24.createContext({}),ButtonGroupButtonContext=import_react$24.createContext(void 0);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_resolveProps(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$52=[`children`,`color`,`component`,`className`,`disabled`,`disableElevation`,`disableFocusRipple`,`endIcon`,`focusVisibleClassName`,`fullWidth`,`size`,`startIcon`,`type`,`variant`],useUtilityClasses$46=e=>{let{color:t,disableElevation:n,fullWidth:a,size:o,variant:s,classes:l}=e;return _extends$3({},l,composeClasses({root:[`root`,s,`${s}${capitalize_default(t)}`,`size${capitalize_default(o)}`,`${s}Size${capitalize_default(o)}`,`color${capitalize_default(t)}`,n&&`disableElevation`,a&&`fullWidth`],label:[`label`],startIcon:[`icon`,`startIcon`,`iconSize${capitalize_default(o)}`],endIcon:[`icon`,`endIcon`,`iconSize${capitalize_default(o)}`]},getButtonUtilityClass,l))},commonIconStyles=e=>_extends$3({},e.size===`small`&&{"& > *:nth-of-type(1)":{fontSize:18}},e.size===`medium`&&{"& > *:nth-of-type(1)":{fontSize:20}},e.size===`large`&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled$1(ButtonBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${capitalize_default(n.color)}`],t[`size${capitalize_default(n.size)}`],t[`${n.variant}Size${capitalize_default(n.size)}`],n.color===`inherit`&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(({theme:e,ownerState:t})=>{var n,a;let o=e.palette.mode===`light`?e.palette.grey[300]:e.palette.grey[800],s=e.palette.mode===`light`?e.palette.grey.A100:e.palette.grey[700];return _extends$3({},e.typography.button,{minWidth:64,padding:`6px 16px`,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:e.transitions.duration.short}),"&:hover":_extends$3({textDecoration:`none`,backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`text`&&t.color!==`inherit`&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`outlined`&&t.color!==`inherit`&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`contained`&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:s,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},t.variant===`contained`&&t.color!==`inherit`&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${buttonClasses.focusVisible}`]:_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${buttonClasses.disabled}`]:_extends$3({color:(e.vars||e).palette.action.disabled},t.variant===`outlined`&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},t.variant===`contained`&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},t.variant===`text`&&{padding:`6px 8px`},t.variant===`text`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main},t.variant===`outlined`&&{padding:`5px 15px`,border:`1px solid currentColor`},t.variant===`outlined`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,import_colorManipulator.alpha)(e.palette[t.color].main,.5)}`},t.variant===`contained`&&{color:e.vars?e.vars.palette.text.primary:(a=e.palette).getContrastText?.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:o,boxShadow:(e.vars||e).shadows[2]},t.variant===`contained`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},t.color===`inherit`&&{color:`inherit`,borderColor:`currentColor`},t.size===`small`&&t.variant===`text`&&{padding:`4px 5px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`text`&&{padding:`8px 11px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`outlined`&&{padding:`3px 9px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`outlined`&&{padding:`7px 21px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`contained`&&{padding:`4px 10px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`contained`&&{padding:`8px 22px`,fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:`100%`})},({ownerState:e})=>e.disableElevation&&{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${buttonClasses.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${buttonClasses.disabled}`]:{boxShadow:`none`}}),ButtonStartIcon=styled$1(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.startIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:8,marginLeft:-4},e.size===`small`&&{marginLeft:-2},commonIconStyles(e))),ButtonEndIcon=styled$1(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.endIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:-4,marginLeft:8},e.size===`small`&&{marginRight:-2},commonIconStyles(e))),Button=import_react$24.forwardRef(function(e,t){let n=import_react$24.useContext(ButtonGroupContext),a=import_react$24.useContext(ButtonGroupButtonContext),o=useDefaultProps({props:resolveProps(n,e),name:`MuiButton`}),{children:s,color:l=`primary`,component:u=`button`,className:d,disabled:f=!1,disableElevation:m=!1,disableFocusRipple:h=!1,endIcon:v,focusVisibleClassName:y,fullWidth:b=!1,size:x=`medium`,startIcon:S,type:C,variant:T=`text`}=o,E=_objectWithoutPropertiesLoose$3(o,_excluded$52),D=_extends$3({},o,{color:l,component:u,disabled:f,disableElevation:m,disableFocusRipple:h,fullWidth:b,size:x,type:C,variant:T}),O=useUtilityClasses$46(D),k=S&&(0,import_jsx_runtime.jsx)(ButtonStartIcon,{className:O.startIcon,ownerState:D,children:S}),j=v&&(0,import_jsx_runtime.jsx)(ButtonEndIcon,{className:O.endIcon,ownerState:D,children:v}),M=a||``;return(0,import_jsx_runtime.jsxs)(ButtonRoot,_extends$3({ownerState:D,className:clsx$1(n.className,O.root,d,M),component:u,disabled:f,focusRipple:!h,focusVisibleClassName:clsx$1(O.focusVisible,y),ref:t,type:C},E,{classes:O,children:[k,s,j]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogUtilityClass(e){return generateUtilityClass(`MuiDialog`,e)}var dialogClasses=generateUtilityClasses(`MuiDialog`,[`root`,`scrollPaper`,`scrollBody`,`container`,`paper`,`paperScrollPaper`,`paperScrollBody`,`paperWidthFalse`,`paperWidthXs`,`paperWidthSm`,`paperWidthMd`,`paperWidthLg`,`paperWidthXl`,`paperFullWidth`,`paperFullScreen`]),DialogContext=import_react$24.createContext({});init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useId$1(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$51=[`aria-describedby`,`aria-labelledby`,`BackdropComponent`,`BackdropProps`,`children`,`className`,`disableEscapeKeyDown`,`fullScreen`,`fullWidth`,`maxWidth`,`onBackdropClick`,`onClick`,`onClose`,`open`,`PaperComponent`,`PaperProps`,`scroll`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],DialogBackdrop=styled$1(Backdrop,{name:`MuiDialog`,slot:`Backdrop`,overrides:(e,t)=>t.backdrop})({zIndex:-1}),useUtilityClasses$45=e=>{let{classes:t,scroll:n,maxWidth:a,fullWidth:o,fullScreen:s}=e;return composeClasses({root:[`root`],container:[`container`,`scroll${capitalize_default(n)}`],paper:[`paper`,`paperScroll${capitalize_default(n)}`,`paperWidth${capitalize_default(String(a))}`,o&&`paperFullWidth`,s&&`paperFullScreen`]},getDialogUtilityClass,t)},DialogRoot=styled$1(Modal,{name:`MuiDialog`,slot:`Root`,overridesResolver:(e,t)=>t.root})({"@media print":{position:`absolute !important`}}),DialogContainer=styled$1(`div`,{name:`MuiDialog`,slot:`Container`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.container,t[`scroll${capitalize_default(n.scroll)}`]]}})(({ownerState:e})=>_extends$3({height:`100%`,"@media print":{height:`auto`},outline:0},e.scroll===`paper`&&{display:`flex`,justifyContent:`center`,alignItems:`center`},e.scroll===`body`&&{overflowY:`auto`,overflowX:`hidden`,textAlign:`center`,"&::after":{content:`""`,display:`inline-block`,verticalAlign:`middle`,height:`100%`,width:`0`}})),DialogPaper=styled$1(Paper,{name:`MuiDialog`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`scrollPaper${capitalize_default(n.scroll)}`],t[`paperWidth${capitalize_default(String(n.maxWidth))}`],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})(({theme:e,ownerState:t})=>_extends$3({margin:32,position:`relative`,overflowY:`auto`,"@media print":{overflowY:`visible`,boxShadow:`none`}},t.scroll===`paper`&&{display:`flex`,flexDirection:`column`,maxHeight:`calc(100% - 64px)`},t.scroll===`body`&&{display:`inline-block`,verticalAlign:`middle`,textAlign:`left`},!t.maxWidth&&{maxWidth:`calc(100% - 64px)`},t.maxWidth===`xs`&&{maxWidth:e.breakpoints.unit===`px`?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:`calc(100% - 64px)`}}},t.maxWidth&&t.maxWidth!==`xs`&&{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(e.breakpoints.values[t.maxWidth]+64)]:{maxWidth:`calc(100% - 64px)`}}},t.fullWidth&&{width:`calc(100% - 64px)`},t.fullScreen&&{margin:0,width:`100%`,maxWidth:`100%`,height:`100%`,maxHeight:`none`,borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:`100%`}})),Dialog=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialog`}),a=useTheme$1(),o={enter:a.transitions.duration.enteringScreen,exit:a.transitions.duration.leavingScreen},{"aria-describedby":s,"aria-labelledby":l,BackdropComponent:u,BackdropProps:d,children:f,className:m,disableEscapeKeyDown:h=!1,fullScreen:v=!1,fullWidth:y=!1,maxWidth:b=`sm`,onBackdropClick:x,onClick:S,onClose:C,open:T,PaperComponent:E=Paper,PaperProps:D={},scroll:O=`paper`,TransitionComponent:k=Fade,transitionDuration:j=o,TransitionProps:M}=n,N=_objectWithoutPropertiesLoose$3(n,_excluded$51),F=_extends$3({},n,{disableEscapeKeyDown:h,fullScreen:v,fullWidth:y,maxWidth:b,scroll:O}),I=useUtilityClasses$45(F),L=import_react$24.useRef(),R=e=>{L.current=e.target===e.currentTarget},z=e=>{S&&S(e),L.current&&(L.current=null,x&&x(e),C&&C(e,`backdropClick`))},B=useId(l),V=import_react$24.useMemo(()=>({titleId:B}),[B]);return(0,import_jsx_runtime.jsx)(DialogRoot,_extends$3({className:clsx$1(I.root,m),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$3({transitionDuration:j,as:u},d)},disableEscapeKeyDown:h,onClose:C,open:T,ref:t,onClick:z,ownerState:F},N,{children:(0,import_jsx_runtime.jsx)(k,_extends$3({appear:!0,in:T,timeout:j,role:`presentation`},M,{children:(0,import_jsx_runtime.jsx)(DialogContainer,{className:clsx$1(I.container),onMouseDown:R,ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogPaper,_extends$3({as:E,elevation:24,role:`dialog`,"aria-describedby":s,"aria-labelledby":B},D,{className:clsx$1(I.paper,D.className),ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogContext.Provider,{value:V,children:f})}))})}))}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogTitleUtilityClass(e){return generateUtilityClass(`MuiDialogTitle`,e)}var dialogTitleClasses=generateUtilityClasses(`MuiDialogTitle`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$50=[`className`,`id`],useUtilityClasses$44=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getDialogTitleUtilityClass,t)},DialogTitleRoot=styled$1(Typography,{name:`MuiDialogTitle`,slot:`Root`,overridesResolver:(e,t)=>t.root})({padding:`16px 24px`,flex:`0 0 auto`}),DialogTitle=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogTitle`}),{className:a,id:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$50),l=n,u=useUtilityClasses$44(l),{titleId:d=o}=import_react$24.useContext(DialogContext);return(0,import_jsx_runtime.jsx)(DialogTitleRoot,_extends$3({component:`h2`,className:clsx$1(u.root,a),ownerState:l,ref:t,variant:`h6`,id:o??d},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogContentUtilityClass(e){return generateUtilityClass(`MuiDialogContent`,e)}var dialogContentClasses=generateUtilityClasses(`MuiDialogContent`,[`root`,`dividers`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$49=[`className`,`dividers`],useUtilityClasses$43=e=>{let{classes:t,dividers:n}=e;return composeClasses({root:[`root`,n&&`dividers`]},getDialogContentUtilityClass,t)},DialogContentRoot=styled$1(`div`,{name:`MuiDialogContent`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.dividers&&t.dividers]}})(({theme:e,ownerState:t})=>_extends$3({flex:`1 1 auto`,WebkitOverflowScrolling:`touch`,overflowY:`auto`,padding:`20px 24px`},t.dividers?{padding:`16px 24px`,borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}})),DialogContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogContent`}),{className:a,dividers:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$49),l=_extends$3({},n,{dividers:o}),u=useUtilityClasses$43(l);return(0,import_jsx_runtime.jsx)(DialogContentRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogActionsUtilityClass(e){return generateUtilityClass(`MuiDialogActions`,e)}var dialogActionsClasses=generateUtilityClasses(`MuiDialogActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$48=[`className`,`disableSpacing`],useUtilityClasses$42=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getDialogActionsUtilityClass,t)},DialogActionsRoot=styled$1(`div`,{name:`MuiDialogActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,flex:`0 0 auto`},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogActions`}),{className:a,disableSpacing:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$48),l=_extends$3({},n,{disableSpacing:o}),u=useUtilityClasses$42(l);return(0,import_jsx_runtime.jsx)(DialogActionsRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))}),chitchatterDomain=`https://chitchatter.im`,ChatRoom=()=>{let e=`chat-title`,t=`chat-content`,{handlers:{handleChatRoomOpenStateChange:n},gameState:{playerId:a,isChatOpen:o,room:s}}=(0,import_react$24.useContext)(FarmhandContext),l=()=>{n(!1)},u=(0,import_jsx_runtime.jsx)(`chat-room`,{"root-url":chitchatterDomain,room:`__farmhand__${s}`,"user-id":a,style:{height:`100%`,width:`100%`,border:`none`},"color-mode":`light`});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(HelmetExport,{children:(0,import_jsx_runtime.jsx)(`script`,{src:`${chitchatterDomain}/sdk.js`})}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,`ChatRoom`),fullWidth:!0,keepMounted:!0,fullScreen:!0,open:o,onClose:l,sx:{"& .MuiDialog-container":{padding:`1em`,height:`calc(100% - 2em)`}},"aria-describedby":e,"aria-labelledby":t,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:e,children:`Chat room`}),(0,import_jsx_runtime.jsx)(DialogContent,{id:t,children:u}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:l,color:`primary`,autoFocus:!0,children:`Close`})})]})]})},AccordionContext=import_react$24.createContext({});init_extends(),init_objectWithoutPropertiesLoose(),init_useForkRef$1(),init_appendOwnerState(),init_resolveComponentProps(),init_mergeSlotProps();var _excluded$47=[`className`,`elementType`,`ownerState`,`externalForwardedProps`,`getSlotOwnerState`,`internalForwardedProps`],_excluded2$3=[`component`,`slots`,`slotProps`],_excluded3$1=[`component`];function useSlot(e,t){let{className:n,elementType:a,ownerState:o,externalForwardedProps:s,getSlotOwnerState:l,internalForwardedProps:u}=t,d=_objectWithoutPropertiesLoose$3(t,_excluded$47),{component:f,slots:m={[e]:void 0},slotProps:h={[e]:void 0}}=s,v=_objectWithoutPropertiesLoose$3(s,_excluded2$3),y=m[e]||a,b=resolveComponentProps(h[e],o),x=mergeSlotProps(_extends$3({className:n},d,{externalForwardedProps:e===`root`?v:void 0,externalSlotProps:b})),{props:{component:S},internalRef:C}=x,T=_objectWithoutPropertiesLoose$3(x.props,_excluded3$1),E=useForkRef(C,b?.ref,t.ref),D=l?l(T):{},O=_extends$3({},o,D),k=e===`root`?S||f:S,j=appendOwnerState(y,_extends$3({},e===`root`&&!f&&!m[e]&&u,e!==`root`&&!m[e]&&u,T,k&&{as:k},{ref:E}),O);return Object.keys(D).forEach(e=>{delete j[e]}),[y,j]}init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionUtilityClass(e){return generateUtilityClass(`MuiAccordion`,e)}var accordionClasses=generateUtilityClasses(`MuiAccordion`,[`root`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_useControlled();var _excluded$46=[`children`,`className`,`defaultExpanded`,`disabled`,`disableGutters`,`expanded`,`onChange`,`square`,`slots`,`slotProps`,`TransitionComponent`,`TransitionProps`],useUtilityClasses$41=e=>{let{classes:t,square:n,expanded:a,disabled:o,disableGutters:s}=e;return composeClasses({root:[`root`,!n&&`rounded`,a&&`expanded`,o&&`disabled`,!s&&`gutters`],region:[`region`]},getAccordionUtilityClass,t)},AccordionRoot=styled$1(Paper,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${accordionClasses.region}`]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{position:`relative`,transition:e.transitions.create([`margin`],t),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create([`opacity`,`background-color`],t)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${accordionClasses.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:`none`}}},[`&.${accordionClasses.disabled}`]:{backgroundColor:(e.vars||e).palette.action.disabledBackground}}},({theme:e})=>({variants:[{props:e=>!e.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(e.vars||e).shape.borderRadius,borderBottomRightRadius:(e.vars||e).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:e=>!e.disableGutters,style:{[`&.${accordionClasses.expanded}`]:{margin:`16px 0`}}}]})),Accordion=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordion`}),{children:a,className:o,defaultExpanded:s=!1,disabled:l=!1,disableGutters:u=!1,expanded:d,onChange:f,square:m=!1,slots:h={},slotProps:v={},TransitionComponent:y,TransitionProps:b}=n,x=_objectWithoutPropertiesLoose$3(n,_excluded$46),[S,C]=useControlled_default({controlled:d,default:s,name:`Accordion`,state:`expanded`}),T=import_react$24.useCallback(e=>{C(!S),f&&f(e,!S)},[S,f,C]),[E,...D]=import_react$24.Children.toArray(a),O=import_react$24.useMemo(()=>({expanded:S,disabled:l,disableGutters:u,toggle:T}),[S,l,u,T]),k=_extends$3({},n,{square:m,disabled:l,disableGutters:u,expanded:S}),j=useUtilityClasses$41(k),[M,N]=useSlot(`transition`,{elementType:Collapse,externalForwardedProps:{slots:_extends$3({transition:y},h),slotProps:_extends$3({transition:b},v)},ownerState:k});return(0,import_jsx_runtime.jsxs)(AccordionRoot,_extends$3({className:clsx$1(j.root,o),ref:t,ownerState:k,square:m},x,{children:[(0,import_jsx_runtime.jsx)(AccordionContext.Provider,{value:O,children:E}),(0,import_jsx_runtime.jsx)(M,_extends$3({in:S,timeout:`auto`},N,{children:(0,import_jsx_runtime.jsx)(`div`,{"aria-labelledby":E.props.id,id:E.props[`aria-controls`],role:`region`,className:j.region,children:D})}))]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionSummaryUtilityClass(e){return generateUtilityClass(`MuiAccordionSummary`,e)}var accordionSummaryClasses=generateUtilityClasses(`MuiAccordionSummary`,[`root`,`expanded`,`focusVisible`,`disabled`,`gutters`,`contentGutters`,`content`,`expandIconWrapper`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$45=[`children`,`className`,`expandIcon`,`focusVisibleClassName`,`onClick`],useUtilityClasses$40=e=>{let{classes:t,expanded:n,disabled:a,disableGutters:o}=e;return composeClasses({root:[`root`,n&&`expanded`,a&&`disabled`,!o&&`gutters`],focusVisible:[`focusVisible`],content:[`content`,n&&`expanded`,!o&&`contentGutters`],expandIconWrapper:[`expandIconWrapper`,n&&`expanded`]},getAccordionSummaryUtilityClass,t)},AccordionSummaryRoot=styled$1(ButtonBase,{name:`MuiAccordionSummary`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{display:`flex`,minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create([`min-height`,`background-color`],t),[`&.${accordionSummaryClasses.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${accordionSummaryClasses.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${accordionSummaryClasses.disabled})`]:{cursor:`pointer`},variants:[{props:e=>!e.disableGutters,style:{[`&.${accordionSummaryClasses.expanded}`]:{minHeight:64}}}]}}),AccordionSummaryContent=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`Content`,overridesResolver:(e,t)=>t.content})(({theme:e})=>({display:`flex`,flexGrow:1,margin:`12px 0`,variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create([`margin`],{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{margin:`20px 0`}}}]})),AccordionSummaryExpandIconWrapper=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`ExpandIconWrapper`,overridesResolver:(e,t)=>t.expandIconWrapper})(({theme:e})=>({display:`flex`,color:(e.vars||e).palette.action.active,transform:`rotate(0deg)`,transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{transform:`rotate(180deg)`}})),AccordionSummary=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionSummary`}),{children:a,className:o,expandIcon:s,focusVisibleClassName:l,onClick:u}=n,d=_objectWithoutPropertiesLoose$3(n,_excluded$45),{disabled:f=!1,disableGutters:m,expanded:h,toggle:v}=import_react$24.useContext(AccordionContext),y=e=>{v&&v(e),u&&u(e)},b=_extends$3({},n,{expanded:h,disabled:f,disableGutters:m}),x=useUtilityClasses$40(b);return(0,import_jsx_runtime.jsxs)(AccordionSummaryRoot,_extends$3({focusRipple:!1,disableRipple:!0,disabled:f,component:`div`,"aria-expanded":h,className:clsx$1(x.root,o),focusVisibleClassName:clsx$1(x.focusVisible,l),onClick:y,ref:t,ownerState:b},d,{children:[(0,import_jsx_runtime.jsx)(AccordionSummaryContent,{className:x.content,ownerState:b,children:a}),s&&(0,import_jsx_runtime.jsx)(AccordionSummaryExpandIconWrapper,{className:x.expandIconWrapper,ownerState:b,children:s})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionDetailsUtilityClass(e){return generateUtilityClass(`MuiAccordionDetails`,e)}var accordionDetailsClasses=generateUtilityClasses(`MuiAccordionDetails`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$44=[`className`],useUtilityClasses$39=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getAccordionDetailsUtilityClass,t)},AccordionDetailsRoot=styled$1(`div`,{name:`MuiAccordionDetails`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>({padding:e.spacing(1,2,2)})),AccordionDetails=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionDetails`}),{className:a}=n,o=_objectWithoutPropertiesLoose$3(n,_excluded$44),s=n,l=useUtilityClasses$39(s);return(0,import_jsx_runtime.jsx)(AccordionDetailsRoot,_extends$3({className:clsx$1(l.root,a),ref:t,ownerState:s},o))}),FormControlContext=import_react$24.createContext(void 0);function useFormControl(){return import_react$24.useContext(FormControlContext)}init_generateUtilityClasses(),init_generateUtilityClass();function getSwitchBaseUtilityClass(e){return generateUtilityClass(`PrivateSwitchBase`,e)}var switchBaseClasses=generateUtilityClasses(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_useControlled();var _excluded$43=[`autoFocus`,`checked`,`checkedIcon`,`className`,`defaultChecked`,`disabled`,`disableFocusRipple`,`edge`,`icon`,`id`,`inputProps`,`inputRef`,`name`,`onBlur`,`onChange`,`onFocus`,`readOnly`,`required`,`tabIndex`,`type`,`value`],useUtilityClasses$38=e=>{let{classes:t,checked:n,disabled:a,edge:o}=e;return composeClasses({root:[`root`,n&&`checked`,a&&`disabled`,o&&`edge${capitalize_default(o)}`],input:[`input`]},getSwitchBaseUtilityClass,t)},SwitchBaseRoot=styled$1(ButtonBase,{name:`MuiSwitchBase`})(({ownerState:e})=>_extends$3({padding:9,borderRadius:`50%`},e.edge===`start`&&{marginLeft:e.size===`small`?-3:-12},e.edge===`end`&&{marginRight:e.size===`small`?-3:-12})),SwitchBaseInput=styled$1(`input`,{name:`MuiSwitchBase`,shouldForwardProp:rootShouldForwardProp})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),SwitchBase=import_react$24.forwardRef(function(e,t){let{autoFocus:n,checked:a,checkedIcon:o,className:s,defaultChecked:l,disabled:u,disableFocusRipple:d=!1,edge:f=!1,icon:m,id:h,inputProps:v,inputRef:y,name:b,onBlur:x,onChange:S,onFocus:C,readOnly:T,required:E=!1,tabIndex:D,type:O,value:k}=e,j=_objectWithoutPropertiesLoose$3(e,_excluded$43),[M,N]=useControlled_default({controlled:a,default:!!l,name:`SwitchBase`,state:`checked`}),F=useFormControl(),I=e=>{C&&C(e),F&&F.onFocus&&F.onFocus(e)},L=e=>{x&&x(e),F&&F.onBlur&&F.onBlur(e)},R=e=>{if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked;N(t),S&&S(e,t)},z=u;F&&z===void 0&&(z=F.disabled);let B=O===`checkbox`||O===`radio`,V=_extends$3({},e,{checked:M,disabled:z,disableFocusRipple:d,edge:f}),H=useUtilityClasses$38(V);return(0,import_jsx_runtime.jsxs)(SwitchBaseRoot,_extends$3({component:`span`,className:clsx$1(H.root,s),centerRipple:!0,focusRipple:!d,disabled:z,tabIndex:null,role:void 0,onFocus:I,onBlur:L,ownerState:V,ref:t},j,{children:[(0,import_jsx_runtime.jsx)(SwitchBaseInput,_extends$3({autoFocus:n,checked:a,defaultChecked:l,className:H.input,disabled:z,id:B?h:void 0,name:b,onChange:R,readOnly:T,ref:y,required:E,ownerState:V,tabIndex:D,type:O},O===`checkbox`&&k===void 0?{}:{value:k},v)),M?o:m]}))});init_createSvgIcon();var CheckBoxOutlineBlank_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`);init_createSvgIcon();var CheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`);init_createSvgIcon();var IndeterminateCheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);init_generateUtilityClasses(),init_generateUtilityClass();function getCheckboxUtilityClass(e){return generateUtilityClass(`MuiCheckbox`,e)}var checkboxClasses=generateUtilityClasses(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$42=[`checkedIcon`,`color`,`icon`,`indeterminate`,`indeterminateIcon`,`inputProps`,`size`,`className`],useUtilityClasses$37=e=>{let{classes:t,indeterminate:n,color:a,size:o}=e;return _extends$3({},t,composeClasses({root:[`root`,n&&`indeterminate`,`color${capitalize_default(a)}`,`size${capitalize_default(o)}`]},getCheckboxUtilityClass,t))},CheckboxRoot=styled$1(SwitchBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${capitalize_default(n.size)}`],n.color!=="default"&&t[`color${capitalize_default(n.color)}`]]}})(({theme:e,ownerState:t})=>_extends$3({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${t.color==="default"?e.vars.palette.action.activeChannel:e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(t.color==="default"?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},t.color!=="default"&&{[`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${checkboxClasses.disabled}`]:{color:(e.vars||e).palette.action.disabled}})),defaultCheckedIcon=(0,import_jsx_runtime.jsx)(CheckBox_default,{}),defaultIcon=(0,import_jsx_runtime.jsx)(CheckBoxOutlineBlank_default,{}),defaultIndeterminateIcon=(0,import_jsx_runtime.jsx)(IndeterminateCheckBox_default,{}),Checkbox=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiCheckbox`}),{checkedIcon:s=defaultCheckedIcon,color:l=`primary`,icon:u=defaultIcon,indeterminate:d=!1,indeterminateIcon:f=defaultIndeterminateIcon,inputProps:m,size:h=`medium`,className:v}=o,y=_objectWithoutPropertiesLoose$3(o,_excluded$42),b=d?f:u,x=d?f:s,S=_extends$3({},o,{color:l,indeterminate:d,size:h}),C=useUtilityClasses$37(S);return(0,import_jsx_runtime.jsx)(CheckboxRoot,_extends$3({type:`checkbox`,inputProps:_extends$3({"data-indeterminate":d},m),icon:import_react$24.cloneElement(b,{fontSize:b.props.fontSize??h}),checkedIcon:import_react$24.cloneElement(x,{fontSize:x.props.fontSize??h}),ownerState:S,ref:t,className:clsx$1(C.root,v)},y,{classes:C}))});function hasValue(e){return e!=null&&!(Array.isArray(e)&&e.length===0)}function isFilled(e,t=!1){return e&&(hasValue(e.value)&&e.value!==``||t&&hasValue(e.defaultValue)&&e.defaultValue!==``)}function isAdornedStart(e){return e.startAdornment}init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlUtilityClasses(e){return generateUtilityClass(`MuiFormControl`,e)}var formControlClasses=generateUtilityClasses(`MuiFormControl`,[`root`,`marginNone`,`marginNormal`,`marginDense`,`fullWidth`,`disabled`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled(),init_capitalize(),init_isMuiElement();var _excluded$41=[`children`,`className`,`color`,`component`,`disabled`,`error`,`focused`,`fullWidth`,`hiddenLabel`,`margin`,`required`,`size`,`variant`],useUtilityClasses$36=e=>{let{classes:t,margin:n,fullWidth:a}=e;return composeClasses({root:[`root`,n!==`none`&&`margin${capitalize_default(n)}`,a&&`fullWidth`]},getFormControlUtilityClasses,t)},FormControlRoot=styled$1(`div`,{name:`MuiFormControl`,slot:`Root`,overridesResolver:({ownerState:e},t)=>_extends$3({},t.root,t[`margin${capitalize_default(e.margin)}`],e.fullWidth&&t.fullWidth)})(({ownerState:e})=>_extends$3({display:`inline-flex`,flexDirection:`column`,position:`relative`,minWidth:0,padding:0,margin:0,border:0,verticalAlign:`top`},e.margin===`normal`&&{marginTop:16,marginBottom:8},e.margin===`dense`&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:`100%`})),FormControl=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiFormControl`}),{children:a,className:o,color:s=`primary`,component:l=`div`,disabled:u=!1,error:d=!1,focused:f,fullWidth:m=!1,hiddenLabel:h=!1,margin:v=`none`,required:y=!1,size:b=`medium`,variant:x=`outlined`}=n,S=_objectWithoutPropertiesLoose$3(n,_excluded$41),C=_extends$3({},n,{color:s,component:l,disabled:u,error:d,fullWidth:m,hiddenLabel:h,margin:v,required:y,size:b,variant:x}),T=useUtilityClasses$36(C),[E,D]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{if(!isMuiElement_default(t,[`Input`,`Select`]))return;let n=isMuiElement_default(t,[`Select`])?t.props.input:t;n&&isAdornedStart(n.props)&&(e=!0)}),e}),[O,k]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{isMuiElement_default(t,[`Input`,`Select`])&&(isFilled(t.props,!0)||isFilled(t.props.inputProps,!0))&&(e=!0)}),e}),[j,M]=import_react$24.useState(!1);u&&j&&M(!1);let N=f!==void 0&&!u?f:j,F,I=import_react$24.useMemo(()=>({adornedStart:E,setAdornedStart:D,color:s,disabled:u,error:d,filled:O,focused:N,fullWidth:m,hiddenLabel:h,size:b,onBlur:()=>{M(!1)},onEmpty:()=>{k(!1)},onFilled:()=>{k(!0)},onFocus:()=>{M(!0)},registerEffect:void 0,required:y,variant:x}),[E,s,u,d,O,N,m,h,void 0,y,b,x]);return(0,import_jsx_runtime.jsx)(FormControlContext.Provider,{value:I,children:(0,import_jsx_runtime.jsx)(FormControlRoot,_extends$3({as:l,ownerState:C,className:clsx$1(T.root,o),ref:t},S,{children:a}))})});init_styled(),init_DefaultPropsProvider();var Stack=createStack({createStyledComponent:styled$1(`div`,{name:`MuiStack`,slot:`Root`,overridesResolver:(e,t)=>t.root}),useThemeProps:e=>useDefaultProps({props:e,name:`MuiStack`})});init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlLabelUtilityClasses(e){return generateUtilityClass(`MuiFormControlLabel`,e)}var formControlLabelClasses=generateUtilityClasses(`MuiFormControlLabel`,[`root`,`labelPlacementStart`,`labelPlacementTop`,`labelPlacementBottom`,`disabled`,`label`,`error`,`required`,`asterisk`]);function formControlState({props:e,states:t,muiFormControl:n}){return t.reduce((t,a)=>(t[a]=e[a],n&&e[a]===void 0&&(t[a]=n[a]),t),{})}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_DefaultPropsProvider();var _excluded$40=[`checked`,`className`,`componentsProps`,`control`,`disabled`,`disableTypography`,`inputRef`,`label`,`labelPlacement`,`name`,`onChange`,`required`,`slotProps`,`value`],useUtilityClasses$35=e=>{let{classes:t,disabled:n,labelPlacement:a,error:o,required:s}=e;return composeClasses({root:[`root`,n&&`disabled`,`labelPlacement${capitalize_default(a)}`,o&&`error`,s&&`required`],label:[`label`,n&&`disabled`],asterisk:[`asterisk`,o&&`error`]},getFormControlLabelUtilityClasses,t)},FormControlLabelRoot=styled$1(`label`,{name:`MuiFormControlLabel`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${formControlLabelClasses.label}`]:t.label},t.root,t[`labelPlacement${capitalize_default(n.labelPlacement)}`]]}})(({theme:e,ownerState:t})=>_extends$3({display:`inline-flex`,alignItems:`center`,cursor:`pointer`,verticalAlign:`middle`,WebkitTapHighlightColor:`transparent`,marginLeft:-11,marginRight:16,[`&.${formControlLabelClasses.disabled}`]:{cursor:`default`}},t.labelPlacement===`start`&&{flexDirection:`row-reverse`,marginLeft:16,marginRight:-11},t.labelPlacement===`top`&&{flexDirection:`column-reverse`,marginLeft:16},t.labelPlacement===`bottom`&&{flexDirection:`column`,marginLeft:16},{[`& .${formControlLabelClasses.label}`]:{[`&.${formControlLabelClasses.disabled}`]:{color:(e.vars||e).palette.text.disabled}}})),AsteriskComponent$1=styled$1(`span`,{name:`MuiFormControlLabel`,slot:`Asterisk`,overridesResolver:(e,t)=>t.asterisk})(({theme:e})=>({[`&.${formControlLabelClasses.error}`]:{color:(e.vars||e).palette.error.main}})),FormControlLabel=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiFormControlLabel`}),{className:s,componentsProps:l={},control:u,disabled:d,disableTypography:f,label:m,labelPlacement:h=`end`,required:v,slotProps:y={}}=o,b=_objectWithoutPropertiesLoose$3(o,_excluded$40),x=useFormControl(),S=d??u.props.disabled??x?.disabled,C=v??u.props.required,T={disabled:S,required:C};[`checked`,`name`,`onChange`,`value`,`inputRef`].forEach(e=>{u.props[e]===void 0&&o[e]!==void 0&&(T[e]=o[e])});let E=_extends$3({},o,{disabled:S,labelPlacement:h,required:C,error:formControlState({props:o,muiFormControl:x,states:[`error`]}).error}),D=useUtilityClasses$35(E),O=y.typography??l.typography,k=m;return k!=null&&k.type!==Typography&&!f&&(k=(0,import_jsx_runtime.jsx)(Typography,_extends$3({component:`span`},O,{className:clsx$1(D.label,O?.className),children:k}))),(0,import_jsx_runtime.jsxs)(FormControlLabelRoot,_extends$3({className:clsx$1(D.root,s),ownerState:E,ref:t},b,{children:[import_react$24.cloneElement(u,T),C?(0,import_jsx_runtime.jsxs)(Stack,{display:`block`,children:[k,(0,import_jsx_runtime.jsxs)(AsteriskComponent$1,{ownerState:E,"aria-hidden":!0,className:D.asterisk,children:[` `,`*`]})]}):k]}))}),require_ExpandMore=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z`}),`ExpandMore`)})),require_KeyboardArrowUp=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z`}),`KeyboardArrowUp`)})),require_KeyboardArrowDown=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z`}),`KeyboardArrowDown`)}));init_generateUtilityClasses();var boxClasses=generateUtilityClasses(`MuiBox`,[`root`]);init_ClassNameGenerator$1(),init_createTheme(),init_identifier();var Box=createBox({themeId:identifier_default,defaultTheme:createTheme(),defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});init_generateUtilityClasses(),init_generateUtilityClass();function getCardUtilityClass(e){return generateUtilityClass(`MuiCard`,e)}var cardClasses=generateUtilityClasses(`MuiCard`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$39=[`className`,`raised`],useUtilityClasses$34=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardUtilityClass,t)},CardRoot=styled$1(Paper,{name:`MuiCard`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({overflow:`hidden`})),Card=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCard`}),{className:a,raised:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$39),l=_extends$3({},n,{raised:o}),u=useUtilityClasses$34(l);return(0,import_jsx_runtime.jsx)(CardRoot,_extends$3({className:clsx$1(u.root,a),elevation:o?8:void 0,ref:t,ownerState:l},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardHeaderUtilityClass(e){return generateUtilityClass(`MuiCardHeader`,e)}var cardHeaderClasses=generateUtilityClasses(`MuiCardHeader`,[`root`,`avatar`,`action`,`content`,`title`,`subheader`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled();var _excluded$38=[`action`,`avatar`,`className`,`component`,`disableTypography`,`subheader`,`subheaderTypographyProps`,`title`,`titleTypographyProps`],useUtilityClasses$33=e=>{let{classes:t}=e;return composeClasses({root:[`root`],avatar:[`avatar`],action:[`action`],content:[`content`],title:[`title`],subheader:[`subheader`]},getCardHeaderUtilityClass,t)},CardHeaderRoot=styled$1(`div`,{name:`MuiCardHeader`,slot:`Root`,overridesResolver:(e,t)=>_extends$3({[`& .${cardHeaderClasses.title}`]:t.title,[`& .${cardHeaderClasses.subheader}`]:t.subheader},t.root)})({display:`flex`,alignItems:`center`,padding:16}),CardHeaderAvatar=styled$1(`div`,{name:`MuiCardHeader`,slot:`Avatar`,overridesResolver:(e,t)=>t.avatar})({display:`flex`,flex:`0 0 auto`,marginRight:16}),CardHeaderAction=styled$1(`div`,{name:`MuiCardHeader`,slot:`Action`,overridesResolver:(e,t)=>t.action})({flex:`0 0 auto`,alignSelf:`flex-start`,marginTop:-4,marginRight:-8,marginBottom:-4}),CardHeaderContent=styled$1(`div`,{name:`MuiCardHeader`,slot:`Content`,overridesResolver:(e,t)=>t.content})({flex:`1 1 auto`}),CardHeader=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardHeader`}),{action:a,avatar:o,className:s,component:l=`div`,disableTypography:u=!1,subheader:d,subheaderTypographyProps:f,title:m,titleTypographyProps:h}=n,v=_objectWithoutPropertiesLoose$3(n,_excluded$38),y=_extends$3({},n,{component:l,disableTypography:u}),b=useUtilityClasses$33(y),x=m;x!=null&&x.type!==Typography&&!u&&(x=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`h5`,className:b.title,component:`span`,display:`block`},h,{children:x})));let S=d;return S!=null&&S.type!==Typography&&!u&&(S=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`body1`,className:b.subheader,color:`text.secondary`,component:`span`,display:`block`},f,{children:S}))),(0,import_jsx_runtime.jsxs)(CardHeaderRoot,_extends$3({className:clsx$1(b.root,s),as:l,ref:t,ownerState:y},v,{children:[o&&(0,import_jsx_runtime.jsx)(CardHeaderAvatar,{className:b.avatar,ownerState:y,children:o}),(0,import_jsx_runtime.jsxs)(CardHeaderContent,{className:b.content,ownerState:y,children:[x,S]}),a&&(0,import_jsx_runtime.jsx)(CardHeaderAction,{className:b.action,ownerState:y,children:a})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardContentUtilityClass(e){return generateUtilityClass(`MuiCardContent`,e)}var cardContentClasses=generateUtilityClasses(`MuiCardContent`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$37=[`className`,`component`],useUtilityClasses$32=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardContentUtilityClass,t)},CardContentRoot=styled$1(`div`,{name:`MuiCardContent`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),CardContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardContent`}),{className:a,component:o=`div`}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$37),l=_extends$3({},n,{component:o}),u=useUtilityClasses$32(l);return(0,import_jsx_runtime.jsx)(CardContentRoot,_extends$3({as:o,className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardActionsUtilityClass(e){return generateUtilityClass(`MuiCardActions`,e)}var cardActionsClasses=generateUtilityClasses(`MuiCardActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$36=[`disableSpacing`,`className`],useUtilityClasses$31=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getCardActionsUtilityClass,t)},CardActionsRoot=styled$1(`div`,{name:`MuiCardActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),CardActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardActions`}),{disableSpacing:a=!1,className:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$36),l=_extends$3({},n,{disableSpacing:a}),u=useUtilityClasses$31(l);return(0,import_jsx_runtime.jsx)(CardActionsRoot,_extends$3({className:clsx$1(u.root,o),ownerState:l,ref:t},s))}),import_ExpandMore=__toESM(require_ExpandMore()),import_KeyboardArrowUp=__toESM(require_KeyboardArrowUp()),import_KeyboardArrowDown=__toESM(require_KeyboardArrowDown()),watered_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVRIia1WvY3GIAz15ToqRqCmZoAMwT4R+3iJ66lTMwIjXGX04tjJp9NZQgFsnv1sfkL0gdRaj0/sPhIN5oH/yekTmOh0/239hkpmbhYQMzcNoJ1Y64mIvrQSjVC8ecvuwsDyrI2IiEopxxiDxhgLRMZPQSwGaFRKWeOUEglYSukCiDaix0wsB+hkjEG994ZjCwhFbGQeM/CtGcQYKYSwxxjXeM5JvfeWc17zzNxCCPuc8+I8xkg55/08zx+XgSc6RcgImSGDzQIXQ/x64LIOwTEjm7drtBMB0c5Qb8mmq64jk37vvWkG2O+93w4jkVEDTdPKse5bzAXndpJF+QSimXrgi4G3573rwcu3u4twEqNGx1gPLLbeDO4uqrUemGthgKBSaLyLiGgVGLNxu001fbwuvPRYRdcZuZwDZm4S6dPVjKlBRxqcSJ0D/fUcWGDM3KRdgnt6/rwXTLcnHLIm316utzf5X/9C3oL6BQBimEemYBpmAAAAAElFTkSuQmCC`,fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVRYhe2QwREAIAjD2MVBnc65dAUOi+0J+fSZXM2aX1hz7GcS71KkkIhbKSSGGpEll4jQfyBbrh9RVy4R0Q/0AyUecEGVfx0Roq4cFQGFIvXGNFEOnwmdSclbLhUAAAAASUVORK5CYII=`,rainbow_fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVRYhe3Quw2AMAxF0ezDFizDCjTMwLI0VKaBSFhyEht/pITXuDxXTulfL4NjBntkn+B1b5S6NmgjvsIijyBRJo6vToQQZ0WY4XB+iOgCb4kwx1kRVngpYlw8R1jjGxQ+EInXItRwyQdccCpCHed8wBXHESH4s1C8FiHGNSJccRwxHp4XitdiXFBqIWiPuwDmWChFXQDxHwAAAABJRU5ErkJggg==`,mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAVdJREFUWIXtlTFuwzAMRZmewwfw2sGH8KCtZ7CB3KB7gPgqBrL1FEUGX6L3YJey+CG+KCXxUBT6kyxL1CNFUiJNTU1NTf9Y6zKpjU/H9DtOQ6frMul2Od/M1dh8uQcAjfrx53WT0zFpGjr9uH4dRERe394P6zLdzNWCVcOkodMITH4ih+vx+ykoNMoMsXl/uF9nUcTrfhoGI8H2oGwNg66GMk9ERCwxPRgz5g+xxGZ7itfGKgarJGckigrCsPzy9kMof1gUXlzHDmHXbuuKUP6KEGYee/XzCIrG/b8cfPbqsJyxyZnmsdd57KuSkFVZlD9hPiGUL+HtclbmOToTtQDMLQQtVlvkkb8W3OcrjDlqTj3UHP0mD8m6MPadXIe+uykyKN/gogiwpsfy8iEQIWVbeptyzdSejV2hfKnWjM2B3V56KTyaQqKB+3aDqNGuXjc1NTX9AX0DskV/GZiF3KoAAAAASUVORK5CYII=`,rainbow_mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAYlJREFUWIXtVcGNg0AMdO5FFdRw96EDOrga6CCP0xZABXxQSqAXKIUHIKQk8r0GjRxzEPiddqRIu1mvPWuPjUhERERExD9GX+WKdSKd2rO2KdW9+Ac+3jGu01HX1rN8XhLp9PYIy/9f3z8XJm3vnUIWJoXDNWIg01f5YlOno/L+FCl2yqTWzpnM9T6/EKjTUVFam7nDpG6PoJwJz5bJwAb3nkOhfZUvv91E8BII06bZc4bysM1zKNz9Ztm8jmmbUjkjXgY8x/DVNqXW6ajPoVg0xHra7EI4ysKkWZiUCTBhJmRJeUE8rcFuk5QtkSWDF+MBfIa7uGPLiqbAg5BBlwi3sx1yIiKcduw9P9f7/BKEtWVJ2cytIpFumR8I3jal+3J+jDcCeC+mCru7ra9ytVoSU3NuaTGNYc9YyJbobrCOoAs7seHckuIyWVKHhyKcZGFSDsR7Sx5CteeeLt8mIuZz4c0ScUTJGuE5lkh3rFReIDvsPJu1NWf3MBmLrbqvBTull4iIiIgIkV/Jgy2+BhL+vQAAAABJRU5ErkJggg==`,shoveled_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXklEQVRYheWYPQ7CMAyFTRcGxMaRei/Ue3EXLoBYqg6dyhAZue6Lk1T5oeJJVURckk8vdtSE6MgaelqGnpaSc5xCAL7Y/eH+q9/hfjSGjiUBIZhxdu31HBrWlgW2CUgQBkBiKP2OhpVxHUNgXSzMa1q3z7d7R/eP8/rRcLIPrUKnOxAMEdHt4iYNtQgejc9zaKgvEAcsZ2KhLMiQoENSeyFQi5zSLnmBcjizx6lOEjJxTogYpzZAXH5cliVhUFVKU5o4ZDkFc6gGjC+XIFBzh2rnkJXY3rJvsVxEtP6EkLt0LYd4VXiVfs4hc6dulkM6qUs7ZAlujKUdCgIh1cghndAmUGko0yGUQ0TlHUr+HmrmEErqplWGluyvqswSPPZaB8TQJCkwyWWPxIPqFsVTl2sDJHOJH/k7NzwSPPTHXrn4zvUxdwIsfb4PXo8MPS2+q5ccSgay5LsbirlXOow+jbqqwQYBTPwAAAAASUVORK5CYII=`,apple_juice_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQJJREFUSIljYBgFo4CBgYHhxo0b/2/cuPGfLhbRxGAWFpb/MHzjxo3/yHwWFha8ljISY/i+nRPhfDFpZ4ZXT/eiqHFyz2f48+cPQbPwuhwbPrR3KgqN1QxCllw81sDALaCBIf71ww0Gfat8BmTfYQNMhCzAZjhM/OKxBgYn93zKLMAGnCd04bUcGRAMImRQmFLLcEmHl2FvQRnReoj2wY28OQyRj74ztG97xXDKrYS6FtzIm8Pw6cYNFLFVDnnUswDdcAYGBgYFNjbqWUAJINuCB79+Uc8Cs109GIaHHZhElAV4yw8WFpb/uHIyAzw3NzAwMDDgLIuIKuwIqSGroBsyAADMgGh66tN3lAAAAABJRU5ErkJggg==`,apple_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZlJREFUSIntlD9IQlEUxn9GjtEQFYJDi7ooEQ7RYoPg8sDddGvyjW8QXBpcBAehRSe3ol1wERxqCYMQqUVbGoKIaA8aXoOey33/THIK+oYH775zf9/5zr08+Ne/VlVoiRp7FU7QBwUd9Wo/0g+Ms0Cen4F9fhInUywBcHs94Ovl1VEQSyd5un9U71I7N3Iw3QYKfnN5AYBhWvS7V+TyBVUk771WU62FoxGOjrMeE93AhtlIBB7UsQDFxDAtAHqtJpliyWGyJvBRr6bgssEwLQzT4vntQ62JcvkC02FfJZQ0G5s7cm62uNjursPRCHu7W56uY+kkAPHDnAIapuVJAagk6+Iqxfqc3Zv9Zq/X6RJmCLCrlTKn+X1PkV8SffbS1HTYV6mkmU53TL3RVoesTPSY+g3SzfWk7vW7yScPkwkA9UZ7NiJRpzsGIJU1PZt1yHTYV6n0MbrhQMhxTauVsgOWSiQAeB+0PIco2p43A3jg6rHIRDfyk0BFOtzPAOb3189okeZgD3PR39TxFw0yDAIvY7DQ8JeMP6hvVK7PhaXOgsEAAAAASUVORK5CYII=`,banana_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYpJREFUSIntlE1LAlEUhh8lghhmQiQRgorUbYiIYotZ26JFW6VV/yJoFfQv+hUudO0iKSSirR/UQpCRQZxBpBbaou51ZvxodBXhu5lz7p37vOeeuXdgo43+vALrLsxHgxPvWKU7nuGtbCDAx4kjojtTj+4oQLvxNmPky8BZrRMci30/W60pRhgJk6UGi6qdBwZ4eH0HYH9vl05vQKU7Dmz5Ay+u2Av2ymUgwOmcDkC9VqX9M3d5cbASWEiuyEeDk3ROJ5NNEo4MATANhafHF2kGcHpy6AssWhQQ8Ju7KzkZ0lT6lj2Tl0sN6rXqUrDXIOgcDGkqAM3mWMYiBzg7T/wKBrA+RjJ2GYiqw5GhjEOaKlsW0lTSOZ1Ob7AQ3OkNsK1PeUylgWkorl2IXFRvGgp9y567Cy/YedGkgfiYfcvGNBTi8aDcDSBzZ+uWgYVcp0jE4pgCFIop2S7TUAhHhtxe36Nq265WLJK8B64Xa1VpVq9VSed0CsUU5dIzmWwSwBecdf5FM8X8e30B0FvZU200DxwAAAAASUVORK5CYII=`,banana_cream_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW1JREFUSIntlDFLw0AYht8WqSJWqks2g+BUKXQJEp1a8kuELP0L/o8sgkv/gqPUSUvpIgQ7lGBxdLI0IEVozqF+532Xu1jsJPSFwOW743m/y3sXYKON1lVphTViHY5tQkLTOPqVXm10rDyTgSDo3nYXAJCd3OcWlZOWnPt4vlGNGHPLBN89vVy+JV02+Tq8AwC4XsDqtD6NgWqjI2xfRqRxJBbZ3PiIsS/E2BeLbC5eBrfWNWkcCVNuDK7CCGiq2RrQTRjcBNOBth2odTKRGUx7PmrtPlwvwGS4rLnKFl0vQDlpYfJ+xTKgsPU6C3k0a6LuhMyEQqUxgVwvkGEDwPHBTwPUaMUJMZo1ASVtMXh4RH3/CQDw+XaNw6Md2ZkuU6fTng8ADH52cc4NSKoRqdbuW6EkHQ6gpJ5XZmIz0lVxQjnW4TBciJyJamQSQUkq3GQAOr8moyJ9g3PMor8pu402Qxt4FYNCwz8y/qG+AP/oVWW7If/LAAAAAElFTkSuQmCC`,bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVRIiWNgGAUDDRjJ1PefWPNIteA/AwMDw9Ic7JLRUzDNJdYCvAbjsIiRgYGBgYWaBt9+jimGywKKDcZlwX8GBgaGhmDcGlUliTMYmwX/YQYX1M/CqWFCYxphU5EAciT//3AJt8GkWNSwFmE2E0nOIQOMWkB/C5AjmIGBcE4m1WAUw6liAS6DKbaAkMG4JHGV88ToHQXkAQCMXCTuoxbh9AAAAABJRU5ErkJggg==`,burger_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVRIiWNgGAUEACOR6v6Tq5+Qgv8MDAwMkxJQBfml9Bk+PrvIkLeAsDm4JDAMhhlKqkXYLPiPz2BsFsEA1CIUM5mwKeSX0oez0Q2D8WFqkNViA+g+INv1aMEFNxerDwi5nhi1MIA1DvBZSgRAMZMFm4ozUFrlQT9OU/68qEfhi1h8wjAcqwAU/PdfA5FaaNJH0PDkJ58ZGBgYGDaG/Mcwk+QgenOCD86Guhod4LXg/6kWfMYTBmY1qObiTUXUADRPRXgzGjmApIxGDUCwsCMFYCvs8BbXZABiK7BRgAAAeO5Ta9GiRlQAAAAASUVORK5CYII=`,butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFklEQVRIS2NkoDFgpLH5DKMWEAzhgQmig0sY/iM7zT6G/LjC8AHIcDsHbxSvHzqwFc4n1TIUC7AZjh7IyJaB5AhZiGGBrp4+3ExBIRmCkUjIQrw+eP/uCdGWwdRevnQRxVdwC/Snff8/iY+TAT38YTbgsgwmDvMtyEfIwQa2AGT4hYirDIe2meC0ADms8PmMKhYg+wo9nvBaANII8gUM4AouQhbkffrOcDGLExw6KHEACiZkQMgyUFBh84Gd1xkGgxXaYEtQUhEoLkAWoFuE7jMQH+Q7ZAtgyRVkOAhgtQDmephFuCzDaiHUYGTDUYIIV45CtgyfhTCDQTQs/ImyAN1idAuR5ZENhokPTHFNsAAiQcHQ9wEAcVWNGQEhAZkAAAAASUVORK5CYIIA`,carrot_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVRIie2UsRXCMAxEzzz6PAaAESihyiJMwghMwiKpSMkIyQB5mUAUIOfiyCYQ6HylpPsnO34BsrKyXKInv2CFRQ+V834yXDcdDruNWXOXu8nlAFGomixgLIh7x2vr2SvevG46APBmhmiP61wLvcrUE4j0FVxResPttE1uGfb4iojl1jwkfTUYihJAawY8Ne6xdxTMM7GhT6XbA8M3+Jsmz3TpKXh7K2BRSAiPBXwVYsFTAcDrHb8Loqc961cRDUplzGBkxfUAEyhSiovwVIoAAAAASUVORK5CYII=`,cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVRIie2VsRHCMAxFfzi6tCzAEFmIYyyOhVIyAAvQpjaNjSVZsmWThjt+qTjvKYpyAX490w6MUGN+IwgA8Lrx4unKuaOCIMGWpFegdl2THPcGy7QEw2CPoDpnmjgOt6DZtQSG56U4M53vhcAEe4AAgG0F5oWVkoCNww2UcEWS1pR9jW6g6JbW4ojymnZDJdyoHdrUOqAVXbCteaa1OM6Ua0pv0uZMQ6/Fs2k9Ed9vKZiXLFEAMgQI4PEB208gwaLGgblTK1ng6rANtAWDHfYkoPz9/YM3a79OWiGiHuMAAAAASUVORK5CYII=`,chickn_pot_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACHklEQVRIS+1Vv08TYRh+3g8GimJigpOySSks+idggh20bC0DJNaEXoxbJTI50uhQicDoXaVltNdBXI1RBv8ErcRN4oKDCy1L7zXve72zP64hIekk79Cvd993z/M+z/d8d4QhFw0ZHxcEZzp8YdH/bNHX9XlmAogBZsYojYZ2tNACYGDYgyGCx4TEy4+Rgem6KaABSiJ1pctfITspv8e9eBIHj1fQyGfD+fGtCuqFN9oIEWGu+CnEDf/Un85zfLEbVBBEgQf/wcbuPsa39/D7aEzBJ2+c6th5zQwcbpQwu/lZsfVHOo+nJmCi3hxtn3S4lYYANPMPFDi2taddn6499K9fVQBtxqBeKKmSkGBm8TKIzcDYBQTNfBZj2xWYlu/myZMsQIS7s0m8u78KMGFyqol6wcFc8cAnkPq+foenUxNQQ9TLkT4ysUisWphJ4sujZRz/iiFWXMKlnTLYM8KjdbhRDjc9JLAsi9eu/oBGB0AiJYqkIU8TI8Te7SWMeO0cEOH4KIZr1xu6/tvzXRhZbwibf27CeW3/2wNZkMvlOJPJhF1PfXgBbu+KKDLGj6XXbilIjK+Y8HPhmTYh5boubLuHQCZERTqdVhsE4Dzlum9h26X+mHYSRAP7VgWHbxB5tVqF4zjRBAGJjKJEql+Nvx+9VavVVHVgTTA/8HtgWasssZVDJv53Wqb39MwYEHuqqhf4TILz+B/1zNC/aH8Brz3WGQIa2zUAAAAASUVORK5CYIIA`,chocolate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVRIic2VoRKCQBCGf7VTSQbeQGbovoQ2GxSzL2CkkE0+gb6A0U7wDQwkKt050zF3cHu7cOOMWxjudr5vd+8YgD8PxSUsQ+Cf3YaVLALhAIDV/UWy5ggsOCeZKnDCfZIpAi+ckkgFIrhLIrlFqq5rMRwAzNvFdaCqPMH2eOsX0rJgBWYHPoGq8gQA0LQdAOBwfrAS6RmM4ACwjiOrm6FMeot6uI6m7bCOo9G7lqVlQX4Hw0MmKzfh+vm87MnKXYIR3JRQ0izLSLi5wVZuSvT66fr2woeblsQ1czMkcFeC84B1TKmcEliSULgv0TmuqXAu2RrXHLgkVJUnCoJ/b5Dkl/Dg+AKF7I1oIzfs7AAAAABJRU5ErkJggg==`,garlic_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVRIS2NkoDFgpLH5DKMWEAzhwRVEGyrk/mNzckDHI5wOJdoHIMP9Ax6Bzf/4SRBizxsIdeASLwMuS4iyAGb4X1lPVA+8YmD4cv0EXksIWoBuuLTQVYan77QRFkEt+f+BgeHgI0yf4LUAp8uR/UGuBcQYLrDqBcMHBwlwMJHsA2QLkIMFbGiYBOVBBLLAwekzA4+2Be7MhBTJZPkAZgGGq2FWUmyB3mcGHntMH4CD7IY2PImCXA8CJKUicBDpfQZrxGYJAxGuB+klmEzhlmii+gSWwXCFPSwUibYAW0zjCxqiLAApghVw9nKQ4EIH2MIdWQ3BogKmmJySlGAc4M4AxMsQ7QPijURVSXMLAIP+thkNIUCYAAAAAElFTkSuQmCC`,garlic_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB00lEQVRIS7WVMUsDQRCFN8FGTKdYCYqglQiCRQjGRiwsBMFWA6KC/oFYim3+gBbaRC0VwcJCLDQhpBAEsVIQBSvR7sRGEnkb3zK37uUu4bLN7e3Nvm/ezG6SUB0eiQ7rq8iA80JffT7/oePl3PUuk/4HwGYEUIwC6bltVb3Y0Xs5Rwzi5btdER+AwQiCmBTgGsQ4J6xnaEFd7U74kiLI6WBm8059vZz5MqYIAEmvoiqlS+Omq3dclY8WTfLSvRPALGXWFAUc2bIsLiDdY7+zySjV1NKJ+vm81y6kSCY7q7MnAHG11z2zJsvbFCBrbYsACiffD3ktbLtqWiIWki5QW+kAMNcaXNRSGXM4ApssAbLOaDIa7+oLyoYBNzL7wBLhQ2FkoL5yuqVPDDLDMzm4ofvCQSi+YRzkSir/9Obra+BNBgCb1q+PdRO7xwragQQSTHE8WwJMplLq1vN0dqvFrHaCAQiAaDKyxmBsywCWgyBTn78JhGVM2wBb2PWOJGIDpG8aPxXV6cYJwogFQGGKxgoY3l9W/aM5k/H7Y1E9rx2254B3QTYRa4BwhIkjLvQfDffBhtgNdtWeMaGAICfNGisTiAQgxHU07WNpx0QGRLkHrphfBDxYKKqYnIMAAAAASUVORK5CYIIA`,flour_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEHUlEQVRIS7WVa2xTZRjH/6f30+vapVrqVl0ZSGKy6EQgDkwIypiaMYIfiEVjYoiXzZJM/KRRNOGTQuKcRickLtuIkhg2vCBREwNz04wwwiLboHRu3Uq30Z6ul9Pb1mPet+uxtzXGhPfLOee9/H//53ne9z0M7nJj7rI+ygGEMvD/so7OKZwoip5o2wOUQjBAe+dPuexcDeHtl5+iY8dO/Uz18wZbm+uw3malEwpEREEKJo3AC2BZ8VIAoVA86LkJQRCgUcsQ5ZfBMAz9Nto2/gtrXYUBuOxaQE1VZZ773BSJAOKciLMqKeKJZaTTGb3LP3Rg8zNOUZwAK6o34PnGetpXSrwsgGEEUZxMVLMyLHFByFVa+s7HltH14VsI8bwInZr14/SFK3m1zdZAaGuug91mpbn/5QsnHm1qy3OejIehUOloHwF8130MBg2LpWgMo+MzyIqfaGtCe+d5EVJU5FHXHQxd99I0EVG5Ukvzn5smUovAeD9GxyZp/3NHTtEnMTkXSODsIO0v2qaZOlRbccvjxafnrlFIthHRwpYtOBG+HYyDVSpQ/2BVdgcWA/Y2bMQTD9sR4WNY8HMUUq4RQ1w0BZNejRqrGdO+AOYWw/j24njpCN5xbAUXjmFrbSUWE0oEOA6sQorbgQjs1VbEoiGwGj3MygT+dPmxzqSl326Pl45fnfTgkU3Va0fwek6KaKpm5rDedh+21degUhFAx5nr0Go00LBK8LEEGEYCsykDIKZuzPMYm1rEwJC7dASH92+hB9SkY3FglwX+pAnf/3oVLzbZUHHPBKZmGzB8xU3BjpbtFNr94zSWIlFqhNSudnUnlixy42N2bN5gxtO76mGvGkJwYRMCSRN9d882oK//Eox6HWQyKQ48ac1A5xowOPwXLDoJFiJpjNyYxze/TZSOwLl/C6QQ8EqLHRX3TqLrtAFqNYuDe33oHbDQ4u/e8RB6zl7CwX07KLizW0nrRu6wWzNe1N6fOUtrbtNttZXwhtJIplI45ODxeZ8erzpC6O234NnHDTCYM65/H3HjhX0+9A1YsJKKw6JlaAQTngBOnh8rAgg9b+7EpI+HscJInRBHjuaMcxJB3zkLXNNevOeU4GjHCo46pej62kgLnkzEoVCqxHWk6KtbXLyuhZ72nRh2+WE1aSGXybFOL8HuRi4DaPHh+EkF1KwSrznC+PgrNQ6/xOOzXh0MOg0tLtl1JIVaNUt3VRHgeOsecEFOjIDcS8T5R18qcORQkqaCRPbuGxK835GmkXzwSZpGGorw0GvVVDgcFzDPRXBhZIqmSbzsSIr+uOmnByZ7cMiTOBsc+xvb6x6gAG8gDqtJBc8dHhKJFCtpAaxCBj6RglopR4iPg48ncfHabB6AfJT7B5e9MtYYLPlP/j9CZdf8Az/h7SitknPUAAAAAElFTkSuQmCC`,french_onion_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UPRKCMBBGvzh2Vlg43sDOgoOgDYU38BCUHMIbUNCgB6Gg8wYMBTlCbExY4iZk1DJfBfl5b5dkAGJiYoRnTv2DZQ8aaJMBp+thkXq/PQEA5wfPpQLVZNNLCJwTEZkAgJWG+zaEhClIGQsANfYdtvujmdXdLHXCfSLCEmu6eOw786xlxUYCAMpqQHHZzeBlNbB7aWZn4FqUtDlkWiNp89m4TGt2va4emM7AGw2iQBfczsc1dXURGlo9J/hJYsNdgq8kHNwnAN73eElErnbQr8Ip8iSEEePOC53iSqgjgs9oAAAAAElFTkSuQmCC`,fried_tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DIPDAj8Fhv/4fLrpAW6HEvQByPD+EhGs5u/a/wYsvv0sAwMuS/BaQMhwkMH+VtwMG499Jd0CQsECcjnIcBAg2wJcQQMytLDnzUi1ADnsiQkiUPjjAqCUhZKKkFMNKIwJWQAyGJsaUPJlY4ekLrgF6EmSGAtwGY6cfMEW4ErvIEtwAUKGw5IvI6npnVDhCMsbKBYQCmvkDEWs2lELsEYFtuIDHMnEhCssQxGrFlZ8E2UByLkgDcQ4BqYW5kWikinMNcQkafSKh2CNRijdE5KnuQUA0jXJFH9Pv6cAAAAASUVORK5CYIIA`,grape_syrup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUtJREFUSIljYBjqgJFYhSmBBv+R+XPWXyBKLwuxhvuavmVQMSliuHOmDypq8J8YS5iIsYASQHQQ1bpLoARR884XROslCtx/8Oj/wiTd/wuTdP/ff/DoPxFaGBjoEURERTIMqBVuIdkConxw/8Gj/y8+I0LlxLGTDMQGE8GIQjccBh5cPsVgYWXOoKggh9cMvJK4DCfFEooiWUHXjKAanJF8/8Gj/zUGPQxXvp9mYGBgYNDhNGXw+PCQQeXyJBR1RxRyGe4/ePQfly/wpiKY4TD2FXYGBh3bXgYGBgYGjw8PGXYIyDMwCMgz2OAxA6ut6K7HBnQ4TVHkN9xciTUucMYBPsOJkSdoAbXAwFkg/V+JaEPwqR24+uD+g0f/s9UqGZ4y3sNrgPR/JYapt9px5maCRUW2WiUDAwMDhkWwYMFnOEELYJbgkydU2AEARkyHfSdIwAwAAAAASUVORK5CYII=`,jackolantern_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVRIidVUMRKDIBA8mJS+wHfkL3mAM/bpU6a3d8YHJG9Jny6lL7CWNHAg3gFHJoVbiHC3e9yKABwdqoJjJHxpAXO/nHFye7yyGrpWvBQnMQNw5wAFDkg6iFFkL9WBIdY4sWxuXMCYK8EYSKFULhZROUIN1OC1yW8wL/597TtWKIyFnE0xO+Lu5wWgbfYCepxYcRcLua6L7Cl6Pz9VMSyezfgRSYukEFnkPA69XvtuN49zYrAdpEgU9DjJOohPTU6cjdlR2YrQNv5MO2I4UmsAtP/4sPjLnxxfYmwR1yEmpvPIuwi53MYq8w6OL4W0Y7hN+2EVAAAAAElFTkSuQmCC`,hot_sauce_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVRIiWNgGGTgPxQTDRhJMfz/f4jZjIyMROtlIsU15ACSfECOXpJ8sNrfkWG1vyMpWmgfREPfAmIj+T962Idu3E+UfmIswDCcFEuIsoCAPF4zWIiwgOHf/3lYxZkYkwjqJSuSbeYRNpgiC2atM6edBdd8ZpKknqg4IMdgGCDaB1pb0rGyCQGikimBVDQE8gGBnIwXDJ7CjkL9tAMAL4QnWOXkSy4AAAAASUVORK5CYII=`,rainbow_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVRIid2VvS9DURjGf5UrqZCwCBZNByQdhBvpQmLqH2BisIjqYrGQSNNEIo1BGCQsPrraDGKyaNIOGi4xSFiERGi6kDQ08XEM7j3t6a3bogvPcs77nvM+z3ve8wV/Ha4qcAgnzt8ICIDZ5oTiXMgMKLw1PyXX2EJjyzZgCspVfVdAWOROKBSpVEAAwhdM4gsmlYHFzKVjYDkBAYjRw4RC3BnsqjAv0JzII6lxrsRYWRJzY0ui1CkSAJHUOIAiYKx/Tj/f6FcC3Jyy0t6h+EI39QCuwhUIgFR8CIBd0+l1xZj3byrB/vATZ1Hn2luwBMTBjD9PMLijTJp+yQGwVLtMX3gKgO5wZ0UiVomU2/iWDRFzN0v7QkQAiM+9K8FGdNvMUucVg7X2YTlmlUieoofVAA+rAd6yIVsWd8ZRyez08IhiXz2f2ObYjunxcUaxr417vK4YAINz9lOtocvWW9frLHB6/Sj7Y7m8kEdvlf1s+oRs2p7pV7Cl9LR3q9iF5AD6RPHjqSJ0Uy/rD0UXrcfTWDajNr2Phpb8ZufoKSBHEltwusklsVjrLnY5PvllBYJa1OxZ7ff+EJtA0+Q+TCquavx6gPlyVovs/+ADoliAUUBEL7MAAAAASUVORK5CYII=`,salsa_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVRIie2ToU7DUBSGvzaIdZItRQ/sCAKDZWK2AbOXAMODkJBN42sgs3sCzAQZaoKKKZYMCRNLD4Ldw21v2y3o/urk9tzvO/e2hTp16uzMotGTRaMn/93vlT0YNbsSpSHBbMP36QEAY38JQJSGALSSmMeTSwBuvt4KWc7iqNkVGwIwGU7p355XTmrkeZGfhwcPC6I0pJXEum7gwWyjkwOs23MdIEpDojTUAZ0TmCvJx76isnVTt5KYVWfA2F/qSXxnpwUAdKOdyXCq8HV7rvWqM3A49n0J4ROvk2MADi/unGYzYb4G+Hy5B+Cs/w7La2VnBCKCd/QMoKIymQ1VMCAfV3jeHzv/FYnI7zsyorzMjoEaMJCBFwkyEm2yZJnGLVT7PHfosh/NkexKEbxKACBb0z7gUlaVICOqcuzBqFOeHxC+hOOYYjlcAAAAAElFTkSuQmCC`,soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVRIiWNgGJHAysrqP00Nf/H45n+aWAIzHIapagm64cRawkSs4etWzscQL6lsJqiXoAX4DO9pr6XMAkoNxwtgYR4TE4MS5jD+/3dr//9/t5b8iEaOVJihyIYr1zAQZQFRkdzTXgsPFnHuKwwqfcEMTE/4iXIoURbAALLht/rmMbz8qkNdCxgYGEgynCwLSDGcgYGBgYUUw0kxGAZI9sHwsiAoPJHh2LFjjDSxgBjD8Vpw7NgxxqDwRIoMJwqgl0mklj1EuQLZUKq5nFoAAB8UtnDnOmpmAAAAAElFTkSuQmCC`,spicy_apple_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZhJREFUSIljYBgFwx4wYhNcfv01Q6SmKIOJluZ/QgacuXadEaYeG2DCpZEYw4lRx4JPkl3LlKAFP6+dxiuPYcHy668ZeNjZGNi1TBkmzVxI0IK89HgGHnY2BlzBhBEHm+99ZOgoy/3f8/giQcNhoERWn6GiazKjrxI/YQusQ+JIMhzZkqNrFmGYhzcOGKI0CZu87DpeaewWQA22yFvO8O1QCwOXXQ1O+gRDJETPYcJuYWBggASRTTjD////////erAZTmftM0DhI9NZ+wz+W4fEEZWsGaxD4v7vYRRAMeS4uT4coxsOE8dlAc44OO7Qy2B5gIGBy66GgYFhDVwcFjzu02oZdhLhYKw52fnfe7gl3w61oMh9O9TCcNyhl6FhlQDUchKBdUgczrD+erD5/x5Ggf97GAUwxEkKoksXrjIwXIjEmopgwQZPRZOgqYiBDauDsccBNG3Dk+AFPDQsH8jqk2ABmkWUAIxIbvP2ZyzB4RpcoERWn6HN2x9r3YLhg2cWdgxtDAyMJVsZiMs4UEc9s7AjyVFUAwD/O/0eRzI1LwAAAABJRU5ErkJggg==`,spicy_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVRIid1UPWrDMBh9atrg3qCLSwYPhnbq2jVgaEyP0SP4ED6CzyEHCl27Zit4SCHEi2/gEFPUIZb49OOftF7aBwZL+vze+55kAX8dbAIO0cd58UtiUecR6jzC+90T6jyyBH/agWjJnLhevSrucwUEAPSRmyJjI9LiAIBNMsMmmVmF5tzlCOJOxw/p1+BcX0S9OVO0cbjAXB0M5mwSHneJVTNfpCcFF7HMUbY7hrBDQHWgxfH4sT69rLoJmRdAHLZqXMYFAMDnoV5H3Z/jsIwL+DxUQswLsF9yJSA7UMe0qTJ83j+jqTLLqemSOpVdiMPWcg+Qq2K/5NaiGYPVvhdoBlxQAj4P4fNQI6TvJnGXKbquCZgFZVxokbg+pobKuADzAswXKa5uXgDjLhJ0YyXx7VusEdCIZHzyvFMProEYOjnSeeuuk9CE+pOpQ7q5Qw7HQhx3iWiqTKC9OckzGSYn/B/4BhgmpsuPu4+VAAAAAElFTkSuQmCC`,spicy_pickled_garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEUlEQVRIS91VwQ3CMAxMxQZELMAGLIDon2cWYBBeDMIC6Y9/EQuwAQugsAEqMtJFrpuiJk0+9Gm1d2ffua5U4acqjK/+kEBr3c0dm3POT2YwouIEpN5a29Vn823kfWrV4lgPmlpeOvXa9/W1B6uMMb1i0GQQEDg9IQLOiPduD5dGQGCrzc4rBiDIsxCgC4AR4fN+9d1RPboDeMDHxNWjDj+SPJDz/+VLFMF2rb2PRMKBoVh6kY2Ajw4qSEQSgTRXJocnLIoAixYaR2g3klIkt3gs/+gyqgNu8phivs20F03TTN9kmSIOliVF5AEBYVtD+c8SU5oviHgXvD7LA77JUrH8h082GTch9rLJW0DfFz/6H7rf9hk80F8vAAAAAElFTkSuQmCC`,sun_butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DCgWHF/F+p8aFlqG/YabC2eADDdxkqKG+Qxn9j1jgFkyzCwAhQ+lwQQKHhDACCKQYHWM1/8vZw5RFA88JnYMrUu2YUYyzIIIWwGKLFhx+MMAWjBrYtP/wJg0inywfskshrT8OuxBNHwt4PnhijXYvnDsxhAnKYhwGYxuKrJFRFtArOEwy2CWEGUBLsNrA/nA5jWv/4QzyMi2AGY4zGRsloB8QZYF6IbjsoSgBaCyaGgXFZQWeOgFHcg8rJU+KKjIKZCQi2mYfpq3KgAeqqgZelcVKAAAAABJRU5ErkJgggAA`,chocolate_soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVRIiWNgGJHAysrqP00N/3Bl2X+aWAIzHIaJsYSRFMO3zcrBEPdKm8Jw7NgxnOYwUWJ4Tsc2gnoJWoDP8CkVXpRZQKnhDAwMDCyEDEc3DMZfM7ERKiKM1wKCQTSlwgse1siGt4vfJMYDxEUyzBJkw5me8FPPAhhANrycVYIhJL+euhYwMDCQZDhZFpBiOAMDnlSEDZBiMAyQ7IPhZQGhgo4iC4gxHK8Fx44dY/RKm0KR4XgtwGUJKYYzMBBZ4SDXXKQYThcAAIIOcW1FSq9sAAAAAElFTkSuQmCC`,olive_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgJNZ8dlmB/8hqfz7+QJReohSBDKa5BXpuIv9F+N6APfHmkwjDpV1viHIcUYrApvJz/ndy/Q5m7tvNycDw8TtReolShGw4LB6ItYSwBUguR08QxFhC0ALksEe3gJi4wGsBPsNhlhGyZGAteLCV7T+bnhjevPjr0isGBe9fOB2K1wd0taBjuhCKTyoy34H5VPEByHBdQ0mGt28hhoKAZsZlBtPHItSzQEqOHcUHVLUAZDJNgwhfMqJKHNDMgqGfk7EV0+jBdfSkAAO+6pNgaQqyRM+cG8XcSye/IvgEKh7CFhDbKsChjuYWAAAtPZoZgsyz7QAAAABJRU5ErkJgggAA`,onion_rings_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABMUlEQVRIS+2UsQ0CMRAE/RExISlUQAs0gIQQGWQUQQUQkxKSIYREA7RABcSUAVqktfZPd28nn+EI8fbO3d7aTep5NT3rpz+g6HCVRYtR+qjS7V1vbREA8ct5m573R2bsr6/f7xpQJ8AT104Isj4pOASUxCkKyHg4yIzDcZNW61PuzgV02QIlzzL8h0UrAUYnVQBuhkAE3y0nLaeqASreOyCaC4rQDrSolkWadx7QpFjvddDRPckAiKuoVjSdz1oDtFGN/Me+H0DFtSp70Oad1rAAN0Uqjo3IMFcXQMW9MzlFHoA30esMcCuuN9da3VgR7QIH7UMHADvj3k6ANwN6GrUeRdJqoVM3RaVH3su9N7cWgHS1wAPxXpQSxlmFb1HURSkAGvPwsStZxO9eAPiNhXwBw/0AOoT0r0UAAAAASUVORK5CYIIA`,popcorn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVRIie2VP2vCQBjGn0taDSI4tKBLUYyD+Kdzp27uguAkfoAuLf0UdusH6NhJlCKOQqFbP4AWhxAFF4dKrUopmvPtUA2pNMk1trRDn+W4e3PP7/K8IQf867fFRB5qX++RXS1TGgl5OJob4zwR12k6uCXiujknrpMTXMicGxMirtO81ySiChFViBsTc50bE28Qq/l6tALmvSYZ47xZs4NIbiA+PYfEHgGpCv58DyyLoFkZu7HOe31wB0hV2/07TuY0K0MO3QC4AJZFLJ/SYMF9yKEjLPppyAcnkIPAom/vYQvIlEbQLo+hp1qIP/igpzTkch20Wv7V3I944wrq6Ry9hg+Zs5FzFJ+9QDsbJSISGgF468G2cuzBprovr+gmIgCA9DcdwIygpobJqpoaNiOCTTzCgE1zK8QN8OM9EAIkAwrqq+zXqiciSAYU171uTWaMMWpnoyhoww+QgjZE5zAGxhjg8Ff+UkTJgIKCNhQ6uSeAF4lcFiKf4HaXzp/WG0R0GZSwU81hAAAAAElFTkSuQmCC`,pumpkin_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EG0v1j4P0EnMjAwOPa+xRmXWCVgBitocBBjPsODGz/A6rBZhGIBqQaj247NIrgFIMPxufjTt38o5vFxMeH0HcgimG/AFpBqOMxkYiwhygKQgaT4AKQe5guUIAJJEBuxuMIHPR5QIrmqquq/68+ZcL3EWgYzFKRxN3s6Q1tbG9xcjGQKsqSkLBFsycVmC6KSqX7tCbC6nq75KIaDxLDmA2RLiLIBh+E4LQBJgCwB0TDf4LII5GoQQA4WZLUEi2uYRbgswGUwTD1BC4gNIlzqhr4FAOLAXRkvhyyAAAAAAElFTkSuQmCC`,salt_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVRIS2NkoDFgpLH5DANqwX8yfYfiaFw++K++6TjJ5t/0s4TpgZuLzQKyDQc5CmoJTgvIDRYGmI8JWlBz4S7JQdNioEyaBVcPKxFtibbtPQaqWLAuB2Jn0BRUu6liAczwR48eMcjJyaFYQrEFMMPRwwzmE4osABkOczXVLcDlcpBFyEFFsQ9gQYHsG+SIpsgCWLCADEdPPTA5qliAL1OQZQHRuQyqkOSMhmyB0R9lDPvOsaAWJ3SzAL2gA7kMvbj+T25hB/UmRvGPtT4gNQ6wOBRuxIDWyWR4BFMLAHg9rRn+GIpBAAAAAElFTkSuQmCC`,summer_salad_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVRIie2VL2/CQByGn9IlBQdJde303ASmAr4BBsMHIJmZQZA0TSZmMCT7AJgZvsACogYxNz1bTQIOKppOHNdey7UlW4biNb1c797nvT+/Fm666a8yake8rpLK95N+pcddnfF82Kv0f+IUoAR03nmh8RnofY0OlAe8rhLVeLO/zLzbLoAUSKPKfP1l0G0LA9nW9alB5sNe7ty0Z7DZC4OPEMZ2E3sZAeAFBnGYPU0Hxp9NeDymc4pqFNPLgV5gYDrQmQnz7cAiDmF3bwHCHKDzHeEF+ZWoq2ig0XSRHY00tJcRpgP2ISIOYdsS/btnAS6TFmA6WWL7IFagmqogCfYCfTloAb6bpBNlOtMR2wECFIcivVTZKrQAmWbbstK9Vtv24bRdyyg1fhnpC14AJn1DFkq3Db2HBN9NssQDK22rSSXUd5PcLVJrQXtN5Y2QqTozI217gYHvJkwXBm+jIz6UXlG4QiVf+Vv0C1CZcT2gACpVzf/g3/UD5wa+Sc12t5MAAAAASUVORK5CYII=`,sweet_potato_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFElEQVRIS+1UMQ7CMAxsRngHG+IlCJ4AY/ukZmyfAE9BbLyDjiAHXXQ1DkklujVTGsd357NTV8283Mz41UKQdXix6L8WXU6rlyAe+6HY2uKLAr7d7ILi++OWJNEiAoEc5lQxAUjgD3ItEQ6HKVVQxGajEpxJriyrwkigVaUALTAm1EKjRczOaiyVINGqtWXyHZus/UMyK84Bc9XoS6wAQV2uRZQbfggRklEPuA+llqXIJF+IAoFWbzXSAtLVWtMVLKrrOpDsh340ahpUA/yaPLx4J+Bt20as63kd9ofu+SUaMQ5Y9xBvmuYzRZok18SSuIB7710cU9gkyVxRCRgrxl7AR++AgZhsCgFAOaf4bzqFiO++AQm8tH22dLVsAAAAAElFTkSuQmCC`,sweet_potato_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EF03o39P0EnMjAwGO76iTMusUrADFbz5iLGfIZbW7+B1WGzCMUCUg1Gtx2bRXALQIYT62JC3gJZBPMN2AJqGg6zHGYJfSyA+QJEEwqmV1xcDGLfIJGKDaDHA0okV1VV/Q890wvXR8gy5OCAsVebFDO0tbXBzcVIpiBLstyNwepft0YRik+wvGj1MjA9bedZFMNBYljzAbIlRNmAw3CcFoAkQJaAaJhvcFkEcjUIIAcLslqCxTXMIlwW4DIYpp6gBcQGES51Q98CAC9yVxnnyn4gAAAAAElFTkSuQmCC`,spaghetti_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVRIie2VIRLCMBBFfxngGhimAtEz9BBgEKgqLkANBgUX4ADY3AfBYLgGFYuAbXfThDSFGQxfZf4k/2W3mynw16+VhDaYEsTrxT6839YwFDwvDrhcb0inExhsKBbkBJgSxMFS7BkcyT7jg7YApgRl+Vp56XRSV8EgALXHUBdk4CtNBnfxsnytvpcTwK2JCZbevDi0IK0K+gT7PECPKdFqrGHLotV/2Xf2sNvq0NO9zmYAnSvCbNTwbFhIr1AAgMhK1BSdq6Z9ySjuTcmzCizW5NsUK749EBjTb8juw8dVyNu7AB9B7HAfoBfEFf4OAOD5IkMgMdrOrC6zGCol+h/xl9IDcxCDNEfiwBwAAAAASUVORK5CYII=`,strawberry_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVRJREFUSIljYBgFBAAjLon+MGsY8z8h/YWrjuJUwIRLgschgpDhDAwMDP+h6vC7AB0sv/6a4ffJTQxrnv4nZAFDiDQjI6u5H0OkpihWeRZcGtc8/f8//vtJQuYzLHxq/j8ST1DjtCDRxYJx/h6CQcSQ6GLB+AOPPIbNy6+/ZuBhZ2OYvXz1//qMZELmMzTOmMuQGhnK+OXnL6zBhBHJpBjOwMDAUJ+RzDB7+er/POxsWOUxLCDFcHRLsMlhjQMtFyOSLGBgYGBgCMnGKowzH1ALYLWA49w5Bo5z54gygJBanMkUpplSQHQQZe83ZMjeb0gbC2AG9xYzMvwwIi0BEO2D3mJEniTFEqIsmOp4nuz4wBrJMBeiG4rNErhvcOQDvKmI1PDGBjCCqFhKkDEch2twgfCQbIZiKUGsRTbW0lTqxCGG3mfvCRbVyI56ZmGHs9KhKQAAu7Vof/9SQdkAAAAASUVORK5CYII=`,sugar_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSIntlTFrAjEUx/8tdpBIN+lYpAURl3Np4XZHP4F0cG2/TUtcM/kJHN1v6KJbUXToKG5Fs1RIl+a4u7yX9Czi4h/C3Utyv/977wIBzjq1LgLr5r8sn4GZJgmaURQkz2czdOKY5FU4uNY6/biopNtFPJmkcTOKIIXAy25n/tCV1IAcUojcM/tepqUklIvt3EEGVMbF0ZDGNKQhDbh+pf8AAFS9jsFm42xqqyoAYPH0CAC4un53mKyBFIKEUmCrUgZaaydzDuwz4I5pDh4C++StoCy4VAVtVT0o46LYCr6/HpzJSm2ci/fbXi6mKrgMZTBUfQxV34HbtZDYFlk9D0YAgNc3BlAbO5VkxVawXK2D2SHTJm5/sEX4zdJWkpWdo9pn5b0PPqa3uL+78Rrvtz0sV2u0Op8k7+g32tH1Axo+8aH5Pi7fAAAAAElFTkSuQmCC`,tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVRIie1UuW3EMBAcmgTYgSAIduASHDhw6ALcgMu4Qq4MN+ACFCpQ4BIcUCYO14EACuvgjtLy0YmJHWnCITmzu7MgsGPHjj+HKLnUdy2VCj6/vAaamwZ919LDfYPRAVql55wfHXA+2cDkrkQcCEUmkvMdz5vBZgtYNeDio7twE0loBUgxBbwZLHyXRQZ8LLzKWFirRZzfAzBnlhjkxsJFOW8Gi6pukvOvj8NsEkyt71qq6gZmsCASECJcHs5VdTNXzrtR35/BmyQWrRA8jLdndICSEvbHgGd0Pi3iT+9H4Lqh2Qx4u0rK4IyH7LEmvmqg1bKKPFjP8QL4WGLx2ID4YymmJFhvptUlgy1xTtA1ebjHt1xTWWyJA5mQ4y3Ywi3x+KD4Q7uh8f/4BeeCk0AHVwhiAAAAAElFTkSuQmCC`,vegetable_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS2NkoDFgpLH5DERbwL71y39kx/z05iFKL1GKQAbT3IKWatH/oT6/wJ5YvYWNoab1NVGOI0oRsuGwYCLWEoIWYDOcFEvwWoDPcGItGbWAYIoa2EgGReTQTkVeNvr/nz18gLc8lJJXYNh25CLOoMYpAQqa4JhDDMfPXIJbkBgTxjB/ySoGZPrGjRsMa5fY4Sw6iLIAm8Ewi4aGBbAwQvcJSNzSRI+8IAJppmkkw/IAMVUqvrqBYE4mxgJ8aoa+BQAVra8Zml1jUgAAAABJRU5ErkJgggAA`,yeast_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS+2Uv0vDQBTHvwc6RAIhOJToZinURYiC+RdchG7FvbropH+HTrpId+mmuPRfiKABFwNSN00dJBSCGRRP7poLaS6/sHQQfVtyl8/nvXe5RzDjIDPm419Q2uG/1SKa6kel6qts4mCntw0aKQgBzPa18BUy8hbjbDcOG+huNpGVfufGxe3JY7IwiZcloNZRA4zoe+/otdbjzAXp5XWEpZrGL1H76g66sQD2YB9z2QQzLeDwwAvxQSmHPw/HsLwQknlCoBqKJEkK6NaZCX8QYOSFuGiZuZmnZexMdi4daIYCva6iv+/ElUwKTk3+rf8U4JNSdK1VqfdJOGvVck1Dx37AHCHQV1S+3D8oEQjI2yDAF7JFLLNd2+UNX6yPwSIqC5IiaSxSGVwqsPaa0NeU0vlStMG/D2Gfu5lnwF7SaSRpuPTPRpn9SJIFzxPwSkQbWEVFEbVDbKl0k9O89JSQrkFRAlWG3VSH/vsF3ysBgRmuWgXeAAAAAElFTkSuQmCC`,wine_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/C9ujweYbeC4FUUTpJUoR1NX/z2+DWGDoNVQt2LIkD+wDn5hJtAkimseBR7oU2Ac7Zj6jug/+e6ZLo6To7TOfEmUJMakIw3CYTcRYMuAW4HQ9sb4g5AMUC/4zQEoKRqRMTCiYiLYAZHiQrhvYgnWXd8EtoYoFMMM9bZTBFmw/chduCcUWgNI+yOVetsoM/6FlKSMjA8O2wxBLCOUJgkE0a0oC2HBD41qG82dbGP7//89gYVPLcPJoM9iStJwFePMDURaAgoaRkZHB0LiGgY2DgeHkUYhFoKCiigU09QF6HIDCHwSoFgegMgg5icIyGCypUpyKEIUcrDqGWQHxCqUWgMxANxmlVCVUNxNKReiGkcwHAB32mBlT632HAAAAAElFTkSuQmCC`,wine_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWUlEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/bB5+sPlTv3wEUUTpJUoR1NXDwAIlCVmwZ+69eEybIIrSdwZbsOzi3qFnwX+Y62HJmlhfEJOKMAwnxZKBt0BAUPC/l6whw39YHgblMCZGBpDAskv7CEY2QR/w8PD8X7ZsGcN/mA2MjAyf/SIZ+DYtZ4iKimL48uULXjMIWsArKPh/+vvfDLybloFd/dk/mkF271qGx85BDJmCbAyf37+nzAJuHp7/2zeuZXjkHMQgu3cd2GDejcsYBHk4GDz9gxm+UsUHn/4zMPByMDB8+Ay25MOXHwwMjIwM0dQIIlApemjvToZH7uEMvOsWgVPo5+A4BgY2FoZMtr+UBxHIgkhdJ3DK+f8PkpTAqYjIIoNgJIMsQM/FQyuj0cUH9or6DNJ8IijV99NPbxgO3r9IeU6GVZc4GgcE45CgAhJbHRjKAc39ixlOVxPLAAAAAElFTkSuQmCC`,apple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIljYBhRoM1G5D+peljItUwpRQlu2b059xhxqcMpgQ3AfDBHgw+rPDaLmEixAB/A5Qu8PmgSQQ1zFg0I/ecGA8OCAD6GZ7ufMfx4+AOvGTglm0RE/kfFRTAwMDAwvD56GKua3XefMjAwMDDUvXlDWhwQYzgMiFrbMixbtAKnRRgCpBiOzSJ0S3BGMimGw9RHxUVgxBuKBU0iIv9dlaVJMpiQo7D6gFTX4wNUywcjxIK6N28YYZmHHCBqbYvfAkoBUfmAXF9gcz1WCwhpwAWwuR6nBXVv3jAuW7QCqyXYfIfPMSQV1wwMDAzmPj4MJ7dsweoofGYNXQAAcmlmvV0urLkAAAAASUVORK5CYII=`,apple_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAEhJREFUaIHt1rEJACAMBEBxIUv3rxxLZ4gYMHDXB1L8h7QGANSw5thrjh2d6znrwEdu2/GKllFCpChCDZSW8Rk4jAAAAAAAmQ7xkRFp1rUPoQAAAABJRU5ErkJggg==`,apple_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAJ1JREFUaIHt1T0OQEAQhuEhInEOlWZP5HhOpFE5h0RDpfCXmF3DivcpN2Q38/mWCAAAOFS6fCpdPmnfS6wO0xSViIjUQyd9O17eJ7U4UJR8I4Pa26Neff0h7biLV8ssp7ibwLLR2XSsp5htF96IKZg2Ms3z5tPQRvzNX0doq26N7Om76Z+RIRoWUXo3xqp932zZGdoHAAAAAAAAIDYzqQZOI+OkkEgAAAAASUVORK5CYII=`,apple_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAbpJREFUaIHtljFrg0AUx/+KIaSdHFw6FDKJkCFbln6KjCI4ZM236FfI2qEgjv0UWbKVUpAOpRBolgydEqGF2CFKTj3PO89s7wcOyt3zf3f/994BBEEQBEH0itFnsNC1cT+4QWzus+Lb8m5mvH694/njRyqG1acgAIjNfRaNvPOL7yF4eskecCu9cLNvQSXiRHnKdQV1QPnIQteufWP94Z8cI0iTjH3f4igd35D5CSumzbSysZqwAGA6nmC125RWFbr8QDzTLsczAziLUvk5DxMAVrtNFi3miEYeopFX2gEhcYJoMS8tRpeLhzpkhMo82aOsZVmQJvBPjnTdkBlfeG89PGTFMx1PuGMtVDLDPznG9u/Y6AVuFgnGs4lQ9R6vU3CzTGRM1SwKXRvr4eEiJidIE3y+/dYEWaKAuinchcZK3XTuPJFt5McsNVZYqXUbJfIdDV3AH9S994hvNUFldR3LAiOKXUxTO9G6fqh4rJf7kKhRNvW1ooV0pbWgVWGbaCmdzx5TviFWEe6QUtC8r3UxPku/FzQN4xdoCarWF9U+yENrctXYbX2NIAiCIAiCIAiCIAiCIAji2vwDnIL7S+vEpDgAAAAASUVORK5CYII=`,apple_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAvFJREFUaIHtmG9r00Acx7+XlcLqyorWrtW4MBwiiLQwopThA0F8Pb4UX48KIj4ILCIDwQcykWj8Qy0jrlnRdW18UC+9JmlyubsWB/k+WXc5Lh++vz/3a4FChQoVKlSoUKFCF1ONejVYxXs0nk2NejUw9NpKoLiAePXoSVn6DKVAL56eSZ+hFEiFcgEl5ZHqvOIC6vUHxHG92Poykl0oZMusthLvxl5/QAAEhl6jS4Gh1+C4Hn2mREIOOa4HBiymLAfTnktVWZI7WXmV9Zw7ZEgO20L92xOwwBQmLczK+xBbkawTPDDI61AeKOokdYq3AGIONerVgKessw6POsVbjYkhU93s8rSGWMjWd33iHIWJG4j2GJozeRVzaPxbvsexMHkbZ2LINm/4hDY/NnS37+eDFenisZC5hxPoHQ0tY0AcZxa67btjEgyGOGb2ds3p3y8jDe7hBOAI1c4+weiUhPujSnTIPZygogE3dwahU5/frQXV8npsr2VP97f35tcXuZMGsxCIvoiVodfgn4wTK69rAo2NjUx39I6WCpMKRLXXXkuchaJ6/soPP1N3dpmc29nnS6VUIMsGvBMP7TsBcVwPpLSF7eYfroO7JlAeTV3RO1pmqKgyrw7LBrqmD6AKACClrdiLF+n92wBAvv7KfblSlxqtW+Hax0+zliDaCIWALBvwh/7cGvvya009/Cw7QeYaPx50N4ltH8TWX1u/AtO8F/6fFkZlQJYNfPvhLnze+/4htn+pQKuSNFDjyqzqhsd92ePkgAy9BuvNMMyfn8MSjOunUuOCkpCx+VMqT4TzRxiI7UW8nZtXFz+paS+iLkWvkpUCpfUiFRWWGyhNKioMqnNItsIgChTNI5XKDZR1p8lKKmTRC1WFlObQ+ZkmNXpAJdDVyjmcr5ekfw8QBoqOtJXLdVkWcaCkkVaVLv5dtmwVQFkSAuqa89/FVErYIfpdTHW3Vhay/24eUiXhH84fP2ySZy8PmKuihO3WUHpA+wuNIFwWNqXUngAAAABJRU5ErkJggg==`,apple_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAVdJREFUaIHtlTFLw0AYht+IOBYHoYOUm5NsQob8ASenkD/intGfI538Dx0Kbk1wDMVBcJCOLufQfHraJXf3BYK8z5JScs3T7973AhBCCCGEEEIIIYQQQgghhBAyT+rG2LoxdspnnPku6NoeU0olvgvqxtiu7QEAu7X/+kmQCeUVbFlAdVpR/7AsYA8rYLEHNludaXln6C+3L8vvzxqhjxZyZbq2jw69mlDX9kgzgzQzUVLB+14WAHDMEJzGicjjQz99A+vG2Lz6aVVZwN7nS9Wmjd4yyUiaGbhS2owScmUwbI9IXV1eA8O03PtDMzR6QiIj2ditkUh+hLyCzStEtS36YLy7uMHT5zMOq9Ngy1R9Aq5Se1cGzhR9ZQDgXENosT/9LrT20RN6/3iN/YlfBAsNB6M6wUKb7fEqtddC7V2mxf8RkgzNJtRTMTuh4INxaFmC4k31zf8FX1+FTiIxWQUAAAAASUVORK5CYII=`,apple_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAfJJREFUaIHtljFrwkAUx/8pBaFgBwcDgmQUk0lQMFO3foDgF+nu6MeR7HXrZEEhkwkdD6ngakFwug7h2Ys5jZqobXm/JcmR3P3vvf97F4BhGIZhGIZhGIZhGIZhGIZhmD9Or2/JXt+S11jrXrc43Q8Hwuj1LRmFAk3buoaetCAAiEKRuG/aFoYDYVxDkHYRilIUCsx8/Ts3w/EgHQ+F+ueQJ7UpU6EIkSg1YjTp56vAeJIe16U5y5N3x+zG8SBnPoyZD4OE0cQA0F2bcDvJKEahgC4KWZ486A91N+oEJKppW6jOKyhNF3h/WKaipHpQF2EdmSnT7eZnUiGr5Yr2O/pmV4jjQV6sat1ObPgXx5S7KVPFqJAF9pk600NZPH+YqTGqTF16hgNhHGqyucLmdiC7axObdg1BGGBVj8fzpCR3hIhVPfZJ07b2VthFBbmd+DpqLPH2FeBxHj9npSSLk8K6W8qUMgCpsj+XoyOk9qSij5KTBe22e7Vjb9o17fsX9xCJoeqZ+TCoqggq9ygUZxs7d9m37BZK0wVGjeXWW+rvy6ktoJCyHzWW2yqDEsVz+lHmWXYMT+UWAgSJsZs1xtJ0kXeKBLkbY9GcLWg8ia+bdq3QKBV2lhXF/xFEHipNF9pufXVBl+LXCcp9dKjPRfx+fANh1PjAaOOmbwAAAABJRU5ErkJggg==`,apple_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAwFJREFUaIHtWKuO20AUPa5KNz9QRcaJkUFWMtpl5VZ4eVl5YEBZUb+gNPIfrNSilVowyA62wgoK0g+YAu91ricz4xnPrFRFPigZOzPH5577cIAZM2bMmDFjxowZM24X210qTeuma75440Pm2LRXpGg9FpwJmXBsWqzWKQ77NolDyQNZCQklRLRGCA2fVSHd5mqI6goJJxoavgEhTkC3eV0hsYUoavi2u1RmJWRWQtJnnfRqiMbWg0kRGdM9roSKTWSCtoP5YVxZTubjh1yaSNmMbzQ1mVU96OEuH2xMvuHmth0+ZnwtIXrqukKiOyhf5yg2kId9m6gmLjaQ+TqHaASefyHBi9mJlLfxTYYmUmPhyMrr67qwmvBWt6h7gl6pk9NzDXBsWtQVnBTxrhdZefERDwtYuPg1Cn1WQrqEyruX1RUS0QiAeUm9RzQC52VHnpRZrVPomnMwIReclx1xHiZKgDFoPcRBT8Sl7sIk+vBACdfC4DOXzBoQ4nIe9m3C64wJHQnR/0711djDqbgK2bFpQYUrZrN0nQQGCpEq3bf2pTBeb9Lfw0LDwxeCKw9xNaiQcXPyMIpGOBNxVduYZaSC2tN0G6u1x7Snt6k5mUvTvFTZS38Lmwpt5jYqxFWgXrRap4Ox5N37FL+Xf7QH2l6ZbObWKmSTlrcBW0mgqnzYtwmv2NEyV9f9t7tUfvv6Sdv9+eRJHnyVMVclZSLE7+FETLM6IaiXLU7A56cvVsJqTxtrssHNlY+0nAj3DcdYkx1tri4o7h8hGtFn4JhpvXrZVNDI4Tr3mDA59YoNAECel933xQl9lXbp6lEIUVEjb+hGVl8CKrz/H1KrdWw4EVIHNf6uVtw/au+f6iFnhYgM+aKukJB/CJTuNORNIeWU9iZz8tmZsgzM1LyfuRIKTvvnn9/x468YkCMCU5polML4cJdDQAzWpnbzYIV0pg7Bq7wohiCKh2Li9hSKjZnQGKIQipn6t6lQTEwmxIezmIimkOn/Rl/8dyELmoFVRWLM1P8A+D8tayWwTnoAAAAASUVORK5CYII=`,apple_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA59JREFUaIHtWE1rE1EUPRNrUZCAdFHRQgQRTLLQIFOYVXUhrtxEf0DX3XXvsj+nZO+qdhUwi+giaaEIDq2lbqVYsdpxkd545+Z9zZsXtSVn08zMe++euffcjykwwwwzzHAB8Op1LSu6vugeQsXl8J1h6kyK1vvCSsiVBBHeGaaoN2rY3EijEGcr0Wwjk4Y5mWYb4/u0VkXWBUoP6QyrQiE9Mugg4i9QNHwVScDVsHxGIDLNNjKv8JHLye3c/RwyFKpnpv2FQB4iYjqjpmc20t6Qhvnbmt6+DBkumQlRDzqIuHFZg6S+yLODDiKXjJJrjMKnw+la5RHpQelNm4b4Gq5d40ITAQjN6OqSjhBEIhkXmfQhMwkG3diMeetNGpehKmJUVnJdqLS9jMRWb9QAJnY6rN6o5e7ZSO0MU5D4AaDeqKFI09aGsIi7bd5Q2SjUkXmK6ryjSmObJ0tD5SWnzPGFrcCp6pXq2qenRXzT5kYacTGbujQnoFvrskaigvMMoLi7jgyUfXItf8FBBxHpxzWjIn6ITbASPI0hSoV8IbJReLSl+LtowCRuGLRo0qiy23M3y+ZpI0ke0HVx21g7p9vAxxCqzLxyq5Dfm2YydC5jbUV1IDfKvVVv1NDaWhgfbto76CAiT/AwDjqITDqa8JCK/R/hplkLC+CH2/aSV8C+SIJ9tyXxKHxJrB5xJRHTvKTbV4glEen2Jjs/vTEPpanfQVMCJkJmQ6vRAtDPAER3nuczhsjYQmJ65v1t3+3lq3qzjay67zHnhCJE2NxIoyQGqvsj731+Yy4NNhQK2Ug7/Wwctn21Rogkx9KjCg7en1ltlPaQNKyDCxm4Ekpi4NnKDdWj4MOYE6FuDzj+dpy7NwrbGMGIBfkPGgCsra6Pf7uGUQVnQt2e2lC3d/733Vvl/akRYoai/rDvZ80BwUIGANtbu7m24oNShFqNFpIYGemnuniC+GG5d/TaLcPG9TM3f+atH29CHKcn82WPyCGohkKgMKGXL5Zy18uPmyH5FCPU7QGHRwf0O6ejEBkGnwFNh+riCeKbFQBuTVSHoBoqm2HwJSR1FBI+rWOso2ng4qe9CT9/VEqNHghJ6OuX6+h9KJdhCDJTLz8BAKw8fQD+RftXCZVNbRMuj6jLileHy+OhacGLUBIDt29Np314e+jw6CBbW12f+Pz5Z4Qktrd2g5zz32nIa8JLYuDe3fv4+GkvV5lPv1+Jrl77Vapw/gbAXZxH6Oy2KgAAAABJRU5ErkJggg==`,apple_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABwFJREFUaIHtWUFMG0cUfbOwDiHYmBDHEOyA41YtdiowEUioh5Jz1EZC4oAUqa2UU6McqqqnnHPuIUpPOfQQKYdIkXLwOe4JCaSQqAFaNYCJCYS4Sb22Q5ANnh7MH2Znd21jO1Ej5UsIe2Z25s1/b978BeBjfIzGgjVzsuhk+bfvZAfSL/M8EPSy9VQGC/feAyBaXI5A0Iv1VIYDwNT0CO7eeQhfr87Sm8WaQVUFJC9Mk0YngbGwjtnlIqe+M+ETbGX5Hz41PYJ0dlk8k4gbAMBqBaTJC9OP3BYIegGAB4JeU9/scpHfvtKFiQudmJoegRMYX69+KBaYuuPBU61saWMXAODr1ZHeLHJKP2kCOBg/caFTTLa16oU/lDGBOQxdJkAA+O0rXbh0898yGP9Rlt56Kxb0ecIWUARYBbW0uIbe0y62+axgolkOu/aFezYZoskTcQODkX6xYxkUgQUAFcy181ncSpZMGYIieLl98FQrljZ2+VhYZ7PLxQNRRyeB3tMubD4rCFCXBzRcf+CBP5QRdFAGaIzcTmAoSNBkA6SxRNygDHIAkJhhJkAA+MSFTmytegEA/lDGBEpoQ6FT1o5MW9+Aiz1PFoQNqIKXs0vgTYBUTagLSTvDF5+48MfTgmWsKmyVUgp1XqJRHPuFe0B6s4jggJsl4obpYZps4kInNp8VOIG5faULW6teQZe6gcFIv5iHxvhDGTFma9WLRNxAT1+70JQpQyQ8Sq9KFy2YiBu4faXL1OekOShilzfoD2XEQUHZSpg4ZW5PO3LZbYu50SJqmmWKnPrUDKtj6DmfJ4yLx1dx6ea/YLJ2BiP9thzbLaC22y3oBErOmJz1sbDOtLHwgZD9oQzODnULPdAkZ4e6K4KhDeyfFPGd9FULmN7TrrIPRSfLDi3zSym8/sCDs0PdgkKnU6K4s7CO/r4C3Cd68eTxK0sm7U4wAMa+//nAodUFacfU5wRuaXENXm8Hy2TyFnOlDdqBkkMAik4CwQE3UsmcSdCJuIHjvlYGAK/Tu6Y+JyNUDdMuq7SxJ49fmTZOPsTIodXTJaEWGVIntAMlG6UdtXZ3Y3DAzVLJHBbu7ddDsc/cjLxAjsFIv8lpKdLZZZwd6raY3tT0iBAyGaBdhuR5pqZHkErmRKGnuT3tmP8rZ3Jd1aXlyWiH6eyy6dTcfx0SbTJYOdN2obLCopPgapkBG3d18iKnPgK0tLiGvqCbPU/lxDqVCjkNCs9OYNRdUyZ9nrCjAfpDGUxNj+B5Ksf7gm62tLhmyjb5j1xVsi+/1bH2eI93nimBnFo1Lp8nbDnuTteAXT+J106P6ksACwxraGnj2Nth/PK1YQunTtdDpatBvZTtgDsB0tYflbC3U7707955CJ8nbHrYKdQTIwO8lSyZrh9IMpCvFLu3EgYAgWEN+jGO4hsmqLMrIVQayNzUXdtlxa683TdS01uJQCdTd/Gq2zIpXRuVjLGWkkOli4p7QRl1ytTJvqHeYf5QxgIGCoWyOTqNwX5xL7/9mgBRtLRxZqxoSMQNJOIG/KGM6X6jNlr4/o2cZUHVpe3MNhE38PVPBmI9LquG5AgMawDAg3qZ72ywfJcl4gaMlTL+zjMlGCsagnoJLX1tLJks8ItX3VVpo/uO5tGPcVZ8w7D+6EBbtoCOMo63nPGgXkKqqAkAHUc46ypxniqWwQDAdgnsSMiFjae7QntqNmRXNlY0tLRxRvKQwdgCIlDdLSW0a+AAkCpq6OlqYzy3DRcDj0VimF+cF8+nihr6Ahqer5d455mSxQDlzNhlRQ6Lhgh1u3YA+JuhIej5be52HbWMnZkrj9/Z3EVQL2eStCZniDJTCYwjIFpIjlgkhnx2j9uNHR8FTnZ0gMAbKxqMFQ33b+RM4PZ2KoOpCIjC6/GyfXoqRn47z2ORGAAgqJcQ1EtoO1I+sURV1UmqAZqZAzLZDDraO9j84jzGzkVRfOuqZV4AYK6Dl9GqVFG0VhswMweMj+bF97FzUVP/+Kjzs4sPOQBblh2jKmUUlKXxsQm5+XCrNQvQzByQ386b2kgvAHCqJyA+16K3hgFJC7Nff/vF0r7xYp3/8N2PclPdf26uGdDMHLDxYt25fzZhGf9OAb2vaBjQyW6/+Pz7gz8bna4xQLFIDC9fbQn9ePxvsVvQGvr/SVMok/XT6irVrZ+6AcledAjnrik+fFGTF1GW1KvkvQKq5EXNOGGHBlQpmnHC0GwNNXrCUC8gVUfNjEMDqnanNRoNUaZeqM2Ipmpot6BVrCBriaYBym4dRaur1HAFWTcgtaT96vznjWKpH5BdSdus+PDvsncdHwFVi/oKtFHzu1gzo+4M0btYs926aZT97+qhZkVdBdX4KBAe+BTLyb9NV0Vxp4XpbXsN1UT/AbUUA79aGpk9AAAAAElFTkSuQmCC`,apple_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAA60lEQVR4nO3UPw6CMBTH8R/GODh4A9IZ2EgYiFdwIhyHUW9jnDyEk5swN8TBxMEwutTBFEtMtOS9Sd9nJFC+9A+AEEIIIYQQ/6uslCkrZShjTDhjmlqjqTUoUWxBTa0RxQpRrMhRJEkBkxToX86xbN7KSg1enmcwm2Vq8gxsAd5LZvdIFCu4Udy8gtwYADjtEHyKoiyb9wzZmO1aBzaqC4f32P1EOW3B2AdceQazmqXY34/owmckgD7Ezqr9CB8sx96NAV6zODYGAKYcQYv2/drYEIs8Q9fbmTrEANufmosEffN7QYf5haOj9wCqOWHeZMY0fwAAAABJRU5ErkJggg==`,apple_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAARlJREFUaIHt1TGKg0AUBuDfsKTYIjeQqdVOsJC9QqrgcSw3twlWe4csCOmi9SBbBFIEy21mi2Si2YXFzDwIhP9rBIXn78y8J0BEREREREREREREREREREQuilKZolTGp0YgGaZtNAAgihU279qp9kwqUNtoRLFCFCu0jYbvSt0tz87XZAWTrHB9ucS2TVaU6ubleQazfktNnsHYgL4mb5k9I1GsMA4lbVKgcRgA2FcI/gvls22TV8iGsd2zrxD04fB8Ww/nqW2088H2avs8g1nOU3x879CH55C4rBBGnXfPCBBp+z4EFt3wcTaAyzx6kQi06P7ee9hgPJ6+fEvccA4kNXd+E/t1SHneQNtapo5zIBvg8/Ugk+TiB9HsZVMDm5FIAAAAAElFTkSuQmCC`,banana_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAARJJREFUSIndlD8OgjAYxR/+mfAELiSayOaOzHIMhw4OToYbeAHj1MGB3d1JVxMXL1AO4Anc0NSFRigt/mlNjG8itLzf1+97BfiyHPGQzPyPTQhlPJn5jvQOANAwKi83n456IJRx1boxQEgHadkwnyw6AID1uLpm7QQ6WQGEnovQc3HYDyttMgIQyvj1simBZFmZQVE8DeAMjlxcgd+dgWhP87z6DuBVWQfstydzQF17ojhD8b/0VopExnXmcvVKgO6nJYwBaAcrV18BEMo4TwMAwK07rxjUJUZVfQlAKOOj/oP3LH6yuap62EhRnTmKJxAb8msO0SoTc6iGLIN2y7bywyjOSvtfBsigKFan6pnx/+gOFz13YOwa2yQAAAAASUVORK5CYII=`,banana_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAixJREFUaIHtlrFv00AUh3+XOElBwRgbkCIk6FIxoEpdGLylexaGbggpa/6CTgydmJBgZMnAmIkqa5XxaKVKqQJIrVURIUWp2jo4bZHi1uYYwG7cNAlVz0ZI75t8d7rnT3f37h1AEARBEARBEARBEEMw2QHNpTnxs3cedn1thw2NAQB4zUpGyFyaE0ZOi/QddPvI5FPM8318rFuh2DgpqUKl508FANiuE/YZOQ0H3T5yMxnmDs6wvrYzMUZKplAgozCFAWBplma26+Be4TbcwZlgNwTmTR2L5YSEUq1t3PrhM0944DULvvDPx3QBpIEW76FRHR9DkSnE7mbZTOcQn77dx7ypj45np8eQukLi8BSrW0covdDR4r2RcYUpYaYlIgQAi2Xg3ZuNYQlmuw6MnAZPeGLafKlCq1tHkTavWfCEd6UY0lfouJO/1nzpQtdFupDyfTRxg3P0T4Tu3HQj7aueI+lCGScz8SaeRixnqFHFWKnB8UmyQkHqqxsPAACVoopsvw8A2Ld2YRYeoVJUkxMK+PC5E34/OR2IfWsXjbc14OuXiZdjrGlfKap4OPsYAH7L/CHouwypxfUiXUcH2ttieaWK968bAIDllSpevSyLcW8x6U/YYZ4tzGLPMURpwYz015scvL156b9j3bI9x4CRV1m9yf96Tuylwz6JFtx6k8PIq2N3JpFaVtCMyCpdlExMiLc3AQBdxw6lCpoR67klCIIgCIIgCIL4z/gFhUm39sdr3R0AAAAASUVORK5CYII=`,banana_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAnlJREFUaIHtljFoE1EYx/8vTWwq6XnmGmksiKCpQyNWtIXbkkUIDdYlW5ZzsBAoSqZODgXBSdCtLhkcg4M0IEJDwOWsYAmIQhOHVggJxJNrrNLQpM9Bk+aa5gZ7d4vfb7l379333o/vfXf3AIIgCIIgCIIgCILogVk9oZwI8YPvh9Ou50usZwwAoGbLzgjJiRCXhkVDX726A4/PxVrtNt7lyl2xQVKWCsWTMxwAtKbe7ZOGRdSrOxj2elhzbx/r+ZLpHC4rhToybuZmANgQG2JaU0cgeAbNvX3ekYkqDgm5Pm5i9GebtXgLaraMRq11OObn3XYh45AQGzvFvJVv2F7juCr7MX7OytlPwL37s4Z7ORHi8eQMlxMhPjDoL5bXUFQBnj99/8/xlgudFMuFzAp2e40jqsB02xzJkNdXxkJ6DCv5kBPLmRNVwM+fvcw719WNGDfLki1FvfBo3NC3kg8hvRjDlTtfDKJWr20qdfOWD1EF3YysbsQMbUeF0JOpXoHe9tEsdrD8+NFhfmoCjdkKJqUASlqdpxdjeHD3DS5cP8CkFGAlrW76Rlou0yE5N4JUROCXpl3869uXPBUReHJuZGCsba99KiIgFREQDoQBAIVn2e5YOBBGKiIcG+e2S6iq+/80tjb50nIGL54UAABLyxk8fqjwqu5nQKMvzpYamp+agMvjAQDUdInHp2XDeK6oQjz9g73+3H9Ys2XLXn2qoKZLqOkSJJ/AckW17xn91+ixsbYI3b4mQN36AADQdo3bkiuqkHzCwJ1x5F8WFCVDlrTdRlf4KLZ9h3qRL95AUJRQ1TUeFCVW1bWBQgRBEARBEARBEP8ZvwFFpOQ2GmcYagAAAABJRU5ErkJggg==`,banana_fruit_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAuZJREFUaIHtlj9IG1Ecx78vmsZIvMa7pCQKpdBEBSO19A/cliyFoFQXh4IU0kUICMXJqYNQ6JShTk4OnYoUtAZCwSB0SaXUKtLSxFC0kCYQT86orSHR10HvzHmJ051L32fJy/vde+9z7/d7jwMYDAaDwWAwGAwGg8GogRg9oTjipye759OuJDOkJgYASM1tXo2QOOKngs2p6Svm92B1WEj1+Bif4puqWCMpQ4UGRx9QAJDKston2Jwo5vdga7GS8lEFK8nMpXNYjBRSZJpJMwFAmkgTkcoy3N7rKB9VaIUeok/kEYpckZBlI422w2NSpVWk5jZRKlTPYzxF4audunp26X7OgY52n/lCxHWNtOR2sL1E0Sfy8NwAtpeoGp9Jnhb1788eGnyCujtlqNBCcgfv10sYfMpD+sHTSluWKhK1xT6T9CP/N0vrzWF4DYUiQKvrr7obl8HbOs0XAoD1nxuatx+bcAEAYtMJTIyH1d/UW7tulwwX2s851LayuEJ63qf53z2cNXp5PfcfOdDR7qOhCGgoAqq0F1fDdHE1rLaVmOlCZ/eMRkCR6mj3afr6RF43vtloIVfPLrp8HhKbTtD0vA/dw8px9yOGBIDTYu8ezmrSayqhyGnqatNTL2WX3dimSI299OCCgNo+i+kw/PNDYai3E6WHOXQJbmSkIp0YD+P5sw+4efcEXYKbZKQilmfNWr2OjMLogB3RIEdv91vor4/vaDTI0dEBe8OxplyMABANcogGOQTcAQDA8us5NRZwBxANcnXHGX7KFPLy2ZHeStPJqVm8iS0DACanZvHqRYTmZZ4AJd04U2poqLcTFqsVAFCQBTrYL2ri8bUUnK37JPFd/7FmSsoWvuVQkAUUZAGCgyPxtZTuGflPW92xpgg9vsMhtfUFACAdaNMSX0tBcHANM2NaUdfidQqaXZIOSqrwRUy7h2oRb92D1ykgL0vU6xRIXpYaCjEYDAaDwWAwGAzGf8Y/wKIyp5xRIncAAAAASUVORK5CYII=`,banana_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAtlJREFUaIHtlj9ME1Ecx7+vVyyYtrR3kNASFGMJJJaIKJqbaBlcIIoDg0mXbqSjcWByYHJycGIw6eBISIxp4gI0cTmJUWtMjPxJAEltFYpHC4ZCy89B7ujZg+nOxfdZ7r3fu/feN9/f7949gMPhcDgcDofD4XA4nBqY1QvKY110tH2y7MLcEqsZAwA0NjOkny3ZL0ge6yLJ5TPENnM7aHA7WKVaxZvUskGYMr1sr6CR2AABQKGs6jHJ5cNmbgeuxgZW3j/Ewpy5MxoOKwVpYpzMyQAwgQmsUFbRGmhGef+QDmkPvbKIaPwfCXJ8WoRnr8oqVIEyvYxivnIyJhLyH5qopWebSlk3gv6Q/YJYyznWmN3C+iyhVxbRfbGI9VnSx7P5VQDAt7dtdH/8u6lTlgqirQO8/FjEg4c/Ufgi0pbzB2kiaos9m1/F+3yJzNawvIaicWAmI+pCzqJLbLJ6e3NB0TiIygJpTyoLNBIboL/jQX+oziXLHSpl3Xp7fkrA0HhV7y++CBn63aMrVm9fz43bbgT9IYrGQdE4SGtrTtW6ZOaQ5RyfMwYBmqigP2SI9cpi3XzLU9bSs43BfsaGxqtob7sEHH9V81OCIUXdoytweQ6s3r6eO1e9iMb/pM6suGtjtp9DGukk4Gnf1Z3Siru2PdjPTP+jll8/NO5eaUfxZhZyhxPKRoXmpwSEbhEuXDuC3OFkykYF6aRdu59BbLgJiYiXLvc56OvrGUpEvBQbPv1AtCVlGomIF+HWMAAg/XRaj4dbw0hEvKZznHYKyqkisLZIE5NJPH+SBgBMTCbx+FGccqrIgGLdHNtqCADu9XUir0o00icb4qmMAt/5Env1uf6yZmvK8qoEye1lqYxSN6b+8pjOsVUQABR2jWlJZRRIbu+pmbFdEAAEfJLBpcJuEcraO9N3ba0hDbnzOgI+CTm1QAGfxHJq4VRBHA6Hw+FwOBwOh/Of8RuWiD5UfcCbswAAAABJRU5ErkJggg==`,banana_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABndJREFUaIHtms1vE0cYxp8xdpINiRM7K/ERmqaUhKwgTWXA2K2QiIRyQkWqlFtVFSmX9i/opfce+wdEoofefAL1hJBAimAdk0RaDHKFqZpCAmllNs6axCSh3h7s2c7Ozq6z/qoq9ZEs2buzs7993nfedzYK8L/+YyLJ2TEclgNYWzBN9sSJS4RsFypQU/mOAgUpTDyWsJ3ILKTNYwlCkrNjANAxMDJxdtwBY0GtpAGfbtEHYOXnYSygcrlsOyFJkg2sHhQF6RkgeJWGFX6/oSdXvj6NtQXTnFSmbBAUkB7zguLzkD6gJEnIrKQRUUyipvJC9xxAydkxRKNh/Hq/ZAKACMwLioWhoeeviSgmEbnH68QlQggYu/v7e/E8Uxa65QaVnB3DZo44YMrlMrI5DUcvgADAxkNY7rkps5KuDmatp26xUCwQDwXAAuLB30uGyAt1vy4ITY9sTkOAPaGm8tB1Ax9+2k+yOc2WR2zSx2MJK196Bgh40bEv1H0zHks4YMrlsu0jSZL1IAF+Mgo1EpdINqdZx3koAAj1VnOCdyeb03DiYshBygOwIFQOIApVKu3YnpZXPJbAn8vVvOBDCgBri/u2+sY7wYPSNAjCpZgBqIbuvmblE3VJNCk7ObiccbuGJj69l14wEHTrZccSILpuYPhcD8kua67VnE/+bE7zhGEhAGAkLpFSaQe6bkBN5RGUwkTcy9JpEyDYxC6GPwHJPEib8VjC1SURjJsjFAIASqUdW6ENvlyEOalM2XJFkiTbxJkHaddiRiWC4WsSaGhqbogUoADsh64GKq+nhkvi8zDD57pJRDGJrhtALW9FuStcZSKweCxhdX9+bDanYVKZ8oT5K7CLzRwx2c9hOeCAsporPcC3DQhaBz+GPcbDeFVrUW8MbBcqiCgmiSgmocVQtBVhnXIbw4rmDF+tedfXFkybU669jHfLzSWRY/yK4xcMuO0N65Swl4ncOohL9OkpjKhVsGB0TrY3OjujwC0+P6gyK2nbZoyH4ceyEuVTRDGrrUMkutcZifeSbEbzLIp8WPjwolb5325V107PAKkV3n9UDZkJVyAWCiA2692g6PKnecGCvN2CbZcZUezR2S6YUFN595BR1QsdTWpw+2/WEQpy9YsL+Pmnh573qwvEQ0GwiWeB6r2hTCajkCd03L3RBBAErzmsW1TZnGaDOR45hZebzxxznZ/pw8uHR4XnDgzEgnUfJthYgu19LpvTcPQ8yO62id/vmMKb8Zq+DodTwl7mJTWVx+52NTccTXWjDDWVx9Uvo36nbRyI6uQHb2x7bgDoLr3F9HWgVxZve3ndvQEcj5xqHkhN5RF8/sZxvPvNLgDgh++yB55raEJvHshLpfU+X+OzapuBmlXLgYKbnsXfoZbkEKsjR47Yfkd6d31dz5eHpoEMw7D9DhVDmL7e+HwtCVn3oUO233dvoGEofwGvo6G+HujFEK6d6QcyALDue46WJXU8lkDu0PvWHufmE/8wLQWi+mPouAkA31wO4/uvLnQeKBwOW9/jH120vr8qRvHtj957n7YAUQ2Gw8g8WsT5yG++dxAtBSoWCrbfL5514+aTdWwUhzoHdO3MMEZOis9FByr4bCoMdXUZydFznQECgKXXp82ZyzMAgEFZhl4oYHxUgWr0294mPv94pv1AJtkHAGQeLXqOU1eX8ar42hdYYw6RdyjqWwCAqCzXhQJggbUHKPAOADA+qiDzaNFK7MreXl2w9gAxGh9VMMi5NNQfwmdTYddr2grEuxKPJaAWh+r+CbBtQKhtQfhcGurrwbUzw/8OkMglttF2HChaq0OotZCnq7mG5/IN5FWlUatN46MKwNSrtgKBqdJ8qNg8KupbAHnXGSDUnKAAeqGAqCxb7liggQ4A0TDQosiKwiw9XsH0sNHQNsS/Q0zbgEfrWN/YwS3NEJ5rLRATBtalSm2FBbq6gCaqdVtepZup1k0BVfb2rCXeKh34vWxubg4AYKwuARs7NijU2sdg2B6iW5qBubk5zM/PW9dTzc/PC+9TdyXQidgJ6L9nUJhAVxcqe3sYlGUEABQNA5mVNH55/FQ4vxdckB9IT4pAWJhmxM7JwwXcTrhZ6qVWrJAAPNzwggqHnUu6wny/cnkGE2fHfa+0IBumRsX2NAp1595t1xxixd/b918/ajcxUXOB7qcHZRl37t3mx/kW4XNHRO0mPiSNQrD6G0LRP+c+tRWxAAAAAElFTkSuQmCC`,banana_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAiNJREFUaIHtls9u00AQh3+blDjulsrgWkIGJPvEDSKO5OIcECdQy6PwYiBegFx6Dy+Q5IBycROstE5cQ70c6nUc/4tbBw5oPikHJ+vZb2bs2QAEQRAEQRAEQRAEQRAEQRAEQRAEQRBlsDqL+mcWuNGG794I+V1Xa7HAiwAA55+nexNq1V3ouzfCdjjkJ/AiAUAYpo7+mfXvhbjRZpOhj8nQBwDYDsfgtA93Nt+rVK2WIW4bbluFwIuE7XAAgKX18O3LOQxTZ+5s3rh9lUJlWXeOWgiv8lIAWFOhgyoZw9ThzuYi+1t4FUF7wtlk6Avb4Zh6o8pNyhIrki8USssMTvu5DeOKiMfPN1JVAtrJMbyL5VZiXa3F5Lq0WK5lu2QyUpAy8cPOygSyseTLkW1zrkLcaOdkUjdvcEaJzHU8jw4fqlhdroV3scwJZBOzHS7jinRhckJy3ky9USKSHoLxNSZDP6mA2VMBAKvLdZJIUWWziWXjllWIyc3kDYEXbfU57r3MKhGraEuhQDYuyp6hNFWv8eCtifCoI8yeCkXbzNiyyu6KVyh0F969OYHih0L5+BTKbRtzInedS6VzqA6KH25d6+MFVo9UtoZ674ld+yzbhaX1AACHP9eNjo97C314dQz+TAcAvLBey6OjMY0q5P+Yi5ef3u9NprHQ3+D/E5Lt0scL/OoeNBojexFK8yD4ja/fl41iNJpD17zD9PEi93+pCX8ACFAUE3a7dgUAAAAASUVORK5CYII=`,banana_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9tJREFUaIHtll2L41QYx/8nbaczZqZkbYNSFVr0TofdK13ITYt4I7I0Lrigt/kQ+xH8DDLeCF7sytJhWBC8mV5Y0EVkRhlF2bVFpOimdUO62Wb6kuPF5Jw9maSvznZvzg8KTXLa/PJ/nucQQCKRSCQSiUQikUgkEolEIpFIJJLnB2FfDLMEvZiH3elRrZAjTtcFADTr7bUKKeKB3enRas2A03UpAKoVcjDMEgyztH6hTe3sa9s5Qrmi4nmJiSWj5YoaW1DSruBwvwkAWEcplXkLkhLTi/lnllai0KkT8E+SmN3p0WdiAyCddDKrPfVkUlmhxxD2nGGWFirdtDSTfsuFVD1FWg0v1kdMRBQrV1S0Gh4Ve3CWhFbIsXKL5whbI4rxKDx7wqTQanixG2Q1BVlNiZSRpZQkoxfzAEABUKfr0mrNQLmizu1Hcv6P2I18J0icOpZWVlPQanhQ9RTx7Al/SnGDrdYMXmIklF+YYMJ+H2nqZr2NZr0N3wl4WkmwpMoVFZ49iTW4KCMOiJjyqRNE+pGROGXNentuCZMwzFJkgxUlxEERxcoVFb4T8Iea2pRIKCE7z0p56gToHA2wsa2Q4eOAl6pcUbnMLNiDqnqKfPPZg/lC58WQ0F9Mqlh6iXTa/9BqzcBv7R9nyjCRTU0hfthXrIcS96FZ+E6AjW0lskVUawYO95uxJj4vIDwU8Z0AvhPE9qK5CYlTI57XXlaJ87fHy9M5GkAslSghJsGYtqHOTGjaCIfjSl98TY0kJcpspSdk/NBHyh9BaY2RezIEAHz9+3BmAFOFkmTe/eEkvHoC1D7B4X6TyxSvbHGZbe8x0fpP4PbGkVSv7hICbMyUShQyzBJUPRWTqf+U42tMfIl25U2eDMJeyZ10AIC6AD565+zG180z6Rs3R3SeVGIPhVNFyxU1IlJQx6TrpVFQx+h6aQoA2Q9fAQB0jgbInXRw69MM/5879WgzXzdV3Lg5AgCytJCqp+DZE5r/418uAgAHxy6uXT4TJFoG1BlRJvX57p8xidvfb0SOr+4S8t3PdLmEmNTWowEA4IVHAxwcu7E1oRgXev/+rzEJfScgdj+6Jy3dQ1jhFfW9v4ZcRJSw+8rcyVpIaBUyW5uYjMbE7o+XkhCZ+069CB93n1Y+lUmvLHNhQhfJykLXLueQ38kssHI5VhKyLAvZS6+i1x/RD97WI9cyOzosy1qPkHijrxq/RK69/lYBAHDn2wcYug9hWdZKYitN2d7eXuQ498YO3Pt9hGnRL24fLPSelcSFNbXtn+LuPRsHxy6XWUtClmXxhMKbU9yzxeP/xX92wDVIcXKaVAAAAABJRU5ErkJggg==`,banana_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9hJREFUaIHtl09r20gYxp+RnFpFtarGETQpCzZd6KWQ0EMvutiH3VMJTo97NvuhFsN+g00wOS2U+OJDcwj2oYdCW5tSnAXZWa28InITe/aQjBjLI6tS5KQseiAw0d/fPM8778hApkyZMmXKlClTpkyZMmXKxImwgblXgrFVhDUYUX1DI/bQAQC09/u3CiTx/1iDEa3WTNhDhwKg+oYGc68Ec690+0CKfjXs2x2UKyruCoyPjJYr6sIFJX0HRwdtAMBtRClFXSByzNgqrsytnOjgxJ7543wgymvHKO8uEw+Z1MHIyBgcAwOAXsuFokvEs2f+i829EhRdhmdPqaLLxLOnc+dEEkH7QD//+hSuNRVCicB6LRcASHu/PweztXMfg8753LP1DY3FDe6YsB79abvWFKohk17LZS+bU16XkNeluTgVXVqAYSroKgBQANQeOrRaM1GuqJH1OFcH7ISiS/Ds2VK38rqEXstFYTNHxqeXPsygc46Hhkr+sVxarZno251Ql7kVTJhLC4XJwFRDjoyQQZUrKib2DIPOOXIKIZce9WFEC4QHY/X45vdPQNiyb+/3IyMM1fUUGQyLml8UfPzligrPntHA7WIFI2THmWvMFQDgitl3jIcQiU1UNWTy528fo4GCYBDUFw8FANWaiff9k6UwDIS1DnArTdgYl8mzZ7j3QCK9lutDVWsmjg7aCBZxEICbFPHsGfg+xhTpEP9Zwh/XH6vE/usKirnER8VD8E4whXXypQ7xMPzs2fax/oM65xQPw0OInAhTqENBmPf9k7nzz0ovcHTQhghGNWTiWtNE+1lkH/qWImV9ZdA5h7p2SdyLXOLNNTQy1hTDYFiN8B1aezfA9JGK9tu/E8EsBQIXA0JWSm7oYfLHGc2/foKtnfuYfFIgu18Tw0QC8asluFI8e4bi538X7pFkeTVA19sGXdYzdrc1f/zTl684vBHKEiD2jQOAxFmyaSjUoTgQvwwJrJSAIj/yb1uJgXa3NRQLa+nS3NSh0fiCvnppAAAMJX/3QEzaj4U0HgP8r2poVUoExDfEtBUbaHdbw+Z6Hte/ue4eCABOzyb+6mKyvMndAW2u58nhsYUgFNPutpY41thAza6D07MJioU1cngs3DDoTeJM5FCz62A0vhCeC3NtpUAiLYswjlIDYjCHxxaKhbVv+gG6UiBeo/EFml0n0b2pAX1Xm2uaigVUr9f9cdEIL+Bm10G9Xvf/VgIUfPDIsuirlwaePt8QXt9oNNBoNGLBxAJiLxHJ+TCO/eIwpVZDljdJpbAT9wtc7VkLW0Sz6xAEIo4T3X8sUS1ZmPdudgAAAABJRU5ErkJggg==`,banana_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABJBJREFUaIHtmM2LIkcYxp/yY9T0apo4DRsTgrILuQRm2MNehOAektMyrDnmFpD8VfM3ZIbBS8hhJGAOnpx7iLIkZqF16Wg6o+tq5bBdNa9ld9t215DJsA8IQzv99s/n/SoF3ut/JqYzWL1ZBQCYhyU44ykX161KmdmjCbpnw50xUjphrEoZALgznvJnL+qoNQw8e1GHPZpwq1KWwLcOJGDs0USCDJ0+Fs4aQ6cvoaLEytCgVFHspRIwAgQAcua7z3t53pVp2yUmQPJmCnNnzfGuBpgznkYCqzersmZqDQMLZy1BAGDQcZE3U2zurKPVkGGlAYDPnTUXOfcKkpuHJdSb1Z25FzUTpKgwAJBx7RWvNQx5Yej0UWsYqJrHuDzvSscEVFBgkaogd6JK3r1w1vJFwcIcE+kK0z7ubADlzJR87QKjLRyULuFOZBJP7OvvH8G1VxwAaOrguUZTAECkEmSoBhYzALZvt2ZcewUALG+mMOi4G/Uk3AJp4aHTB2660jeoWjtBTeEHKy2tN6swrHRkt4QDfg6R9wCfVYKQ0SKf0D0bgrjFvKC+bgllCswXFgCKpgEAXF0lYfWIoOUa5paPE6gcFzaumQ8N5rxy5eSm94Kkn9ajcMl3l4W5RZ1S0zrouMh+wLZgRNeqXUzrUShwuXbPhuieDTF31jCsdCCUKu5VCoURIPR+EaPWMOTKAl2uVGpXuPYKnlMyhUFQb6+57FS/2qIa9a8BAIaVlqWz9d/0XENfWRQAgB08uElhzkyhclzAqH8t60kMyTCYQcelg5N55QGoRa2ea4TtpPhw8CDF+Jpj+Q+X7f559Qkuz7tQ60YtfiE6o9RZtDGHVBiakqDgAmrUv0ZQqtS55AcilAFpcxWGBhVwlePCFuCusWBYaebaq0hLluGmiCMXo9//qDNGXR+Rz0O7HuSXIpDW99t3g467lyu+QN6skS4JEPopxQKmcAJG1FASGIQtVz+76XwSZ/Dyb6+R++YTCbXP+TkUSH0gduS93qyiNJoiO3/LKdDB32/Y5U+jWDBbQPvq5KgEABJo8cMfWBgH7MdfxrFjavvmKpRz3yS6XztQUr0H2qX7C/TtWM9PTffToa9+T9bqVPfTIZ2KDXRyVMLDD3N6aYK+dUTVq78W/LsvPwUA2POFFqDEKfMD8ZZuLN1GDUX6tTVIWoGeP7USx9AK1O7ZKBeziUa29pRNZktcXE1j3x8LSC3a0uNibABVSRxKVLxBSpQyHUWsKjZQuZhl7Z6tlyYu0MXVFJPZUjsMdHaZldez17S3fbmYvTur4/lTC5PZ8u6sDh3SMhh1am+gk6MSPv4ohzs1GP98veDqULwTB7SwSR03rbGAgqY0uRY7nXsD7ZrSSfebtrZv9+z/5sR4clRCuZjdui5g2j0bn1n52KfGWA5NZsutLqNgL+357dZQq9WSf6vH00dfHAI+y/XiaopWq7Vxb2IgEez09HSvoEJx7rv1XSagojoVp6hl/dA02fOFljORFoemv850hAF0p6z0uIh2z8bF1TR22+/964f3sJu2/pm8mRAGAP4FlBPshc8G1hUAAAAASUVORK5CYII=`,banana_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABuNJREFUaIHtmF9oW1Ucx7/nkibXpEnb/BHp2iKm1dFGWhAjKZ1YGMJo6UCoTyIW86JP80V98V2GD/N9WB8EHwrCxmQvk8IMBq5MN5Zl2DbSdW03aZuluU2aZDXXh+TcnXtybpKbtBHBL1zI/Xfu535/v/P7nRvgf/3HRCLzI3D5JeR2yxp7wuWXSG63jPjSakeBbBQmOGU3nEjFSprcQ0hkfgQAOgZGIvMjNTAMFGDRLfoCrKy8jER/FDNlwwYAwSk7glN25HbLmssvCR/GgkTmRyD3EADQ6NboPl42l18iqVhJC4dHsWdf009QKEevhOCUHalYSXP5JRKZH6l5YzYPC/saglN2FDNlOHolpGIlDQCBiXu8SGR+BF6vB+l0VgMAEZijt2JkKlaqCR8LQ0PP30OB5B6Cwr6m1WJU5PJLxEDudjuhqnmhW2ZQ1XtrYHylYShKEo7uyjOKBxUQs3ylYxPeeuoWC8UC8VBVaWyY6DXdvXZykCk1BKHpsZk4epbUqM6GdDoLr9dDFCUJX2kYqOYRvYkOTutWNYkNovcdZEoanRg8ALs5eiX9RSR+MArldjuJoiT14zwUAHQ5KznBu6MoSbg89hpSHoAFoaoBolCqmje8La/glB1P85W84EMKALlsyVDfeCdY+UrDehrYUGc6VkOn5xN1STSoYXAkIYIRXasoSaSQhNfrIendrHkvk3sIKexrcDpl5PMF0yk9ELLp+/QB9WDoNVRut5PQaMSXVmF7zkNMexkA5PMFOPsIScUqITBzSQRj5ggLoap5Q6G1HWY1bSBkMyQsrc48XD2JYPiapIcmnTXtbxIFYDe2n6FBDYFJ4vMwTqdMAJB0OgswvU8IxEsEVu1nwmsVJYmBkK0uzN9SEWzTNWu85OxHrxgSmm8baJDI/DEepl61FvVGqVr+CQBCiyEfArYoBqfs2Ewc1RRJPsnpTOKrNe86v7Qx7WW8W2YuiRzjZxw/YcAtb1inhL1M5JbIJd7JYqZsgBG1ChaMjsn2xtrOKHCLOiXq+mwfK2bK2Ewcge9tYJbDVKJ8AkBMgSgUXSOZVWr68H7ny9jOr2AzcWQIIQWhlR8mCzVhyHiJmqyo61OxMKlYCalYCXIPIQBIYV9DfGkV8aVVVMEIu9GZVtchNBG6VKyEcHgUAPQJQEGoI3RKz773Oq5992vd5zUE4qFQjT+ziEc4PIrt/ErNjBG1h1cjXvhPp7G8KH5W3ZBRsbNP7iGETVAKA0Gh6++rbSl342moW93Cc2jWIVaR+RE4XATFXGWl6CsN68nscBFSzGl4cEPD9pO1hmNNL6DGqaYcYhVfWkUxV8mNYqYM9/Pdz04+PkR8aRWz73utDts6EFVfIUeKP2wBALZvHyKw8hccagHTC4DTf9jUGMuLqAldS0DxpVXYNg5qjjsOigCAS1/cbXos3+l0+0Cs/lj/zbCvbnWbXivS3fgxAx232gY6vH/fsG97YjO9VqRjySFWHwZG0edY1/f7nEVL9/PloW2gnYIRoCvThemF1sc7lhz6JPKGYX95ES1DWQt4A/m6ZaQzXTg/5gYUANiyPMaxzbLZcADpTJe+xrlyzzrMsQIx0gDg47c8+PKD1zsPFJAd+u9PL23rvx9lvPj82/prnxMBopo+dxYXL/RjcLhoeQVxrECeYXd1pArHwzUHrtzbwuOMr3NA58dOYegl8TlvTxlz4x7E128h8uJrnQECgIcrbu2zr1QAQHZNxcaD3zEzKWMvlzN8Tbwz8fbJA2nkKQDg4oX+utfF12/hUWbPElhrDpEjaLaKO/Ko0hAKgA52MkDSEQBgZlLGxQv9emIHQ/6GYCcDxGhmUkZ2TTUc87m7MDfuaWm8toF4V2bDAeypTxv+BXhiQKguQYYGJwzHfN0yzo+d+neARC6xjbbjQEODE9h4eBsAMPbun/jxl0LLY1kGqlelUa1NM5MywNSrEwUCU6X5ULE1SbOpADnqDBCqTlCAjYe3MTQ4obujg0odAKJhoEWRFYX5+pv7OPWCs6VliHWHmLYBNkyS8flbj/O4eifbASAmDKxLiZ9uYvrcWaQSu0Ab1fpEPqXbqdZtfQYFQ37MYLedIWrUtEPRaBTRaBRywFiE6Iziv2ABoMsdMNzPjmOmhjMhGo3i8uXLhmNz4x5tNhzQYVKJXQRDfmTXVISmz2D5+g1cU3bg6h8j31+PN35bRoaQseQ8BA/TjKzCGIBETlhVaPpMW/eD5lC9mJpBsh+IVInln/XfC28OYG7cU3emifKJ0APNukNDFpAdz77JqqIrx51CEdeUHVy9k7VcrW1WYADQh2gAsIABHSq7pmLx5iZ/nWVZdogVH5JWIVj9A/RCJ8Szd97YAAAAAElFTkSuQmCC`,banana_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABZElEQVR4nO2WvW6DMBSFP0Na0VJVLCztkrxB9yx5hTxpXiFL9r5BsrQLC6pKS3/AHRrQhQAywdl8JCQwxvp8fK4NODk5OTk5OTk5OQ1JmXRarueEsU+WFLpqCyJP5WkJwG5zsAbkmXbMkkIvViHVlaelBnQY+yzXc2tAM9OOYeyr/TbTQA0FcGwzctpERg7tNgeypABQQeSp/TZrvA8iz5pLo2cm8yRcIox9lSXF5DyNApIuXN95fL+XDShASaA+14agjYG6Ku3+cabeXn71YhXWQPKbIPKq8Mu2weo0CnXXMsF/oOUz0IDO05L2+6ow2vCjgCRMFWhZaV/HGV/dqhPotsQYndVpBNSGARr3D083APx86E6Yjqqsl+0sILkHcTqrOiOtgPcC5GnZG2xThxog1WCyiqSDYwDOAjIZTLiixgC0ZXyWGUrBtMPWNtDkndoK0Ovzp41hgAs4NFU2gaz8gvwB9BbCFUm9pKAAAAAASUVORK5CYII=`,banana_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAXRJREFUaIHtlj1Sg1AUhc+D6KA4Dg2NNskO7NNkC1lptpAmvTtIGm1oGEcUf+BZCHhByFzCS3e+mRQB8uZ7h3MhACGEEEIIIYQQQgghhBBCCCGEEHIujOai5XqOMPaRJYWtjwWRZ/K0BADsNgdnQp72wiwp7GIVov7kaWkB2DD2sVzPnQnNtBeGsW/228wCaKQAoDqmSlqDKqHd5oAsKQDABJFn9tusdT6IPGcpjd6Z7JNICWHsmywpJvdplJBM4fLGw+dr2ZICYKTQUGrHpNVCfZN2ez8zL0/fdrEKGyH5myDy6vLLY0enU1XqvtuEqtDyO37L30jnaYnu+XowhsJQCUmZutBy0j6qHV9cm3/SXcQavdOpEurK4K8zAIC7hysAwNeb7ZXpmcrmtp0kJJ9BPbtqOtIp+KBAnpaDxdYm1BKpF5NTJBMcI3CSkGYxkYoZI9BF/S5TYjDxZetaaPKT2onQ8+O7i2WAcyQ0FZdCTv6C/AAIicIVov1ikAAAAABJRU5ErkJggg==`,asparagus_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAV9JREFUSInFVTuOgzAUHKJttlmlJF2UFIgr0EUpkNiaC3AGjsEZuAA1kVKg7SjpIkSRgg4phyBF8pCxn8GglTJVHL/PvBk/AXwCjmf3/5Wz4QKd7WlRk6kcSw703WA4X+sLmrKz5KQlORsxEAB+fm1T4iM8Djf2/5FEYRwNwY/DDWEcTUrleHYfxtFQnGsyNGjKzsqSFPe6AAAc3bMR8yxJR2eZlGIy4V4XSjIHZ3tClbdaUl8mBeD99bLZorn7XYBrfgFQoMpbvcnkAQBUeQvfDbDffcN3g1W7MWpA4MbUvRB6DLr7UQPZZLEAoJonI4wjRR52AuAljyjX3Iuaule2lFhSA5pIZEd+idNy7NkJmrKzOLk4iUx2RbsHU4U4AjrM7gHwkkknARE4ukCWpMq+sBPIO6G7FyfLktTMA5kZB5KIMCUV28DUZBMPVpm8BKtNfv/upbOC2c/hXIGP4wnebtncsEc6vwAAAABJRU5ErkJggg==`,asparagus_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIljYBgFIxOoW0n8p5ZaJmwa1AUcibKEGLWM6BrcNb3g/J3XtzHcPPaCEUMXCWpZ0AV2Xt9GyOFkqR2hgJiEgJGKSDGcmNSGNYUQYzixqQ0jFRELXitdRXCu41ZHtgXntj4kVysqULeS+E9K0YEO8MYBLCIZGBgYbn7YjzOc8QGcQYQekTc/kGo0AQsYGEaLguECAF6gPZZVZb3GAAAAAElFTkSuQmCC`,asparagus_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQdJREFUSIljYBgF5AB1K4n/1FLLhE2DuoAjUZYQo5YRXYO7phecv/P6Noabx14wYugiQS2GD14rXSXkcJLUwy1Qt5L4H1qSBNdEjEUwNfjUYvhAWdOZ4dzWhwzntj5kCC1Jwhq+MMfA1J3b+pCgY8gCxCQEDB+QYjgxqQ1rCiHGcGJTGws5FjAwoEXsddzqyA4iYgFBC9StJP4TCmdcqY2gBfCIxBOZyprOeB2IMw7QI/LmB4R4aEkSw+qeeQwMDAwM57ZCaIoi+bXSVXhE3jz2grElqI0YbQwMDASCCLnIwBfOJFuAXC4xMBAOZ5ItQDf47vW9DKt75uEMZ3wApwb04CDH8OEBAFoqeOiVTrE/AAAAAElFTkSuQmCC`,asparagus_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSInFUz3KwkAQnYgHsIyVosVia5lGxELQwsoLeAaPkTPkAqks8oFFCpuU6WRJkSJdwMYbxMZdxv2b1U/wQSAhM/Pe/DyAX4BFYfet2J4pgQ2WXiQ+sYGasJ5t5PeZ/0FVtIGW9Uas1sFtcqWEvxUvCVgUdvvjQSb5EIkYV6zWwXS2ku/748E4XyyGgiSoijZI4wRqnmtENpRZQ4rROhCoeQ5pnBgXJ8SwwRLKrHGK6ZMyDcAXNB5uII0TSfwVAgBlsdxcXCN4BnX4W8zVVoCCtoOqaAPxSKcSbrUtWOsAQ3VqdTfHUddmvSIMPG/VA65rIwmwo9UxYOW7aGEdkZFAVYmLqYak4OxAFKbGcCou1n/W02NR2M23oxcyTIJH4jphL6OZLsXXF14ENc+hzJqPzOZ1pv+BU5HvnH+KB+Rns9NcWsNEAAAAAElFTkSuQmCC`,asparagus_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVRIie1VwQ2AIAw8jJMYV2CRDuoirkBYRT9CxJS2Up9ewsNiubO9IvBDQWBih7LvIjjWZakPKWc3yT25OfwrkpkLEkUAwLbtUq6plBMXVA4Grq8t60HWYKQH9R2iWMX0SjniokZEIXlDoOGVGUbdYbazx+MmF2kE7qmWkqxlEEX0CKyNVEWwg1ZQJtoqghs6kcAKotgV0yMIKefmypCsKF0tXhepPXD/UAwifsg4AawtUVA+F49vAAAAAElFTkSuQmCC`,carrot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UMQ7DIAxFTVUJZcnIBTggU0+RKQfMBTJmQUx0aEDY2FSkdMvbwMn//o4VgJshrFOEdYr/N+m57xalKYaloqKd4o9uk4TzqnrmcqJW5+lOEH92m3BnmqZALJyU86+rDeFEK0E8Fp0Ps/PYyHklzrwwbnWADAAA5lfAJkSMQ9qiLL7tIV9Sw9OsuTmSO+p+2wNYU4zrk0QhAyEJl6Dq3hqNkiCS8JU1TcLWaJRANGGgBdQ9Fc0f+ft6Z8QEzMy7hLkX4rFo1PkvwokqgTV6iLBEhPL3cAMAb8x5cUBYehurAAAAAElFTkSuQmCC`,carrot_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFFJREFUSIljYBgFo2AUjAIagYmc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIH+JSQElKId7Ro2B4AAAM7CorC4ZVKwAAAABJRU5ErkJggg==`,carrot_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAG1JREFUSIljYBgFo2AUkAcmcv6nnYFUM3wi53+sBqOLoasj2xJcNAHAhFc2/zsjyQ4hCyC7Gt1XBAwmzoXIliADInxIvAXolhAZfMRagC8Y8JpBjAX/P3Wz45TkK/2J1xxcEpRkJtKCfRQMfQAAPQYyLlPDfzcAAAAASUVORK5CYII=`,carrot_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHNJREFUSIljYBgFo2CYgomc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIHxJvAbolRAYfsRbgCwa8ZhBjwf9P3ew4JflKf+I1h5AFeA0nxhJcFlCSW0mL11Ew9AEAw2E2LwiWHwcAAAAASUVORK5CYII=`,carrot_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVRIie2U3Q2AMAiErXEZGcShHeQcpz4YkipQ8CdqjN8bacvBlbZpfj4HEWUiyhx3VycfenCUASRVgCsAkGrrtT2MENCqsNf1PaaAPLyPRWjdvXkH40Rq+2WSMpEVC7ZTcAtnRN0x9S7doz1S1W0CEetci7TR4+QR60Jfhef7IqSLCIuiEwMgjRO5xVVesj8xln2mQEmtbSlis7Io2vZpHvkuXssMLP56RC4nRRUAAAAASUVORK5CYII=`,garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS82VvQ3CQAyFnRUoGIGWgoYSMQUVJQswBwtQUjEFoqShoGUEClYAOZLRi3P+OaRISRUS8z4/2+c0NPDVDKxP4wIsF5PP7f6uSiodzOLn4542uwPVQMYH4KGocZFyIOXBictC0oDL9UGv54mms23LWa/mqV6EAM6exflCQBbiAlC8BMhATIDUXUoi2WsX/NvrRxFgiUuTayA9gBYvlUYDJKbkpAPIiFsuLMgPgLMudbcaGz1HJy2gVjxygae9A8DMvSw9gC6V6yAqhU5I4nsO/imTNUl6GfamiAN470eNts4C/x+/F+ZBExBuUDzVerNqYXkf7iIUsu69L1y4TTMAL+YLkFzsGSkFyYQAAAAASUVORK5CYIIA`,garlic_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADtJREFUSIljYBgFo2AUjIJRMNxA6nS1/6TqYSLFcB19LZItIdoCcsEIsyBWZxrJFjASoQZfpBKjf4gDABs7CRP3VfqlAAAAAElFTkSuQmCC`,garlic_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJ1JREFUSIljYBgFo2AUDDPg2WH+37PD/D8+eXz6sMkzYdOMTaFnh/l/Gf73GHLI/O0VJxnR9bHAFKFLwjRi04QOiFGDE8As8uww/586Xe0/IZ+iAyZCCrZXnGTEFWTEuJxor8Hi4MlHQbjFxOgj6ANsgJQwJ9oCGf735LiFdB+QahFJFujoa5FkOMkWxOpMI9kCYiILX1onP4MNGQAAbEJDfI/EtV8AAAAASUVORK5CYII=`,garlic_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALxJREFUSIljYBgqwLPD/D/NDSfJEs8O8//oGrAZQIwaol2XOl0NxVJiDGPBZ/v2ipOM2ytOMuJy+faKk4wkuxSXGLIPsAULXt/gk8QXRNgcQZRvsFlCbBygizGRZSMD7jhAFyM6kjw7zP/L8L9nePJREKtBuADOVITPAHQ5ovQRShnERDI2Pm5BNDlSMhpZuRndAkKGwORpHslkJVNSigiy88HQtEBHX4u2FsTqTCPZAmIiC19yJL4+GLIAAIDwnt7DsMsUAAAAAElFTkSuQmCC`,garlic_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVRIS2NkoDFgpLH5DKMWEAzh0SCibRBZGAv9P3H2Hd5gJjsOQIbvO3CRwclBnwGfJWRZADMcFj74LCHZApDhK2YVM4ipxcHDnyoWgAwGmQgKFnRAsQXYXA2z5NWtRQwRab0444FgEIEMz80JZQgMqcGaJKkSyeiRSqzrQeoI+gBmGLIloGABAXxBA9NHtAUgDbCIhmkmlMlI8gHBMgGHApJ8QI4loxYQDDWaBxEAZwZJGciZbVQAAAAASUVORK5CYIIA`,grape_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVRIDWNgGAWjITC8QiDTTPk/zEcbwrXhbJgYWTSyoSADkPk0s4Qsl6JrwuU6mDiyT9D1Es2HGQbTAOOjGw4Th6kjmUY3ENkAmhmOz1JkBxDNRjYQmU2RD9A1IxsMchm6PNGuRVZIFUOQDRxlj4bA4AsBAEAiL1mYqo82AAAAAElFTkSuQmCC`,grape_green_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_purple_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DKMWEAzhwRFEQtm8/3E59d3Uz3gdiVcSZvAPxW9w8zn5OFHs+n+RkQGfJTgtABmOz2BkW/BZgtUCdMNBhqG4nAspxL5BjMBlCYYFJBnOwMDAEizM8GfxOypZgOTyim3/GUo/qDIIR91hYMDjC9J8gGRB1aqv4KBpC+OGRMc3Rqy+INsCjGQ7aCwAuQxvRCOnIGjQkJSKYF4nmJqQwojkfIBsCYyNLdOBDAYBsnIyeiRiK48IlUMgMwZHaUqw0MejYNQHBEMPACcseBmTrgJTAAAAAElFTkSuQmCC`,grape_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2ElEQVRIS2NkoDFgpLH5DKMWEAzhwRFEOpx2/3E59cr3Q3gdiVcSZrD4H1G4+eyMHCh2PWJ+zIDPEpwWgAzHZzCyLfgswWoBuuEgw5BdLsAmBDf/w693YDYuSzAsIMXwTc1HGLgz3jIY89tSxwJklxv6zWUo/aDKwOPKxGBXroXTFyT5ANkCY6fJYEPP7ssF06CgwhZMZFuAnmwHjwUgl+GLaORgggUNSakI5nVCqYmifIBsCYyNnulAEQoDZOVk9EhEL48IlUEw/YOjNCVY6ONRMOoDgqEHAPCIbxlb63vgAAAAAElFTkSuQmCC`,jalapeno_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7klEQVRIS2NkoDFgJMH8/1C1pOhhIFbxf6cwUbD5+1a9BlHE6iNeIQMDA1mWEO0SkAV+adIMXz78IskXxFoANxwWZ8QGFdEWwOIAOVEQYwlBC9w5WP+nSUviTGyznj5n2PnjN05z8FqAbLitrgrD4ct3sFqEzxKiLMBnOMhGsiwg1vUwL+GyBKcPYBYQcj1dLPgkyMyw4soTrJFNFR9QFAeEggif6/EWWoTSPyzsybYAZAAxllAto2HLYYRcT7Bcx+cDYgwnaAGuYCLWcLIsIMVwoixA9gWphhNtAcwSEI2vaMaWEAjWByS0OrAqBQDXPaUZstITfAAAAABJRU5ErkJgggAA`,jalapeno_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAwUlEQVRIS2NkoDFgpLH5DKMWEAzh0SAiP4hswh3+w3QfWXkAZ1DC1OFSg1UjSJO27Ue4664e5mf4/ekOnH9y+xOwPmR1IDXYLMGwAJvhMI3mnjJwX7HyqTAgOwJkITZLSLIAOTjQHUKWBcguwhYcMAthPiHKB7CwBdGwoMEXbNjUIyctojIaIQvwpVWSLcCVWnBZQpQFyMEASq6wZEowlzEwkFZcw5LpqAWgoIXnWGLCGU0NSrwSHclkWATWMvQtAAA9on8Z/HlQTAAAAABJRU5ErkJgggAA`,jalapeno_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/klEQVRIS+VUMQoCQQzcK2z1A5Z2PsBGwdYX+EZfcK2gjQ+ws/QD2lqczMHAXMwtWeREMc3BksxMMrlUaeCoBsZP30Ww2Eyb0XjmNn3c7V2x2Q6W23VDtMf9kgA+X93S+TBpvxp480h6CQCuIBY0SuISWHAoBSDCkvLtrQ5YTA9IwncIKvKAHVA15q/hGR0m8GYPcACgA0uk3TBPc1488AiojgSn+trW5XJJkiVQ47iyXFdVaT3JdkBl2q4q9daVgEX/AYv6PLHrGjbZ3oGPEmA88AAm6xnpUw+xoWuqBqOIWxQ59SECAtk1/W+CzkmIjEJyOmMv8qCQqE3/fYInGwy8GfZ6sOcAAAAASUVORK5CYIIA`,jalapeno_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABH0lEQVRIS2NkoDFgpLH5DIPLAnNPmf+sfCoonj6y8gBeR+KVtAl3+A8z7fenOwwgw7VtPzJcPcwPpkEAxMZnCU4LQIbDDIEZhI1PlgXohsMsANHoloDEKPYBzJWwOEAOHlgQ4rIEbxChawZZABJDjmhCcYHVAmzhD4pkGDi5/QkjrmBE9wmGBdgMh2mC+QDmC+T4wJWiiLYAOcmCDOPmvM/w9bsi2FP4ggmvBbDIhfkKPf2DLNm54CE4uHClJpxxANOAHGToFrx/eJXh6onX5OdkkCXIrkfPzSALwGGPxxKiCjuQJaCIRk6mIL62hSg4aCi2AJY8YRaAkikxhoP0EeUDbBYQW48MXwvg9QCxQYGkDiVUSAoiMiwjLZIHpQUAD3LJGUbvuUIAAAAASUVORK5CYIIA`,jalapeno_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVRIiWNgGAVDDtzebPH/9maL/zQz/P+zS///P7v0/9zUDKIsYSLFcBXjWSQ7imgLyAWMpCi+vdni/+dHBgwMDAwMRtkzSNI7CoYwoFvGw2UJ2fkAPePBki/VLKAawBe+tzdb/D83NYPocgmrAaQUbGQZTmrpiQ4GtrAbLdwYGBgYAFTPX5fT1wXtAAAAAElFTkSuQmCC`,pea_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbVJREFUSIntlMtKw0AUhr/YokRqkSAGurAUgiLSraZvkT5BnsGlO3d5jj5B8wKum7qTrlqE0o0QkFm0xWys40InTm3Sm7gQ/GFIzgx855x/LvAXZNdMAFmtlwD4/KbxVlIQNfzAkYA8udhHj40fFC79wJmb6HcFUSjwA4fWzSPVesnYOkG1XmLUm0oAP3Dod0W6FoWC08uyMbgf85MOMA8KJJOZVLHrWZxdWQBpBzvbgMtHRQCZTGbS9SyuW+e4nkUUfnXhBw6j3lQWNwErW8bPr7jeR6WNpk3ldJ9G004TqL2wa+b6HSi4Hzi4nkWjadNo2nTaMU+DFzrtGPiwRtkUDxPW6kCH97sirVp10GnHRKHAPCgYyWQm9Q1f2cF3uK6nwctcnExmWJVdIwoFVmXXAJafoqzKATrteO4/CgXlo6Ixfn5dYOQmWGaL7vnZlUXr5jGXlWnRurYoeLVeyi00b2GlLTp81Jvm8RcT2DWTeJhIdRSX2bIKDhkWxcNk4RHLs2UVPDMBkFqjLhFsZouuzIumX/9tbNFVyJi7hTcOj/dSeBQKHu7ExvA8ye/j8/X81+/oHfIfC2frtx3xAAAAAElFTkSuQmCC`,pea_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAelJREFUSIntlDFoE2EUx3+f3hESUbQXKFypQyg1iFNU6C0B41K7ZJIuSiI4NIJKFx0Es7YIWTK0QwsRBDchGDsUCprBG1pKx6pBkEiG4nWpJLWJfi7ekbP5rqkIXfqfvseD//+9/3vvg2McNURQMluM+uIz5yJUtuoS4NGlWyKTyhPWRgIFTgSR61qIatuR2kkdgMpWXeasBGkjTiaVl/10oAUlV1oNmTbilJ1NH1nZ2SRanhKj5pV/E8gWo0ROh2AbzNEIORIAzNnrAKSNOItfVmSysRFoMShm8ODFec8OlxSgO74WGhQ/f3UAKN3/phToOYNu8vEBUyR1Y18hobBGte3IsQs3aHVqSoGeFj21smLy6hOp70yLjQ+2L5ezPLtk17CVVvUUOMUgxcpDMf95SU4MDIul7bo3ZNcit8Ozr+6Ki8Njh+vgzdoC1bbjbZBbdS88//pOXnc+Ha4D8A5JmquTvqoBJowhMWevy5yVoPGx6a7xgRvlQ6tTo2TfIVYQ8l5piKlFk1hByGf2ZRkrCOnGrU5Nzi/fVvIoLzmsjfB27TVJ3RDNnR/sNvd8+d3mHrPWY1FZXRCZVF4pEHjJ3fv9978EcNOa+fOa2Zdzoezgf6FvgfcvvwfGKgRNvq/fsk+uYxwhfgNZt7hllq/TVQAAAABJRU5ErkJggg==`,pea_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIntlD0KwkAQhV/EI/jTpYt2CjYBFYSQRhSsxSOJeIxcQlIG0gS0U7t0MbnD2iQhGXaXWbX0gxTDvjA782YH+GOC77kAIKpvs14ptZOp3dIulo5UZ5FYJFGAXn8IALAdT6aptcfTAaPxAACw256l2o7szyLPlDenPO4v7bk0wa+T1FAPylgK9aCMzeGaqUJlYBOWmSqUHlB0fdaNd5ebQJfkEsZ0vAW4VTLNFEkUiCQKRPoMKy0ARgW3a4rmbcpYicl4s2GPt8ku+pS6j7SXFabvQupBkWf1RFBu15S+C+3EfLyLuPunVYHvudZsvhfN+BLGXycx4mdL7k/FG2sdid9DA0ygAAAAAElFTkSuQmCC`,pumpkin_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVRIie1UuxGDMAyVOUomYA52yRzpU9IzR3bJHExArzQg54S+puIur0On97GFBXB3lAYOZvhZA5wfE3283h9Xo2sVj6JPM4CSAwRuIHMCjtD1SidAoaaJub3cAPEpMBZRyOolk+IRWlCWqi3OYN3yohrnMKD06wYwDj6Z18ah1nYt/DUwk3FDLmjhym8awt/guoE2TG34HOJDi5I1Q/ehZcUtDl9i6rrYU9VGu0/cRcSVqecwwb6b4wsIwjy5qWuN/wAAAABJRU5ErkJggg==`,pumpkin_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVRIS2NkoDFgpLH5DKMWEAzh0SAaDSLsIVC1zu7/lYtPGTY13iWYSHAq8KtX/q+jLw22oS3oEFwdzHCQOMUWwNwPsghkCchSmBgxhoPUEvQisqGkGk6UBTBDYRYR63KYPoI+GLUAPYjgqYRgGYBfAdxcouOAXAtHLSAYcjQPIgAOZi8ZT91aaQAAAABJRU5ErkJgggAA`,pumpkin_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLkQUwg1+9+4PiEzEhFgaYJWRZgMtgZFtglpBsAchwdBeDDP786jvcfF4xTgayLMBmOMxgkKEU+QCX4egGgywhKg5g4QyLLGQL8LkaZAHBVIRsGMg1IAALd5DhyK6GyaMbDAsujEiGGY5uEHqOghmM7FpsuQ7FAnTDkcPSIlcenJmINRivD2CSyK6DWXBi8kOSkjbRioeMBSiFFsGiErcC6hR2xDiA6DggxjCCyZRcQ/DpG/o+AACfiHQZOpMMxAAAAABJRU5ErkJgggAA`,pumpkin_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYUk1H4AMwuZKqllAcx/ASkdQWYPsE2r5AKXYpaC2o7y4JtZykjINsYaSlZPJMRxvTibXQHR9AG+ifxnYavyUAAAAAElFTkSuQmCC`,pumpkin_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLtgXIhr569wfFJ2JCLAwwS8iyAGQ4uqHoYQWzhGQL0A3//Oo73GxeMU44mywLkA2HGYxsKLIvyLLAIlceHJkgw7EZDDIUBkiOA5jr0Q2HGYqccpB9QnQcwFwP0kzIUIosODH5IdGOAlmEUzEsSGCRBfMBVSyAGQ4yDDloQC6i2AJkw5HDkmo+ABmEzZWyfEwo5c3jT/+IigsMRdh8ADL8YrYeSmmgP/USAzGWYHUFckFmcEscbHCBwjeqWIASDAQLe9wKKC+uibWcqIgi1jBs6mhuAQBXJIAZAYF9rQAAAABJRU5ErkJgggAA`,pumpkin_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/0lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYQmz6OnCxyh56vGnf3iDDEMSZBA2V4LEQYZfzNZDsUB/6iUGfJZgWIDLB7J8TP/RDYfZhM8SrN5DLsgMbonDXVyg8A1r/USMBSjFLRVrOUaS0jQ5Fo9aQDDUALfWiRlPIsF9AAAAAElFTkSuQmCC`,pumpkin_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIid1UwQ3EIAxzK/7dI2MwCaMxScfIHkzAPSoQnJKS0uvj6h8SOI7jALwWRJSJKN+957RHPqTjECkz8zJ7bx0p9CHB0okGsQAzL3vcZjntsMzBOqv/RZ1626aWmhm4Ql7jBoiRKwKuFhf34BvWvZCEuHqINot8SGoRSUjt4Iy0COhsNMJkUVtkJOZxDBfv15vZWXQlLe0bQLfNPAON/PZ3bSI/QdfBbFL2uD2TrPd/1QDwAfx6iTTKaBYOAAAAAElFTkSuQmCC`,spinach_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7klEQVRIie1VXQqDMAz+OkfBu3gtnz1Ln3et3kUYSPegwTRNjNsYbLAPSjUmX/6aCvzxqyjbchEOCCzdgtSvT9PscmnCgjECQ1dLiYzI87LupLd+b/gumlcM3U5ASD0wRp08L+S4yVx63NO3iHgQGkQmV13LIeFyGYSA3QOLzMomL8Dt3nD6TdYiPIr6VIm4oVUmz9EGeYrqJksyWRaZpXJU9WPKjTw5OXpqDngz+bsWNe3GHEgHAdNcT6eVCc/gQMe7iwK0vmjNNUpkDZrumJeqvuhMG7vJ3LAl46S03kbBGAtSf/pf8JqTD5J/Jx5qr2HmmdxT5AAAAABJRU5ErkJggg==`,spinach_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVRIie2S0QnAIAxEzwpO41pO5VpOI4j9UmyrMelfSx4ICnrPgwCKonwfI7odXO37mFlvDzKsrRFvn7JXgllYOwuYC4KrPWz1Y29ZLegG90AASOXaZCOZC2I2SIUvFQsoibdgybcCStJgiFazzBpBYabyV07e8yJJjGp+5wAAAABJRU5ErkJggg==`,spinach_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAW0AE3Rtv+dDBT/D7Q7BhA0RdtSzftM2AQPXH1CkiE0jw9q+pi2gC4upUp40yUTDcqIczJQ/D8oHTawgKySFVc4Ui18sblohJf/QxoAANEqIe1OcIVOAAAAAElFTkSuQmCC`,strawberry_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAR1JREFUSInlVbENwjAQPCNIhSjp0oUGJohYgClIxRCZgDnYgg0yAGXS0aVOQ5AwTWzZzv8TU8JJkWznfee/s2TgH6GdT6oBAKhY8uKc2cmlbAyHIVSmxvybRQqoYSMAYBDTxTmz49GGCPLRZqIbu2Y6mCKgAaBP89GP5F55IoGYAoBPFuk+zS153XZYHGaTyb2BJMAhuVd2zIQvdiCS120HfdrDdOiG74LrwCOv2w7b4wrP64sspuyKuqab9ZIlJ0g9UAK6T3MvUAnGqkvZkFaxDNypQ2FTx+UVZiAGy8HNyLlZKhT4itzFQO4dWjQ5tEOaU+Thgg1XupJTT84KxCD0m8I8ijGCmCsgbarbDrvHTdo3WQDgn8LY1+9H8AYaOaFdHXkaZAAAAABJRU5ErkJggg==`,strawberry_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZpJREFUSIntVDFPwkAYfWdQoAYMgdiIcSHK0ASHslgGBiTGGBLZXJmMHXCE0ZmasGDSVf8BA4MhTiyd7OhiogMBAhEMDmrCcA7mCpUWMDI48KZe79173/u+ywELLPDvQWYhZUoBeH0cKp06Ta1vkbfXd1xnX/5mkCkFTOvaoEtlSYSq6WAmo7AzXJpUcW3QpZzHCRe3YuzJkohKp04BGByvj7NN4LATr3TqrGLKhFVNBwAcrG0QAD85lt2wTMAOMjy0c8b3kX+TVPstWu23DM7o/tQEnMcJ9ABV0zFqki0ngTSgarohrGr6RHHLBLe9pklAlkQIvAKBV0w8VdNxyu8SgVfwGGzbXpaxBFeOFEmUBYr0UGi0/8yc9V6WRBxrN7YzGDNINAQA3y0ReAUXnjg5Ke+ZDBlkSUS2nMRhMEIiuLZMYDlkAOTe/UyUjyTZbvCGIUN82U/OV6OE/dtp8jYyFglchYJp/ZnPo+LVSc59R2UMh372tA/M+BJMRTjmQqhI6KUWpaEioeGYa+azkyqgv6xjPmkWmDu+ABYSnXTgyhitAAAAAElFTkSuQmCC`,strawberry_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAmJJREFUSIntlL9P1GAYxz/vtbw5rw1X7gwOhKRAIrtMjCYmJCbEyb+BBRddWJxcWHTBxb/BRUNiojExrsawuAgJeAlBPQ/uCrRHeend63Bt0/uJTjrwTG369vs83x/vA1f1r0v8yaHXj+4A6Gl3jmOvLtyFRVRL6byZF2bOZGpp9e8bHLx9nj5/3/1K48c+Z81AjzsTwl1YRBpSx9+Ef1QFoOiUuPXgRRdO7pLhNaCvu7OcNQMAceI1kIZMhhNCtznxGrrolPQgAHMUetSORBiFWhqSe0/f9zEDOK3XmHbnaAa+KFj26AYfntwHOlSnllbZ3lwHEKqlBjFDtZQoOiWs8qSwypPY5RujG5x4DT3tzkHszfzyGgBbGytsbaz0MePsPEYxsYtlHbWjPk+7GmSpZqXY+fSRolPSzcAX1Z0vWO4Mh5U9YQJjCN1S58JXPra0NT3B6TVZFCwby50hakepFAD7lV0Klq0TZoeVPX5W9jTAxXmINKRQLTWaQRKx7c11wijUtrQT6Rh3JsSxV6folNLzU7M3RRuwrlnM3H3Yi92ZOPuS6DzmOKlh0pCp4XE8kYbEVz55M4+ZMzUghl22LomagQ+gLzwPacgUMCnVUjq5YABhFGqA8PS4LwgDGxzVqunPcTR11I5Sw/NmvotxonujegCg4wGHN4h1TkF85ScSML+8hpkzIZbVlnbK8rRe6wpBtobuoqzmymsQHP0COkH49uYZGanE53evGHcmALj9+GUXztBVkb1kzcCnYNm6l12yTZM1MqguW3YAFCxb71d20/fYHxFG4chVfVX/R/0G94oNtjdxwCgAAAAASUVORK5CYII=`,sugarcane_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaZJREFUSIntVT1PwlAUPSVNXNgMTdwaZCWmG+pqIouGONGNyYE/0N8APwEWtzoZI0ubsArdCHFwqcQNxfADSAh1sO/xPm4BcfUsXN4995x377sEAwpcr5ioZ35rYuzCo/hSoesVE6dU1QpGcSAVZfEovlZkFZaYfZmczL6zIpEXDvua+OXphcQ3xSRZFP8UOagCXiCJU12Ew0A65wZ+a2LA65Oth8OAm6jiVmGZcmhDcq5iJ2LLTqnKP1WemNPegBJn30dxIJmwmOKxNxIXIqePow+/NTFGccBvJt6SLQAlDmKlJQORuHg9AuYz8BiAnV/Bzq+kM8xn65hAjrmqu86RmjBhKU5zDO1uU/vx8Q6YeLvbTCjivf9Cxqq4Wqvd+O7xNmFzjnpjfl53y1xYjAGgcnUCpAvSqHUkTX0kokk6gmgwRd0tax1VztLZH1qkOKgtAoBGrWOIt9+GqDcmxTMNKGx7gyyYm5LvbwseU28g5vcysI8PAAAfn2uTTXkKO49oX2R28PD0bADnmf9afzZYmwA317RRNJhKPAqZCRWqySbRf/wK36wQGKXFDcrEAAAAAElFTkSuQmCC`,sugarcane_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSIljYBgFo4DuICvV9z9NDX/6bOZ/mliSler7//adOf9v35lDkiVMpFjy4MFDBgYGBoZv35gZXrx8R5QeoizISvX9X93owzB90j64JcQCoix48fIdw7dvzAyTZ8SRbAlJQYRsCU0sYGBgYGit30KSepIs6O/cyBAYbsBQXBFAfQtghnNx8ZHiJuItIMdwkiwgFxBtATmuJ8kCcgEjsQqD/KxRyp51m44SrXcU4AUAXQNE1DhUevgAAAAASUVORK5CYII=`,sugarcane_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVtJREFUSIntVCFvg0AYfSzVcyCWrElNp3BzJPUYBArSZEk9Fl1VhRyi/wDUxNKEX4CrQw1DQpOJzU2TMNOPHNe7K5TJPXXhfXnve/d9hwYFgtBuASCOMk3GyXiClAhCu50vFwCAuqx6Iiwn4q8asAKG3uDre9aJEGfoDY75aVoCOj9bj50JKy5LOCoBCZAJL84n5LXuZOJ1WaEuKxh6g/ly0V0HL37MT10Nm1powIrHUabFUaaxApSEFacaAEIT4frxUYPQbj8/fnp1D0/3ws3ir0o6ZBauY7Web/a+pUmBt/f8ohG+uYsZTMGgIfNwHavFuWMCeyZeBqWB61jt6/4FAOD5JtKkQJoUoOsiXmUyGyJO4OfA86MT/AWUBrvtoTvLZsDWjDZYb1adgGgGu+0B683qdgMyIXi+2ZvDNfFBBlMh3aLzK1Xu+BBM+lVwzdxuAMGLVYn+YxR+Ad5z26tYeOTaAAAAAElFTkSuQmCC`,sugarcane_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAK5JREFUSIljYBgFo2AUDD6Qler7n6aGP3028z8pljCTYnhguAEDN7cgg7ObKsOPT4wNp8/daiSkj4lYw6sbfRimT9rH8ODBQ4Zv35gZXrx8R5TDiLLgxct3DN++MTNMnhEHt4RYQJQFMPDtGzODhLgQw/RJ+2hjQX/nRobAcAOG4ooA6lsAM5yLi48UNxFvATmGk2QBOYaTZAG5gJFYhUF+1ii5d92mo0TrHQV4AQCQmDoaSzRzBAAAAABJRU5ErkJggg==`,compost_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIljYBgFo2AUjAKCgJFYhSbafP8NlP8xXLjLxMDAwMBw5uonovQSpchEm+8/Pnl8lrFQariB8j8GBgaIGmwWMWHTlOLH899Em+8/suEQg0h3DIYFJtp8/2HhjAyQxXwc5LGKYwN4ZZENQgZbDjzEKl6cZIThC7wWIBtUnGSETymDj4M8Q++8cwwMDKhBhREphCKVWACLcPwBiOQ6YsSQAcyhTNgE0cGTx/cxxHDFAzrA6gP0JImcUgjFBbp+eBxgcz1y0cDAQHzxQFcAAE2zRkug2a02AAAAAElFTkSuQmCC`,corn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbRJREFUSInVlDFrwkAYhh+lKB2CToVupW5C6VgQOrl07OoiCrp37WKhS/5CQUERxNVR/0CgowhxUtwEJyWDxKHpkNxpktNYLYV+S+AueZ/3e7/cwX+v2C9oOIf04ueKr6cVlsMc62klCDsb4CyHOWzLhLmBbZlKyKkAZzGrA7BJleE6txdycZLzPrBqwtwg4UE0LYttmW5HO/VTgLOeVrAtk6SWxQaSWhZWTWwPlFg1fR/Iqd89u22Nenv/LGcxq4cEAJgbbkxA+t7w6caFeKmYoavXJEjlPLFquo6Fc7YzSGrZkLgEiBqMOyqIs+wjY7HiD248XtYJbxaXt42QeAiggDjraUU6tC0T7etTwkQn6SeU4hAxZOEcAs+5IYeavqnuFVd24CvPuXAqn976VYS4BIx6xFrtSWhzN2vbMtmkyrKDfZkH62BEu4PNv1QBA8/QUeKRAJF1/q1BV69t13UovL47B87McYDHDwCDrl5jMO749rp6jQLREN9JLhUzcqPVniiFg9VqTw6dfnUHrfaEUjGjFA/+DFEdHH3ZCeFjct8t38viighGdYqwEhAEnSP8Z/UN/uTZrzroGIUAAAAASUVORK5CYII=`,corn_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFJJREFUSIljYBgFo2AUjALaAZdGhv8ujQz/CaljItfwPZfZiFJLsgWkGE4eCGH7zxDCRlTwkG0B7QxngAQRKerJiuRBZQEjDnFKwhiXmaNggAAALTwUmwa1nZEAAAAASUVORK5CYII=`,corn_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIhJREFUSIntlMENgCAMRb/GdBu36AjsY9jHEboF23DBExyMUijhxjvDf9A2BRaL6bBHYo9kvb9r4QAggWCVVAU5fFTShqMER93lUn9QuOPW/aguwYekZQD6BK9wCaT2xiTI4QDAZ6yePSwCCVSC5UK1NyYBn1ENNjNvTI1MF/zVcWQlzOnNwswDkWwuFghkVfgAAAAASUVORK5CYII=`,corn_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVRIS9WVsQ3CMBREnQFoGQBqiqxCBkIMxCwU1JkiA4Au0kUfy/Y/W7EQaVLY/u/f3XcyhM7P0Ll++C1gup3fVPi4z8lmuCe3XlSAw8/XsjLGyyHYIiycW2djkkWn63FVQohaHGckADZaCLtOKYuHRgYQAhUAxJblptEFxCF6oVYpsF5b/3MTk1IhTxH9xns3ADsqjav3JXAziCFquFX3wEKsRUrgsgILQQaqbU0AwOwnohR8E4AXTZmoJoBSuClkHIL3u98DO+t/A9j+ZN5NTax/5Vodci2wO+ADXJmJGbhBn08AAAAASUVORK5CYIIA`,corn_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAvRIJBSpJMUBckTCXAwSw5ViKEpFsPAG0VSzAOYibMmVUNjD5AnGAbolxEYuyRZgy7XERDjRPkD2CSgOiA02sixAz8X4Ip4sC2AZjZgURZYFxBhMViTDIprq+QA5zVM1J2PLTNSyAF6TEZtjkdShxCvJkUyqhTS3AADroZQZ0g/6xwAAAABJRU5ErkJgggAA`,corn_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAlhYJ4poMoAimFCkkhQHyBEJcjG7KB/Dz9efwJFNyOUweaJTESy8QTTVLIC5AltypYoPkA2BWUJs5BIVROiuRI5gUK6e/+Y6WAm+ICM6spCDCxbZVM1oyBag52J8viDLB7CMRih4SCoq0H1AbFIlywfEGk62D4aEBfCajNgci6QOJdhJjgNSLaS5BQCfTpUZV5cHzQAAAABJRU5ErkJgggAA`,corn_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVRYhWNgGAWjYBQMRuCtxfDfW4vhPz3sYsFmuYetHpR36f/WawyM+AxAdygh9QQdAAPn774nqBnZsTD13gyPCToaGTCRazkl6pEBVpfCgpUYn1AaBXQB+BI1zjRATcvxJWqsaYAWAFc6oYsDKEmkVAH0LNhIBjizDL2yF85yAJFyIXH48tljmjgCbzYkN/GQUpBhdQBE4yWyooDUygxnCFAjuMWlZAlWTlQvCWGhJy4lS22jSQPE5n2SghnZQGrlCKINQW98UCtbklwXULtcH/AoGAUDDgAvcmw2gDIKjQAAAABJRU5ErkJggg==`,potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVRIie2UsRWAIAxET58jULuJm1m6mZtQuwMWyhNjOAgWNl6FIP8IpwF+fa2ucV+oZVkNAgCsy/HgN2B0x3iadZ7FIERwVGqQM+mtcL9dkyk8p5oKHidnklWUKqiCp1VJMYOwLvfNcszAJQP15KPTM2BZaBmY7jzVm6+oWdRA3jG789yPZq5ACz0HB4CBwWR4WpgMzhaKQZ9gCi8tqo2tFmx5Sbbm1hb/6yPtXRM6Z/YOWwgAAAAASUVORK5CYII=`,potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIntlDEKwzAMRb+Tdg3oAJm9detBfFIfJFs2zT2AIWtI3KGkQ6gixR0KxW8y2H5PYDBQqfwMHyj7QFk7dymVd7fltQZljslJZ8WNvRAAOCbnA2Wm+b137xtMYwsp0linZZqxlwPA8FgP76sBTeLTVZzeHNhEZ+WmAMfkPoksclNgi5TIzYFvqAEV6aHUP6bAWflXnpbpO+4f7cK2AAAAAElFTkSuQmCC`,potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIntlD0OwjAMhV8L3VAlH4DZWzcOkitwwR6EjS0zB4jEGpUwFAc3JJS/CfVNUWP7s1+SAot+ITYU2FD4JLd+pXjbDbDkkUI0uNTEOlcQAGzvKjYULHnglAdb8thtazDGnLYbwKBge1dJXJUmtd2Aw+kCdk2ElKaz5MGuiWsA2G1rnI8rCCRapIvHZJngNpF8t+THbqV47ypZS75ocgZ6k12DthsmMB17Pq7uIDPaIpAsQAeUutF7uqkUos9gMkEuIJX4XrIlzX24ptHrZKIctGTLW9Les6GA/ebhvj+7abMP7Zldr8TMAr7VAphV6XA++jXP1Fz0r7oCqWWiCeEH+pYAAAAASUVORK5CYII=`,potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQ0lEQVRIS+WULQ7CQBSEtwLBj6nClIQEj+Ai3AKJ5R5IBHfgIgg8CQEMCsOPQJS8pdPMvnbbpoAg1PRnu/O9mX27gfnyFXxZ3/wJYDSOYolyvTpax/q9KObSiESsO2yb3eFmmmfLMfcwMP1ey5w211QbcA3LALg6eRYxXAyQb/LOMIFodw5AV8sTdGUiDICMsSNxLO5kfgpgca6Yf4YjOMEYYIgP7jIAHQeyxwQIcOUshgYA0AHoQa4mD6Cr1RFi0Z2ImFy0wOKA1wfOsQ7cUWlfcytyv+dBAUDVXIweSwGoIm+yD8ixcAPkOuBKfTvTJ8JO9IZz1sC3G3UU2uVbR0WVGD4FsAfRaBxJB0Gz9Cwr/SFRihfTgX08Xx4m7DTsfbbcy6dCjSoAKw5hHcdkvi2E+ACvc7ne5WhWcVAPk8z6fcATQYkRKFHnkOsAAAAASUVORK5CYIIA`,potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdElEQVRIiWNgGAUjD+R5MfwnR9+UVIb/2PQyoSsi12G3nmIXZ8IujAmI8dmkbQyMxDsJiwXkBh/RgJIgHAWDDFAzMrHmg1tPqWcJzoyGK2cOGMCVCalaVBAs7HABYuJj0jYGRjVpTHGifUAMyJlNQWE3cgEAMasir1+5WT8AAAAASUVORK5CYII=`,sweet_potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWMEQZ8P5HD+ZlFz7DQ4asIEI2tDlIE2z+1TuXGbRVdMHs2nXXGWCWkGQBzGCYobgSCMkWEGswzEKSLAAZjsvFoGCBAVjwkBRE2AzHZShycBHlA1yGI7uUojhAtwA5lRDK/QR9QIzhyBbiSqIgh2AkU2IMx+cDZNdjWAAzHFdwEAomdMNRLAAZ3lmQxvDr0WFCQYxVHpvhFFmA7huSLEDXjC9oQAaDAHIBh+xFlEjGl2uxhQsuV+O0ACSBraREz6UwPi5X47UAWZJQWU9MaiCpuCbGQHQ1Q98CAPnipBlXIGtSAAAAAElFTkSuQmCC`,sweet_potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABE0lEQVRIS+1VIQ7CQBC8fgNXQ4KrxRE0CoWo4g1oBJo3oCpQKDTBYetIMHV8o2SaTLPd7vXO1DScau72ZmZn97aJG3klI+O7P0HQ4QlblO3SmvmX16qXqTxHnBWDfdMiXN6fV+5dfhuOV/HpAOB8mc9b/xfZzF0OT5PEVCbBiSJJNAFifCQdAuviEAFIsZCNzpL3gt4ycLtJ3TF/NPGnYl3f7lUDTOW+OnhrQI+hjOAABokkoIAoixCsbfIRgIidRDEWSa8GVvdI5czAssvquJZAt6YO1iS0hvvMRr+HDoH03SoawLAv1fPbN5R6Fg29SqplJ4XAvS/ZUkP1PIsBjyVoZ9LAbPZO5QmP6+CvKjJgdIt+t2zOGYhEhSEAAAAASUVORK5CYIIA`,sweet_potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS+WVoQ7CQBBEj9/AYUhwtTiCRqEQVXwDGoHmG1AIFApNcFgcCQbHb5RMk2m22927MxWEc727zuvOTu8Goecx6Fk//CGgWI0q2Po4vbOqdzdRiD2CIOam5ThMimE4bG5ZEBMAofV+Fp6PT5OB+/EVIM5BiA6JrqwDsMQhogGxOQlpAWiBFV0AMGQVFlTb1wBS4vwq7rOA2j6806nA+vrlYhS25bXeuzvOq/Pl3VTigTDfAUBAVsJNFAZEA7CmGw4bTYC2yQMAxBizJ9J7rNHSVg9kNCGurWEFMbvMmHq5lwBpE/sEu2Q11t9dV6B951FAAS3oPVsBaVlknTESkgJGAd694AE0zHs/60S0IL8FYIKkDYxq6srNsai+YBLD1ckBpMSj670Dvl62CygLcuKEAAAAAElFTkSuQmCC`,sweet_potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVRIS+WVoW4CURBFZ38Dh2lSh8WR6qqqChTfgK5A8w1VK6qqqpu6WhwJBsdv0NxN7ubu7Oy8Lckq1gDz3jt35s7so7KJn2pivt2hwOJ1fqWth49z0YHBDQoCEDDEluuHhv+4mNn79qeJZ30MFwHa7Fd2PFzas7/1yQhnkCIq4AV7AhEcgEjAx6KqOgJqgS8bMDxaRVYVK2kFSnCCCY0EvXUQ6VUQNUyzpg2IaQ98f5BATwBwrUSzzazxzcbeUMDblAmw0mhswQl7oKOpDaTfbLJf0/6EY5rNPWAvz3N7W39Xu/rp+vl17rx0ak/00jVN9r4jBihhAFNAhbLMaWFnTHkl4JNQ/Y4YfkOEiemZaALTe8SLKNwnMXQfFW/DqBLCdO1mgcwuWvXv2zQ6QP+5NgaOvUWLzKz9g0kyHeSMEcgcKK5NLvAHBzcHKPX7AFMAAAAASUVORK5CYIIA`,sweet_potato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQElEQVRIS92ULQ7CQBCFt9fA1ZDganEEjUIhqjgDGoHmDKgKFApNcNg6Ekwd1yiZJm8znZ3ubCA1rIHuz3z73sxs5kYe2cjx3Z8Cik3ewrr63PykMjhMwbfHhXvW747xqF6OQzic1q0L9ABacK6E1ufl1NfFrJi40+4ehXiAPEw358HkNyg0z4dUFCjAZm4TrOJAbU5TpOZABkIw+rVUSUigYCg4zeMw/efWDJ0hu3o5IFsoaXJoicUch/JzqL4OIKtH+mslHBBuYQCIeasBcFtNHe8PrwAbtXKUfmOPZo9szB6AFrXylJ3NrZAQFRDLgwyOQrCsgYVfdXKKNQEAKnip8bysV7m7XBvfaNYToQJk/ePlpIY5VMtWAqyXlOKZbz0F3pe3bh8gKc90kgJsosBcHYBByysTpoKUILE9owM+Bp4PKJgW4PEAAAAASUVORK5CYIIA`,sweet_potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABUElEQVRIS2NkoDFgpLH5DMPIguRM+f+w4Jo7/SGGz2Dy2OTwBTPYIJDmyAR9uLrlCy4yIBsEkq8tTgbLN/fORZEjFIeMyJrvvD2DYQmyPEwS3RJ8vkexAGYAzCKQT2Au//tEhoFZ5gncATBLCPkeHkQwg5C9DDIEBG5v/8Iwf0E3Q2JCKYOqJw9YDBSE6L5DdhgsiOGRCfMmsotBBh568JbRTkH4P8gCEEAWA/FB4jCfYQtirPkAZiDMMJBByGIgvpevF0NosCPY0raVjRhxjeEDdBXoloD4IEO3bd4GNhxEwwDIl7hSE04JXBaADAIZjs9QZMvwFhXYgoUUw0EWEbQAFBwwV8OChljXE7QAFrkwS0gNHqIsgFkCSzlUDaK//5/+Z2aUBgcjciqiahCBLMGVBGGW45InOohgPsFFU2QBcjDhYlNkAT7NxMgN/ToZAJfI8RlnygRTAAAAAElFTkSuQmCC`,olive_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABdklEQVRIS2NkoDFgpLH5DKMWEAxhioMor0rvP8yWSW2XMMyjyAKQ4bpGInBfXD73hgHdErItgBn+9s1HuAVaGVcY/Bh+opiJ0wJkr4NMQHYZSE5KjhUj/Im2YCMDx//rM7TBBgiL8INpkPdhFuGy4Nmj38QFEbIFMGciW4TN9dgMB+nFGkS4XAizDGQYyBIQjQ0gByfeOMDmUpCBYIMZ/zJIyXKhmC8swgvmP77/laGp9CTYbAwL0CMXYsI/Bik5djDr2aM/DAwM8KQPFf8HNwoUlOIhR+CpCcWCvCrd/xCDYML/IZH8n4Xh8vnnYHGIrxgZYK4FRT5ED8hSkL5/DMipCcUCSOTqYgSrsLAQkgVsDFoZl8BqXq6xYbh87jXUgr8MDAzMcF9OajuPGUS4LIAEzU+oDxAWXJuhA44PkA+ePfwDjhf0PEMgiBCegVjwH+pahDZQnMBciy1FERnJiJyML4cTZQHWhE2BINmFHbF2jlpAMKQAvHOcGReApVIAAAAASUVORK5CYIIA`,olive_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS2NkoDFgRDZf20LqP4h/9cQzFHFK3AA3CGS4e4Aq2KydG27DLaHUUqwWwCwB0dgsJcVHGEGEbCCMje4rfBag+xgjrEEKqqN1GVqXXkZxPXrcYAs6bMGM1QIZJQ6wI5/c+wGmkfmgBAAyCJsYNh9jBBFMI8jgeEtVhoXHb8NDBGYhsqUwh4B8feYrxEHIiQQlktFdi42PHEcwx4AcAjIcZDB6UIItQA87mCJYOINct+fwc4aTj97A4wWkxoSbAyWusCUGDAtwJVFclsBcjSs5Y80HIJfBwhNmobmcCIOLrSTYJyAalMqQgwNXhsRaVMAMg4UrKOUkhen9BxkMAiDD0VMRrryBtcxBToagCAS5GgRgPgDFBXJqA6UuXOUX3nyAnARhLgRZNm/VJax5AZsvCGY0WPAg+wBkASz1oSdLdEtwBhG6RlgcwHyAK8yJsgCb5lELCAbpkA8icGMADRDVMCBKEcHww6MAAJp4MShPAj9kAAAAAElFTkSuQmCC`,olive_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6UlEQVRIS2NkoDFgpLH5DKMWEAzhgQ2i+BCL/wvXnMDrCJAaZG+gq8epGaSxLESfoWvNRQZslsAMBqmRMTFheHLmDNgedPVYLQBpntSRjFMTujzIYJglRFuA7DJkTTCfIRsKY+dVzMXwLYYPcLkOphlZHl/QwOIFqwXIrsfmdfSIBRmGKzHgtAA9geOKbEIZgWAQ4Yo8QgbjDCKQBHpEYos8qlhAafiDHIE3o8FcCYtAXEkUX/wQXRbBDIf5CjmJgti4gpFoC9DjBl/uRY4fkiyAWYIewfgKRJItIDb14E2mpBqCT/3Q9wEAeMK+GRpnxQAAAAAASUVORK5CYIIA`,onion_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAOxJREFUSInVVCsWgzAQnPCIqeUc2MqaCu5QhazkAlW9QGUlqndA1FRie45aTHhQ0/RBPpvl8ehnVFiWmZ0su8C3sVrL3nV2PbsQhRKaWgkO0Sy4XHBFgw7mYpLAsPqmVoLzDStJk+53WwDA+XIFV2DxKwpWEUfoAeB02IzixfEGAGg7moN8GUfoVZWTBcisJEW8VzQif9zthFdMVfnbJVvAIk9SixhJyhKZ1mQt5nLkgSXgrd50ArBc/NYk/4dA20HIrJxM5JsH2sHwj9HnUOMNeCeQnAUjRk3z4quCvexMId2nWcvOJaQRIv4YnrKKcGJDnEswAAAAAElFTkSuQmCC`,onion_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAExJREFUSIljYBgFo2AUjIJRgAm4zFj/c5mx/qeZ4a1LY/63Lo0h2hIWUgyvzg9nePv6DUmOYiJFMamGk2wBOYARixg1IhCbuaNguAIAavoTMVykVcgAAAAASUVORK5CYII=`,onion_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVRIS2NkoDFgpLH5DKMWEAxhkoJIwpT3/4vTn+F60PnYbCNoAbIhQ9MCkLdx+YIqQUQXC5AtgbmaGNeD9BGMZFjKQDd4aFqAnM6R8wO+3EZSEJXkhYPN6pm0EkwTYwlJFiREuoANFhEVBltCMwtAlixYvmfUAtS0AUr3sDigNIj+EyzkCSuAJx6iUxFhM7GrGPoWAABQhIsZroeW7AAAAABJRU5ErkJgggAA`,onion_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVRIS2NkoDFgpLH5DIPDAglT3v8vTn8GOwYXG1dI4PQBMYbC1CCrRbdocFiAHDTYXE2WD3CFN1UtwOdyYiObYDJFdzGID7IYW6rClpIosgDdMoosIBTRJOcDZA3YggkURPhSD0w/wSBCdzlMI1UtgFlSkhcONr9n0kowDYtofAUmUT6AWZAQ6QI2S0RUGGwJzSwAWbJg+R6qWgBO+zgA3lAgFERggz+v9mNgElJk+PfuPgbNG7oJb4LBZ8H/r3vzMQyFmYZuGbfzRJAUhnnYLMAXHPgSDLIc3FxCQUSsgeRFEMWmYwszahiKbAYAYw7wGetnhO0AAAAASUVORK5CYIIA`,onion_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQklEQVRIiWNgGAVIQEFB4f9AuwECiHXJ4HExtQBFPhpawTG0XEspGPy+RXfh4HcxTcEI9z4UUCUUhk5QDh2X0hIAAFsvEdRqfNUJAAAAAElFTkSuQmCC`,soybean_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVRIie2VPQ6DMAyFX3+Wbp27IuVuHXsajsCdkHqHbkyVO4RExDiOQ9NOPAkJiPO+h2MJYNcfRfOV6NDKvOv9zfOe+h4bAbJqAYjpfwGg20Mv+AZAXQ9cHDCN7QFJWzTIFoDac67aMSU3AO+XvMhHFKj7gpj8dLVvsgLitIT0HCKlF19I5iH5NPoD5cqZWwCrA+UQzRzQW1SclpJ5bpEAwA3+QZqY2bhoLhUkqcNBLiGW1EudtUXBuMo8V7z6aWwx3mXWB53sOFv+9drCAAAAAElFTkSuQmCC`,soybean_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVRIie2TwQ2AIAxFq/HCCg7Afk7ifgzgChzxYBp+qq0VboZ3Eoz/t/2VaDDoZWr5aN2o4PnYdZ3ZI4aC/BzidQ7xbug2WDcqLIQiIRLlVE0s1NZkpTnVdyickz2ixXLnSp+q5ntLnMiRQYj3UWDVMiOJ6S7njgZ4Z3XjXlMMHOGxaVl8+g/YRAZuBf2agQYLdm2R18SiuQMvWgXq2nVoDv7KCeIgQHNazaXdAAAAAElFTkSuQmCC`,soybean_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAr0lEQVRIiWNgGAWkgt97Ov+fm5rxn1rmMaIbDmNfvnmfwSh7BiOmFtwOu3zzPgMDAwOKPiYqOBLuMF11RQw5FAtYXcoZL9+8zwBzCTUA0UGADyDHGSnBOjQASd7BlVLwAaJTEb6UQhULKAbE5OBzUzNIzuXwcIQFAak5mBCgeRDBLYDl4kEP0OOSqtkaW2lMUj4glIKwBTFRPiClnoA5AqaGhRgLSAFkJ3FyMhldAADK8WmxC7dL5gAAAABJRU5ErkJggg==`,sunflower_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABTUlEQVRIS7WVPQrCQBCFJzFdOlsVb2AnKIinEDyj4ClEULDzBqK2duliIhN4YXZ2N9kYTZM1bt43b342Ef35in6hX+Zp+T5nNFikFCWZodkbAPHhOqbXobAgTkBTRNKxFMdzDbEAbRFJQH6kkiPnazaN6XorqjVDkhVV2gYgJKJeDkIi0k3R5riXA8A6dVFTRC6h8ZxKBm22I9rvnvS4mGkP7iIXeLLMamEJYChABgB/8F2+0FR8QNgFO9BuaoAU1Zvaii/f1amyHGAD7gy7n1LiowA9j17H0QAAXMg6WDXQmwGSEDmtXxXZZ1l2EedeprJTF2kXLMS2XWBAXOmxjgoMjq/gPjHddXLaW9sUm13FRzGDAL6oZTfxGqnQgxVUA51jnVdfOwY50Pl3Fc0n1AnAwl2FMAvoNm+RpQus5VQ2CenvBH73/uj7hPH8Azk1pyhepQfHAAAAAElFTkSuQmCC`,sunflower_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGlJREFUSInt0MEJwCAMBdBv19A13ERwRsFNXEPnsCchxKQg7aWQdwyJ3wQwxhjzVyFihoh5OiPVL6kxZY+UvTqkzUj9W0BvcLUMADgK0WwBVC0DvcHx334WwD2dYm3NOalIH6AbaHXzyg1mdiJmJYRz+AAAAABJRU5ErkJggg==`,sunflower_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHFJREFUSIljYBgFo2AUjIKRDGRMGf5TwxwmXIaHhEuTZAkutVgtIBXgcxCGBciKiPEFzHBcAMUCdMVrVj5leHKagRGXAxgYGBienGZgXLPyKXEWwBTjchE5cYMRRIRchAvg0sOITRDZhchBhEt8FFAEAPyuLmpSKFsiAAAAAElFTkSuQmCC`,sunflower_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKlJREFUSIntkdENwyAMRI+qW5A1sgkSMyKxCWvAHMmXI5ecSVH/Kt4XAdt3FwOLxeJP2XYc245jtofdv1hhiB4herPJ6mH1N4Fa4HJqADAlYnET0OTUUAvctyLM0FAAGMeX996QKcCGhOg/kkiNnEP0Q4OXAHPaD9fLl8E5NYxELgFZri7Wkfvly5u+Z7z1Ry1wGe0xNvvXjwn6JLNYPdSF3oN2at0vfuIEQtBnyE8BEcQAAAAASUVORK5CYII=`,sunflower_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIntUkEKwyAQHKW/0EM/4U8C+UYLeUY/EvAZOQT8hv6iYE+mG7ubWNqjA0Gi4+6Ms0BHR8cO1iH/u6amxYfRwDrk5/L+WkQ1861Dvj1MpuuRK44vOgCAGKD8nDCMZtsrrrgGHL/maulSKe7nhBigJBeUzwn6aEBRireGzwk6bADsw5fOa0H0XEtkThWdljIA9P05sGPKFbcOeVoNptXgescWbB2y2ICbCGpZCr8OucaF/sQA5ZFObZ9NFuugdvItpDusCpoDVSrtd/yEF231okoU8YDYAAAAAElFTkSuQmCC`,sunflower_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPNJREFUSIntVDEOgzAMPBC/SIZ+IluXjt2R+EYr8Yx+BIm9YxcGJL4Bv0BKhyrEuE5CRUdOQkBy9p1jK8CBA3uRSYtzB+u+i7PM2covJPLruf6PiaT4OSVr4538HdrA3h7KagM7d/7ZEreZT0XcO1aVxOec1RGNA7K2mVBWalkrKxU8OonPuXkoyCVvmwnjEG4y5UuGvgQoXHIXkDpryVBUAPiUTF3RkXT73BDdT44pd3W5eq4Tj2ER4E55cm1g616h7hVOdyyN5U0OCkgTQZ2Hms+bzLG6KsYBWYspWXZqssQKeCW/IhQjuqB9oE5D6wd24Q0PlLoJNXPrzwAAAABJRU5ErkJggg==`,sunflower_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA40lEQVRIS81UwQkCQQzMVSFiURbhQxAswPPtWYAg3MMiLErEKpR5LOztTTYxsOh+j5vJZCbTSePXNcaX3xActut3qew83kPDzH4C+HDqJ/jPx0su15tESCYECRyA5dMIcrVsAKpgv9u4CHK1mkq6V48HTC1TGTLOC441/C9B7lMtYWEFicCKr2mylv0UBOs2zEPrj0PowFLOVQLkerlaSFMCTGHt2GrjqoJmBJ4IsmvHQKXpZhexFbHGBTjrIzWmUFFrUFQ6a91yreqhYcraDbDGZZ6FLhlAYQ+s2H37PazAS/QBL7jGGVi1//gAAAAASUVORK5CYIIA`,watermelon_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW5JREFUSIntVbFuglAUPS81rTTwQpcmNowMGAddXDv1D/oVTv0WJ7/CP3By7SKDKQOjCUkXyYOITnTQ+/qA56MmDh08CQkh3HPuudzzAG7417h7uQeA0nSd3jkLpnv44D/iEO9KAOCTnpFAzBKqYYd4ZxawX5+QL7clAHjTvpawO7Dl/X6dy/vNxxdxsHy5bQpYIwfFKiv9xVgWiig1dk/ggSuF47dPWCOHFaus4aD0pv0K6fO7VyFSO1ah1vDAJTcMADoAYA0dFGEGEaXggdtKSKCuuwO74fr0HaWD0l+MG8SXjEgV3K9z6aJDL33PN62F9QYI1IiuISmgjqaOtlHpagWSqoBOXVdYdwPo3RMqDuo7rhM1NaLWUwAZ8JtcPukZR/UXiCiFmCWwhg4rwuzogCLOA7ex0wTdaHTbxgMXAgmKsBY0SrJ6RFy6psDxyDiXZCkCALpc1KHZ+wp5Q0AKHZN9ldPUiGv8D25oxQ++q8nB7rJdfQAAAABJRU5ErkJggg==`,watermelon_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWNJREFUSIntkj9Lw0AYxp+T1jYxViPFYtFJFMSl3CBE3Lp0cHR0yGhAt34FwcGthawufgOHog5SLBWEIl0LBf+QgjS1rdUMVc7pwiVpqTg45Qc33MvzPs+9xwuEhISETISMKuqFJLI0hX2qMq4j0m1AI3J21J4cIDaVhzYzNIp8RsJ9s0+2NusejTwbQ6ljMQDYXVwh/bfPkSFT4iVLUygPbRaLR93aqlnB3YsDvZCEXkgiocooD21W6ljM0CgMjeLi9ZklVDkwVWAC5uyw0wcHZrXm1gyNwqzWkFtIEwDgxgCQz0gAAN6jOMvkqfWNbtEaH8Ab/PBQHggAneYSlLU5VzNo9BBRoqR98jg2AFeNdxxc15lY5y8WOT5veczFkG7Rcn0DW+T/x7g8jctey/0W8fUAAhMA8ARE/AH+TVjfjgN7Xo10M0MiHwN8bSiMmwqMXH0/7C9HzqmYP0z/xj/kH/kBY5CYjlZ/xP0AAAAASUVORK5CYII=`,watermelon_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAN9JREFUSIntVNsRgzAMU3odTKN4lIySUTwKm7gfJTkIsSHQz+qHOzvIL9nAH18YSajqwZFmWESkfUk2cgCVPG3sAIDXTIBSiomIqeow25FtBLfcNVtTVavVVBuArc0nrwRBNiMy8x6/PUcQIAFAKeVgG2E4A5JYlsX75zFauSICEbk8vFvBgnlEYmiIZOoOrvpyztGb0wBY9R4u4+32nfTf0771m/wEfXvaDm2NU6eiw9Qd22XiqeNq20JynEhTVS3nHAXZwW2Rpw6SIGndqag4tG32VKTqf4LT5fnjp/gAHB6L7zj2AgcAAAAASUVORK5CYII=`,wheat_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVRIib1VuxGEIBBd6MAxsZwLDC3DMggtgzIMDSzHxLEDuQSY3XVB/Nxtgp/Hvo8gAImyRrvUuyul32hSRMAUOzZmHeXeRYJ+2JUHumWqAQDAj84a7fphV1fVEwJPAtbQ1KzR0A97TnGZW6TeWaPJGFyc4SXcgWSZajIpXAvwg5BAikEaq+k+FYzzRrqM8wbdp4oNcQQBj0ceUfxw1mgXANKkcd4Af2gJL+HwKorqE81J9qVucURwMgnCcg0rLRNRdHE3ImeNhkxEsffdiIrcEoKSSV7IpYh4JTcax53smYgX/6ZcUQ6TcysRqKZdyQN/z+2qpl3FiDhechBJEs1FJym3Tw6cIrdPT7RTt/87MlkpvBt/QfBK8zcreYp9ARnARYgSAH7PAAAAAElFTkSuQmCC`,wheat_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVRIiWNgGAWjABfYsIb1PzHqmMg1XEVZlihLiLLgynklolxLFrhyXun/hjWs/9EtoWkQUQUguxib65F9gM83WH1w5bzS/zt3H+O1JCDkNyPMcHwRTlQQ6RjeYyRGHUkA3cXIfHTXkhxE1ASjFhAE2FIHpcUC9VPcKBjcAAAkzD98KD5/RAAAAABJRU5ErkJggg==`,wheat_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAWo4D+6ABM1Db8xA7slRLmEWEuIUjQjm+E/BZZQzSW0dcCNGQPnS9paOuDxR3WbkTMavoxCNYuxGj7g4UpzyweDD4choJqXsVU4/2dk47WEKpbjNHwgS9GBAQB1RDSsD2ft+gAAAABJRU5ErkJggg==`,tomato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPlJREFUSInlVbENgzAQPCJLVJ6ABtGlSpMJWIANskeKVBTZIxt4ASagSUUXpWECqkhIThHkfJwHbBAoUk5y43/u/t7mDfwdolRqn/zNkuTeAlMQuCT1VV4XjdP3Q9AduVlRKs0eifWirwINAFEqoe7NRyCLJQCY/SyWqAuT88XHnYEuE56cElOUyWuBcWML6C6RJaKgTnaHoxGyRaiAIR+DLX69nHtFJl/TIRGKVf8D5xaNYX97cy/uYPVRMbtNtD0A40CFYp6CBW5U6NNWIHu03mR29QB/BkFetV5OVChYcnaDQAPAkBsVCuSVibFcLvN87BWb/Sb8Np74sVisxYmO1AAAAABJRU5ErkJggg==`,tomato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGZJREFUSIljYBgFo2AUjHAQWqHxP7RC4z/VDLEpEv1vUyT6nxTDGYm1hIGBgeH5r7cMDAwMDJJswgwMDAwMqztuENTPRIwF2AwixnCSAXIQEQuI8gElYOhbgC2iKEvXRKbMUTCMAAAvbR7j6+Sr/gAAAABJRU5ErkJggg==`,tomato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJFJREFUSIljYBgF5ILQCo3/oRUa/+lqiU2R6H+bIlEMSylyDLJmdAuIMZiRWEsYGBgYnv96y8DAwMAgySYMl1vdcQOvGURZALME2QJCBsMAE7EWEGsg2RaQaxlZFsAAMZFM0AJchsDEqBLJuFIRMUFFVBBhM4jcSMcLcOVkfICiSB4ZFmCLKEqLaOpH/igY3AAAKrlIKa6/Bn8AAAAASUVORK5CYII=`,tomato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DIPLAs8Ctf8gH2+fcItoh6EojC0zARsAA4u7zqDI47MAl164ASAFyAbCNCCL4bIAXS/IgTAxsAXYFMDEQTTMEmwW4NILCwWCYYnsE3QLCBkOsoSgBcg+efPrE9hhImx8YBo9jrAleaIsgFmCbAExhhPtA5jLYEEE8gFFFmBLQSBL8KUiXEGGEUTIEYduEbZIRjYYW6QTjANcqQiXL9EjmqAFwzMVkV3YEaobKC5Nh40FKHUCIV9hkUdJmUQlUzIsgWsZ+hYAAF7KnRnkpkjpAAAAAElFTkSuQmCC`,tomato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABC0lEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+HYNGPzATafgsyE6ScYychxgm4BNoehp0qCFsB8CKLf/PoE1i/Cxgem0eMIW5InaAFyUCFbgC2VkWUBsiZYEIF8gM0C5BQH04fVB7jyAq5kii/vYFiAHHEwjYr6WgygjINsASzfIKd7bJGOYgG6F9ENQbYAl6vRzSAYyYRSEaHCkigLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLh74FACQg3hnrDTBLAAAAAElFTkSuQmCC`,tomato_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABGElEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+EPrwf+l9dcz4gsh80HMHmYepgDYZYTjGTkOEG3AJvD0FMlQQtgPgTRb359AusXYeMD0+hxhC3JE7QAOZyRLcCWysiyAFkTLIhAPsBmAXKKg+nD6gNceQFXMsWXdzAsQI44mEZFfS0GUMZBtgCUamrmP4bHBa7UiGIBuhfRDUG2AJer0c0gGMmEUhGhwpIoC2CWoKcibJFKVj6AaSK2sEO2hGgfgDSNWgALOnClQgFACXaS4oAcS4e+BQAsoN4Zr8Q2BQAAAABJRU5ErkJgggAA`,tomato_growing6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVRIS2NkoDFgpLH5DMPQgtgyk/+gYFvcdQbDd54FamC57RNu4fV53dK4/03Ri8Bq4ApBgvcvXoMbDLIIZAmyYnwWwByG7ji4BTADkSMdXQzdApjl6OqQ+WALsBn+IsDjv8SGHYzIcth8AJOHqYc5EGY5wVSEHCfoFmBzGHqyJ2gBzIcg+s2vT2D9Imx8YBo9jrDlKYIWIIczsgXYUhlZFiBrggURyAfYLEBOcTB9WH2AKy/gSqb48g6GBcgRB9OoqK/FAMo4yBY8vB74v2b+Y3hc4EqNKBagexGU9ErV3sANQbYAl6vRzSAYyYRSEaHSmCgLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLaW4BAFsM3RnfTMpLAAAAAElFTkSuQmCC`,tomato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAWUgorEwP+UyNPfkorEwP/4NFDFxQNiOCmOGBQOoVpwMFHDEKoCXGFMlI/JDRaaGk4RoKmPKLGELuUTVQDZlpCT3anmI1wGDZ1wH3kAAGHuPqjrva2eAAAAAElFTkSuQmCC`,fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVRIiWNgGOqAEYf4f2qZh82C/0EzfMgyfV3GFgwzWQgoJhrgchROCxgYGBim5JoSZXjO5NM45fBagAyyd6AaMtWDOMuJtoAUQ5EBEymKs3ecxvAJITC4fEAOINoCclzPwEAgiPAlP4otIDc3E20BAwPxuRmfYwimov9nHfDKMxofwCtPdDI9f/YrCt/QmJsofURbQKyBJFtAKAgosoAaKYnmOZnmVebQBwBEGSTr3HTDzQAAAABJRU5ErkJggg==`,rainbow_fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9UlEQVRIidWVOwrCQBCGv4gIor0n0CaVSHqxyhG8gJV6ABsbG7uAj8LK1iNYib0Ee8+hWK5FDMlCspn4wvywZHYnmW9m2CFQdFkp5+pT8ZIASnl2YA0aAExqTQDmLILzaQWA6uwCwJYWAP0gXFrSGkARVCFeO1RoayqbSKuxk5UMAKPlKdVnBMQ13EdB1q4MDFASv/kMvHYdDZYlcQUQVfFXFeQCvCIxIN6WPC1K0m/mQHl27klOkvEWWfXD0wqfG81/j9J5DQCg/K7Rb3WORr94Ds7+Tdu3OzXRd2KANGBuQFYL3gKoaw/IvkUmfX2Sv/7LLL4egFJcIh1wkL8AAAAASUVORK5CYII=`,mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWBJREFUSInNlaFvwkAUh78tk7UkU03aNHU0QUyMhIoqUgECi5ucmJiYwC2ZRPAH4LCITRBURZd0ArGk+IoqEmw9U9dQ6O5asib7qff6cr/v3t01DxrWlaR2+Auv3wAH7f6WScfD1DUWyxXdOxegkJu6RpJmvH0HZF+7Ur9r2Zb6Xjs363vtszxJM0xdk7Z1I60C45EPwDrYnuWmrmFbhnS9tIPedIZtGflOxfGI3LYMetPZ5QAB6XttbMvg4f2jcDwqc1SXXEcXXfKxHLeF47ZqQSsDHLdFHO6Jw31tiBIgzIVOISqg9JmempdByurHavySlT8aQBzt8tjp1gMrAXG0K5gKmPh2Wq8FKFt8bEyFjv7HjzbpeMyHg9JYJSVgPhwQbUKSNDuLq6hSB68vj7nxeOTnsWoWKAGfz08slivWwZbxyC8dOKpOpK9IGAMkaUaSbgsDJ9qEgCsFND70G9cPCX+r1Lc361oAAAAASUVORK5CYII=`,rainbow_mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIljYBjqgBGP3H9qmMWEy3AeSwmGD1NdGf5+SWOY86eaofT3Dwaz6m8MHAwXGGbJfWUo/f2DYc6faoa/X9IYeCwlcDoIlwVUAwNrgcySywQN4HfdhFceVyT/h4Yr0eDL8RdYzSM6iPTsRBn07ERJspRoC/TsRBkuHXrNcOnQa5ItIWgBzHAYQLeEkIUspBiOzRJs8siA5pGM1wcwcOnYCzhbz4o0iwlacOnYCxRDYZbBxNDlSbIAm2ZkgxmI8NHgyGgTDiczZB56wKDldI/hz/EdDH1P7zJkHnpAlMUELfi42w+vxRRZ8CRGl6AB+BxA0AJqAJpbQPM6meYAAHXOYpMBqH4dAAAAAElFTkSuQmCC`,wood_chips_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAdtJREFUSIntlSFPw0AYhh8IgYTM7BRqycYys0wgMJAgqhrsJib4A/sBm5yH6WUJGoEAS2qoIAGDmFgwC4xkqqo1CwkzRXR3XK9lKwgSEj61fum9z3fPtSv8158sIUQohAiz3Lv+k/B20+ZwdzsTaOM7wQCDToNKubjo3nGwf0Tv0gkBfN9fM9clGsumLhVyTKYzAPXbtmqMn1+ZTGf0Lh1M0EpFQohw0GkAUCkXsa0aABfXN5QKORx3BIBt1Wg3bQadBrq2LwHS7+15m8l0RqmQo3vax3FHlAo5ACbTGQ+Pd1TKRdVvnV2tViSECA93tzmpH6vJu6d9DvaPsK2aCpPgi+sbeRZY1S3cp3elKQGQSqTrh8foIM2pAU7qx1TKRcbPr7TOrrCqWwAxwIYZ3m7ascODKFzuItrVZ89xR2pyADbzgJdUJIQI5fZYPI76tFKPVCV3d//yFoVv5qOgeZCuSAJkmSDdOaAOU4XPg9jaVEX6FBImg/T3IKFEC1+pyASZO4pNrd+zuHaH3pIXTV80D6LrRU/CY0r08HmQCI8p8n1/zR0SWns7cYgOxktV4g49lYFRsTOQEIBUUAYlSwH6FKkgXaXxOGYGLAd5K5WYlenvGu17kDX41+oDGp4mCPU5SPMAAAAASUVORK5CYII=`,scarecrow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4UlEQVRIieWUvQ3CMBCF3yHEIEhsEadKQUHLEkgpvECWyBi0FBRUeIV0bEJjChzkOP45WyBF4kmWT9a9+86OY2Bh0mawRTnFn9d3sNnzvVzAp/goLmTFBBQr1EHWOcfqhXZA1oC+HDHOduzL5QK+JjbA6ngSp8S+RW5ROpxZ/qz/oMTLPSJd9wqDBAYJ1L3yAYsBepDzRbOWhKQAnC6jOeuAgez5tFW47QQaKACwYgE3F8638e3Am9g8lDeOeUIAuxsAoHsrZklmjQKeCZmromuapa6C7qq8h3A5b9H/An6uF4WMRHW3ug60AAAAAElFTkSuQmCC`,sprinkler_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVRIie1VQQqAMAzLxO/5AP+y4/7iA3zgPDikbG1XrYKIAWFsWRLSgcCPNyOXz8UL0qWUEgAgxujiDb14RYBLeIhrkJI1AlVC7cxsIAnBKm4xaEwoeuKAYQZenKqIg6eipv913tfTYp+DVBE7XAq6pzzl/gyUdIEzbkjKWa44mVZE9zWt8aK5mff4M/0Nbof1J/QhbIFgQxZVKNMbAAAAAElFTkSuQmCC`,lightning_rod_basic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIdJREFUSIntlUEOwCAIBNd+Ex+CL6i/ppfSaKOi1UMP7pHAzoYYAX4i+Tp49Jh7ohpELHgNYCUWABKYEZh7+vPhwCyvdOKJJDEu9RTlGhAAwBnjUyzUavMmAJpMTVW3uWk8omw1o/vueUVuJnEPYEobsAEbsAELAXo20TifRY38kqnp0nswpQtltzTIu+xVhgAAAABJRU5ErkJggg==`,lightning_rod_superior_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIZJREFUSIntlTEOwCAMA03/x+MYeIkfmC6lolUgoTB0wGOU+KwIEeAnkq+Dh8c8p9SCiAVvAazEAkBIgqSn/zlMUl7pJKcklbHWoyp0IACAGONdVGqteROAkqyYFl3mpvGIHqsZ3bfnFYWZxB7AlDZgAzZgAxYCytlE53yqGvkla9Ol92BKJ/RIO3xwMn1QAAAAAElFTkSuQmCC`,lightning_rod_ultimate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAItJREFUSIntlbENwCAMBE3GQkLZly1oMgW7fApEAglgEyhS8KXl/7MshIl+Inw1bpJwb00NAg5eA3ATg4gApwlOS/pzM5zGYzp4a5AEl3qKUg1IaNiPu/iu1fwsgOJkMfQyhHA2uEfZanr3LXlFamRiCWBIC7AAC7AAEwHxbFLjfBbV80umoVPvwZBOeOk68oFQoKYAAAAASUVORK5CYII=`,cow_feed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABaUlEQVRIie1VO46DMBAdom18idRQEMk3oKfbK1ClQZyFxhXHoPcNkOKCPpdw6S3Qc8aOnZBNmpV2GpBt3m8YIPqvT9U6Sfeb5w57gM/fpSMiUkPpXiV6SqCNpb4VRETU1CIgfptgnaRrakHjbImI/FUNm6M9JFmCdZJOGxuswQlKG/uUJEmwTtKNs/WR9O3NhTbbOt+Ho90EyH2cLcEF1F+uNzcg5b2Jq8g5SJFyIO6kbwVV3ZLEunOA7Hn+2livHHsgOx3zou4IkGVTCw+ArHlETS28AP6WpUi+uHK+Mc6WTsctayjOzQRcgIhXwcEBmmsaokKDc2d5PzxB3EQA8BjiOYjJ4RI4VbcUBw6ujfU2+1YEvQA4sscV5y9XCmbDO1BD6WA7pQjKeTzxmUf3QQ/imF5Z4875Od8M/hal1OaaytdTLoLpU0PpUtOaUl91S/HoQ5ebbO8kfnidpMMPJ/dxU0OZ3fu79QOnNyLrGvOANgAAAABJRU5ErkJggg==`,hugging_machine_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgUlEQVRYhe2W0QrAIAhFbexT/Sz/tb2skKYPw+kGuwd6CemeJEgiAP5Oc/Z7VZ4l0Jk5JV1ELpmrwAw/ix9jOXfmblaxLlLdaJE970KmQCUQgAAEIAABCLz+HWuBzswkIpQ5kIyMkb17hVWYb8AYLqLL7eqnHqE1CXtT810yzwYxDkKWK8nSGBQGAAAAAElFTkSuQmCC`,milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVRIie2UwRGAMAgEL45F2IIV0IB2bQNUoCXYBf70YYBkIuND+cLckoMABEcqqJEWDQ8gzGwWEJGp0zmA5gi3qC/pQiTPSMnv71WLBNC7PwWuV2S1NIB4wgrophdukTrkeQsGAMAylmwxMK26ne6aCg9mPtFu5sNn8AM+AHDX1FvDJoD1gUoj/Ni557qGUVn/TByjTiCJ3SiEogAAAABJRU5ErkJggg==`,milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIicWUwREDIQhFv5ktwhZSAQ0kHVimJaQBKkhKsAty2s0hKrCGyT8q8x8CAgQrGWJkxUMDCDNPA4ho6nNRAMsKL9FmyUKkz0hJz++vJRJgnP1h8HlF12sEEM14APryCy/RsMn3VzAAAB5XyxQDt+e4nOqYCufpfaI2vQ/vgQtQqaEqGZ8GVGoonFE4uyAmwG6+ywMxAUqn0b2z04AVqWOqjeESYPaBrApfduq69jCc8b/RG+oJMonZquS9AAAAAElFTkSuQmCC`,milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVRIicWUwRECMQhFfxwryCktWAENaNc2QAVaQk5pAS9GHU0CbDYjp50J8x98WIDFEQw5MqOhAYSZhwlENNQ5KIDpWG7R0VKFSJsRgl7fXy0SoF/9S+DdRVOrBxBNuAP60VtuUXfIl/tiAABcT5YtBs63vp3qmgqn4XugPHx3zaBQRlEENwMKZUROiJxcEBOgitcOPBDTqaiC8TmPz28tXB18A3cDtKq1dqBapK3hFGD0A1lj+bFTz7WH4czfJx6xwUOYVCI2qwAAAABJRU5ErkJggg==`,rainbow_milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVRIie2UQQrCMBBFX0WE4gH0AtKFB8i+p/AC0ivUhW7cuBM8hVfJEfQEHqBQXI2LgCg2k5ZYCuKHbDKT/yeTn4GekbTIkRiOkIBYa9UEY4zKMwoIRKP3FrW6gVQ5pRSUUoDc3dqGdDsIxEATEECkyv0Z7haC0saxj1yOy3B5QMoFgJpMaHiPwVwk56B53rFyVB98vha9HgpCK0YVABA7V+OJuanxQW36F/gRgaBNQzaMEuj6m5vgHRXPYbeeAbCZLgA4cHL7uwkA6f4KQE3WyKfNgq7lt5sr38YDiBMyusgc/RoAAAAASUVORK5CYII=`,rainbow_milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVRIicWUsY0CMRBFHwidhCiAbeBEQAHOqWEDGjhtC1zAJZeQIVEFwTbiEqCCLQAJXTQEq0WH8M7YGMSXnNiz/43HswMv1iAiRnI8LIB479UA55zqMzQA2Xp5iaJuIKcFK6lYSQXy1661xU0A5EgDCCByWvRHtLcQlDKO+sxlO7fTA8YcADgzEwLv8bYukr3ZPLdatlZ3fn0l+v+RKS0ZFQAgvlDPB65Rz9/apneqXUNtZPwwoHYNpS8ofZEEiQJ05p1SIFGAMvDQob2HATky29RqwyxA6t8cUu+ouA67rykA35NPADbs2v2fDwDGv0cAzsyCftosSE0/bq48WxfOzkS6fPRuuQAAAABJRU5ErkJggg==`,rainbow_milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVRIicWUOwrCQBCGP0UEsUtjLiAWHmB7T+EFxCtooY2NneApvMoeQU+QKpUgVmMRFR/JzK5R/CEQdjf/N4/NwI/VCDgjdTwsgHjv1QPOOdWnaQBq6+clCspAjiNmMmUmU5Bz8SwsbgSgjjSAACLHUfWJIgtBKWOrylw2Qzs8oMMegBMDoaQff7tFsjMvz7PGhdWbX1WJHj8ypQWjAgDEp+p+w2XqflQPcpeRG4YfA3KXkfiUxKdRkCDAzfyWQQzE7AFwN0yu/Xh8txSVwSvwa4CyaEMzMEtkXcNagNi/uUyVo+I+7CY9AObdPgBrtsX6sg1AZ3UA4MSg1E+bBbHhh82Vb+sCloZVyeeaHwgAAAAASUVORK5CYII=`,chocolate_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVRIiWNgoDFgJELNf0rMIGTB/5MnT+JVYG5ujtccJgIWUAxoHkQsxLhiS7wGVnGfhTcI6h3QIPrPwIDb9TCA5AusZuGy4D8hg3FYhGEezYMIZyRP/XGdRKOwBwbeVLR9JTGpmIHBMxx3SiaYTP+flMArz2j+Aq88zeNg1IIRYAHBZEooGVJkAb4MRLEF2RyaJBm0HYc4weKaBEBcuUJtAAAZkx6s4XKlkgAAAABJRU5ErkJggg==`,weed_yellow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJVJREFUSIljYBgFAw0YiVX44aHBfxhbQP4C0fqYSHHNyTM/SFFOugXmJhwkW4ABPjw0+A/D6HLSSboYYoQAVh9gCwpshuNzDF4LsAXF03mX4RErnaT7H2YhOfECB+iuRjaYgYE4H5BkCTlxQJIl6D6guiU0MxzZElL1EMxouAylqm+Q44BUw4kutJANRc4To2AU0B4AAKGOTyVh8wmJAAAAAElFTkSuQmCC`,weed_orange_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKRJREFUSIljYBgFAw0YiVX4YZ3BfxhbIOgC0fqYSHHNyf8/SFFOugXmjBwkW0ASkE7S/U9YFSpgocRwYuIFpwXomp/Ou8wIswTZspP/f+ANOrxxgC1SpZN0/z+dd5nx6bzLjAwMhOMFbxDBNMMMZWBgYIDRDAykJVe8ADloyIlooi2hmeHIlpCqh2BGw2UoVX2DnjxJMZzoVIBsKHJKGgWjgPYAAKhMQnagnSlUAAAAAElFTkSuQmCC`,weed_pink_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJNJREFUSIljYBgFAw0YiVV4w+DDfxhb44IA0fqYSHHNw1oLUpQzMDDQwQdYDYJhdDnpJF0MMUIAaxBhCwpshuNzDF4L5JtPYIg9nXcZa7CQEy9wgO5qZL50ku5/YnxAkiUwNjlxQZQl0km6/6luOLIlNDMc2RJS9RDMybgMpapv0COXFMOJzvLIhuLKE6NgFNAGAACdX07JsB31AgAAAABJRU5ErkJggg==`,inventory_box_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAUEACMeuf/UMAuXBf8v9/GTZLpu0Ues5mGzgGTD8VmCbgHZhuOyBNkCig3HZgnMAlIjlFjAyAJj/TsUQlWTmezWQGiqmorNolELRi0YtWAYWEDzwo5G5tIRAAC2nxYih/81pwAAAABJRU5ErkJggg==`,scarecrow_animated_default=``+new URL(`scarecrow-animated-Bwzq1lj5.gif`,import.meta.url).href,tumbleweed_default=``+new URL(`tumbleweed-bTBlbTRd.gif`,import.meta.url).href,axe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMhJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzXLt6lYGBgYFh1aoVOC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAiEhUWgxAvJFty994Cxob6WGKUolpDkg7v3HjCuWrWCYdWqFQy3r1/HJs8wL0sdxRKSIpkBNUn+P3/5IoOhrj6DqqYmQ3tHB8O8LHWGV6/fkmokfgAN9//zstT/d4SK/GdgYPiPLS4oARiGU9MCFMOpZeio4aOGjxo+ajgtDYdbQk3DAf7opSv4aVYzAAAAAElFTkSuQmCC`,axe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMBJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bl+u02b49O4VAwMDA4P1FIb/uCwhyQJlJYX/MINhhhMCOL2Gz3BswHrKa6xBxUSsBYTA0RxRlHgh2YK79x4w6jZdJUYpiiUk+eDuvQeM1lNeM1hPec1w5M4nbPIM87LUMSwhCygrKfxXVlL4vyZL/f+LPtP/DAwM/+dlqf/vCBX5TxULkC1CNxxbXFACMAynpgW0CZZRw0cNHzV81HAaGg63hJqGAwAUOabJn4ZdhgAAAABJRU5ErkJggg==`,axe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzfPjwgYGBgYFhQn8vTktYSDUcZjDMcEKAaB8gG44N4PIFE7EWEAIFhcUo8UKyBXfvPWBsqK8lRimKJWRHsqGuPoO9iwuKXG5uLsO8LHWGpGk34WaTFMkMqEny//nLF+EWwQx/9fotqUbiB1Af/Z+Xpf6/I1TkPwMDw39scUEJwDCcmhagGE4tQ0cNHzV81PBRw2lpONwSahoOALJMnzT9kEEcAAAAAElFTkSuQmCC`,axe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgYvn7+Q4eWnTwwMDAwMBfm5OC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAhMmDgZJV5ItuDuvQeMkYnxxChFsYQkH9y994CxID+XoSA/l+HWtWvY5BnmZaljWEIWUFZS+K+spPC/t7Pz/+bNm/8zMDD8n5el/r8jVOQ/VSxAtgjdcGxxQQnAMJyaFtAmWEYNHzV81PBRw2loONwSahoOADMdpw7laSIwAAAAAElFTkSuQmCC`,axe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bt9YF8LA8vEYAwMDA4NKIsN/XJaQZIGyksJ/uMFQwwkBnF7DazgWoJL4DGtQMRFrASFwZ74USryQbMHdew8YNYLWEKMUxRKSfHD33gNGlcRnDCqJzxhuXMIMqrv3HjDMy1LHsIQsoKyk8F9ZSeH/9ckM//8ftPrPwMDwf16W+v+OUJH/VLEA2SJ0w7HFBSUAw3BqWkCbYBk1fNTwUcNHDaeh4XBLqGk4AGtcorcNDPQ+AAAAAElFTkSuQmCC`,hoe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVRIic2UwQ3DIAxFPx2ALNSJOPRMJmjOnal7pReIHGMIGFfKl5CsyP/9YBDAjbWnxeuTHhNwl+s1RoQQ8vfpAArHGiMAYPFebB4NKP6cStqFdkSiFu+LkJkA9942MYRqNMChcluo0uj2bNCoeRZpZw5Q3qLv6wgB2Kgo/FQMwvH8FP4jkBpGAlrwqnoDVPDeRjW8p3kKfmWYhrdMJvCa0QwumU3hHGAOp5C/wAH2FlnDuS6f4VvqB7TESLgVFsd2AAAAAElFTkSuQmCC`,hoe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVRIic2Uuw3DMAxETxnAdQYwkAncaaIUKTKIi8yRMdJlEW/hNJJBUx9LJAP4AAGEwXtnUYKAE2sNi9c7XRRwF+tlnvC+3+J3dQCFY5knAIAfh2xzb0Dy51S5XUhHlJUfhyREE+Cuz282hKo3wKFwW6jC6NZokKh6FmFnDhDeos9jCwHYqCh8V3TC4V+Jfwukhp6AGryo1gARvLVRDG9pVsGPDGp4zWQCLxnN4DmzKZwDzOEU8hc4wN4iazjX4TN8Sv0AN2RJwOjZLUAAAAAASUVORK5CYII=`,hoe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtUlEQVRIic2Uyw3EIAxEhy3DtaQl9k4bcUvpK3uByDGfgGGljIRkRZ43wSCAF+uMS9c3fSbgLtXMjBBC+j4dIOFgZgAAERWbRwOyP5cq7cI6oqKIKAuZCXDe+2KI1GiAQ+W2SMXRnclgUfMs4s4cYLxFx/cKAdSoJPxWDMKx7Zn/CpSGkYAWvKreABO8t9EM72megj8ZpuEt0xJ4zbgMXjIvhWvAcriE/AUOqLdoNVzr8Rl+pX42rEn4TvbkRQAAAABJRU5ErkJggg==`,hoe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIic2U/QnEIAzFnzdIJukKrnLDFJwkK3Sv3j9aUr+qMQd9IISS93s1isCLdcaV1zd9FuAu1cyMEEL6vhwg4WBmAAARVZtnA4o/l6rtQjuiqoioCFkJcN77aojUbIBD47ZIxdGdyaBR9yzizhygvEXH9woBslFJ+K2YhGPbC/8VKA0zAT14U6MBKvhooxo+0rwEfzIsw3smE3jLaAavmU3hOcAcLiF/gQPZW2QNz/X4DL9SP/ScS3hB0In3AAAAAElFTkSuQmCC`,hoe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVRIic2UUQrDIBBE35Ycpl89QCnkRj1Me6JCyRV6HPvRROKqia4WMiCIum+cTRAOLDcPPQ90aoDLMnevK5+nXw8kesEC97Bxipi1CbJwIJnC2qKkzpe4VbUtWieARAoIW1WbQMj8LcEtfqbOuxi0+S1aEgC4992bAMgMjOAAgxGuJTJO3jDYsMBvj/LaUgMTvPSgGV5yuAm+V9AM3yrqAs8VdoOnirvCNaA7fA35CxzUW9QbrrX7DB9SX0XaUBQX3euqAAAAAElFTkSuQmCC`,scythe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS+2V2w3DIAxFnb06S9QF6DBlgSqz9C/qTES2SoQcbjCPfFQq3+QcfGU7E118pov59BdwwoEIJ9EbUbjPM72WhUVZVo8geO+lRz7rCiWtgvB+EN2eRCVJi0DgfFjAJ0qcc4eoagUaHr+XuHJR1QgQXDoJVWEVnMHjMhCJjskisMBhFSWBFQ6rOBPUwvcq0piQoAW+V5FOdU7QAz9sfy0YCtdTNxyeFXzHv9Rd5h9hCuK9DteumaguDnspesDvCzbc3VkZpaP6uQAAAABJRU5ErkJgggAA`,scythe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMBhriPw/e+MNzpCgKIhAhrd6ijNUb3/JgMsSsi0AGb41TRGcRi48/obTEnIt+H8kj4Ehf5cIAyFLyLEAbDgI2ExiAMUB3BLvWfcxgopUC1AMZ2CAJHNYcGELKlIswGo4sgUgNroviLUAp+GwkgDmC3IsIGg4Pl8Q8gFRhuPzBT4LSDIc2RfIwYTLApINR/YFcq7GZgHZhmMr+tEtoKrhIAuRLaC64VgtAGV/NIspqvRQfAA1iVDSJclCqhpGTCST5DpiFNPcBwAgan0Z4Vp7jQAAAABJRU5ErkJgggAA`,scythe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2klEQVRIS2NkoDFgpLH5DKMWMORlRP2fNGMZzpCgKIhAhqsqyzHcvvuIAZclZFsAMtzY1AqcRj69e4LTEnIt+H8kj4Fh1a8oBkKWkGMB2HAQsJnEAIoDuCVnTx/DCCpSLUAxnIEBksxhwYUtqEixAKvhyBaA2Oi+INYCnIbDSgKYL8ixgKDh+HxByAdEGY7PF/gsIMlwZF8gBxMuC0g2HNkXyLkamwVkG46t6Ee3gKqGgyxEtoDqhmO1AJT90SymqNJD8QHUJEJJlyQLqWoYMZFMkuuIUUxzHwAAb2p9GTK1pfkAAAAASUVORK5CYIIA`,scythe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVRIS+2VuxHDIBBEV305oAyqcKQyiDwugjIIHFKJm5DnZOM5YX6HIDORAs172uVACyavZTIffwG01pu1NtvEqYoIrpSCcw45SbeA4Ou67jPivc9KegXb4wrcnxo1SY9gh9O63EB78JUYY36qkgoOcOA95qGuVFUSQRLOBfQcp2gVZOHhJggpegRVeClFLUETvJSiJBDBeQpeU04ghvMU/FSnBN3w1NUfC4bCScgFw+FJAR3/SHzqp3dI8CHVRlckHApr2WTR17W8PD3BC4S6fRnQ192VAAAAAElFTkSuQmCC`,scythe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMDQW2/2v7z2EMyQoCiKQ4YZa/Aznr31kwGUJ2RaADC9MVAGnkQMnX+O0hFwL/h/JY2DYy2rHQMgSciwAGw4CNpMYQHEAt6R//h2MoCLVAhTDGRggyRwWXNiCihQLsBqObAGIje4LYi3AaTisJID5ghwLCBqOzxeEfECU4fh8gc8CkgxH9gVyMOGygGTDkX2BnKuxWUC24diKfnQLqGo4yEJkC6huOFYLQNkfzWKKKj0UH0BNIpR0SbKQqoYRE8kkuY4YxTT3AQBP8HwZfM9pkQAAAABJRU5ErkJgggAA`,shovel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSInV1cENgzAMBdDfqovQOToT5zBBOXeL7MEcMIp7akWM3Vi2OdRHK37fKAKAk+uS5JDmRgMIAKZSmuZznr/2LYJzeN023Ieh6V0zcak8ASrOt/cGmHHAf8k0lSLi+wsGAk/Q2zwSQMsI1FoPON/eE0DLeABVXGxY8Mermf28xaJlDdDwblkOunHL4RDeGwjjv4ZScG0wDZeGU3EOpON75BQcYJ+KbJwX/3H/R70B5PVOSsiwgM8AAAAASUVORK5CYII=`,shovel_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS7WVoQ7CMBCGbxa9BIXAVZLsIQjhPfBYPBrPexDCQ5Ag5xDYaWzJLbnmVjp69G7Vzfe1/+3vKph4VRb8xtWec+5tF7gqAYEvu+XgnNvzE0hSLEB4DH683rBazEAtGIPjNdSCHBwlqhvEAoyFTk6DUAkQQpIcHPeWDtk3robjZt5nzhc/fanA3/auZx6uHfAvKYaXCAJ8fWoxqiBIwf8VDOAUL5WNt5dHJp1BEi55ZiSCYrgkIhU8J1DDfwlM4GMCM3hKYAqPBeZwLpgE/iXA+isewGTveNHwxy0pnqTAYY85MLZ/AKAsiRkhT8wtAAAAAElFTkSuQmCC`,shovel_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVRIS2NkoDFgpIb5eRlR/5HNmTRjGdxciiyAGWxsaoXizrOnjzHALCHbApDh6AZ/eveEgU9IhoFiC3AZDvIGxRYQMhxkCUU+QLcAFCwwl8MigiILQIbALCFkOEgtuZH8Py8jikFVWQ4c5sgA2fXkWvB/Z6EG2Myt340YkFMSuuHkWAA33L3/Biio4BZgM5xUC1AMhwUvLLMh517kICM2DrAaTkwxQ4wFZBtOTBBRZDghCyg2HJ8FVDEclwVUMxybBVQ1HN0CqhuObAFNDMewAJT9KSgAseY75IwGqriJyXjEZGC4GqobiG47AJ1ZiBlTJ5acAAAAAElFTkSuQmCC`,shovel_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS7WVwQ3DIAxFnW167IEBuHUF1qjEGEgdoVdW6A4M0A06BpUjGTmUFIIdzug9+M4nC5y8Fg2+cy5zToyxcEUCAnvvN+cMIQBJpgUIr8EpJTDGgFiwB8driAU9OEpEN6gFGAudnAYhEiCEJD047p0dcnbOgbV2zZwvfvpZQX7dLyvz+bkC/5Jq+IygwG+PN0ZVBC34UcEGTvFS2Xh7eWSjM2jCR56ZEcE0fCQiEbwnEMP/CVTgewI1eEugCq8F6nAuOAX+I8D6Cx7AZu940fDHPVK8kQKXPerA2v4F7oGIGVytZc4AAAAASUVORK5CYIIA`,shovel_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7ElEQVRIS7WVsQ3CMBBFLyxABRNQIDoquoiOORghygAoA6CMwBx0iAo2oGADhnB0kc66GAcfvotr6z37X75TwMSrsOA3dek453S+e65KQODquBqcs728gSTZAoSH4NvzA/vdAtSCMTheQy1IwVGiukEowFjo5DQIlQAhJEnBcW/ukF1Tl7DdzPvM+eKnzxW4a7XumY/ZEviXFMJzBB5+aF8YlRfE4P8KBnCKl8rG28sjk84gCpc8MxJBNlwSkQqeEqjhvwQm8DGBGTwmMIWHAnM4F0wC/xJg/RUPYLR3vGj445YUT1Jgv8ccGNo7Yi6HGb8waRoAAAAASUVORK5CYIIA`,picker_pole_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwVc0KbKAl6EiiL70LigzRRZ4FfeJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgid6YaJFjLg4A3lq0GdAnXEmqE1GSCgBO5K2LrBF5a9GOIwJ+mabKiehyXCkFlOQTHvahk/MwIBx8Ugcx/HWf0wF806ziXdcBQDUvCVEn8hVPjd76kwLQ3pjlLVp9cD/j4X8rOIZvmrL4ta53iu935v8DjeIlxzIXKYkXyx3NFIrQtrXu7gAAAABJRU5ErkJggg==`,picker_pole_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMVJREFUSInt07ENgzAQBdBPFNFdywJegCYs4EVSpWCYdGm8AFOwwK8YIz0DXJoYEeIQxcYFUr6EZZp3urMN7CD6/II5pOIkQRKtMcEix1QcAAZrUSdAn3AlqU5ESSoAOJG3LpJGNFiLuu/h8cs4Fk5E5+OKKaAkX3C/952cuw7+4KM6COHLfUoHGKpqFW+aBgCKaYmIOpGveGz0fj0pAG2Nmd+i1Qf3M+7/t4JD+KbJi9/Kcqf4fmf+P9AgnnMsU5GceLY8ANzvjrB3K5O7AAAAAElFTkSuQmCC`,picker_pole_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFKyD0ngBpmCBX7ELA1yaGJHEIYqNC0v5EpZp3unONlBA9PEFc0rFSYIkemOCRc6pOADM1qJNgD7hSlKdiJJUAHAib10kjWi2Fu00wePXZamciG7HFVNAST7hfu87uYwj/MFHdRDCX/cpHWBuml286zoAqNYlIupEvuKx0WEYFID2xmxv0e6D+xn3/0fBIfzQ5MVvdV0oXu7M/wcaxHOOZS2SE8+WO1CxjyD9waCMAAAAAElFTkSuQmCC`,picker_pole_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFOyTxgswADUL/IpdGODSxIgkDlFsXFjKl7BM8053toECoo8vmFMqThIk0RsTLHJOxQFgthZtAvQJV5LqRJSkAoATeesiaUSztWinCR6/LkvlRHQ7rpgCSvIJ93vfyWUY4A8+qoMQ/rpP6QBz0+ziXdcBQLUuEVEn8hWPjY7jqAC0N2Z7i3Yf3M+4/z8KDuGHJi9+q+tC8XJn/j/QIJ5zLGuRnHi23AFsB5Igc4ovIAAAAABJRU5ErkJggg==`,picker_pole_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwW8QCoXtF6EiiL70HiBTJGC9lfZJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgic6YaJFjLg4Ao3NoM6BPuJJUL6IkFQC8yFsXWSManUM7DAj4ZZoqL6LLcaUUUJJPeNiHTs59j3DwSR3E8Nd9TgcYm2YVt9YCQDUvCVEv8hVPjertpAC0M2Z5i1Yf3M94+N8KjuGbpix+reud4vud+f9Ao3jJscxFSuLFcgcutJEoVhTynQAAAABJRU5ErkJggg==`,watering_can_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVRIie1UwRGEMAgkV8JVYAOWRjWUZgNWYAvxYzJkDwg697vbGWeMJLuyQIj+mKAEsZrc90igikhfMPNjkVdEfhHTta7G3inwr5C8WILOWROYQQGSASLSH0pmZFnUyQhqYcVnAqkiNxzLSu99G77NGiBsUy1yLGt/vyPiWoTQpFqMKLbLEzAtikQ8hHNgoYmgTVmBkBxFGpjZtSldAw+KXIt0IavyqSwaOcG0Y+zWHDjkH2d0zLMovDKivsfY7MJyU/f2YyxzI5qpfxtDZ/wWThNOcCnuawEeAAAAAElFTkSuQmCC`,applewood_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP9JREFUSIntkzEOgkAQRT+JV1ALiYnG2FsQ72BCZesNPIAdhR0H4CQk3oFQ0BMiicECOAQWZCfLLCAghQW/2iW778+fYYFJk36VNgbENPRC3rt+QtzZGND5cgEA2K5X4lMhTHol4FAJWNHz9UaeZnD9ROuUQIDboAIMlEnyNAPQ0iK52qNxaITJqjMnAz4oDuXALknIwDT04n67Vg5ZtkPD+wbk0MYWhVEMANjvNq3QtvZ4fkADBgBNVB9GMYHF2rIdahWvUJbnB7SW34CSQIaLNPKf0RWqGHBoXfQ+0IpBefBRXM4npUUc3BWqJABQScDhQ8BCdJG/A2BYxZP+Tx/oyoY1054VqwAAAABJRU5ErkJggg==`,coal_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAThJREFUSIntlK9zg0AQhb/WrEecw8cwCE4wmHj+zriaKDyGqSAiLh53vuJiiOjsFQYSYCJqeIqf39t9t3ew67/18ca//RrWVoMAPRwOOOcwxiAiXK/XWd4Wgz6KIowxWGtp2xYRoes6AOI4njVZa9CnaYr3PjxwzgWw9x7n3KzJ59rKFSIiIRqFiwjGmFEBaw36NE0xxuCcoyxLvPfhPkkSRIQ8y0ZdDbUUUchdAXp9LAq+LxfyLKNumvDudruNuK86CNVrLHEccywKRIS6acizjJ/7PcCttZs66IejeCwK6qYBCLF8nc/A30IDkw5eGkRRRFmWYSSTJKGqqvDBEGyt5XQ6TZiLHcB08XQddD88y3/JYGSiMPiNSMdWs5+rfo0BDI4H3Ww6shrds2NircGs2ZucXbs26AE1fqYGir1jrgAAAABJRU5ErkJggg==`,stone_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVRIidWVwRnDIAhGSb9ukyUYwxFcIqcs4Tgu4Tz2In6EIGjaS/+zvgeGKMC/Z1tcX1cZnuACTCndFsQYTdZIUEdAnpwzIKIp0gR1BgwAHc7TRJ371uC8slmw5JCEd3CpXMJGUlnAvu9wHEdnUwe3Y+HgmaoJLvPyNiEiIGIXrcBdAQ9JpMiCmwLtzGU3I/h5ngBt1Kc7kCKCl1LMtY8EPJ5EFXgj6Z27K1iN1QX9B1uMsYYQTBB93NnqueC2UZt7C0xdyDXyLjJhGkALvyrkbVrbDA/jSThcE3wlkfCR4JFEg1sCAP39tbL6vv8mH84SiYSmpt3xAAAAAElFTkSuQmCC`,salt_rock_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS+2VMQ6DMAxFzUm6s1XiCsz0OpyA65SZKyCxsfckqRzJlXE+sauKrVkq1OQ/5zmBhi4ezcX59Ae4hr9RlExaaG1oEhGltK6H/Kbr+Nld707g8Oc00dD3hY4IxAPkyudlOQD4mQdDPUgNcNAiEAvLniq6zgCFc121dfUzAFUdhaAd5KaK40g4z3mMIzxVECBHMhp+b1u6DUMIABt7dl25AA7f9j3/IojdAWyuvQPScA6VwRCkSQOKcFmsVUnVaFcIEgJwmK5alCCI1eQCkA4OPoPUALyuaLL2bCtGEA/wgdRca5CGRE6RrE2veXY/JlpV9B7oUPuB8YDwvea9rr1Q9/83lhuWGQG9q4IAAAAASUVORK5CYIIA`,bronze_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYlJREFUSIntlDFPwkAYhh8bE2JhgM2pTCasEP0dMjKSsNCJRB0c3WAAYzccSBgZ+R+akjgRnCAOTopJIXFpHeAu17uCja68C+1x97xv7/vu4KCD/qujlPOivzJ+M4gAOt0e+VwWgGWwom6NABiGNW5vrvfy9hlEnW4vBhPPAN6iYixoPzwazF0GUafb4+ttJgdajh+bMLYbAFTXg1iA06unGNfal7zl+BRLZYqlsgEXYKG6NWIY1gyYbhC931/IRMOwJkEisfhV/xMSdVKlbpGEC6mJ9MXLYEU+l5Umak3UWhzrji8fJwD4+UsJrq4HeFOzqF8AzuariqXNWHU9oK3MiRmM7QbYMJ9OIJhJiEdFFlkvrnge2w2WwcrY9JjBfDoB4h2jF1TtGnXbxPnQu0hv06jf7xuFFQn15Hev5wAUMqEc089CUptKmP6uwr1FhUImpJAJaTk+n9+WcVaSvgC210PTdWPJ1MUiuXw/ewYwtmeXgTRquq4BSoJvwYm8VJddCqW9lQ8y9QNiZaVNTKTieAAAAABJRU5ErkJggg==`,bronze_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DKMWEAzh0SD6jxZGGCFCahChGFjnwsXgaakJtmP78esMTXu+gZgoZhKyAKeBuGLXsvksiiXYLIAbiuxCgskFSQGyJegW/CfXUGQHIAcXsgVgw0EAFq6kuBoWD5rS/AwKclIMMF+gWHC81hhs5oNHz8CKCAGQS0EGwgCyHrwW4LIEn4HojsFqAXr4k2IgMXEAUoMSyaQEFTQPINsDDn6syRTmE1wWIKUSDAPRgwpXRkPxCSkGEmsBOLgIlTOEUhmuICJGH9FqCJVFRBuES+HQtwAAGJ1YGe/MnNkAAAAASUVORK5CYIIA`,iron_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZZJREFUSIntlLFKA0EQhr+onHfYHCG6RXIKFj5AykCeSgufQCyUFNZWwSqQlwikkqusUgjxkmKjSBpJDISz2mF3cwlJJYJ/d8fONzP/zg7867dV2vF8vitz2wQ5QLfTBqDXTwFoNurOocFwwvXVpcM92Ab81H4kCgOB2+DZfAFApqeFgHUd5AAPrRvKFUWmp1ycnThwAzaJB8MJejxCVWtOF0Ud5N1Om8FwQrkSA3C0/02vn3J+eixwGwwI/OLsxIHtrYMnKpbWX9/eaTbqlCuK2XzB54cuhBfJTpA/tR8FHoUBnx9agk3VURhQrSVikR6PxDa/evHJrzwKA5kUVa3JP1u25z7cnibnDowtxu+v5eEKfDZfkOnpWrj/vWcHRmHAc/qyMt8+fJMGw4ncjZPABDYbdcajrLB6I7/6Xj8VsN/N2oeWqJhMT8U2uwgDNlLVmiT1k5gOStdXl1LF1/KwEK7HI2dqjCXmXKJiJwZWX7Iss9u7+0Jb7Or8NZGomOf0BYBWqwVQ2rTsttmcm7Trpv7XX9UPRxDlZCE0bRgAAAAASUVORK5CYII=`,iron_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVRIiWNgGAWjYNADRgr1/ydkHqkWoBiYmxHNYGxqxcDAwMBw9vQxhskzlmKYScgCnAbiAgnJ2SjmYrMAbigxBhKyBN2C/+QaigyQg4sJ3XBVZXmyDf707inD2dPHUBzIgqwAOcKI8cWnd08Zbt99iKLfWEgaRQ0LuiaYQmyWEGMgOkCxANlQY1MrsgyEmQMDeCOZ2KBCilRkwIjhAwYGBsbJM5b+z2VgwGswPgOJEmTA4hNiDSRFEcFyZhQMDQAAaMBZ6FnVQEEAAAAASUVORK5CYII=`,silver_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQhJREFUSIntlD1uhDAQhb9EuUOK5BBbeGsoOARHoF8XOUIKp+cCvgWFqTNFbkQajIgZbHaVkichIWZ4PzOW4cSJE0cwzc9DeCqR930PQNd1R/o3eD7aKCLwQJqco2kmTUVimiMc+QSpAIAxBhGhbVs+3RcUEhVHpImsv5VE9gSW5UbH6/cQAhdzBaCpq6zBbAJjzK7zSD6EMZviJUeeEoYQALiYa9F5hHYCJhHBObcp7I1lCCMAH/a24UwFpjnuQhJ/buoK5xzWWtXpEEZVQN2BRg5grcV7v9RiPULbhTqidYpUBMB7z+vb+5+epq7iociOKCuyxo98LzsBff45Abj/Br37IvwX/AKZJHqzxczScgAAAABJRU5ErkJggg==`,silver_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVRIie2Uyw3DIBBEJ1HOThFTgSN6oUY3E1ewRZgGnEuIWAPmk0si8SQuCN7sAgIYDH6ey5f795KvNUAJl2UBSQCAiMBaGzlLAVlhDmOM8qYCPtIaYSnkGLD3SkPC47oe5Y957hbfpwkiogoMA0ASm3MQkSahH5tzUfe31EaSUSVe+FxXta50nCoglJLsEnqP5/SSU13khO9LDUm+IhWSCzgTVk0i0UmtsGVR8Z8Z/AcvcvFbDaU3IKgAAAAASUVORK5CYII=`,gold_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAXZJREFUSIntlC1vwkAYx38s+wALroIvQBAVbfAkJJVIbB0OAQLRTE1MbAIz2+BQaBIS0hAMLwJBENgKXFNXycS45ijXg5GphX/SNL3r83+5J/fAAw/8CxxPz114uka8n7k0m827hQp55MnWIYwMprsqALXygumuSqvVulZ7BlWCY7J1LhZLxQO18oL9zOW0f1OirIuUPIwMSsWDsiiMDEbLCpv1iuFwqOLRJmAwb5y9sygVD2zWK0zLZj9zQZNE1+RcEXlttKxoRWSBY7J1GMwbaUNVhIN5gyAIMC0bgLYz4fUryTX4fC2BSkSg7Uzoj+uYFqIXeoEwMqiVF7kiQRAAYFo2bWdykzG5+8f3j8/Umfv2cvGzfCwy+uM6AL1uJ8upbnJ/XMf3YnwvxrRsTMvG92I265XSuS6NLFA4OUgLhDPx7XsxYWSke2Jfh2yCQq/bSYuzQvBzB4SInDgvRe4skvuhcioumoDq/HUC8PvJedPw+3N8A0QSnZsj1HFJAAAAAElFTkSuQmCC`,gold_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA00lEQVRIie2UKxLDIBRFL52YYLqRLiAKURNkVVeQZbGCKmRjKqKyADZSE+SrIgMpBYaadiZnBsW8c3n8gJ2dn4d9WU8536FCuA6tBKyRsEZCKxELzHYQFGgl0Hc8WdCe7oE3FrBKS4S5kG0A1Up9xnnBZZgAgDVb+XNpq8W3B+HIbbBAP2CdGOelqAsndFzPHEBY1yBC3/FoSIlwSxDgS/uOVwmdx5E85NKt8g7Vh711AIBdhil7k1LCUkgrQdZIskaSViJ4wYi82E+kUrP/zM5/8ALJtmHuganBugAAAABJRU5ErkJggg==`,rainbow_cow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNUlEQVRoge2YPW7CMBTH/w+hIgTXQB1yCy6R3oA5GwzpwsIWqVtvUE7QjVtk4B4smV6HxE7i70BIK9U/yRLE9vuwn99zAkQikUgkEolEIr8FTaCDR9BplfGoA6rgUIRe33zyjKGhDvSE7XmnDTjhoxG98Au7bQEAh9VGnx8mg2ZeLY0u3L/aZoGN8U5yv0qfA1bDgwywCS0S0PoimwYt6nYklxMEAHOXnrstBACuWmO6j4sElJVgbsUTURuOtND6kHPtjOHM2nbAafyg1edKriIXSa+LHEfQ1dfF5MB4xk+A6sAkxnORyBXuhQ8AcNXr8x3k7hkYx3g19Ymz4JB30DqbOe8vXnXCAYalaKhx6+JEn/rDgHrwCNYsNMRwwGL8BGiHmItksPGhUFaOLjO0Ev9ZXIVsMvrh1/ktMpCliAG6A0RZyc8KIaAOIyFfXCP4fDaPTf3FbA6A+bYFrS8iEz2XnEEZAVkpDac0BQDvfxMzAKDV98N2ma7WPXLuFSXbqptoxhrrVB1CtPC9OASx5119n1dzv6eaqs4McW6GNmy08KGsvC/1cdVvHkwh4gqbLt4sxOdzLSwrx7vI5QxKSa601KHoFTR9QVnIiFCgvnzseWOZYeHY2rDEFZS+SvmmsOk4NSi5MBcJc5GItzHZOs/k2IFNzlviyktcQ8dbCdkBaoy39Y0BAeCvxuY32AuXyv+5SjzjIqbydseGmmaYvoKN8XXtKTpCd2CKT5BT6IhEIpGR+QG4Bej6ikQYYQAAAABJRU5ErkJggg==`,cow_variation_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8ElEQVRoge1YS3bDMAiEvN7RN0BnUm7gU9JFioMIWNhR0uZVs2j1oTADSLYLMDExMTExMTHxv8Hm90fhAgBARB9JHgDg6w0xbHJwpA9UBiMcZ6Hj9uz2bPBoBRpnRBQaXq/Xrh/5+1prs1lKER/dBGUFNAFHIOOLiHqJ6AoYTlz8WWJShVJKs7cjArcf4J8BHkHcBhdCzPfuQMRtrscyVyIezukliDuEvBAWX6MrCdAK2B5orwjkAREB8ZZUObh2vQcRsLXSO8gTUUNQx9RjaZ896EPcu3OHwhLTV+mRJEZn4DDsXX4Guo2yGCbgTPAR2BUgWa21Pp3h3kPpbAIeBAhZTbiUAqUUV5AVNqKVjiD1KlFrbTLkjcVGz+1+VIFoXQ5z9BCLFlk/CS2kEroitvxWsH1NMMSA19WNhcvS4+qCLYiIiaiZezbWXtbsGG7XNfO6Mq9rdu4i3UIevGrs2TdZCrIe2eKyuN8sp65Re4B1y+hz4LVRRFALsvM97ArIvpP0KtGrjun1cM3l6KxthxgRpXyykXKaCvzje5sbws7e8VtIB/EyckaQVJSZ7+P+LRS2QVeA2ZC17Ed5FDOMkeDXIHMLNQGPBkjCE5XyPexl7reQ/rdK9gvpGZyJ4Qr4q2Q9ZCvwekXviTExMTExGN/dZHBpuZub8gAAAABJRU5ErkJggg==`,cow_variation_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVRoge2YUZLDIAiGYad3zA3MmeQGOSX7sINFI0Ia2+6D30w7jbHwo0BsARaLxWKxWCwWi2+BH/DBE3yaNu4G0BqOIn6976MzB68GUBlLKZkTicg3xmP96MsLB8AAY8EtXgDaVs65urfve9SOG8Bl4RHHKaXqfrsTeuXbuXpaeTPgV4Rrcs6nNBBBWjQilmv9Wa5VECe9P+8Uv+87MHPZwdbmKMcD+Q8A/QBuiwd45rHO53fQBjBFfFuULSmlssJtyjBzdc/T81CfzZ4mgiKr6YkXRsKYObxzsgMMRkFHBWnenTYaq4i/TnThzACICIgIELGs6Mhoznl43+rnnk0PqYFy5tBOJE9HD6WeE2mhHhGBni1dxAiqC8kOAJwL7pW66Akrjo2eL93JeohZg5dbqRVQb+WICFJK1VOaj6P7fdw2T+ucAACuBwHwFC5CnetuAF/rQtaqD+Z2n1PTArAKLVIvfBxVQO31iGEKWUU8IiIYESuBuG0nwe2YlUaPdqCFj6Pk5IxzEsDzvCMCtQ/tVxjVQHcH5CxCRKfC0vQCGu2Abpf60BboQpd++jIzc0qJ4a9wykuNlbkXX5UP/mv0kfmXaI2DiG/G7tD10RlzMVMIoGw5GmN3mObDLWIh+hPvDq/46AbwX8X2iO7AJ/6C/ISPxWKxmMwve31ULTQV7Y8AAAAASUVORK5CYII=`,cow_variation_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVRoge2Ya46EIAyAy8Q7eoMeihtwyu6PEQdqS4FBd5PtlzhxtPaBfagAjuM4juM4jvNbhAds0AKbqo5vA+CKe8l2reuDIRNGA6iUIaIqGGM0lbWu79QRNtPKG+oxOEKPLkQ0g7DuwLTjLcOj+hRd4fxRoBUrzo3P6jz0XPzVUqhyvnRi1IEsH2Os9iUZ65zESzimOr8SIgIiEm20znF4AEvS5knKFDJ7Og9OWx1rERARQtHBS/nWOYkcAIEyNO66Iy29IzZ750DFXXUxg1TETSzntdXrGUozDAfw15hKodVYzUAbYgDXAEKM8bZWmtOIDzRKSZQP+27q3ODo/THG3Im+crAkO8jbJHc8O2r9lxiugVaRSs7n/cu0VVZd4pAV59R2GLBeHCpWpxgPZiS4F3zS5pI+0sr1MhNk2Pdz68VMIUppOhCe++U+dzLsO1BK58bPgVKf0kEqu0SrkL55MZGK+eLcx+ZQcyFEJEQkeNfFuRXHTtnBzbShyKv0DLIA+mP2qs8ylY3W4OL8n0eJJ55AZ2yIRSzIrPi6douN3jvwxCfIJ2w4juMs5gdcWvZP4r+1igAAAABJRU5ErkJggg==`,cow_variation_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVRoge1YW3aEMAiFnu5xdoBrijtwlfRjJEWEhHQcpx+559ipJsKFXPIQYGJiYmJiYmJiYuJTwBt88AU+QxuvBmANZyF+e+9jpw9+DTpmfTEzRFfGDhG57xIREJH0ayIbgJAOSS7LkjT1xE6w+Z70aaEnocoyympEYF3XJjHdbm0jYthXd6t/ArAYKKU0urWzaJ0LIU0aEeu9/l/uVRAnvpGEKvmI5LIs9WpBNG3tCbkIrTaNb8+n50xGYVTro/1HYUfAJX81iKhm2EqGmQ9tPS56BLrkvWyWUv6U5ZafkQTKCDAEBd0q4F5x3wGvBgAgT+7dGu9BL+kI++rqQYhGgelAooJf19WVh2fTexcGplEX75BMZDPrKx2ANWjXAWn3st8jiYjuJe1R9vVDXcShjISYJuRJyw6/nqlERqWUOl3ytrm+8PHwuJ7ARFQ3a3sAaRBRup9cILvZbWPetuy9i7SEom2Dl/nUFiPIeqOvG4QcGA6/vf28lZFtE3h1A/CU0UgAAFVO7iwkD0+NUkwWXqG+sh4YrYfPsqi6hV2H8HsCG64F0b19Bkrj2gcY/fdqwKvsKiFErEPtZaQntZOz4KCSmIXCGagbgGmQZ9lDeeSPZUVundwCfgeEeyFjJCrsqz7LIJyDStke/Srx75AZAQDIH/FeQUdOLtwacPpc8XXtLT6yI3DHJ8g7fExMTExcjB/HIw4rhmRWFQAAAABJRU5ErkJggg==`,cow_variation_5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVRoge2YbXLEIAiGcad3zA3ImfQGnpL+2JoiQcWPzewPn5nMtAnKi4BrArDZbDabzWYzjHvYHw34Jfb3bdxrSk4f1DbpH/NiRiMORhn1dRv3AgBAxE+L/9j8P5PjZ4VNB5aagsDWWJlDRKwae+/fTpw+dRqf7BLneQIAQAhBG5ZNZs0AcYdWzvME7z0Q0S0Iy1yIKIO4rUQrAwQAQESXoBG891kAUlia/xJVtu3aRgkRs8llqkdIgojourhg51z2LIRQzVYpAOotFwtyzlJvtJ5xtAAy8bxsRkuohCwd6zOObOLlK6+VHSLe6vwSIEqqpScF4MCwJ3vvl2WhJqxnEXkJLT/YrWj6Fk8e5orIQHsCbwagTZ6uFrzclB+lJQxnoKcXVu9enOJRQlthKURrannPIr51VvrLnGokA3AhBLLswSnAnp0plZEQBhSjau+Oozln8zCXDmQ1kT1Nx3shCU9CW/9rVHugJHrF9lha9YqtWhbmF5oe0dzWUl4ymJ7gqhkIIXxk6yvhjsNU99kY5d7VxM45oBj/a9J4wKrB37b4SkvhyjPzSYESAEAUI1GMBO8azK5e+Ni/DwmqD8VnkWYGxIN0j7/J9XCNk1tph76mgQzAFe7NsMzHVxzmZjBvo9ZXvBlGfKgBfKtYDWsGnviK/fSX8s1ms1nAL4ZTXaf8TqprAAAAAElFTkSuQmCC`,cow_variation_6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVRoge2YWXLDIAxARSd3zA10KN3Ap6QfLVQm2sDU/tGbScYJsjYkMTZAkiRJkiRJkjxFucFG3WBT1XE1gFFxlGbXu784MmU2gJDDiAhEFJKzCOgoXxGH4Mfx1WyLeM5HZV7O+rTTUcd4dsd7xjVlJ0r/UljKuOXMSXn9U19K6fcR0cca48NfrYQqIoay6WHpKUYLWmscqYQqN8ivI415N+MOVCvr3o7M7FjLMC+fpoOvefAALk2ZHeW2QiuhCv6hAQDnqfCU05zoOXBiV4M3XZH/NLxzIIzX4NHTmctH9KoBWAeNJjdDNMte4C2AXv9SfRORaHCX85qeQU4cSS9BoHpH/Sqj3nZdj0OUL++3q1OKyjwLOLM7MNZ1c7w56vwWd2BpCu1Ay7ohK474bVPoCmMwM8GZO0BEZpnM9IYlK9V6pP4BnB4gIqjH0ZXNPEFFZHmmR4eFNbEHQgFIBiJOSk7zeyem0NSjb0XEiojtMbJ/2H9ddvLj2lDkVSJNXEAfrbtey5xs/O5MSPdjY3QX4TF6x9PYig2xiQWZHW/X/sVGdAfueAV5h40kSZLNfAP8suojqxWMSgAAAABJRU5ErkJggg==`,cow_variation_7_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVRoge2YXZKDMAiAYad39AZ4JnODnjL7UixBkJim7j7wzdixJuEvJEQBkiRJkiRJkuSvwBt01Ak6XRmfOqAF98J6o/EY9MGfi4qrukyIqEsOEQERQa21ufh5YDwAAPQ60CjsMDBEyljXNezj8Qja9whoYfy/lBIqsZDjWBY7otscHbj/OBymz4qI54DnIBtU61s8Ijb9rbaXnIO93gyMLs4dNlwaJgOAiI2hkrM2jbUG3JE6mj3pM5pivWgHPo58DzwTiNikz7ZtbpuHTKHQ+Bm7jydr27YhPTwDFYKipoXOTA1pvLzv4bAGrH1+ZuRn49aB2UbzVjhb7tWjxM5MQ9Z1datxRFSJT4mqca+TPN4qeuK5uUblqXC/H4mup9zqpx2vz6fZF5fFshX0w6pK9ZAD0qBovDacDQ3+mw58lEKaK457Uff64rKYW/0DAKCUEr04fBXtzBXnfuDt1cG7UsrXzzIeKv9dwhR6TR8AzNs6iQhwWZpIa4ONtvE1wE707jQe+kVFLlYrbYRTl97dKxFVItLvv/LZ3vfiFepw+rv0zMDZ1jrrs0yj46xwaYaPEv+F7jpwx240osOaJusr2Iyva1/R0TsDd3yCvENHkiTJZH4BOxYPBJ6xfbsAAAAASUVORK5CYII=`,pixel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`,plotStates={"watered-plot":watered_plot_default,"fertilized-plot":fertilized_plot_default,"rainbow-fertilized-plot":rainbow_fertilized_plot_default,"mulched-plot":mulched_plot_default,"rainbow-mulched-plot":rainbow_mulched_plot_default,"shoveled-plot":shoveled_plot_default},smeltedItems={"bronze-ingot":bronze_ingot_default,"iron-ingot":iron_ingot_default,"silver-ingot":silver_ingot_default,"gold-ingot":gold_ingot_default,"axe-bronze":axe_bronze_default,"axe-iron":axe_iron_default,"axe-silver":axe_silver_default,"axe-gold":axe_gold_default,"hoe-bronze":hoe_bronze_default,"hoe-iron":hoe_iron_default,"hoe-silver":hoe_silver_default,"hoe-gold":hoe_gold_default,"scythe-bronze":scythe_bronze_default,"scythe-iron":scythe_iron_default,"scythe-silver":scythe_silver_default,"scythe-gold":scythe_gold_default,"shovel-bronze":shovel_bronze_default,"shovel-iron":shovel_iron_default,"shovel-silver":shovel_silver_default,"shovel-gold":shovel_gold_default,"picker-pole-bronze":picker_pole_bronze_default,"picker-pole-iron":picker_pole_iron_default,"picker-pole-silver":picker_pole_silver_default,"picker-pole-gold":picker_pole_gold_default},craftedItems={"apple-pie":apple_pie_default,"banana-bread":banana_bread_default,"banana-cream-pie":banana_cream_pie_default,"carrot-soup":carrot_soup_default,cheese:cheese_default,"chickn-pot-pie":chickn_pot_pie_default,chocolate:chocolate_default,"chocolate-soy-milk":chocolate_soy_milk_default,compost:compost_default,bread:bread_default,burger:burger_default,butter:butter_default,fertilizer:fertilizer_default,"french-onion-soup":french_onion_soup_default,"fried-tofu":fried_tofu_default,"garlic-bread":garlic_bread_default,"garlic-fries":garlic_fries_default,flour:flour_default,jackolantern:jackolantern_default,"hot-sauce":hot_sauce_default,mulch:mulch_default,"olive-oil":olive_oil_default,"onion-rings":onion_rings_default,popcorn:popcorn_default,"apple-juice":apple_juice_default,"grape-syrup":grape_syrup_default,"pumpkin-pie":pumpkin_pie_default,rainbowCheese:rainbow_cheese_default,"rainbow-mulch":rainbow_mulch_default,salsa:salsa_default,"soy-milk":soy_milk_default,"spicy-apple-jam":spicy_apple_jam_default,"spicy-cheese":spicy_cheese_default,"spicy-pickled-garlic":spicy_pickled_garlic_default,spaghetti:spaghetti_default,"strawberry-jam":strawberry_jam_default,sugar:sugar_default,salt:salt_default,"summer-salad":summer_salad_default,"sun-butter":sun_butter_default,"sweet-potato-fries":sweet_potato_fries_default,"sweet-potato-pie":sweet_potato_pie_default,tofu:tofu_default,"vegetable-oil":vegetable_oil_default,"wood-chips":wood_chips_default,yeast:yeast_default,"basic-lightning-rod":lightning_rod_basic_default,"superior-lightning-rod":lightning_rod_superior_default,"ultimate-lightning-rod":lightning_rod_ultimate_default,...smeltedItems},items={apple:apple_default,"apple-fruit-growing-1":apple_fruit_growing_1_default,"apple-fruit-growing-2":apple_fruit_growing_2_default,"apple-fruit-grown":apple_fruit_grown_default,"apple-tree-dead":apple_tree_dead_default,"apple-tree-growing-1":apple_tree_growing_1_default,"apple-tree-growing-2":apple_tree_growing_2_default,"apple-tree-growing-3":apple_tree_growing_3_default,"apple-tree-growing-4":apple_tree_growing_4_default,"apple-tree-grown":apple_tree_grown_default,"apple-sapling":apple_sapling_default,"apple-tree-sapling-planted":apple_tree_sapling_planted_default,banana:banana_default,"banana-fruit-growing-1":banana_fruit_growing_1_default,"banana-fruit-growing-2":banana_fruit_growing_2_default,"banana-fruit-growing-3":banana_fruit_growing_3_default,"banana-fruit-grown":banana_fruit_grown_default,"banana-tree-dead":banana_tree_dead_default,"banana-tree-growing-1":banana_tree_growing_1_default,"banana-tree-growing-2":banana_tree_growing_2_default,"banana-tree-growing-3":banana_tree_growing_3_default,"banana-tree-growing-4":banana_tree_growing_4_default,"banana-tree-grown":banana_tree_grown_default,"banana-sapling":banana_sapling_default,"banana-tree-sapling-planted":banana_tree_sapling_planted_default,asparagus:asparagus_default,"asparagus-growing-1":asparagus_growing1_default,"asparagus-growing-2":asparagus_growing2_default,"asparagus-growing-3":asparagus_growing3_default,"asparagus-seed":asparagus_seed_default,carrot:carrot_default,"carrot-growing-1":carrot_growing1_default,"carrot-growing-2":carrot_growing2_default,"carrot-growing-3":carrot_growing3_default,"carrot-seed":carrot_seed_default,garlic:garlic_default,"garlic-growing-1":garlic_growing1_default,"garlic-growing-2":garlic_growing2_default,"garlic-growing-3":garlic_growing3_default,"garlic-seed":garlic_seed_default,"grape-seed":grape_seed_default,"grape-cabernet-sauvignon":grape_purple_default,"grape-cabernet-sauvignon-growing-1":grape_purple_growing1_default,"grape-cabernet-sauvignon-seed":grape_seed_default,"grape-chardonnay":grape_green_default,"grape-chardonnay-growing-1":grape_green_growing1_default,"grape-chardonnay-seed":grape_seed_default,"grape-nebbiolo":grape_purple_default,"grape-nebbiolo-growing-1":grape_purple_growing1_default,"grape-nebbiolo-seed":grape_seed_default,"grape-sauvignon-blanc":grape_green_default,"grape-sauvignon-blanc-growing-1":grape_green_growing1_default,"grape-sauvignon-blanc-seed":grape_seed_default,"grape-tempranillo":grape_purple_default,"grape-tempranillo-growing-1":grape_purple_growing1_default,"grape-tempranillo-seed":grape_seed_default,jalapeno:jalapeno_default,"jalapeno-growing-1":jalapeno_growing1_default,"jalapeno-growing-2":jalapeno_growing2_default,"jalapeno-growing-3":jalapeno_growing3_default,"jalapeno-seed":jalapeno_seed_default,pumpkin:pumpkin_default,"pumpkin-growing-1":pumpkin_growing1_default,"pumpkin-growing-2":pumpkin_growing2_default,"pumpkin-growing-3":pumpkin_growing3_default,"pumpkin-growing-4":pumpkin_growing4_default,"pumpkin-growing-5":pumpkin_growing5_default,"pumpkin-seed":pumpkin_seed_default,pea:pea_default,"pea-growing-1":pea_growing1_default,"pea-seed":pea_seed_default,spinach:spinach_default,"spinach-growing-1":spinach_growing1_default,"spinach-seed":spinach_seed_default,corn:corn_default,"corn-growing-1":corn_growing1_default,"corn-growing-2":corn_growing2_default,"corn-growing-3":corn_growing3_default,"corn-growing-4":corn_growing4_default,"corn-growing-5":corn_growing5_default,"corn-seed":corn_seed_default,potato:potato_default,"potato-growing-1":potato_growing1_default,"potato-growing-2":potato_growing2_default,"potato-growing-3":potato_growing3_default,"potato-seed":potato_seed_default,olive:olive_default,"olive-growing-1":olive_growing1_default,"olive-seed":olive_seed_default,onion:onion_default,"onion-growing-1":onion_growing1_default,"onion-growing-2":onion_growing2_default,"onion-growing-3":onion_growing3_default,"onion-seed":onion_seed_default,soybean:soybean_default,"soybean-growing-1":soybean_growing1_default,"soybean-seed":soybean_seed_default,"sweet-potato":sweet_potato_default,"sweet-potato-growing-1":sweet_potato_growing1_default,"sweet-potato-growing-2":sweet_potato_growing2_default,"sweet-potato-growing-3":sweet_potato_growing3_default,"sweet-potato-growing-4":sweet_potato_growing4_default,"sweet-potato-seed":sweet_potato_seed_default,wheat:wheat_default,"wheat-growing-1":wheat_growing1_default,"wheat-seed":wheat_seed_default,tomato:tomato_default,"tomato-growing-1":tomato_growing1_default,"tomato-growing-2":tomato_growing2_default,"tomato-growing-3":tomato_growing3_default,"tomato-growing-4":tomato_growing4_default,"tomato-growing-5":tomato_growing5_default,"tomato-growing-6":tomato_growing6_default,"tomato-seed":tomato_seed_default,strawberry:strawberry_default,"strawberry-growing-1":strawberry_growing1_default,"strawberry-seed":strawberry_seed_default,sugarcane:sugarcane_default,"sugarcane-growing-1":sugarcane_growing1_default,"sugarcane-growing-2":sugarcane_growing2_default,"sugarcane-seed":sugarcane_seed_default,sunflower:sunflower_default,"sunflower-growing-1":sunflower_growing1_default,"sunflower-growing-2":sunflower_growing2_default,"sunflower-growing-3":sunflower_growing3_default,"sunflower-growing-4":sunflower_growing4_default,"sunflower-growing-5":sunflower_growing5_default,"sunflower-seed":sunflower_seed_default,watermelon:watermelon_default,"watermelon-growing-1":watermelon_growing1_default,"watermelon-seed":watermelon_seed_default,weed:weed_pink_default,"weed-yellow":weed_yellow_default,"weed-orange":weed_orange_default,"weed-pink":weed_pink_default,wood:applewood_default,coal:coal_default,stone:stone_default,"salt-rock":salt_rock_default,"bronze-ore":bronze_ore_default,"iron-ore":iron_ore_default,"silver-ore":silver_ore_default,"gold-ore":gold_ore_default,"rainbow-fertilizer":rainbow_fertilizer_default,scarecrow:scarecrow_default,sprinkler:sprinkler_default,"cow-feed":cow_feed_default,"hugging-machine":hugging_machine_default,"milk-1":milk_1_default,"milk-2":milk_2_default,"milk-3":milk_3_default,"rainbow-milk-1":rainbow_milk_1_default,"rainbow-milk-2":rainbow_milk_2_default,"rainbow-milk-3":rainbow_milk_3_default,"chocolate-milk":chocolate_milk_default,"scarecrow-animated":scarecrow_animated_default,"inventory-box":inventory_box_default,tumbleweed:tumbleweed_default,...craftedItems},wines={[grapeVariety.CHARDONNAY]:wine_green_default,[grapeVariety.SAUVIGNON_BLANC]:wine_green_default,[grapeVariety.CABERNET_SAUVIGNON]:wine_purple_default,[grapeVariety.TEMPRANILLO]:wine_purple_default,[grapeVariety.NEBBIOLO]:wine_purple_default},tools$1={axe:axe_default,hoe:hoe_default,"picker-pole":picker_pole_default,scythe:scythe_default,shovel:shovel_default,"watering-can":watering_can_default},animals={cow:{rainbow:rainbow_cow_default,variations:[cow_variation_1_default,cow_variation_2_default,cow_variation_3_default,cow_variation_4_default,cow_variation_5_default,cow_variation_6_default,cow_variation_7_default]}},noop$3=()=>{},getFinalCropItemFromSeedItem=({id:e},t=0)=>{let n=getFinalCropItemIdFromSeedItemId(e,t);if(n)return itemsMap[n]},getItemCurrentValue=({id:e},t)=>{let n=Math.round((t[e]?getItemBaseValue(e)*(itemsMap[e].doesPriceFluctuate?t[e]:1):getItemBaseValue(e))*100);return Number(toDecimal(dinero({amount:n,currency:USD})))};function noop$2(){}function returnTrue(){return!0}function charIsNumber(e){return!!(e||``).match(/\d/)}function isNil(e){return e==null}function escapeRegExp(e){return e.replace(/[-[\]/{}()*+?.\\^$|]/g,`\\$&`)}function getThousandsGroupRegex(e){switch(e){case`lakh`:return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case`wan`:return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function applyThousandSeparator(e,t,n){var a=getThousandsGroupRegex(n),o=e.search(/[1-9]/);return o=o===-1?e.length:o,e.substring(0,o)+e.substring(o,e.length).replace(a,`$1`+t)}function splitDecimal(e,t){t===void 0&&(t=!0);var n=e[0]===`-`,a=n&&t;e=e.replace(`-`,``);var o=e.split(`.`);return{beforeDecimal:o[0],afterDecimal:o[1]||``,hasNagation:n,addNegation:a}}function fixLeadingZero(e){if(!e)return e;var t=e[0]===`-`;t&&(e=e.substring(1,e.length));var n=e.split(`.`),a=n[0].replace(/^0+/,``)||`0`,o=n[1]||``;return(t?`-`:``)+a+(o?`.`+o:``)}function limitToScale(e,t,n){for(var a=``,o=n?`0`:``,s=0;s<=t-1;s++)a+=e[s]||o;return a}function repeat(e,t){return Array(t+1).join(e)}function toNumericString(e){e+=``;var t=e[0]===`-`?`-`:``;t&&(e=e.substring(1));var n=e.split(/[eE]/g),a=n[0],o=n[1];if(o=Number(o),!o)return t+a;a=a.replace(`.`,``);var s=1+o,l=a.length;return s<0?a=`0.`+repeat(`0`,Math.abs(s))+a:s>=l?a+=repeat(`0`,s-l):a=(a.substring(0,s)||`0`)+`.`+a.substring(s),t+a}function roundToPrecision(e,t,n){if([``,`-`].indexOf(e)!==-1)return e;var a=e.indexOf(`.`)!==-1&&t,o=splitDecimal(e),s=o.beforeDecimal,l=o.afterDecimal,u=o.hasNagation,d=parseFloat(`0.`+(l||`0`)),f=(l.length<=t?`0.`+l:d.toFixed(t)).split(`.`),m=s.split(``).reverse().reduce(function(e,t,n){return e.length>n?(Number(e[0])+Number(t)).toString()+e.substring(1,e.length):t+e},f[0]),h=limitToScale(f[1]||``,Math.min(t,l.length),n),v=u?`-`:``,y=a?`.`:``;return``+v+m+y+h}function setCaretPosition(e,t){if(e.value=e.value,e!==null){if(e.createTextRange){var n=e.createTextRange();return n.move(`character`,t),n.select(),!0}return e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}function findChangedIndex(e,t){for(var n=0,a=0,o=e.length,s=t.length;e[n]===t[n]&&n<o;)n++;for(;e[o-1-a]===t[s-1-a]&&s-a>n&&o-a>n;)a++;return{start:n,end:o-a}}function clamp(e,t,n){return Math.min(Math.max(e,t),n)}function getCurrentCaretPosition(e){return Math.max(e.selectionStart,e.selectionEnd)}function addInputMode(e){return e||typeof navigator<`u`&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function objectWithoutProperties(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)===-1&&(n[a]=e[a]);return n}var defaultProps={displayType:`input`,decimalSeparator:`.`,thousandsGroupStyle:`thousand`,fixedDecimalScale:!1,prefix:``,suffix:``,allowNegative:!0,allowEmptyFormatting:!1,allowLeadingZeros:!1,isNumericString:!1,type:`text`,onValueChange:noop$2,onChange:noop$2,onKeyDown:noop$2,onMouseUp:noop$2,onFocus:noop$2,onBlur:noop$2,isAllowed:returnTrue},NumberFormat=function(e){function t(t){e.call(this,t);var n=t.defaultValue;this.validateProps();var a=this.formatValueProp(n);this.state={value:a,numAsString:this.removeFormatting(a),mounted:!1},this.selectionBeforeInput={selectionStart:0,selectionEnd:0},this.onChange=this.onChange.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.setState({mounted:!0})},t.prototype.componentDidUpdate=function(e){this.updateValueIfRequired(e)},t.prototype.componentWillUnmount=function(){clearTimeout(this.focusTimeout),clearTimeout(this.caretPositionTimeout)},t.prototype.updateValueIfRequired=function(e){var t=this,n=t.props,a=t.state,o=t.focusedElm,s=a.value,l=a.numAsString;if(l===void 0&&(l=``),e!==n){this.validateProps();var u=this.formatNumString(l),d=isNil(n.value)?u:this.formatValueProp(),f=this.removeFormatting(d),m=parseFloat(f),h=parseFloat(l);((!isNaN(m)||!isNaN(h))&&m!==h||u!==s||o===null&&d!==s)&&this.updateValue({formattedValue:d,numAsString:f,input:o,source:`prop`,event:null})}},t.prototype.getFloatString=function(e){e===void 0&&(e=``);var t=this.props.decimalScale,n=this.getSeparators().decimalSeparator,a=this.getNumberRegex(!0),o=e[0]===`-`;o&&(e=e.replace(`-`,``)),n&&t===0&&(e=e.split(n)[0]),e=(e.match(a)||[]).join(``).replace(n,`.`);var s=e.indexOf(`.`);return s!==-1&&(e=e.substring(0,s)+`.`+e.substring(s+1,e.length).replace(new RegExp(escapeRegExp(n),`g`),``)),o&&(e=`-`+e),e},t.prototype.getNumberRegex=function(e,t){var n=this.props,a=n.format,o=n.decimalScale,s=n.customNumerals,l=this.getSeparators().decimalSeparator;return RegExp(`[0-9`+(s?s.join(``):``)+`]`+(l&&o!==0&&!t&&!a?`|`+escapeRegExp(l):``),e?`g`:void 0)},t.prototype.getSeparators=function(){var e=this.props.decimalSeparator,t=this.props,n=t.thousandSeparator,a=t.allowedDecimalSeparators;return n===!0&&(n=`,`),a||=[e,`.`],{decimalSeparator:e,thousandSeparator:n,allowedDecimalSeparators:a}},t.prototype.getMaskAtIndex=function(e){var t=this.props.mask;return t===void 0&&(t=` `),typeof t==`string`?t:t[e]||` `},t.prototype.getValueObject=function(e,t){var n=parseFloat(t);return{formattedValue:e,value:t,floatValue:isNaN(n)?void 0:n}},t.prototype.validateProps=function(){var e=this.props.mask,t=this.getSeparators(),n=t.decimalSeparator,a=t.thousandSeparator;if(n===a)throw Error(`
|
|
154
|
+
`),severity:`error`}),{...e,newDayNotifications:a}},processNerfs=e=>applyChanceEvent([[()=>!0,applyCrows]],e),getRangeCoords=(e,t,n)=>{let a=2*e+1,o=t-e,s=n-e;return Array(a).fill(null).map((e,t)=>Array(a).fill(null).map((e,n)=>({x:o+n,y:s+t})))},processSprinklers=e=>{let{field:t,experience:n}=e,a=new Map,o=[...t],{sprinklerRange:s}=getLevelEntitlements(levelAchieved(n));return t.forEach((n,l)=>{n.forEach((n,u)=>{!n||getPlotContentType(n)!==itemType.SPRINKLER||getRangeCoords(s,u,l).flat().forEach(({x:n,y:s})=>{let l=t[s];if(!l)return;let u=l[n];u&&getPlotContentType(u)===itemType.CROP&&(a.has(u)||(o=modifyFieldPlotAt({...e,field:o},n,s,setWasWatered).field),a.set(u,{x:n,y:s}))})})}),{...e,field:o}},shouldPrecipitateToday=()=>random$1()<PRECIPITATION_CHANCE,processWeather=e=>applyChanceEvent([[shouldPrecipitateToday,applyPrecipitation]],e),rotateNotificationLogs=e=>{let t=[...e.notificationLog],{dayCount:n,newDayNotifications:a}=e,o={error:[],info:[],success:[],warning:[]};return a.forEach(({message:e,severity:t})=>o[t].push(e)),a.length&&t.unshift({day:n,notifications:o}),t.length=Math.min(t.length,14),{...e,notificationLog:t}},get7DayAverage=e=>e.reduce((e,t)=>moneyTotal(e,t),0)/7,getProfit=(e,t)=>moneyTotal(e,t),updateFinancialRecords=e=>{let{profitabilityStreak:t,todaysLosses:n,todaysRevenue:a,record7dayProfitAverage:o,recordProfitabilityStreak:s}=e,{historicalDailyLosses:l,historicalDailyRevenue:u,recordSingleDayProfit:d}=e;l=[n,...l].slice(0,7),u=[a,...u].slice(0,7);let f=get7DayAverage(l.map((e,t)=>moneyTotal(u[t],e))),m=a+n>0?t+1:0;return{...e,historicalDailyLosses:l,historicalDailyRevenue:u,profitabilityStreak:m,record7dayProfitAverage:Math.max(o,f),recordProfitabilityStreak:Math.max(s,m),recordSingleDayProfit:Math.max(d,getProfit(a,n)),todaysLosses:0,todaysRevenue:0}},updateInventoryRecordsForNextDay=e=>({...e,todaysPurchases:{},todaysStartingInventory:e.inventory.reduce((e,{id:t,quantity:n})=>(e[t]=n,e),{})}),decrementPriceEventDays=e=>Object.keys(e).reduce((t,n)=>{let a=e[n];if(!a)return t;let{itemId:o,daysRemaining:s}=a;return s>1&&(t[n]={itemId:o,daysRemaining:s-1}),t},{}),updatePriceEvents=e=>{let{priceCrashes:t,priceSurges:n}=e;return{...e,priceCrashes:decrementPriceEventDays(t),priceSurges:decrementPriceEventDays(n)}},adjustItemValues=e=>({...e,historicalValueAdjustments:[e.valueAdjustments],valueAdjustments:generateValueAdjustments(e.priceCrashes,e.priceSurges)}),computeStateForNextDay=(e,t=!1)=>(e=(t?[processField]:[computeCowInventoryForNextDay,processCowBreeding,processField,processForest,processNerfs,processWeather,processSprinklers,processFeedingCows,processCowAttrition,processMilkingCows,processCowFertilizerProduction,processCellar,updatePriceEvents,updateFinancialRecords,updateInventoryRecordsForNextDay,generatePriceEvents,applyLoanInterest,rotateNotificationLogs]).concat([adjustItemValues]).reduce((e,t)=>t({...e}),{...e,cowForSale:generateCow(),dayCount:e.dayCount+1,todaysNotifications:[]}),e.dayCount%60==0&&(e=addExperience(e,EXPERIENCE_VALUES.NEW_YEAR)),e),{FERTILIZE:FERTILIZE$3,OBSERVE:OBSERVE$5}=fieldMode,fertilizerItemIdToTypeMap={[itemsMap.fertilizer.id]:fertilizerType.STANDARD,[itemsMap[`rainbow-fertilizer`].id]:fertilizerType.RAINBOW},fertilizePlot=(e,t,n)=>{let{field:a,selectedItemId:o}=e,s=a[n][t];if(!s||itemsMap[o]?.type!==itemType.FERTILIZER)return e;let{id:l}=itemsMap[o],u=e.inventory.find(e=>e.id===l),d=getPlotContentType(s);if(!s||!u||s.fertilizerType!==fertilizerType.NONE||o===`fertilizer`&&d!==itemType.CROP||o===`rainbow-fertilizer`&&d!==itemType.CROP&&d!==itemType.SCARECROW)return e;let{quantity:f}=u;e=decrementItemFromInventory(e,l);let m=f>1;return e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerItemIdToTypeMap[l]}),{...e,fieldMode:m?FERTILIZE$3:OBSERVE$5,selectedItemId:m?l:``}},forRange=(e,t,n,a,o,...s)=>{let l=Math.max(a-n,0),u=Math.min(a+n,e.field[0].length-1),d=Math.max(o-n,0),f=Math.min(o+n,e.field.length-1);for(let n=d;n<=f;n++)for(let a=l;a<=u;a++)e=t(e,a,n,...s);return e},{GROWN:GROWN$6}=cropLifeStage,{UNAVAILABLE}=toolLevel,harvestForestPlot=(e,t,n)=>{let a=e.forest[n]?.[t];if(!a||!(`itemId`in a)||e.toolLevels[toolType.PICKER_POLE]===UNAVAILABLE||!doesInventorySpaceRemain(e)||getFruitLifeStage(a)!==GROWN$6)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=PICKER_POLE_LEVEL_TO_FRUIT_YIELD[e.toolLevels[toolType.PICKER_POLE]]??1,l=Math.min(s,inventorySpaceRemaining(e));return e=addItemToInventory(e,o,s),e={...e,treeFruitsHarvested:{...e.treeFruitsHarvested,[o.id]:(e.treeFruitsHarvested[o.id]||0)+l}},modifyForestPlotAt(e,t,n,e=>e&&`itemId`in e?{...e,daysSinceLastHarvest:0}:e)},getCropFromItemId=e=>({...getPlotContentFromItemId(e),daysOld:0,daysWatered:0,wasWateredToday:!1}),plantInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let{field:o}=e;if(o[n][t])return e;let{growsInto:s}=itemsMap[a],l=getFinalCropItemIdFromSeedItemId(a,Array.isArray(s)?chooseRandomIndex(s):0);return l?(e=modifyFieldPlotAt(e,t,n,()=>getCropFromItemId(l)),e=decrementItemFromInventory(e,a),e=processSprinklers(e),{...e,selectedItemId:e.inventory.find(({id:e})=>e===a)?a:``}):e},{GROWN:GROWN$5}=cropLifeStage;function getHarvestedQuantity(e){let t=1;switch(e.toolLevels[toolType.SCYTHE]){case toolLevel.BRONZE:t+=1;break;case toolLevel.IRON:t+=2;break;case toolLevel.SILVER:t+=3;break;case toolLevel.GOLD:t+=4;break;default:t=1}return t}function harvestCrops(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=getSeedItemIdFromFinalStageCropItemId(o.id),l=a.fertilizerType===fertilizerType.RAINBOW,u=getHarvestedQuantity(e);e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,u);let{cropType:d}=o;if(!d)return e;l&&getInventoryQuantityMap(e.inventory)[s]>0&&(e=plantInPlot(e,t,n,s),e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerType.RAINBOW}));let{cropsHarvested:f}=e;return{...e,cropsHarvested:{...f,[d]:(f[d]||0)+u}}}function harvestWeed(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId],s=getHarvestedQuantity(e);return e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,s),e}var harvestPlot=(e,t,n)=>{let a=e.field[n][t];return!a||!doesInventorySpaceRemain(e)?e:getPlotContentType(a)===itemType.CROP&&getCropLifeStage(a)===GROWN$5?harvestCrops(e,t,n):getPlotContentType(a)===itemType.WEED?harvestWeed(e,t,n):e},hugCow=(e,t)=>modifyCow(e,t,e=>e.happinessBoostsToday>=3?e:{happiness:Math.min(1,e.happiness+COW_HUG_BENEFIT),happinessBoostsToday:e.happinessBoostsToday+1}),maxYieldOfRecipe=memoize(({ingredients:e},t)=>{let n=getInventoryQuantityMap(t);return Math.min(...Object.keys(e).map(t=>Math.floor(n[t]/e[t])))||0},{}),canMakeRecipe=(e,t,n)=>maxYieldOfRecipe(e,t)>=n,consumeIngredients=(e,t,n=1,a=0)=>t.ingredients&&!canMakeRecipe(t,e.inventory,n)?e:(e=addExperience(e,a),Object.keys(t.ingredients||{}).reduce((e,a)=>decrementItemFromInventory(e,a,t.ingredients[a]*n),e)),EXPERIENCE_FOR_RECIPE={[recipeType.FERMENTATION]:EXPERIENCE_VALUES.FERMENTATION_RECIPE_MADE,[recipeType.FORGE]:EXPERIENCE_VALUES.FORGE_RECIPE_MADE,[recipeType.KITCHEN]:EXPERIENCE_VALUES.KITCHEN_RECIPE_MADE,[recipeType.RECYCLING]:EXPERIENCE_VALUES.RECYCLING_RECIPE_MADE,[recipeType.WOOD_CHIPPER]:EXPERIENCE_VALUES.WOOD_CHIPPER_RECIPE_MADE},makeRecipe=(e,t,n=1)=>{let a=e;return e=consumeIngredients(e,t,n,EXPERIENCE_FOR_RECIPE[t.recipeType]||0),e===a?e:(e={...e,recipesMade:{...e.recipesMade,[t.id]:(e.recipesMade[t.id]||0)+n}},addItemToInventory(e,t,n))},saltRequirementMultiplier=2/3,getSaltRequirementsForFermentationRecipe=e=>{let{daysToFerment:t=0,tier:n=1}=e;return Math.ceil((t??0)*saltRequirementMultiplier)*n},getMaxYieldOfFermentationRecipe=(e,t,n,a)=>{let{[e.id]:o=0,[itemsMap.salt.id]:s=0}=getInventoryQuantityMap(t),l=Math.floor(s/getSaltRequirementsForFermentationRecipe(e));return Math.min(a-n.length,o,l)},addKegToCellarInventory=(e,t)=>{let{cellarInventory:n}=e;return{...e,cellarInventory:[...n,t]}},makeFermentationRecipe=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0};if(getMaxYieldOfFermentationRecipe(t,a,o,l)<n)return e;for(let a=0;a<n;a++){let n=cellarService.generateKeg(t);e=addKegToCellarInventory(e,n)}let u=getSaltRequirementsForFermentationRecipe(t);return e=decrementItemFromInventory(e,t.id,n),e=decrementItemFromInventory(e,itemsMap.salt.id,n*u),e},makeWine=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0},u=wineService.getMaxWineYield({grape:t,inventory:a,cellarInventory:o,cellarSize:l}),d=itemsMap[t.wineId],f=Math.min(n,u);for(let t=0;t<f;t++){let t=cellarService.generateKeg(d);e=addKegToCellarInventory(e,t)}e=decrementItemFromInventory(e,t.id,f*50);let m=getYeastRequiredForWine(t.variety);return e=decrementItemFromInventory(e,itemsMap.yeast.id,f*m),e};function randomChoice(e){let t=0,n=[];for(let a of e)t+=a.weight,n.push(a);n.sort((e,t)=>e.weight-t.weight);let a=random$1()*t,o,s=0;for(let e in n){if(o=n[e],a<o.weight+s)return o;s+=o.weight}return n[n.length-1]}var Factory=class{},SPAWNABLE_ORES=[goldOre,ironOre,bronzeOre,silverOre],OreFactory=class extends Factory{oreOptions=[];constructor(){super();for(let e of SPAWNABLE_ORES)this.oreOptions.push({ore:e,weight:e.spawnChance||0})}generate(){return[this.spawn()]}spawn(){return randomChoice(this.oreOptions).ore}},CoalFactory=class extends Factory{generate(){let e=[],t=chooseRandom([1,1,1,2,3]);for(let n=0;n<t;n++)e.push(this.spawnCoal());return e.push(this.spawnStone()),e}spawnCoal(){return coal$1}spawnStone(){return stone}},spawnableResources=[{resource:stone,spawnChance:STONE_SPAWN_CHANCE},{resource:saltRock,spawnChance:SALT_ROCK_SPAWN_CHANCE},{resource:coal$1,spawnChance:COAL_SPAWN_CHANCE}],StoneFactory=class extends Factory{generate(){let e=[];for(let{resource:t,spawnChance:n}of spawnableResources)randomNumberService.isRandomNumberLessThan(n)&&e.push(t);return e}},factoryInstances={},instance=null,ResourceFactory=class e{resourceOptions;constructor(){this.resourceOptions=[{weight:ORE_SPAWN_CHANCE,itemType:itemType.ORE},{weight:COAL_SPAWN_CHANCE,itemType:itemType.FUEL},{weight:STONE_SPAWN_CHANCE,itemType:itemType.STONE}]}static instance(){return instance||=new e,instance}static generateFactoryInstance(e){switch(e){case itemType.STONE:return new StoneFactory;case itemType.FUEL:return new CoalFactory;case itemType.ORE:return new OreFactory;default:return null}}static getFactoryForItemType=t=>(factoryInstances[t]||(factoryInstances[t]=e.generateFactoryInstance(t)),factoryInstances[t]);generateResources(t){let n=[],a=RESOURCE_SPAWN_CHANCE;switch(t){case toolLevel.BRONZE:a+=.1;break;case toolLevel.IRON:a+=.2;break;case toolLevel.SILVER:a+=.3;break;case toolLevel.GOLD:a+=.5;break;default:}if(randomNumberService.isRandomNumberLessThan(a)){let t=randomChoice(this.resourceOptions),a=e.getFactoryForItemType(t.itemType);if(a){let e=a.generate();e&&(n=Array.isArray(e)?e:[e])}}return n}},daysUntilClearPeriods=[1,2,2,3],minePlot=(e,t,n)=>{let{field:a}=e;if(a[n][t])return e;if(!doesInventorySpaceRemain(e))return showNotification(e,INVENTORY_FULL_NOTIFICATION);let o=e.toolLevels[toolType.SHOVEL],s=ResourceFactory.instance().generateResources(o),[l]=s,u=chooseRandom(daysUntilClearPeriods);if(l){let e=s.map(({spawnChance:e})=>e).filter(e=>e!=null),t=Math.min(...e);u+=Math.round(random$1()*(1-t)*10)}for(let t of s)e=addItemToInventory(e,t);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:``,fertilizerType:fertilizerType.NONE,isShoveled:!0,daysUntilClear:u,oreId:l?.id??null})),{...e}},{FERTILIZE:FERTILIZE$2,OBSERVE:OBSERVE$4}=fieldMode,mulchItemIdToTypeMap={mulch:fertilizerType.STANDARD,"rainbow-mulch":fertilizerType.RAINBOW},mulchForestPlot=(e,t,n)=>{let{forest:a,selectedItemId:o}=e,s=a[n]?.[t];if(!s||!isPlantedTree(s)||itemsMap[o]?.type!==itemType.MULCH)return e;let l=o,u=e.inventory.find(e=>e.id===l);if(!u||(s.fertilizerType??fertilizerType.NONE)!==fertilizerType.NONE)return e;let{quantity:d}=u;e=decrementItemFromInventory(e,l);let f=d>1;return e={...e,mulchApplied:{...e.mulchApplied,[l]:(e.mulchApplied[l]||0)+1}},e=modifyForestPlotAt(e,t,n,e=>!e||!isPlantedTree(e)?e:{...e,fertilizerType:mulchItemIdToTypeMap[l]}),{...e,fieldMode:f?FERTILIZE$2:OBSERVE$4,selectedItemId:f?l:``}},offerCow=(e,t)=>(e={...e,cowIdOfferedForTrade:t},e),getTreeDeathChance=e=>Math.min(TREE_DEATH_CHANCE_MAX,TREE_DEATH_CHANCE_BASE+e*TREE_DEATH_CHANCE_INCREMENT_PER_DAY),MAX_ITERATIONS=1e3,getRandomLifespanExtension=()=>{let e=0;for(;e<MAX_ITERATIONS&&random$1()>=getTreeDeathChance(e);)e++;return e},getRandomizedLifespan=e=>{let t=e*(1-random$1()*TREE_LIFESPAN_VARIANCE_MAX);return Math.round(t+getRandomLifespanExtension())},{NONE:NONE$1}=fertilizerType,plantTreeInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let o=e.forest[n];if(!o||o[t])return e;let s=getFinalCropItemIdFromSeedItemId(a);if(!s)return e;let l=itemsMap[s]?.lifespan,u=l===void 0?void 0:getRandomizedLifespan(l);return e=modifyForestPlotAt(e,t,n,()=>({itemId:s,daysOld:0,daysSinceLastHarvest:0,daysGrown:0,fertilizerType:NONE$1,...u!==void 0&&{lifespan:u}})),e=decrementItemFromInventory(e,a),{...e,selectedForestItemId:e.inventory.find(({id:e})=>e===a)?a:``}},prependPendingPeerMessage=(e,t,n=`info`)=>({...e,pendingPeerMessages:[{playerId:e.playerId,message:t,severity:n},...e.pendingPeerMessages].slice(0,5)}),purchaseCombine=(e,t)=>{let{money:n,purchasedCombine:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COMBINES.get(t)?.price||0;return{...e,purchasedCombine:t,money:moneyTotal(n,-o)}},updateLearnedRecipes=e=>({...e,learnedRecipes:Object.keys(recipesMap).reduce((t,n)=>(recipesMap[n].condition(e)&&(t[n]=!0),t),{})}),purchaseComposter=(e,t)=>{let{money:n,purchasedComposter:a}=e;return a>=t?e:(e={...e,purchasedComposter:t,money:moneyTotal(n,-(PURCHASEABLE_COMPOSTERS.get(t)?.price??0))},e=showNotification(e,RECYCLING_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.COMPOSTER_ACQUIRED),updateLearnedRecipes(e))},getCowWeight=({baseWeight:e,weightMultiplier:t})=>Math.round(e*t),getCowValue=(e,t=!1)=>t?getCowWeight(e)*clampNumber(scaleNumber(e.daysOld,1,100,0,1),0,1):getCowWeight(e)*1.5,purchaseCow=(e,t)=>{let{cowInventory:n,cowColorsPurchased:a,playerId:o,money:s,purchasedCowPen:l}=e,{color:u}=t,d=getCowValue(t,!1);return s<d||l===0||n.length>=(PURCHASEABLE_COW_PENS.get(l)?.cows??0)?e:(e=addCowToInventory(e,{...t,ownerId:o,originalOwnerId:o}),{...e,cowColorsPurchased:{...a,[u]:(a[u]||0)+1},money:moneyTotal(s,-d),cowForSale:generateCow()})},purchaseCowPen=(e,t)=>{let{money:n,purchasedCowPen:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COW_PENS.get(t);if(!o)return e;let{cows:s,price:l}=o;e=showNotification(e,COW_PEN_PURCHASED(``,s),`success`);let u=t>1?EXPERIENCE_VALUES.COW_PEN_EXPANDED:EXPERIENCE_VALUES.COW_PEN_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCowPen:t,money:moneyTotal(n,-l)}},purchaseCellar=(e,t)=>{let{money:n,purchasedCellar:a}=e;if(a>=t)return e;let o=PURCHASEABLE_CELLARS.get(t);if(!o)return e;let{price:s,space:l}=o;e=showNotification(e,CELLAR_PURCHASED(``,l),`success`);let u=t>1?EXPERIENCE_VALUES.CELLAR_EXPANDED:EXPERIENCE_VALUES.CELLAR_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCellar:t,money:moneyTotal(n,-s)}},nullArray=memoize(e=>Object.freeze(Array(e).fill(null)),{cacheSize:30}),purchaseField=(e,t)=>{let{field:n,money:a,purchasedField:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FIELD_EXPANDED);let s=PURCHASEABLE_FIELD_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s;return{...e,purchasedField:t,field:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},purchaseForest=(e,t)=>{let{forest:n,money:a,purchasedForest:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FOREST_EXPANDED);let s=PURCHASABLE_FOREST_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s,f=t===1?FOREST_AVAILABLE_NOTIFICATION:FOREST_EXPANDED`${d*l}`;return e=showNotification(e,f,`success`),{...e,purchasedForest:t,forest:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},getAdjustedItemValue=(e,t)=>Number(((e[t]||1)*itemsMap[t].value).toFixed(2)),purchaseItem=(e,t,n=1)=>{let{money:a,todaysPurchases:o,valueAdjustments:s}=e,l=Math.min(n,inventorySpaceRemaining(e));if(l===0)return e;let u=getAdjustedItemValue(s,t.id)*l;return u>a?e:(e=prependPendingPeerMessage(e,PURCHASED_ITEM_PEER_NOTIFICATION(``,n,t)),addItemToInventory({...e,money:moneyTotal(a,-u),todaysPurchases:{...o,[t.id]:(o[t.id]||0)+l}},t,l))},purchaseSmelter=(e,t)=>{let{money:n,purchasedSmelter:a}=e;return a>=t?e:(e={...e,purchasedSmelter:t,money:moneyTotal(n,-(PURCHASEABLE_SMELTERS.get(t)?.price??0))},e=showNotification(e,FORGE_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.SMELTER_ACQUIRED),updateLearnedRecipes(e))},getCostOfNextStorageExpansion=e=>500+(e-100)/100*50,purchaseStorageExpansion=e=>{let{money:t,inventoryLimit:n}=e,a=getCostOfNextStorageExpansion(n);return t<a||n===-1?e:{...e,inventoryLimit:n+100,money:moneyTotal(t,-a)}},purchaseWoodChipper=(e,t)=>{let{money:n,purchasedWoodChipper:a}=e;return a>=t?e:(e={...e,purchasedWoodChipper:t,money:moneyTotal(n,-(PURCHASEABLE_WOOD_CHIPPERS.get(t)?.price??0))},e=showNotification(e,WOOD_CHIPPER_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.WOOD_CHIPPER_ACQUIRED),updateLearnedRecipes(e))},removePeer=(e,t)=>{let n={...e.peers};return delete n[t],{...e,peers:n,activePlayers:(e.activePlayers??1)-1}},selectCow=(e,{id:t})=>({...e,selectedCowId:t}),cowColorToIdMap={[cowColors.BLUE]:`blue`,[cowColors.BROWN]:`brown`,[cowColors.GREEN]:`green`,[cowColors.ORANGE]:`orange`,[cowColors.PURPLE]:`purple`,[cowColors.RAINBOW]:`rainbow`,[cowColors.WHITE]:`white`,[cowColors.YELLOW]:`yellow`},getCowColorId=({color:e})=>`${cowColorToIdMap[e]}-cow`,sellCow=(e,t)=>{let{cowsSold:n}=e,a=getCowColorId(t),o=getCowValue(t,!0);e=removeCowFromInventory(e,t),e=addRevenue(e,o);let s={...n,[a]:(n[a]||0)+1};return e={...e,cowsSold:s},e},SEASON_ORDER=[season.SPRING,season.SUMMER,season.FALL,season.WINTER],seasonNameMap={[season.SPRING]:`Spring`,[season.SUMMER]:`Summer`,[season.FALL]:`Fall`,[season.WINTER]:`Winter`},seasonFilterMap={[season.SPRING]:`none`,[season.SUMMER]:`sepia(0.26) hue-rotate(-10deg) saturate(1.91) brightness(0.93) contrast(1.47)`,[season.FALL]:`sepia(0.13) hue-rotate(-38deg) saturate(1.34) brightness(0.97) contrast(1)`,[season.WINTER]:`sepia(0.59) hue-rotate(129deg) saturate(0.98) brightness(0.93) contrast(1.02)`},getCurrentSeason=e=>SEASON_ORDER[Math.floor((e-1)/15)%SEASON_ORDER.length],getResaleValue=({id:e})=>itemsMap[e].value/2,getSalePriceMultiplier=(e={})=>{let t=1;return e[`i-am-rich-3`]?t+=I_AM_RICH_BONUSES[2]:e[`i-am-rich-2`]?t+=I_AM_RICH_BONUSES[1]:e[`i-am-rich-1`]&&(t+=I_AM_RICH_BONUSES[0]),t},getSeasonalDemandStatus=(e,t)=>e.highDemandSeasons?.includes(t)?`HIGH`:e.lowDemandSeasons?.includes(t)?`LOW`:null,getSeasonalDemandMultiplier=(e,t)=>{let n=getSeasonalDemandStatus(e,t);return n===`HIGH`?1+SEASON_HIGH_DEMAND_BONUS:n===`LOW`?1-SEASON_LOW_DEMAND_PENALTY:1},inventory$1=[cowFeed$1,huggingMachine],inventory=[appleSapling,bananaSapling,mulch,asparagusSeed,blueberrySeed,carrotSeed,cornSeed,grapeSeed,garlicSeed,jalapenoSeed,oliveSeed,onionSeed,peaSeed,potatoSeed,pumpkinSeed,soybeanSeed,spinachSeed,sunflowerSeed,strawberrySeed,sugarcaneSeed,sweetPotatoSeed,tomatoSeed,watermelonSeed,wheatSeed,fertilizer,scarecrow,sprinkler,cowFeed$1,huggingMachine],itemIds$1=new Set(inventory.map(e=>e.id)),purchasableItemMap=[...inventory$1,...inventory].reduce((e,t)=>(e[t.id]=t,e),{}),isItemSoldInShop=({id:e})=>!!purchasableItemMap[e],sellItem=(e,{id:t},n=1)=>{if(n===0)return e;let a=itemsMap[t],{completedAchievements:o,dayCount:s,itemsSold:l,money:u,valueAdjustments:d}=e,{loanBalance:f}=e,m=isItemSoldInShop(a),h=m?getResaleValue(a):getAdjustedItemValue(d,t),v=m?1:getSeasonalDemandMultiplier(a,getCurrentSeason(s)),y=isItemAFarmProduct(a),b=h*(y?getSalePriceMultiplier(o):1)*v,x=0,S=0;for(let e=0;e<n;e++){let e=y?Math.min(f,castToMoney(b*LOAN_GARNISHMENT_RATE)):0;y&&(S+=EXPERIENCE_VALUES.ITEM_SOLD);let t=b-e;f=moneyTotal(f,-e),x=moneyTotal(x,t)}y&&(e=adjustLoan(e,moneyTotal(f,-e.loanBalance)));let C={...l,[t]:(l[t]||0)+n};return e=a.isPlantableCrop?{...e,money:moneyTotal(u,x)}:addRevenue({...e,money:u},x),e=addExperience(e,S),e={...e,itemsSold:C},e=decrementItemFromInventory(e,t,n),e=prependPendingPeerMessage(e,SOLD_ITEM_PEER_NOTIFICATION(``,n,a),`warning`),updateLearnedRecipes(e)},getItemBaseValue=e=>itemsMap[e].value,getKegValue=e=>{let{itemId:t,daysUntilMature:n}=e,a=itemsMap[t];if(n>0)return 0;let o=0,s=0,l=0;return wineService.isWineRecipe(a)?(o=a.value,s=WINE_INTEREST_RATE,l=Math.min(Math.max(-n,1),100)):(o=(a.tier??1)*getItemBaseValue(t),s=KEG_INTEREST_RATE,l=Math.abs(e.daysUntilMature)),o*(1+s)**l},sellKeg=(e,t)=>{let{itemId:n}=t,a=itemsMap[n],{cellarItemsSold:o,completedAchievements:s,itemsSold:l,money:u}=e,{loanBalance:d}=e,f=0,m=getKegValue(t),h=Math.min(d,castToMoney(m*LOAN_GARNISHMENT_RATE)),v=m*getSalePriceMultiplier(s)-h;d=moneyTotal(d,-h),f=moneyTotal(f,v),e=adjustLoan(e,moneyTotal(d,-e.loanBalance));let y={...l,[n]:(l[n]??0)+1},b={...o,[n]:(o[n]??0)+1};return e={...e,itemsSold:y,cellarItemsSold:b},e=addRevenue({...e,money:u},f),e=addExperience(e,EXPERIENCE_VALUES.KEG_SOLD),e=removeKegFromCellar(e,t.id),e=prependPendingPeerMessage(e,SOLD_FERMENTED_ITEM_PEER_NOTIFICATION`${a}`,`warning`),e=updateLearnedRecipes(e),e},{OBSERVE:OBSERVE$3,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$2}=fieldMode,setLightningRod=(e,t,n)=>{if(e.field[n][t]!==null)return e;let{selectedItemId:a}=e;e=decrementItemFromInventory(e,a);let o=e.inventory.some(e=>e.id===a);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:a,fertilizerType:fertilizerType.NONE,lightningStrikesSustained:0})),{...e,fieldMode:o?SET_LIGHTNING_ROD$2:OBSERVE$3,selectedItemId:o?a:``}},{OBSERVE:OBSERVE$2,SET_SCARECROW:SET_SCARECROW$2}=fieldMode,setScarecrow=(e,t,n)=>{if(e.field[n][t]!==null)return e;e=decrementItemFromInventory(e,SCARECROW_ITEM_ID);let a=e.inventory.some(e=>e.id===SCARECROW_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SCARECROW_ITEM_ID)),{...e,fieldMode:a?SET_SCARECROW$2:OBSERVE$2,selectedItemId:a?SCARECROW_ITEM_ID:``}},{OBSERVE:OBSERVE$1,SET_SPRINKLER:SET_SPRINKLER$2}=fieldMode,setSprinkler=(e,t,n)=>{let{field:a}=e;if(a[n][t]!==null)return e;e=decrementItemFromInventory(e,SPRINKLER_ITEM_ID);let o=e.inventory.some(e=>e.id===SPRINKLER_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SPRINKLER_ITEM_ID)),e=processSprinklers(e),{...e,fieldMode:o?SET_SPRINKLER$2:OBSERVE$1,selectedItemId:o?SPRINKLER_ITEM_ID:``}},dollarString=e=>toDecimal(dinero({amount:Math.round(e),currency:USD,scale:0}),({value:e})=>Number(e).toLocaleString(`en-US`,{style:`currency`,currency:`USD`,minimumFractionDigits:0,maximumFractionDigits:0})),getProfitRecord=(e,t,n)=>Math.max(e,getProfit(t,n)),isOctober=()=>new Date().getMonth()===9,percentageString=e=>`${Math.round(e*100)}%`,{SEED:SEED$3}=cropLifeStage,addMoney=(e,t)=>({...e,money:moneyTotal(e.money,t)}),sumOfCropsHarvested=memoize(e=>Object.values(e).reduce((e,t)=>e+t,0),{}),sumOfPartialRecordValues=memoize(e=>Object.values(e).reduce((e,t)=>e+(t||0),0),{}),PIE_RECIPE_IDS=Object.values(recipesMap).filter(e=>e.isPie).map(e=>e.id),sumOfPiesMade=memoize(e=>PIE_RECIPE_IDS.reduce((t,n)=>t+(e[n]||0),0),{}),cowFeed=itemsMap[COW_FEED_ITEM_ID],progressAchievement=(e,t)=>({condition:n=>t(n)>=e,getProgress:n=>({currentValue:t(n),goal:e})}),achievements=[((e=100)=>({id:`plant-crop`,name:`Plant a Crop`,description:`Purchase a seed and plant it in the field.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>e!==null&&doesPlotContainCrop(e)&&getCropLifeStage(e)===SEED$3),reward:t=>addMoney(t,e)}))(),((e=150)=>({id:`water-crop`,name:`Water a Crop`,description:`Water a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>doesPlotContainCrop(e)&&!!e.wasWateredToday),reward:t=>addMoney(t,e)}))(),((e=200)=>({id:`harvest-crop`,name:`Harvest a Crop`,description:`Harvest a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>sumOfCropsHarvested(e.cropsHarvested)>=1,reward:t=>addMoney(t,e)}))(),((e=EXPERIENCE_VALUES.LOAN_PAID_OFF)=>({id:`financial-freedom`,name:`Financial Freedom`,description:`Pay off your initial loan from the bank.`,rewardDescription:`${e} experience points`,condition:e=>e.loanBalance===0,reward:t=>addExperience(t,e)}))(),((e=1e4)=>({id:`unlock-crop-price-guide`,name:`Prove Yourself as a Farmer`,description:`Show that you can run a farm by earning at least ${dollarString(e)}. Proven farmers get access to the Crop Price Guide, an invaluable tool for making better buying and selling decisions!`,rewardDescription:`Crop Price Guide`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=15)=>({id:`purchase-cow-pen`,name:`Purchase a Cow Pen`,description:`Construct any size cow pen to let your bovine buddies moo-ve on in!`,rewardDescription:`${e} units of ${cowFeed.name}`,condition:e=>e.purchasedCowPen>0,reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=100,t=Object.keys(standardCowColors).length)=>({id:`purchase-all-cow-colors`,name:`Cows of Many Colors`,description:`Show that you love all cows and purchase one of every color.`,rewardDescription:`${e} units of ${cowFeed.name}`,...progressAchievement(t,e=>Object.values(standardCowColors).filter(t=>(e.cowColorsPurchased[t]||0)>0).length),reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=150)=>({id:`play-during-october`,name:`Halloween Harvest`,description:`Play Farmhand in October and get the gift of the season.`,rewardDescription:`${e} units of ${itemsMap.jackolantern.name}`,condition:()=>isOctober(),reward:t=>addItemToInventory(t,itemsMap.jackolantern,e,!0)}))(),((e=100,t=1e4)=>({id:`sell-10000-jack-o-lanterns`,name:`Spooky Pumpkin Patch`,description:`Sell ${integerString(t)} units of ${itemsMap.jackolantern.name}. That's enough to fill a whole pumpkin patch!`,rewardDescription:`${e} units of ${itemsMap.scarecrow.name}`,...progressAchievement(t,e=>e.itemsSold.jackolantern||0),reward:t=>addItemToInventory(t,itemsMap.scarecrow,e,!0)}))(),((e=5e3,t=25)=>({id:`daily-profit-1`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap.fertilizer.name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap.fertilizer,t,!0)}))(),((e=15e3,t=50)=>({id:`daily-profit-2`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`onion-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`onion-seed`],t,!0)}))(),((e=5e4,t=100)=>({id:`daily-profit-3`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`tomato-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`tomato-seed`],t,!0)}))(),((e=2500,t=35,n=itemsMap[`pumpkin-seed`])=>({id:`profit-average-1`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=100,n=itemsMap[`potato-seed`])=>({id:`profit-average-2`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=25e3,t=250,n=itemsMap[`soybean-seed`])=>({id:`profit-average-3`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=5e4,t=300,n=itemsMap[`chocolate-milk`])=>({id:`profit-average-4`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=15e4,t=500,n=itemsMap[`rainbow-milk-3`])=>({id:`profit-average-5`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e6,t=1e3,n=itemsMap.rainbowCheese)=>({id:`profit-average-6`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=itemsMap[`milk-3`],n=5e3,a=itemsMap.fertilizer)=>({id:`sale-goal-1`,name:`Dairy Master`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e3,t=itemsMap[`rainbow-milk-2`],n=500,a=itemsMap.scarecrow)=>({id:`sale-goal-2`,name:`A Big Average Rainbow`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e4,t=itemsMap.burger,n=5e3)=>({id:`sale-goal-3`,name:`Burger Master`,description:`Sell ${integerString(e)} ${t.name} units.`,rewardDescription:`${integerString(n)} additional inventory spaces`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>({...e,inventoryLimit:e.inventoryLimit+n})}))(),((e=1e3,t=100)=>({id:`steady-stasher`,name:`Steady Stasher`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e4,t=1e3)=>({id:`heavy-hoarder`,name:`Heavy Hoarder`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e5,t=1e4)=>({id:`pro-prepper`,name:`Pro Prepper`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=5e5)=>({id:`i-am-rich-1`,name:`I am Rich!`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[0])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e6)=>({id:`i-am-rich-2`,name:`Millionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[1])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e9)=>({id:`i-am-rich-3`,name:`Billionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[2])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=Math.floor(Math.PI*1e6),t=1e3)=>({id:`lord-of-the-pies`,name:`Lord of the Pies`,description:`Have ${dollarString(e)} on hand.`,rewardDescription:`${integerString(t)} units of ${itemsMap[`pumpkin-pie`].name}`,condition:t=>Math.floor(t.money)===e,reward:e=>addItemToInventory(e,itemsMap[`pumpkin-pie`],t,!0)}))(),{id:`gold-digger`,name:`Gold Digger`,description:`Dig up your first piece of gold.`,rewardDescription:`A Gold Ingot`,condition:e=>!!e.inventory.find(e=>e.id===`gold-ore`),reward:e=>addItemToInventory(e,itemsMap[`gold-ingot`],1,!0)},((e=1e3,t=50)=>({id:`orchardist`,name:`Orchardist`,description:`Pick ${integerString(e)} fruits from trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`apple-sapling`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.treeFruitsHarvested)),reward:e=>addItemToInventory(e,itemsMap[`apple-sapling`],t,!0)}))(),((e=100,t=1e5)=>({id:`piemaker`,name:`Piemaker`,description:`Make ${integerString(e)} pies.`,rewardDescription:dollarString(t),...progressAchievement(e,e=>sumOfPiesMade(e.recipesMade)),reward:e=>addMoney(e,t)}))(),((e=250,t=500)=>({id:`deforestation`,name:`Deforestation`,description:`Chop down ${integerString(e)} trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap.wood.name}`,...progressAchievement(e,e=>e.treesChopped),reward:e=>addItemToInventory(e,itemsMap.wood,t,!0)}))(),((e=100,t=25)=>({id:`landscaper`,name:`Landscaper`,description:`Spread ${integerString(e)} bags of mulch (of any type) on trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`rainbow-mulch`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.mulchApplied)),reward:e=>addItemToInventory(e,itemsMap[`rainbow-mulch`],t,!0)}))()],achievementsMap=achievements.reduce((e,t)=>(e[t.id]=t,e),{}),updateAchievements=(e,t)=>achievements.reduce((e,n)=>(!e.completedAchievements[n.id]&&n.condition(e,t)&&(e={...n.reward(e),completedAchievements:{...e.completedAchievements,[n.id]:!0}},e=showNotification(e,ACHIEVEMENT_COMPLETED(``,{name:n.name,rewardDescription:n.rewardDescription}),`success`)),e),e),updatePeer=(e,t,n,a)=>{let o={...e.peers},s=o[a]?.cowOfferedForTrade?.id,l=n.cowOfferedForTrade?.id,u=l&&s!==l;o[a]=n;let{pendingPeerMessages:d=[]}=n;return u&&(e=showNotification(e,NEW_COW_OFFERED_FOR_TRADE`${n}`,`info`,()=>{t.openDialogView(dialogView.ONLINE_PEERS)})),{...e,peers:o,latestPeerMessages:[...d,...e.latestPeerMessages].slice(0,30)}},upgradeTool=(e,t)=>{if(!t.toolType||!t.level)return e;let n=e;if(e=consumeIngredients(e,{...t,ingredients:t.ingredients||{}},1,EXPERIENCE_VALUES.FORGE_RECIPE_MADE),e===n)return e;e=addItemToInventory(e,t,1);let a=upgrades[t.toolType],o=e.toolLevels[t.toolType],s=a?.[o]?.name||``;return e.toolLevels[t.toolType]=t.level,e=showNotification(e,TOOL_UPGRADED_NOTIFICATION(``,s,t.name)),{...e}},waterAllPlots=e=>waterField(e),waterPlot=(e,t,n)=>{let a=e.field[n][t];return a&&getPlotContentType(a)===itemType.CROP?modifyFieldPlotAt(e,t,n,e=>e&&{...e,wasWateredToday:!0}):e},withdrawCow=(e,t)=>{let{cowIdOfferedForTrade:n}=e;return t===n&&(e={...e,cowIdOfferedForTrade:``}),e},reducers_exports=__exportAll({addCowToInventory:()=>addCowToInventory,addExperience:()=>addExperience,addItemToInventory:()=>addItemToInventory,addPeer:()=>addPeer,addRevenue:()=>addRevenue,adjustLoan:()=>adjustLoan,applyPrecipitation:()=>applyPrecipitation,changeCowAutomaticHugState:()=>changeCowAutomaticHugState,changeCowBreedingPenResident:()=>changeCowBreedingPenResident,changeCowName:()=>changeCowName,chopForestPlot:()=>chopForestPlot,clearPlot:()=>clearPlot,computeCowInventoryForNextDay:()=>computeCowInventoryForNextDay,computeStateForNextDay:()=>computeStateForNextDay,createPriceEvent:()=>createPriceEvent,decrementItemFromInventory:()=>decrementItemFromInventory,fertilizePlot:()=>fertilizePlot,forRange:()=>forRange,generatePriceEvents:()=>generatePriceEvents,harvestForestPlot:()=>harvestForestPlot,harvestPlot:()=>harvestPlot,hugCow:()=>hugCow,incrementPlotContentAge:()=>incrementPlotContentAge,makeFermentationRecipe:()=>makeFermentationRecipe,makeRecipe:()=>makeRecipe,makeWine:()=>makeWine,minePlot:()=>minePlot,modifyCow:()=>modifyCow,modifyFieldPlotAt:()=>modifyFieldPlotAt,modifyForestPlotAt:()=>modifyForestPlotAt,mulchForestPlot:()=>mulchForestPlot,offerCow:()=>offerCow,plantInPlot:()=>plantInPlot,plantTreeInPlot:()=>plantTreeInPlot,prependPendingPeerMessage:()=>prependPendingPeerMessage,processCowAttrition:()=>processCowAttrition,processCowBreeding:()=>processCowBreeding,processCowFertilizerProduction:()=>processCowFertilizerProduction,processFeedingCows:()=>processFeedingCows,processField:()=>processField,processForest:()=>processForest,processLevelUp:()=>processLevelUp,processMilkingCows:()=>processMilkingCows,processNerfs:()=>processNerfs,processSprinklers:()=>processSprinklers,processWeather:()=>processWeather,purchaseCellar:()=>purchaseCellar,purchaseCombine:()=>purchaseCombine,purchaseComposter:()=>purchaseComposter,purchaseCow:()=>purchaseCow,purchaseCowPen:()=>purchaseCowPen,purchaseField:()=>purchaseField,purchaseForest:()=>purchaseForest,purchaseItem:()=>purchaseItem,purchaseSmelter:()=>purchaseSmelter,purchaseStorageExpansion:()=>purchaseStorageExpansion,purchaseWoodChipper:()=>purchaseWoodChipper,removeCowFromInventory:()=>removeCowFromInventory,removeFieldPlotAt:()=>removeFieldPlotAt,removeKegFromCellar:()=>removeKegFromCellar,removePeer:()=>removePeer,rotateNotificationLogs:()=>rotateNotificationLogs,selectCow:()=>selectCow,sellCow:()=>sellCow,sellItem:()=>sellItem,sellKeg:()=>sellKeg,setLightningRod:()=>setLightningRod,setScarecrow:()=>setScarecrow,setSprinkler:()=>setSprinkler,showNotification:()=>showNotification,spawnWeeds:()=>spawnWeeds,unlockTool:()=>unlockTool,updateAchievements:()=>updateAchievements,updateFinancialRecords:()=>updateFinancialRecords,updateInventoryRecordsForNextDay:()=>updateInventoryRecordsForNextDay,updateLearnedRecipes:()=>updateLearnedRecipes,updatePeer:()=>updatePeer,updatePlotShoveledState:()=>updatePlotShoveledState,updatePriceEvents:()=>updatePriceEvents,upgradeTool:()=>upgradeTool,waterAllPlots:()=>waterAllPlots,waterField:()=>waterField,waterPlot:()=>waterPlot,withdrawCow:()=>withdrawCow}),{CHOP:CHOP$2,CLEANUP:CLEANUP$4,FERTILIZE:FERTILIZE$1,HARVEST:HARVEST$3,HARVEST_FRUIT:HARVEST_FRUIT$2,MINE:MINE$3,PLANT:PLANT$2,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$1,SET_SCARECROW:SET_SCARECROW$1,SET_SPRINKLER:SET_SPRINKLER$1,WATER:WATER$3}=fieldMode,{GROWN:GROWN$4}=cropLifeStage,ui_events_default={handleItemPurchaseClick(e,t=1){this.purchaseItem(e,t)},handleMakeRecipeClick(e,t=1){this.makeRecipe(e,t)},handleMakeFermentationRecipeClick(e,t=1){this.makeFermentationRecipe(e,t)},handleMakeWineClick(e,t=1){this.makeWine(e,t)},handleSellKegClick(e){this.sellKeg(e)},handleThrowAwayKegClick(e){this.removeKegFromCellar(e.id)},handleUpgradeTool(e){this.upgradeTool(e)},handleCowPurchaseClick(e){this.purchaseCow(e)},handleCowSellClick(e){this.sellCow(e)},handleCowTradeClick(e){this.tradeForPeerCow(e)},handleCowAutomaticHugChange({target:{checked:e}},t){this.changeCowAutomaticHugState(t,e)},handleCowBreedChange({target:e},t){let{checked:n}=e;this.changeCowBreedingPenResident(t,n)},handleCowHugClick(e){this.hugCow(e.id)},handleCowOfferClick(e){this.offerCow(e.id)},handleCowWithdrawClick(e){this.withdrawCow(e.id)},handleCowNameInputChange(e,t){this.changeCowName(t.id,e)},handleItemSellClick(e,t=1){this.sellItem(e,t)},handleViewChange({target:e}){let{value:t}=e;this.setState({stageFocus:t})},handleViewChangeButtonClick(e){this.setState({stageFocus:e})},handleFieldModeSelect(e){this.setState(({selectedItemId:t})=>({selectedItemId:e!==PLANT$2||TOOLBELT_FIELD_MODES.has(e)?``:t,selectedForestItemId:``,fieldMode:e}))},handleItemSelectClick({id:e,enablesFieldMode:t}){this.setState({fieldMode:t,selectedItemId:e})},handleForestItemSelectClick({id:e}){this.setState({fieldMode:PLANT$2,selectedForestItemId:e})},handlePlotClick(e,t){let{fieldMode:n,hoveredPlotRangeSize:a,selectedItemId:o}=this.state;n===PLANT$2?this.forRange(plantInPlot,a,e,t,o):n===HARVEST$3?this.forRange(harvestPlot,a,e,t):n===MINE$3?this.forRange(minePlot,a,e,t):n===CLEANUP$4?this.forRange(clearPlot,a,e,t):n===WATER$3?this.forRange(waterPlot,a,e,t):n===FERTILIZE$1?this.forRange(fertilizePlot,a,e,t):n===SET_SPRINKLER$1?this.setSprinkler(e,t):n===SET_SCARECROW$1?this.setScarecrow(e,t):n===SET_LIGHTNING_ROD$1&&this.setLightningRod(e,t)},handleFieldActionRangeChange(e){this.setState(()=>({hoveredPlotRangeSize:e}))},handleClickEndDayButton(){this.incrementDay(),document.activeElement?.blur()},handleAddMoneyClick(e){this.setState(({money:t})=>({money:moneyTotal(t,e)}))},handleClearPersistedDataClick(){this.clearPersistedData()},handleWaterAllPlotsClick(){this.waterAllPlots(this.state)},handleFieldPurchase(e){this.purchaseField(e)},handleForestPurchase(e){this.purchaseForest(e)},handleForestPlotClick(e,t){let n=this.state.forest[t]?.[e];if(this.state.fieldMode===CHOP$2){isPlantedTree(n)&&this.chopForestPlot(e,t);return}if(this.state.fieldMode===FERTILIZE$1){isPlantedTree(n)&&this.mulchForestPlot(e,t);return}if(!n){let{selectedForestItemId:n,inventory:a}=this.state;n&&a.some(({id:e})=>e===n)&&this.plantTreeInPlot(e,t,n);return}this.state.fieldMode===HARVEST_FRUIT$2&&isPlantedTree(n)&&getTreeLifeStage(n)===GROWN$4&&this.harvestForestPlot(e,t)},handleCombinePurchase(e){this.purchaseCombine(e)},handleComposterPurchase(e){this.purchaseComposter(e)},handleSmelterPurchase(e){this.purchaseSmelter(e)},handleWoodChipperPurchase(e){this.purchaseWoodChipper(e)},handleCowPenPurchase(e){this.purchaseCowPen(e)},handleCellarPurchase(e){this.purchaseCellar(e)},handleStorageExpansionPurchase(){this.purchaseStorageExpansion()},handleMenuToggle(e=void 0){this.setState(({isMenuOpen:t})=>({isMenuOpen:e??!t}))},handleClickNextMenuButton(){this.focusNextView()},handleClickPreviousMenuButton(){this.focusPreviousView()},handleCowSelect(e){this.selectCow(e)},handleCowClick(e){this.selectCow(e),this.hugCow(e.id)},handleCowPenUnmount(){this.setState({selectedCowId:``})},handleClickDialogViewButton(e){this.openDialogView(e)},handleCloseDialogView(){this.state.isAwaitingCowTradeRequest||this.closeDialogView()},handleDialogViewExited(){this.setState({currentDialogView:dialogView.NONE})},handleClickLoanPaydownButton(e){this.adjustLoan(-e)},handleClickTakeOutLoanButton(e){this.adjustLoan(e)},handleExportDataClick(){let e=new Blob([JSON.stringify(reduceByPersistedKeys(this.state),null,2)],{type:`application/json;charset=utf-8`}),[t]=new Date().toISOString().split(`T`);(0,import_FileSaver_min.saveAs)(e,`farmhand-${t}.json`)},handleImportDataClick([e]){let[,t]=e,n=new FileReader;n.addEventListener(`loadend`,e=>{try{let t=e.target,n=String(t?.result),a=reduceByPersistedKeys(transformStateDataForImport(JSON.parse(n)));if(Object.keys(a).some(e=>typeof this.state[e]!=typeof a[e]))throw Error(INVALID_DATA_PROVIDED);this.setState({...transformStateDataForImport({...this.createInitialState?this.createInitialState():{},...a}),hasBooted:!0}),this.showNotification(`Data loaded!`,`success`)}catch(e){console.error(e),this.showNotification(e.message,`error`)}}),n.readAsText(t.slice())},async handleSaveButtonClick(){await this.persistState(),this.showNotification(PROGRESS_SAVED_MESSAGE,`info`)},handleFarmNameUpdate(e){this.setState({farmName:e})},handleCombineEnabledChange(e,t){this.setState({isCombineEnabled:t})},handleUseAlternateEndDayButtonPositionChange(e,t){this.setState({useAlternateEndDayButtonPosition:t})},handleAllowCustomPeerCowNamesChange(e,t){this.setState({allowCustomPeerCowNames:t})},handleShowHomeScreenChange(e,t){this.state.stageFocus===stageFocusType.HOME&&!t&&this.focusNextView(),this.setState({showHomeScreen:t})},handleShowNotificationsChange({target:{checked:e}}){this.setState({showNotifications:e})},handleClickNotificationIndicator(){this.openDialogView(dialogView.FARMERS_LOG)},handleOnlineToggleChange(e){e||this.showNotification(DISCONNECTING_FROM_SERVER,`info`),this.setState(({room:t,cowIdOfferedForTrade:n})=>e?{redirect:withCurrentHashQuery(`/online/${encodeURIComponent(t)}`),cowIdOfferedForTrade:n,isOnline:!0}:{redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``})},handleRoomChange(e){this.setState(()=>({room:e,redirect:withCurrentHashQuery(`/online/${encodeURIComponent(e.trim()||`global`)}`)}))},handleActivePlayerButtonClick(){this.openDialogView(dialogView.ONLINE_PEERS)},handleRNGSeedChange(e){let{origin:t,pathname:n,search:a,hash:o}=import_window.default.location,s=new URLSearchParams(a),l=e.trim();l===``?(randomNumberService.unseedRandomNumber(),s.delete(`seed`),this.showNotification(`Random seed reset`,`info`)):(randomNumberService.seedRandomNumber(l),s.set(`seed`,l),this.showNotification(`Random seed set to "${l}"`,`success`));let u=s.toString(),d=`${t}${n}${u.length>0?`?${u}`:``}${o}`;import_window.default.history.replaceState({},``,d)},handleChatRoomOpenStateChange(e){this.setState({isChatOpen:e})},handleGameUpdateAvailable(e){this.showNotification(UPDATE_AVAILABLE,`success`,()=>{e(!0)})}},createContextData=()=>({gameState:{viewTitle:``,viewList:[],features:{},blockInput:!1,shopInventory:[],isChatAvailable:!1,playerInventory:[],levelEntitlements:{items:{},tools:{},sprinklerRange:0,stageFocusType:{}},fieldToolInventory:[],mulchInventory:[],plantableCropInventory:[],plantableTreeInventory:[],playerInventoryQuantities:{},activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:`NONE`,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:0},cowInventory:[],cowColorsPurchased:{BLUE:0,BROWN:0,GREEN:0,ORANGE:0,PURPLE:0,RAINBOW:0,WHITE:0,YELLOW:0},cowIdOfferedForTrade:``,cowsSold:{},cowsTraded:0,cowTradeTimeoutId:null,cropsHarvested:{ASPARAGUS:0,BLUEBERRY:0,CARROT:0,CORN:0,GARLIC:0,GRAPE:0,JALAPENO:0,OLIVE:0,ONION:0,PEA:0,POTATO:0,PUMPKIN:0,SOYBEAN:0,SPINACH:0,SUNFLOWER:0,STRAWBERRY:0,SWEET_POTATO:0,TOMATO:0,WATERMELON:0,WHEAT:0,WEED:0},dayCount:0,experience:0,farmName:``,field:[[]],forest:[[]],treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},fieldMode:`OBSERVE`,getCowAccept:()=>{},getCowReject:()=>{},getCowTradeRequest:()=>{},getPeerMetadata:()=>{},hasBooted:!0,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:-1,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:``,inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:-1,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!0,isMenuOpen:!1,itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:!0,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:0,loansTakenOut:0,money:0,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendCowAccept:()=>{},sendCowReject:()=>{},sendCowTradeRequest:()=>{},sendPeerMetadata:()=>{},selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:``,showHomeScreen:!0,showNotifications:!0,stageFocus:`HOME`,todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{AXE:`UNAVAILABLE`,PICKER_POLE:`UNAVAILABLE`,SCYTHE:`DEFAULT`,SHOVEL:`DEFAULT`,HOE:`DEFAULT`,WATERING_CAN:`DEFAULT`},valueAdjustments:{},version:`1.0.0`,todaysNotifications:[],useAlternateEndDayButtonPosition:!1},handlers:{...ui_events_default,debounced:{...ui_events_default}}}),FarmhandContext=(0,import_react$24.createContext)(createContextData()),getDayOfSeason=e=>(e-1)%15+1,usePrefersReducedMotion=()=>{let[e,t]=(0,import_react$24.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,import_react$24.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=e=>{t(e.matches)};return e.addEventListener?e.addEventListener(`change`,n):`addListener`in e&&e.addListener(n),()=>{e.removeEventListener?e.removeEventListener(`change`,n):`removeListener`in e&&e.removeListener(n)}},[]),e},MoneyDisplay=({money:e})=>{let t=`rgb(255, 255, 255)`,n=usePrefersReducedMotion(),[a,o]=(0,import_react$24.useState)(e),[s,l]=(0,import_react$24.useState)(t),u=(0,import_react$24.useRef)(e),d=(0,import_react$24.useRef)(null);return(0,import_react$24.useEffect)(()=>{if(d.current?.cancel(),d.current=null,n||u.current===e){u.current=e,o(e),l(t);return}let a=e>u.current?`rgb(0, 255, 0)`:`rgb(255, 0, 0)`;return d.current=(0,import_shifty.tween)({easing:`easeOutQuad`,duration:750,render:({color:e,money:t})=>{l(String(e)),o(Number(t))},from:{color:a,money:u.current},to:{color:t,money:e}}),u.current=e,()=>{d.current?.cancel(),d.current=null}},[e,n]),(0,import_jsx_runtime.jsx)(`span`,{style:{color:s},children:moneyString(a)})},AppBar=({dayCount:e,handleClickNotificationIndicator:t,money:n,showNotifications:a,todaysNotifications:o,viewTitle:s,areAnyNotificationsErrors:l=o.some(({severity:e})=>e===`error`)})=>(0,import_jsx_runtime.jsx)(AppBar$1,{className:`AppBar top-level`,position:`fixed`,sx:{"& .toolbar":{display:`flex`,"& h2":{color:`#fff`,fontFamily:`"Francois One", monospace`,fontSize:`1.2em`},"& .stage-header":{display:`none`,marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`block`}},"& .season-display":{marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{position:`absolute`,left:`50%`,marginLeft:0,transform:`translateX(-50%)`}},"& .money-display":{position:`absolute`,right:`1em`},"& .notification-indicator-container":{display:`flex`,"& .error-indicator":{marginLeft:`1em`}}}},children:(0,import_jsx_runtime.jsxs)(Toolbar,{className:`toolbar`,children:[!a&&(0,import_jsx_runtime.jsxs)(`div`,{className:`notification-indicator-container`,onClick:t,children:[(0,import_jsx_runtime.jsx)(Typography,{children:(0,import_jsx_runtime.jsx)(StepIcon,{icon:o.length})}),l&&(0,import_jsx_runtime.jsx)(Typography,{className:`error-indicator`,children:(0,import_jsx_runtime.jsx)(StepIcon,{error:!0,icon:``})})]}),(0,import_jsx_runtime.jsx)(Typography,{className:`stage-header`,variant:`h2`,children:s}),(0,import_jsx_runtime.jsx)(Typography,{className:`season-display`,variant:`h2`,children:`Day ${getDayOfSeason(e)} of ${seasonNameMap[getCurrentSeason(e)]}`}),(0,import_jsx_runtime.jsx)(Typography,{className:`money-display`,variant:`h2`,children:(0,import_jsx_runtime.jsx)(MoneyDisplay,{money:n})})]})});AppBar.propTypes={dayCount:import_prop_types$1.number.isRequired,handleClickNotificationIndicator:import_prop_types$1.func.isRequired,money:import_prop_types$1.number.isRequired,showNotifications:import_prop_types$1.bool.isRequired,todaysNotifications:import_prop_types$1.array.isRequired,viewTitle:import_prop_types$1.string.isRequired};function Consumer$29(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(AppBar,{...t,...n,...e})})}var require_lib$5=__commonJSMin(((e,t)=>{function n(e){return e&&typeof e==`object`&&`default`in e?e.default:e}var a=require_react(),o=n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var u=!!(typeof window<`u`&&window.document&&window.document.createElement);function d(e,t,n){if(typeof e!=`function`)throw Error(`Expected reducePropsToState to be a function.`);if(typeof t!=`function`)throw Error(`Expected handleStateChangeOnClient to be a function.`);if(n!==void 0&&typeof n!=`function`)throw Error(`Expected mapStateOnServer to either be undefined or a function.`);function d(e){return e.displayName||e.name||`Component`}return function(f){if(typeof f!=`function`)throw Error(`Expected WrappedComponent to be a React component.`);var m=[],h;function v(){h=e(m.map(function(e){return e.props})),y.canUseDOM?t(h):n&&(h=n(h))}var y=function(e){l(t,e);function t(){return e.apply(this,arguments)||this}t.peek=function(){return h},t.rewind=function(){if(t.canUseDOM)throw Error(`You may only call rewind() on the server. Call peek() to read the current state.`);var e=h;return h=void 0,m=[],e};var n=t.prototype;return n.UNSAFE_componentWillMount=function(){m.push(this),v()},n.componentDidUpdate=function(){v()},n.componentWillUnmount=function(){var e=m.indexOf(this);m.splice(e,1),v()},n.render=function(){return o.createElement(f,this.props)},t}(a.PureComponent);return s(y,`displayName`,`SideEffect(`+d(f)+`)`),s(y,`canUseDOM`,u),y}}t.exports=d})),require_react_fast_compare=__commonJSMin(((e,t)=>{var n=typeof Element<`u`,a=typeof Map==`function`,o=typeof Set==`function`,s=typeof ArrayBuffer==`function`&&!!ArrayBuffer.isView;function l(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var u,d,f;if(Array.isArray(e)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(!l(e[d],t[d]))return!1;return!0}var m;if(a&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;for(m=e.entries();!(d=m.next()).done;)if(!l(d.value[1],t.get(d.value[0])))return!1;return!0}if(o&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;return!0}if(s&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(e[d]!==t[d])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf==`function`&&typeof t.valueOf==`function`)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString==`function`&&typeof t.toString==`function`)return e.toString()===t.toString();if(f=Object.keys(e),u=f.length,u!==Object.keys(t).length)return!1;for(d=u;d--!==0;)if(!Object.prototype.hasOwnProperty.call(t,f[d]))return!1;if(n&&e instanceof Element)return!1;for(d=u;d--!==0;)if(!((f[d]===`_owner`||f[d]===`__v`||f[d]===`__o`)&&e.$$typeof)&&!l(e[f[d]],t[f[d]]))return!1;return!0}return e!==e&&t!==t}t.exports=function(e,t){try{return l(e,t)}catch(e){if((e.message||``).match(/stack|recursion/i))return console.warn(`react-fast-compare cannot handle circular refs`),!1;throw e}}})),import_lib$1=__toESM(require_lib$5()),import_react_fast_compare=__toESM(require_react_fast_compare()),import_object_assign=__toESM(require_object_assign()),ATTRIBUTE_NAMES={BODY:`bodyAttributes`,HTML:`htmlAttributes`,TITLE:`titleAttributes`},TAG_NAMES={BASE:`base`,BODY:`body`,HEAD:`head`,HTML:`html`,LINK:`link`,META:`meta`,NOSCRIPT:`noscript`,SCRIPT:`script`,STYLE:`style`,TITLE:`title`};Object.keys(TAG_NAMES).map(function(e){return TAG_NAMES[e]});var TAG_PROPERTIES={CHARSET:`charset`,CSS_TEXT:`cssText`,HREF:`href`,HTTPEQUIV:`http-equiv`,INNER_HTML:`innerHTML`,ITEM_PROP:`itemprop`,NAME:`name`,PROPERTY:`property`,REL:`rel`,SRC:`src`,TARGET:`target`},REACT_TAG_MAP={accesskey:`accessKey`,charset:`charSet`,class:`className`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,"http-equiv":`httpEquiv`,itemprop:`itemProp`,tabindex:`tabIndex`},HELMET_PROPS={DEFAULT_TITLE:`defaultTitle`,DEFER:`defer`,ENCODE_SPECIAL_CHARACTERS:`encodeSpecialCharacters`,ON_CHANGE_CLIENT_STATE:`onChangeClientState`,TITLE_TEMPLATE:`titleTemplate`},HTML_TAG_MAP=Object.keys(REACT_TAG_MAP).reduce(function(e,t){return e[REACT_TAG_MAP[t]]=t,e},{}),SELF_CLOSING_TAGS=[TAG_NAMES.NOSCRIPT,TAG_NAMES.SCRIPT,TAG_NAMES.STYLE],HELMET_ATTRIBUTE=`data-react-helmet`,_typeof$3=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},classCallCheck=function(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)},createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,`value`in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},inherits=function(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},objectWithoutProperties$1=function(e,t){var n={};for(var a in e)t.indexOf(a)>=0||Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n},possibleConstructorReturn=function(e,t){if(!e)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return t&&(typeof t==`object`||typeof t==`function`)?t:e},encodeSpecialCharacters=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!1?String(e):String(e).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)},getTitleFromPropsList=function(e){var t=getInnermostProperty(e,TAG_NAMES.TITLE),n=getInnermostProperty(e,HELMET_PROPS.TITLE_TEMPLATE);if(n&&t)return n.replace(/%s/g,function(){return Array.isArray(t)?t.join(``):t});var a=getInnermostProperty(e,HELMET_PROPS.DEFAULT_TITLE);return t||a||void 0},getOnChangeClientState=function(e){return getInnermostProperty(e,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},getAttributesFromPropsList=function(e,t){return t.filter(function(t){return t[e]!==void 0}).map(function(t){return t[e]}).reduce(function(e,t){return _extends({},e,t)},{})},getBaseTagFromPropsList=function(e,t){return t.filter(function(e){return e[TAG_NAMES.BASE]!==void 0}).map(function(e){return e[TAG_NAMES.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var a=Object.keys(n),o=0;o<a.length;o++){var s=a[o].toLowerCase();if(e.indexOf(s)!==-1&&n[s])return t.concat(n)}return t},[])},getTagsFromPropsList=function(e,t,n){var a={};return n.filter(function(t){return Array.isArray(t[e])?!0:(t[e]!==void 0&&warn$1(`Helmet: `+e+` should be of type "Array". Instead found type "`+_typeof$3(t[e])+`"`),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var o={};n.filter(function(e){for(var n=void 0,s=Object.keys(e),l=0;l<s.length;l++){var u=s[l],d=u.toLowerCase();t.indexOf(d)!==-1&&!(n===TAG_PROPERTIES.REL&&e[n].toLowerCase()===`canonical`)&&!(d===TAG_PROPERTIES.REL&&e[d].toLowerCase()===`stylesheet`)&&(n=d),t.indexOf(u)!==-1&&(u===TAG_PROPERTIES.INNER_HTML||u===TAG_PROPERTIES.CSS_TEXT||u===TAG_PROPERTIES.ITEM_PROP)&&(n=u)}if(!n||!e[n])return!1;var f=e[n].toLowerCase();return a[n]||(a[n]={}),o[n]||(o[n]={}),a[n][f]?!1:(o[n][f]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var s=Object.keys(o),l=0;l<s.length;l++){var u=s[l];a[u]=(0,import_object_assign.default)({},a[u],o[u])}return e},[]).reverse()},getInnermostProperty=function(e,t){for(var n=e.length-1;n>=0;n--){var a=e[n];if(a.hasOwnProperty(t))return a[t]}return null},reducePropsToState=function(e){return{baseTag:getBaseTagFromPropsList([TAG_PROPERTIES.HREF,TAG_PROPERTIES.TARGET],e),bodyAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY,e),defer:getInnermostProperty(e,HELMET_PROPS.DEFER),encode:getInnermostProperty(e,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML,e),linkTags:getTagsFromPropsList(TAG_NAMES.LINK,[TAG_PROPERTIES.REL,TAG_PROPERTIES.HREF],e),metaTags:getTagsFromPropsList(TAG_NAMES.META,[TAG_PROPERTIES.NAME,TAG_PROPERTIES.CHARSET,TAG_PROPERTIES.HTTPEQUIV,TAG_PROPERTIES.PROPERTY,TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:getTagsFromPropsList(TAG_NAMES.NOSCRIPT,[TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:getOnChangeClientState(e),scriptTags:getTagsFromPropsList(TAG_NAMES.SCRIPT,[TAG_PROPERTIES.SRC,TAG_PROPERTIES.INNER_HTML],e),styleTags:getTagsFromPropsList(TAG_NAMES.STYLE,[TAG_PROPERTIES.CSS_TEXT],e),title:getTitleFromPropsList(e),titleAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE,e)}},rafPolyfill=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){rafPolyfill(t)},0)}}(),cafPolyfill=function(e){return clearTimeout(e)},requestAnimationFrame$1=typeof window<`u`?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||rafPolyfill:{}.requestAnimationFrame||rafPolyfill,cancelAnimationFrame$1=typeof window<`u`?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||cafPolyfill:{}.cancelAnimationFrame||cafPolyfill,warn$1=function(e){return console&&typeof console.warn==`function`&&console.warn(e)},_helmetCallback=null,handleClientStateChange=function(e){_helmetCallback&&cancelAnimationFrame$1(_helmetCallback),e.defer?_helmetCallback=requestAnimationFrame$1(function(){commitTagChanges(e,function(){_helmetCallback=null})}):(commitTagChanges(e),_helmetCallback=null)},commitTagChanges=function(e,t){var n=e.baseTag,a=e.bodyAttributes,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.onChangeClientState,f=e.scriptTags,m=e.styleTags,h=e.title,v=e.titleAttributes;updateAttributes(TAG_NAMES.BODY,a),updateAttributes(TAG_NAMES.HTML,o),updateTitle(h,v);var y={baseTag:updateTags(TAG_NAMES.BASE,n),linkTags:updateTags(TAG_NAMES.LINK,s),metaTags:updateTags(TAG_NAMES.META,l),noscriptTags:updateTags(TAG_NAMES.NOSCRIPT,u),scriptTags:updateTags(TAG_NAMES.SCRIPT,f),styleTags:updateTags(TAG_NAMES.STYLE,m)},b={},x={};Object.keys(y).forEach(function(e){var t=y[e],n=t.newTags,a=t.oldTags;n.length&&(b[e]=n),a.length&&(x[e]=y[e].oldTags)}),t&&t(),d(e,b,x)},flattenArray=function(e){return Array.isArray(e)?e.join(``):e},updateTitle=function(e,t){e!==void 0&&document.title!==e&&(document.title=flattenArray(e)),updateAttributes(TAG_NAMES.TITLE,t)},updateAttributes=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var a=n.getAttribute(HELMET_ATTRIBUTE),o=a?a.split(`,`):[],s=[].concat(o),l=Object.keys(t),u=0;u<l.length;u++){var d=l[u],f=t[d]||``;n.getAttribute(d)!==f&&n.setAttribute(d,f),o.indexOf(d)===-1&&o.push(d);var m=s.indexOf(d);m!==-1&&s.splice(m,1)}for(var h=s.length-1;h>=0;h--)n.removeAttribute(s[h]);o.length===s.length?n.removeAttribute(HELMET_ATTRIBUTE):n.getAttribute(HELMET_ATTRIBUTE)!==l.join(`,`)&&n.setAttribute(HELMET_ATTRIBUTE,l.join(`,`))}},updateTags=function(e,t){var n=document.head||document.querySelector(TAG_NAMES.HEAD),a=n.querySelectorAll(e+`[`+HELMET_ATTRIBUTE+`]`),o=Array.prototype.slice.call(a),s=[],l=void 0;return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var a in t)if(t.hasOwnProperty(a))if(a===TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(a===TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var u=t[a]===void 0?``:t[a];n.setAttribute(a,u)}n.setAttribute(HELMET_ATTRIBUTE,`true`),o.some(function(e,t){return l=t,n.isEqualNode(e)})?o.splice(l,1):s.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),s.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:s}},generateElementAttributesAsString=function(e){return Object.keys(e).reduce(function(t,n){var a=e[n]===void 0?``+n:n+`="`+e[n]+`"`;return t?t+` `+a:a},``)},generateTitleAsString=function(e,t,n,a){var o=generateElementAttributesAsString(n),s=flattenArray(t);return o?`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+`>`+encodeSpecialCharacters(s,a)+`</`+e+`>`:`<`+e+` `+HELMET_ATTRIBUTE+`="true">`+encodeSpecialCharacters(s,a)+`</`+e+`>`},generateTagsAsString=function(e,t,n){return t.reduce(function(t,a){var o=Object.keys(a).filter(function(e){return!(e===TAG_PROPERTIES.INNER_HTML||e===TAG_PROPERTIES.CSS_TEXT)}).reduce(function(e,t){var o=a[t]===void 0?t:t+`="`+encodeSpecialCharacters(a[t],n)+`"`;return e?e+` `+o:o},``),s=a.innerHTML||a.cssText||``,l=SELF_CLOSING_TAGS.indexOf(e)===-1;return t+`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+(l?`/>`:`>`+s+`</`+e+`>`)},``)},convertElementAttributestoReactProps=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[REACT_TAG_MAP[n]||n]=e[n],t},t)},convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[HTML_TAG_MAP[n]||n]=e[n],t},t)},generateTitleAsReactComponent=function(e,t,n){var a,o=convertElementAttributestoReactProps(n,(a={key:t},a[HELMET_ATTRIBUTE]=!0,a));return[import_react$24.createElement(TAG_NAMES.TITLE,o,t)]},generateTagsAsReactComponent=function(e,t){return t.map(function(t,n){var a,o=(a={key:n},a[HELMET_ATTRIBUTE]=!0,a);return Object.keys(t).forEach(function(e){var n=REACT_TAG_MAP[e]||e;n===TAG_PROPERTIES.INNER_HTML||n===TAG_PROPERTIES.CSS_TEXT?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),import_react$24.createElement(e,o)})},getMethodsForTag=function(e,t,n){switch(e){case TAG_NAMES.TITLE:return{toComponent:function(){return generateTitleAsReactComponent(e,t.title,t.titleAttributes,n)},toString:function(){return generateTitleAsString(e,t.title,t.titleAttributes,n)}};case ATTRIBUTE_NAMES.BODY:case ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return convertElementAttributestoReactProps(t)},toString:function(){return generateElementAttributesAsString(t)}};default:return{toComponent:function(){return generateTagsAsReactComponent(e,t)},toString:function(){return generateTagsAsString(e,t,n)}}}},mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,a=e.encode,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.scriptTags,f=e.styleTags,m=e.title,h=m===void 0?``:m,v=e.titleAttributes;return{base:getMethodsForTag(TAG_NAMES.BASE,t,a),bodyAttributes:getMethodsForTag(ATTRIBUTE_NAMES.BODY,n,a),htmlAttributes:getMethodsForTag(ATTRIBUTE_NAMES.HTML,o,a),link:getMethodsForTag(TAG_NAMES.LINK,s,a),meta:getMethodsForTag(TAG_NAMES.META,l,a),noscript:getMethodsForTag(TAG_NAMES.NOSCRIPT,u,a),script:getMethodsForTag(TAG_NAMES.SCRIPT,d,a),style:getMethodsForTag(TAG_NAMES.STYLE,f,a),title:getMethodsForTag(TAG_NAMES.TITLE,{title:h,titleAttributes:v},a)}},HelmetExport=function(e){var t,n;return n=t=function(t){inherits(n,t);function n(){return classCallCheck(this,n),possibleConstructorReturn(this,t.apply(this,arguments))}return n.prototype.shouldComponentUpdate=function(e){return!(0,import_react_fast_compare.default)(this.props,e)},n.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case TAG_NAMES.SCRIPT:case TAG_NAMES.NOSCRIPT:return{innerHTML:t};case TAG_NAMES.STYLE:return{cssText:t}}throw Error(`<`+e.type+` /> elements are self-closing and can not contain children. Refer to our API for more information.`)},n.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,a=e.arrayTypeChildren,o=e.newChildProps,s=e.nestedChildren;return _extends({},a,(t={},t[n.type]=[].concat(a[n.type]||[],[_extends({},o,this.mapNestedChildrenToProps(n,s))]),t))},n.prototype.mapObjectTypeChildren=function(e){var t,n,a=e.child,o=e.newProps,s=e.newChildProps,l=e.nestedChildren;switch(a.type){case TAG_NAMES.TITLE:return _extends({},o,(t={},t[a.type]=l,t.titleAttributes=_extends({},s),t));case TAG_NAMES.BODY:return _extends({},o,{bodyAttributes:_extends({},s)});case TAG_NAMES.HTML:return _extends({},o,{htmlAttributes:_extends({},s)})}return _extends({},o,(n={},n[a.type]=_extends({},s),n))},n.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=_extends({},t);return Object.keys(e).forEach(function(t){var a;n=_extends({},n,(a={},a[t]=e[t],a))}),n},n.prototype.warnOnInvalidChildren=function(e,t){return!0},n.prototype.mapChildrenToProps=function(e,t){var n=this,a={};return import_react$24.Children.forEach(e,function(e){if(!(!e||!e.props)){var o=e.props,s=o.children,l=convertReactPropstoHtmlAttributes(objectWithoutProperties$1(o,[`children`]));switch(n.warnOnInvalidChildren(e,s),e.type){case TAG_NAMES.LINK:case TAG_NAMES.META:case TAG_NAMES.NOSCRIPT:case TAG_NAMES.SCRIPT:case TAG_NAMES.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:s});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:s});break}}}),t=this.mapArrayTypeChildrenToProps(a,t),t},n.prototype.render=function(){var t=this.props,n=t.children,a=_extends({},objectWithoutProperties$1(t,[`children`]));return n&&(a=this.mapChildrenToProps(n,a)),import_react$24.createElement(e,a)},createClass(n,null,[{key:`canUseDOM`,set:function(t){e.canUseDOM=t}}]),n}(import_react$24.Component),t.propTypes={base:import_prop_types$1.default.object,bodyAttributes:import_prop_types$1.default.object,children:import_prop_types$1.default.oneOfType([import_prop_types$1.default.arrayOf(import_prop_types$1.default.node),import_prop_types$1.default.node]),defaultTitle:import_prop_types$1.default.string,defer:import_prop_types$1.default.bool,encodeSpecialCharacters:import_prop_types$1.default.bool,htmlAttributes:import_prop_types$1.default.object,link:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),meta:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),noscript:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),onChangeClientState:import_prop_types$1.default.func,script:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),style:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),title:import_prop_types$1.default.string,titleAttributes:import_prop_types$1.default.object,titleTemplate:import_prop_types$1.default.string},t.defaultProps={defer:!0,encodeSpecialCharacters:!0},t.peek=e.peek,t.rewind=function(){var t=e.rewind();return t||=mapStateOnServer({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:``,titleAttributes:{}}),t},n}((0,import_lib$1.default)(reducePropsToState,handleClientStateChange,mapStateOnServer)(function(){return null}));HelmetExport.renderStatic=HelmetExport.rewind,init_generateUtilityClasses(),init_generateUtilityClass();function getButtonUtilityClass(e){return generateUtilityClass(`MuiButton`,e)}var buttonClasses=generateUtilityClasses(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge`.split(`.`)),ButtonGroupContext=import_react$24.createContext({}),ButtonGroupButtonContext=import_react$24.createContext(void 0);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_resolveProps(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$52=[`children`,`color`,`component`,`className`,`disabled`,`disableElevation`,`disableFocusRipple`,`endIcon`,`focusVisibleClassName`,`fullWidth`,`size`,`startIcon`,`type`,`variant`],useUtilityClasses$46=e=>{let{color:t,disableElevation:n,fullWidth:a,size:o,variant:s,classes:l}=e;return _extends$3({},l,composeClasses({root:[`root`,s,`${s}${capitalize_default(t)}`,`size${capitalize_default(o)}`,`${s}Size${capitalize_default(o)}`,`color${capitalize_default(t)}`,n&&`disableElevation`,a&&`fullWidth`],label:[`label`],startIcon:[`icon`,`startIcon`,`iconSize${capitalize_default(o)}`],endIcon:[`icon`,`endIcon`,`iconSize${capitalize_default(o)}`]},getButtonUtilityClass,l))},commonIconStyles=e=>_extends$3({},e.size===`small`&&{"& > *:nth-of-type(1)":{fontSize:18}},e.size===`medium`&&{"& > *:nth-of-type(1)":{fontSize:20}},e.size===`large`&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled$1(ButtonBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${capitalize_default(n.color)}`],t[`size${capitalize_default(n.size)}`],t[`${n.variant}Size${capitalize_default(n.size)}`],n.color===`inherit`&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(({theme:e,ownerState:t})=>{var n,a;let o=e.palette.mode===`light`?e.palette.grey[300]:e.palette.grey[800],s=e.palette.mode===`light`?e.palette.grey.A100:e.palette.grey[700];return _extends$3({},e.typography.button,{minWidth:64,padding:`6px 16px`,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:e.transitions.duration.short}),"&:hover":_extends$3({textDecoration:`none`,backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`text`&&t.color!==`inherit`&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`outlined`&&t.color!==`inherit`&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`contained`&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:s,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},t.variant===`contained`&&t.color!==`inherit`&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${buttonClasses.focusVisible}`]:_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${buttonClasses.disabled}`]:_extends$3({color:(e.vars||e).palette.action.disabled},t.variant===`outlined`&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},t.variant===`contained`&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},t.variant===`text`&&{padding:`6px 8px`},t.variant===`text`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main},t.variant===`outlined`&&{padding:`5px 15px`,border:`1px solid currentColor`},t.variant===`outlined`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,import_colorManipulator.alpha)(e.palette[t.color].main,.5)}`},t.variant===`contained`&&{color:e.vars?e.vars.palette.text.primary:(a=e.palette).getContrastText?.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:o,boxShadow:(e.vars||e).shadows[2]},t.variant===`contained`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},t.color===`inherit`&&{color:`inherit`,borderColor:`currentColor`},t.size===`small`&&t.variant===`text`&&{padding:`4px 5px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`text`&&{padding:`8px 11px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`outlined`&&{padding:`3px 9px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`outlined`&&{padding:`7px 21px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`contained`&&{padding:`4px 10px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`contained`&&{padding:`8px 22px`,fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:`100%`})},({ownerState:e})=>e.disableElevation&&{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${buttonClasses.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${buttonClasses.disabled}`]:{boxShadow:`none`}}),ButtonStartIcon=styled$1(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.startIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:8,marginLeft:-4},e.size===`small`&&{marginLeft:-2},commonIconStyles(e))),ButtonEndIcon=styled$1(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.endIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:-4,marginLeft:8},e.size===`small`&&{marginRight:-2},commonIconStyles(e))),Button=import_react$24.forwardRef(function(e,t){let n=import_react$24.useContext(ButtonGroupContext),a=import_react$24.useContext(ButtonGroupButtonContext),o=useDefaultProps({props:resolveProps(n,e),name:`MuiButton`}),{children:s,color:l=`primary`,component:u=`button`,className:d,disabled:f=!1,disableElevation:m=!1,disableFocusRipple:h=!1,endIcon:v,focusVisibleClassName:y,fullWidth:b=!1,size:x=`medium`,startIcon:S,type:C,variant:T=`text`}=o,E=_objectWithoutPropertiesLoose$3(o,_excluded$52),D=_extends$3({},o,{color:l,component:u,disabled:f,disableElevation:m,disableFocusRipple:h,fullWidth:b,size:x,type:C,variant:T}),O=useUtilityClasses$46(D),k=S&&(0,import_jsx_runtime.jsx)(ButtonStartIcon,{className:O.startIcon,ownerState:D,children:S}),j=v&&(0,import_jsx_runtime.jsx)(ButtonEndIcon,{className:O.endIcon,ownerState:D,children:v}),M=a||``;return(0,import_jsx_runtime.jsxs)(ButtonRoot,_extends$3({ownerState:D,className:clsx$1(n.className,O.root,d,M),component:u,disabled:f,focusRipple:!h,focusVisibleClassName:clsx$1(O.focusVisible,y),ref:t,type:C},E,{classes:O,children:[k,s,j]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogUtilityClass(e){return generateUtilityClass(`MuiDialog`,e)}var dialogClasses=generateUtilityClasses(`MuiDialog`,[`root`,`scrollPaper`,`scrollBody`,`container`,`paper`,`paperScrollPaper`,`paperScrollBody`,`paperWidthFalse`,`paperWidthXs`,`paperWidthSm`,`paperWidthMd`,`paperWidthLg`,`paperWidthXl`,`paperFullWidth`,`paperFullScreen`]),DialogContext=import_react$24.createContext({});init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useId$1(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$51=[`aria-describedby`,`aria-labelledby`,`BackdropComponent`,`BackdropProps`,`children`,`className`,`disableEscapeKeyDown`,`fullScreen`,`fullWidth`,`maxWidth`,`onBackdropClick`,`onClick`,`onClose`,`open`,`PaperComponent`,`PaperProps`,`scroll`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],DialogBackdrop=styled$1(Backdrop,{name:`MuiDialog`,slot:`Backdrop`,overrides:(e,t)=>t.backdrop})({zIndex:-1}),useUtilityClasses$45=e=>{let{classes:t,scroll:n,maxWidth:a,fullWidth:o,fullScreen:s}=e;return composeClasses({root:[`root`],container:[`container`,`scroll${capitalize_default(n)}`],paper:[`paper`,`paperScroll${capitalize_default(n)}`,`paperWidth${capitalize_default(String(a))}`,o&&`paperFullWidth`,s&&`paperFullScreen`]},getDialogUtilityClass,t)},DialogRoot=styled$1(Modal,{name:`MuiDialog`,slot:`Root`,overridesResolver:(e,t)=>t.root})({"@media print":{position:`absolute !important`}}),DialogContainer=styled$1(`div`,{name:`MuiDialog`,slot:`Container`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.container,t[`scroll${capitalize_default(n.scroll)}`]]}})(({ownerState:e})=>_extends$3({height:`100%`,"@media print":{height:`auto`},outline:0},e.scroll===`paper`&&{display:`flex`,justifyContent:`center`,alignItems:`center`},e.scroll===`body`&&{overflowY:`auto`,overflowX:`hidden`,textAlign:`center`,"&::after":{content:`""`,display:`inline-block`,verticalAlign:`middle`,height:`100%`,width:`0`}})),DialogPaper=styled$1(Paper,{name:`MuiDialog`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`scrollPaper${capitalize_default(n.scroll)}`],t[`paperWidth${capitalize_default(String(n.maxWidth))}`],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})(({theme:e,ownerState:t})=>_extends$3({margin:32,position:`relative`,overflowY:`auto`,"@media print":{overflowY:`visible`,boxShadow:`none`}},t.scroll===`paper`&&{display:`flex`,flexDirection:`column`,maxHeight:`calc(100% - 64px)`},t.scroll===`body`&&{display:`inline-block`,verticalAlign:`middle`,textAlign:`left`},!t.maxWidth&&{maxWidth:`calc(100% - 64px)`},t.maxWidth===`xs`&&{maxWidth:e.breakpoints.unit===`px`?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:`calc(100% - 64px)`}}},t.maxWidth&&t.maxWidth!==`xs`&&{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(e.breakpoints.values[t.maxWidth]+64)]:{maxWidth:`calc(100% - 64px)`}}},t.fullWidth&&{width:`calc(100% - 64px)`},t.fullScreen&&{margin:0,width:`100%`,maxWidth:`100%`,height:`100%`,maxHeight:`none`,borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:`100%`}})),Dialog=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialog`}),a=useTheme$1(),o={enter:a.transitions.duration.enteringScreen,exit:a.transitions.duration.leavingScreen},{"aria-describedby":s,"aria-labelledby":l,BackdropComponent:u,BackdropProps:d,children:f,className:m,disableEscapeKeyDown:h=!1,fullScreen:v=!1,fullWidth:y=!1,maxWidth:b=`sm`,onBackdropClick:x,onClick:S,onClose:C,open:T,PaperComponent:E=Paper,PaperProps:D={},scroll:O=`paper`,TransitionComponent:k=Fade,transitionDuration:j=o,TransitionProps:M}=n,N=_objectWithoutPropertiesLoose$3(n,_excluded$51),F=_extends$3({},n,{disableEscapeKeyDown:h,fullScreen:v,fullWidth:y,maxWidth:b,scroll:O}),I=useUtilityClasses$45(F),L=import_react$24.useRef(),R=e=>{L.current=e.target===e.currentTarget},z=e=>{S&&S(e),L.current&&(L.current=null,x&&x(e),C&&C(e,`backdropClick`))},B=useId(l),V=import_react$24.useMemo(()=>({titleId:B}),[B]);return(0,import_jsx_runtime.jsx)(DialogRoot,_extends$3({className:clsx$1(I.root,m),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$3({transitionDuration:j,as:u},d)},disableEscapeKeyDown:h,onClose:C,open:T,ref:t,onClick:z,ownerState:F},N,{children:(0,import_jsx_runtime.jsx)(k,_extends$3({appear:!0,in:T,timeout:j,role:`presentation`},M,{children:(0,import_jsx_runtime.jsx)(DialogContainer,{className:clsx$1(I.container),onMouseDown:R,ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogPaper,_extends$3({as:E,elevation:24,role:`dialog`,"aria-describedby":s,"aria-labelledby":B},D,{className:clsx$1(I.paper,D.className),ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogContext.Provider,{value:V,children:f})}))})}))}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogTitleUtilityClass(e){return generateUtilityClass(`MuiDialogTitle`,e)}var dialogTitleClasses=generateUtilityClasses(`MuiDialogTitle`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$50=[`className`,`id`],useUtilityClasses$44=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getDialogTitleUtilityClass,t)},DialogTitleRoot=styled$1(Typography,{name:`MuiDialogTitle`,slot:`Root`,overridesResolver:(e,t)=>t.root})({padding:`16px 24px`,flex:`0 0 auto`}),DialogTitle=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogTitle`}),{className:a,id:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$50),l=n,u=useUtilityClasses$44(l),{titleId:d=o}=import_react$24.useContext(DialogContext);return(0,import_jsx_runtime.jsx)(DialogTitleRoot,_extends$3({component:`h2`,className:clsx$1(u.root,a),ownerState:l,ref:t,variant:`h6`,id:o??d},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogContentUtilityClass(e){return generateUtilityClass(`MuiDialogContent`,e)}var dialogContentClasses=generateUtilityClasses(`MuiDialogContent`,[`root`,`dividers`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$49=[`className`,`dividers`],useUtilityClasses$43=e=>{let{classes:t,dividers:n}=e;return composeClasses({root:[`root`,n&&`dividers`]},getDialogContentUtilityClass,t)},DialogContentRoot=styled$1(`div`,{name:`MuiDialogContent`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.dividers&&t.dividers]}})(({theme:e,ownerState:t})=>_extends$3({flex:`1 1 auto`,WebkitOverflowScrolling:`touch`,overflowY:`auto`,padding:`20px 24px`},t.dividers?{padding:`16px 24px`,borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}})),DialogContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogContent`}),{className:a,dividers:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$49),l=_extends$3({},n,{dividers:o}),u=useUtilityClasses$43(l);return(0,import_jsx_runtime.jsx)(DialogContentRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogActionsUtilityClass(e){return generateUtilityClass(`MuiDialogActions`,e)}var dialogActionsClasses=generateUtilityClasses(`MuiDialogActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$48=[`className`,`disableSpacing`],useUtilityClasses$42=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getDialogActionsUtilityClass,t)},DialogActionsRoot=styled$1(`div`,{name:`MuiDialogActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,flex:`0 0 auto`},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogActions`}),{className:a,disableSpacing:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$48),l=_extends$3({},n,{disableSpacing:o}),u=useUtilityClasses$42(l);return(0,import_jsx_runtime.jsx)(DialogActionsRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))}),chitchatterDomain=`https://chitchatter.im`,ChatRoom=()=>{let e=`chat-title`,t=`chat-content`,{handlers:{handleChatRoomOpenStateChange:n},gameState:{playerId:a,isChatOpen:o,room:s}}=(0,import_react$24.useContext)(FarmhandContext),l=()=>{n(!1)},u=(0,import_jsx_runtime.jsx)(`chat-room`,{"root-url":chitchatterDomain,room:`__farmhand__${s}`,"user-id":a,style:{height:`100%`,width:`100%`,border:`none`},"color-mode":`light`});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(HelmetExport,{children:(0,import_jsx_runtime.jsx)(`script`,{src:`${chitchatterDomain}/sdk.js`})}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,`ChatRoom`),fullWidth:!0,keepMounted:!0,fullScreen:!0,open:o,onClose:l,sx:{"& .MuiDialog-container":{padding:`1em`,height:`calc(100% - 2em)`}},"aria-describedby":e,"aria-labelledby":t,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:e,children:`Chat room`}),(0,import_jsx_runtime.jsx)(DialogContent,{id:t,children:u}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:l,color:`primary`,autoFocus:!0,children:`Close`})})]})]})},AccordionContext=import_react$24.createContext({});init_extends(),init_objectWithoutPropertiesLoose(),init_useForkRef$1(),init_appendOwnerState(),init_resolveComponentProps(),init_mergeSlotProps();var _excluded$47=[`className`,`elementType`,`ownerState`,`externalForwardedProps`,`getSlotOwnerState`,`internalForwardedProps`],_excluded2$3=[`component`,`slots`,`slotProps`],_excluded3$1=[`component`];function useSlot(e,t){let{className:n,elementType:a,ownerState:o,externalForwardedProps:s,getSlotOwnerState:l,internalForwardedProps:u}=t,d=_objectWithoutPropertiesLoose$3(t,_excluded$47),{component:f,slots:m={[e]:void 0},slotProps:h={[e]:void 0}}=s,v=_objectWithoutPropertiesLoose$3(s,_excluded2$3),y=m[e]||a,b=resolveComponentProps(h[e],o),x=mergeSlotProps(_extends$3({className:n},d,{externalForwardedProps:e===`root`?v:void 0,externalSlotProps:b})),{props:{component:S},internalRef:C}=x,T=_objectWithoutPropertiesLoose$3(x.props,_excluded3$1),E=useForkRef(C,b?.ref,t.ref),D=l?l(T):{},O=_extends$3({},o,D),k=e===`root`?S||f:S,j=appendOwnerState(y,_extends$3({},e===`root`&&!f&&!m[e]&&u,e!==`root`&&!m[e]&&u,T,k&&{as:k},{ref:E}),O);return Object.keys(D).forEach(e=>{delete j[e]}),[y,j]}init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionUtilityClass(e){return generateUtilityClass(`MuiAccordion`,e)}var accordionClasses=generateUtilityClasses(`MuiAccordion`,[`root`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_useControlled();var _excluded$46=[`children`,`className`,`defaultExpanded`,`disabled`,`disableGutters`,`expanded`,`onChange`,`square`,`slots`,`slotProps`,`TransitionComponent`,`TransitionProps`],useUtilityClasses$41=e=>{let{classes:t,square:n,expanded:a,disabled:o,disableGutters:s}=e;return composeClasses({root:[`root`,!n&&`rounded`,a&&`expanded`,o&&`disabled`,!s&&`gutters`],region:[`region`]},getAccordionUtilityClass,t)},AccordionRoot=styled$1(Paper,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${accordionClasses.region}`]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{position:`relative`,transition:e.transitions.create([`margin`],t),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create([`opacity`,`background-color`],t)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${accordionClasses.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:`none`}}},[`&.${accordionClasses.disabled}`]:{backgroundColor:(e.vars||e).palette.action.disabledBackground}}},({theme:e})=>({variants:[{props:e=>!e.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(e.vars||e).shape.borderRadius,borderBottomRightRadius:(e.vars||e).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:e=>!e.disableGutters,style:{[`&.${accordionClasses.expanded}`]:{margin:`16px 0`}}}]})),Accordion=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordion`}),{children:a,className:o,defaultExpanded:s=!1,disabled:l=!1,disableGutters:u=!1,expanded:d,onChange:f,square:m=!1,slots:h={},slotProps:v={},TransitionComponent:y,TransitionProps:b}=n,x=_objectWithoutPropertiesLoose$3(n,_excluded$46),[S,C]=useControlled_default({controlled:d,default:s,name:`Accordion`,state:`expanded`}),T=import_react$24.useCallback(e=>{C(!S),f&&f(e,!S)},[S,f,C]),[E,...D]=import_react$24.Children.toArray(a),O=import_react$24.useMemo(()=>({expanded:S,disabled:l,disableGutters:u,toggle:T}),[S,l,u,T]),k=_extends$3({},n,{square:m,disabled:l,disableGutters:u,expanded:S}),j=useUtilityClasses$41(k),[M,N]=useSlot(`transition`,{elementType:Collapse,externalForwardedProps:{slots:_extends$3({transition:y},h),slotProps:_extends$3({transition:b},v)},ownerState:k});return(0,import_jsx_runtime.jsxs)(AccordionRoot,_extends$3({className:clsx$1(j.root,o),ref:t,ownerState:k,square:m},x,{children:[(0,import_jsx_runtime.jsx)(AccordionContext.Provider,{value:O,children:E}),(0,import_jsx_runtime.jsx)(M,_extends$3({in:S,timeout:`auto`},N,{children:(0,import_jsx_runtime.jsx)(`div`,{"aria-labelledby":E.props.id,id:E.props[`aria-controls`],role:`region`,className:j.region,children:D})}))]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionSummaryUtilityClass(e){return generateUtilityClass(`MuiAccordionSummary`,e)}var accordionSummaryClasses=generateUtilityClasses(`MuiAccordionSummary`,[`root`,`expanded`,`focusVisible`,`disabled`,`gutters`,`contentGutters`,`content`,`expandIconWrapper`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$45=[`children`,`className`,`expandIcon`,`focusVisibleClassName`,`onClick`],useUtilityClasses$40=e=>{let{classes:t,expanded:n,disabled:a,disableGutters:o}=e;return composeClasses({root:[`root`,n&&`expanded`,a&&`disabled`,!o&&`gutters`],focusVisible:[`focusVisible`],content:[`content`,n&&`expanded`,!o&&`contentGutters`],expandIconWrapper:[`expandIconWrapper`,n&&`expanded`]},getAccordionSummaryUtilityClass,t)},AccordionSummaryRoot=styled$1(ButtonBase,{name:`MuiAccordionSummary`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{display:`flex`,minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create([`min-height`,`background-color`],t),[`&.${accordionSummaryClasses.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${accordionSummaryClasses.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${accordionSummaryClasses.disabled})`]:{cursor:`pointer`},variants:[{props:e=>!e.disableGutters,style:{[`&.${accordionSummaryClasses.expanded}`]:{minHeight:64}}}]}}),AccordionSummaryContent=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`Content`,overridesResolver:(e,t)=>t.content})(({theme:e})=>({display:`flex`,flexGrow:1,margin:`12px 0`,variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create([`margin`],{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{margin:`20px 0`}}}]})),AccordionSummaryExpandIconWrapper=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`ExpandIconWrapper`,overridesResolver:(e,t)=>t.expandIconWrapper})(({theme:e})=>({display:`flex`,color:(e.vars||e).palette.action.active,transform:`rotate(0deg)`,transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{transform:`rotate(180deg)`}})),AccordionSummary=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionSummary`}),{children:a,className:o,expandIcon:s,focusVisibleClassName:l,onClick:u}=n,d=_objectWithoutPropertiesLoose$3(n,_excluded$45),{disabled:f=!1,disableGutters:m,expanded:h,toggle:v}=import_react$24.useContext(AccordionContext),y=e=>{v&&v(e),u&&u(e)},b=_extends$3({},n,{expanded:h,disabled:f,disableGutters:m}),x=useUtilityClasses$40(b);return(0,import_jsx_runtime.jsxs)(AccordionSummaryRoot,_extends$3({focusRipple:!1,disableRipple:!0,disabled:f,component:`div`,"aria-expanded":h,className:clsx$1(x.root,o),focusVisibleClassName:clsx$1(x.focusVisible,l),onClick:y,ref:t,ownerState:b},d,{children:[(0,import_jsx_runtime.jsx)(AccordionSummaryContent,{className:x.content,ownerState:b,children:a}),s&&(0,import_jsx_runtime.jsx)(AccordionSummaryExpandIconWrapper,{className:x.expandIconWrapper,ownerState:b,children:s})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionDetailsUtilityClass(e){return generateUtilityClass(`MuiAccordionDetails`,e)}var accordionDetailsClasses=generateUtilityClasses(`MuiAccordionDetails`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$44=[`className`],useUtilityClasses$39=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getAccordionDetailsUtilityClass,t)},AccordionDetailsRoot=styled$1(`div`,{name:`MuiAccordionDetails`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>({padding:e.spacing(1,2,2)})),AccordionDetails=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionDetails`}),{className:a}=n,o=_objectWithoutPropertiesLoose$3(n,_excluded$44),s=n,l=useUtilityClasses$39(s);return(0,import_jsx_runtime.jsx)(AccordionDetailsRoot,_extends$3({className:clsx$1(l.root,a),ref:t,ownerState:s},o))}),FormControlContext=import_react$24.createContext(void 0);function useFormControl(){return import_react$24.useContext(FormControlContext)}init_generateUtilityClasses(),init_generateUtilityClass();function getSwitchBaseUtilityClass(e){return generateUtilityClass(`PrivateSwitchBase`,e)}var switchBaseClasses=generateUtilityClasses(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_useControlled();var _excluded$43=[`autoFocus`,`checked`,`checkedIcon`,`className`,`defaultChecked`,`disabled`,`disableFocusRipple`,`edge`,`icon`,`id`,`inputProps`,`inputRef`,`name`,`onBlur`,`onChange`,`onFocus`,`readOnly`,`required`,`tabIndex`,`type`,`value`],useUtilityClasses$38=e=>{let{classes:t,checked:n,disabled:a,edge:o}=e;return composeClasses({root:[`root`,n&&`checked`,a&&`disabled`,o&&`edge${capitalize_default(o)}`],input:[`input`]},getSwitchBaseUtilityClass,t)},SwitchBaseRoot=styled$1(ButtonBase,{name:`MuiSwitchBase`})(({ownerState:e})=>_extends$3({padding:9,borderRadius:`50%`},e.edge===`start`&&{marginLeft:e.size===`small`?-3:-12},e.edge===`end`&&{marginRight:e.size===`small`?-3:-12})),SwitchBaseInput=styled$1(`input`,{name:`MuiSwitchBase`,shouldForwardProp:rootShouldForwardProp})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),SwitchBase=import_react$24.forwardRef(function(e,t){let{autoFocus:n,checked:a,checkedIcon:o,className:s,defaultChecked:l,disabled:u,disableFocusRipple:d=!1,edge:f=!1,icon:m,id:h,inputProps:v,inputRef:y,name:b,onBlur:x,onChange:S,onFocus:C,readOnly:T,required:E=!1,tabIndex:D,type:O,value:k}=e,j=_objectWithoutPropertiesLoose$3(e,_excluded$43),[M,N]=useControlled_default({controlled:a,default:!!l,name:`SwitchBase`,state:`checked`}),F=useFormControl(),I=e=>{C&&C(e),F&&F.onFocus&&F.onFocus(e)},L=e=>{x&&x(e),F&&F.onBlur&&F.onBlur(e)},R=e=>{if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked;N(t),S&&S(e,t)},z=u;F&&z===void 0&&(z=F.disabled);let B=O===`checkbox`||O===`radio`,V=_extends$3({},e,{checked:M,disabled:z,disableFocusRipple:d,edge:f}),H=useUtilityClasses$38(V);return(0,import_jsx_runtime.jsxs)(SwitchBaseRoot,_extends$3({component:`span`,className:clsx$1(H.root,s),centerRipple:!0,focusRipple:!d,disabled:z,tabIndex:null,role:void 0,onFocus:I,onBlur:L,ownerState:V,ref:t},j,{children:[(0,import_jsx_runtime.jsx)(SwitchBaseInput,_extends$3({autoFocus:n,checked:a,defaultChecked:l,className:H.input,disabled:z,id:B?h:void 0,name:b,onChange:R,readOnly:T,ref:y,required:E,ownerState:V,tabIndex:D,type:O},O===`checkbox`&&k===void 0?{}:{value:k},v)),M?o:m]}))});init_createSvgIcon();var CheckBoxOutlineBlank_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`);init_createSvgIcon();var CheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`);init_createSvgIcon();var IndeterminateCheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);init_generateUtilityClasses(),init_generateUtilityClass();function getCheckboxUtilityClass(e){return generateUtilityClass(`MuiCheckbox`,e)}var checkboxClasses=generateUtilityClasses(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$42=[`checkedIcon`,`color`,`icon`,`indeterminate`,`indeterminateIcon`,`inputProps`,`size`,`className`],useUtilityClasses$37=e=>{let{classes:t,indeterminate:n,color:a,size:o}=e;return _extends$3({},t,composeClasses({root:[`root`,n&&`indeterminate`,`color${capitalize_default(a)}`,`size${capitalize_default(o)}`]},getCheckboxUtilityClass,t))},CheckboxRoot=styled$1(SwitchBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${capitalize_default(n.size)}`],n.color!=="default"&&t[`color${capitalize_default(n.color)}`]]}})(({theme:e,ownerState:t})=>_extends$3({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${t.color==="default"?e.vars.palette.action.activeChannel:e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(t.color==="default"?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},t.color!=="default"&&{[`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${checkboxClasses.disabled}`]:{color:(e.vars||e).palette.action.disabled}})),defaultCheckedIcon=(0,import_jsx_runtime.jsx)(CheckBox_default,{}),defaultIcon=(0,import_jsx_runtime.jsx)(CheckBoxOutlineBlank_default,{}),defaultIndeterminateIcon=(0,import_jsx_runtime.jsx)(IndeterminateCheckBox_default,{}),Checkbox=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiCheckbox`}),{checkedIcon:s=defaultCheckedIcon,color:l=`primary`,icon:u=defaultIcon,indeterminate:d=!1,indeterminateIcon:f=defaultIndeterminateIcon,inputProps:m,size:h=`medium`,className:v}=o,y=_objectWithoutPropertiesLoose$3(o,_excluded$42),b=d?f:u,x=d?f:s,S=_extends$3({},o,{color:l,indeterminate:d,size:h}),C=useUtilityClasses$37(S);return(0,import_jsx_runtime.jsx)(CheckboxRoot,_extends$3({type:`checkbox`,inputProps:_extends$3({"data-indeterminate":d},m),icon:import_react$24.cloneElement(b,{fontSize:b.props.fontSize??h}),checkedIcon:import_react$24.cloneElement(x,{fontSize:x.props.fontSize??h}),ownerState:S,ref:t,className:clsx$1(C.root,v)},y,{classes:C}))});function hasValue(e){return e!=null&&!(Array.isArray(e)&&e.length===0)}function isFilled(e,t=!1){return e&&(hasValue(e.value)&&e.value!==``||t&&hasValue(e.defaultValue)&&e.defaultValue!==``)}function isAdornedStart(e){return e.startAdornment}init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlUtilityClasses(e){return generateUtilityClass(`MuiFormControl`,e)}var formControlClasses=generateUtilityClasses(`MuiFormControl`,[`root`,`marginNone`,`marginNormal`,`marginDense`,`fullWidth`,`disabled`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled(),init_capitalize(),init_isMuiElement();var _excluded$41=[`children`,`className`,`color`,`component`,`disabled`,`error`,`focused`,`fullWidth`,`hiddenLabel`,`margin`,`required`,`size`,`variant`],useUtilityClasses$36=e=>{let{classes:t,margin:n,fullWidth:a}=e;return composeClasses({root:[`root`,n!==`none`&&`margin${capitalize_default(n)}`,a&&`fullWidth`]},getFormControlUtilityClasses,t)},FormControlRoot=styled$1(`div`,{name:`MuiFormControl`,slot:`Root`,overridesResolver:({ownerState:e},t)=>_extends$3({},t.root,t[`margin${capitalize_default(e.margin)}`],e.fullWidth&&t.fullWidth)})(({ownerState:e})=>_extends$3({display:`inline-flex`,flexDirection:`column`,position:`relative`,minWidth:0,padding:0,margin:0,border:0,verticalAlign:`top`},e.margin===`normal`&&{marginTop:16,marginBottom:8},e.margin===`dense`&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:`100%`})),FormControl=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiFormControl`}),{children:a,className:o,color:s=`primary`,component:l=`div`,disabled:u=!1,error:d=!1,focused:f,fullWidth:m=!1,hiddenLabel:h=!1,margin:v=`none`,required:y=!1,size:b=`medium`,variant:x=`outlined`}=n,S=_objectWithoutPropertiesLoose$3(n,_excluded$41),C=_extends$3({},n,{color:s,component:l,disabled:u,error:d,fullWidth:m,hiddenLabel:h,margin:v,required:y,size:b,variant:x}),T=useUtilityClasses$36(C),[E,D]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{if(!isMuiElement_default(t,[`Input`,`Select`]))return;let n=isMuiElement_default(t,[`Select`])?t.props.input:t;n&&isAdornedStart(n.props)&&(e=!0)}),e}),[O,k]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{isMuiElement_default(t,[`Input`,`Select`])&&(isFilled(t.props,!0)||isFilled(t.props.inputProps,!0))&&(e=!0)}),e}),[j,M]=import_react$24.useState(!1);u&&j&&M(!1);let N=f!==void 0&&!u?f:j,F,I=import_react$24.useMemo(()=>({adornedStart:E,setAdornedStart:D,color:s,disabled:u,error:d,filled:O,focused:N,fullWidth:m,hiddenLabel:h,size:b,onBlur:()=>{M(!1)},onEmpty:()=>{k(!1)},onFilled:()=>{k(!0)},onFocus:()=>{M(!0)},registerEffect:void 0,required:y,variant:x}),[E,s,u,d,O,N,m,h,void 0,y,b,x]);return(0,import_jsx_runtime.jsx)(FormControlContext.Provider,{value:I,children:(0,import_jsx_runtime.jsx)(FormControlRoot,_extends$3({as:l,ownerState:C,className:clsx$1(T.root,o),ref:t},S,{children:a}))})});init_styled(),init_DefaultPropsProvider();var Stack=createStack({createStyledComponent:styled$1(`div`,{name:`MuiStack`,slot:`Root`,overridesResolver:(e,t)=>t.root}),useThemeProps:e=>useDefaultProps({props:e,name:`MuiStack`})});init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlLabelUtilityClasses(e){return generateUtilityClass(`MuiFormControlLabel`,e)}var formControlLabelClasses=generateUtilityClasses(`MuiFormControlLabel`,[`root`,`labelPlacementStart`,`labelPlacementTop`,`labelPlacementBottom`,`disabled`,`label`,`error`,`required`,`asterisk`]);function formControlState({props:e,states:t,muiFormControl:n}){return t.reduce((t,a)=>(t[a]=e[a],n&&e[a]===void 0&&(t[a]=n[a]),t),{})}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_DefaultPropsProvider();var _excluded$40=[`checked`,`className`,`componentsProps`,`control`,`disabled`,`disableTypography`,`inputRef`,`label`,`labelPlacement`,`name`,`onChange`,`required`,`slotProps`,`value`],useUtilityClasses$35=e=>{let{classes:t,disabled:n,labelPlacement:a,error:o,required:s}=e;return composeClasses({root:[`root`,n&&`disabled`,`labelPlacement${capitalize_default(a)}`,o&&`error`,s&&`required`],label:[`label`,n&&`disabled`],asterisk:[`asterisk`,o&&`error`]},getFormControlLabelUtilityClasses,t)},FormControlLabelRoot=styled$1(`label`,{name:`MuiFormControlLabel`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${formControlLabelClasses.label}`]:t.label},t.root,t[`labelPlacement${capitalize_default(n.labelPlacement)}`]]}})(({theme:e,ownerState:t})=>_extends$3({display:`inline-flex`,alignItems:`center`,cursor:`pointer`,verticalAlign:`middle`,WebkitTapHighlightColor:`transparent`,marginLeft:-11,marginRight:16,[`&.${formControlLabelClasses.disabled}`]:{cursor:`default`}},t.labelPlacement===`start`&&{flexDirection:`row-reverse`,marginLeft:16,marginRight:-11},t.labelPlacement===`top`&&{flexDirection:`column-reverse`,marginLeft:16},t.labelPlacement===`bottom`&&{flexDirection:`column`,marginLeft:16},{[`& .${formControlLabelClasses.label}`]:{[`&.${formControlLabelClasses.disabled}`]:{color:(e.vars||e).palette.text.disabled}}})),AsteriskComponent$1=styled$1(`span`,{name:`MuiFormControlLabel`,slot:`Asterisk`,overridesResolver:(e,t)=>t.asterisk})(({theme:e})=>({[`&.${formControlLabelClasses.error}`]:{color:(e.vars||e).palette.error.main}})),FormControlLabel=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiFormControlLabel`}),{className:s,componentsProps:l={},control:u,disabled:d,disableTypography:f,label:m,labelPlacement:h=`end`,required:v,slotProps:y={}}=o,b=_objectWithoutPropertiesLoose$3(o,_excluded$40),x=useFormControl(),S=d??u.props.disabled??x?.disabled,C=v??u.props.required,T={disabled:S,required:C};[`checked`,`name`,`onChange`,`value`,`inputRef`].forEach(e=>{u.props[e]===void 0&&o[e]!==void 0&&(T[e]=o[e])});let E=_extends$3({},o,{disabled:S,labelPlacement:h,required:C,error:formControlState({props:o,muiFormControl:x,states:[`error`]}).error}),D=useUtilityClasses$35(E),O=y.typography??l.typography,k=m;return k!=null&&k.type!==Typography&&!f&&(k=(0,import_jsx_runtime.jsx)(Typography,_extends$3({component:`span`},O,{className:clsx$1(D.label,O?.className),children:k}))),(0,import_jsx_runtime.jsxs)(FormControlLabelRoot,_extends$3({className:clsx$1(D.root,s),ownerState:E,ref:t},b,{children:[import_react$24.cloneElement(u,T),C?(0,import_jsx_runtime.jsxs)(Stack,{display:`block`,children:[k,(0,import_jsx_runtime.jsxs)(AsteriskComponent$1,{ownerState:E,"aria-hidden":!0,className:D.asterisk,children:[` `,`*`]})]}):k]}))}),require_ExpandMore=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z`}),`ExpandMore`)})),require_KeyboardArrowUp=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z`}),`KeyboardArrowUp`)})),require_KeyboardArrowDown=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z`}),`KeyboardArrowDown`)}));init_generateUtilityClasses();var boxClasses=generateUtilityClasses(`MuiBox`,[`root`]);init_ClassNameGenerator$1(),init_createTheme(),init_identifier();var Box=createBox({themeId:identifier_default,defaultTheme:createTheme(),defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});init_generateUtilityClasses(),init_generateUtilityClass();function getCardUtilityClass(e){return generateUtilityClass(`MuiCard`,e)}var cardClasses=generateUtilityClasses(`MuiCard`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$39=[`className`,`raised`],useUtilityClasses$34=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardUtilityClass,t)},CardRoot=styled$1(Paper,{name:`MuiCard`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({overflow:`hidden`})),Card=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCard`}),{className:a,raised:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$39),l=_extends$3({},n,{raised:o}),u=useUtilityClasses$34(l);return(0,import_jsx_runtime.jsx)(CardRoot,_extends$3({className:clsx$1(u.root,a),elevation:o?8:void 0,ref:t,ownerState:l},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardHeaderUtilityClass(e){return generateUtilityClass(`MuiCardHeader`,e)}var cardHeaderClasses=generateUtilityClasses(`MuiCardHeader`,[`root`,`avatar`,`action`,`content`,`title`,`subheader`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled();var _excluded$38=[`action`,`avatar`,`className`,`component`,`disableTypography`,`subheader`,`subheaderTypographyProps`,`title`,`titleTypographyProps`],useUtilityClasses$33=e=>{let{classes:t}=e;return composeClasses({root:[`root`],avatar:[`avatar`],action:[`action`],content:[`content`],title:[`title`],subheader:[`subheader`]},getCardHeaderUtilityClass,t)},CardHeaderRoot=styled$1(`div`,{name:`MuiCardHeader`,slot:`Root`,overridesResolver:(e,t)=>_extends$3({[`& .${cardHeaderClasses.title}`]:t.title,[`& .${cardHeaderClasses.subheader}`]:t.subheader},t.root)})({display:`flex`,alignItems:`center`,padding:16}),CardHeaderAvatar=styled$1(`div`,{name:`MuiCardHeader`,slot:`Avatar`,overridesResolver:(e,t)=>t.avatar})({display:`flex`,flex:`0 0 auto`,marginRight:16}),CardHeaderAction=styled$1(`div`,{name:`MuiCardHeader`,slot:`Action`,overridesResolver:(e,t)=>t.action})({flex:`0 0 auto`,alignSelf:`flex-start`,marginTop:-4,marginRight:-8,marginBottom:-4}),CardHeaderContent=styled$1(`div`,{name:`MuiCardHeader`,slot:`Content`,overridesResolver:(e,t)=>t.content})({flex:`1 1 auto`}),CardHeader=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardHeader`}),{action:a,avatar:o,className:s,component:l=`div`,disableTypography:u=!1,subheader:d,subheaderTypographyProps:f,title:m,titleTypographyProps:h}=n,v=_objectWithoutPropertiesLoose$3(n,_excluded$38),y=_extends$3({},n,{component:l,disableTypography:u}),b=useUtilityClasses$33(y),x=m;x!=null&&x.type!==Typography&&!u&&(x=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`h5`,className:b.title,component:`span`,display:`block`},h,{children:x})));let S=d;return S!=null&&S.type!==Typography&&!u&&(S=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`body1`,className:b.subheader,color:`text.secondary`,component:`span`,display:`block`},f,{children:S}))),(0,import_jsx_runtime.jsxs)(CardHeaderRoot,_extends$3({className:clsx$1(b.root,s),as:l,ref:t,ownerState:y},v,{children:[o&&(0,import_jsx_runtime.jsx)(CardHeaderAvatar,{className:b.avatar,ownerState:y,children:o}),(0,import_jsx_runtime.jsxs)(CardHeaderContent,{className:b.content,ownerState:y,children:[x,S]}),a&&(0,import_jsx_runtime.jsx)(CardHeaderAction,{className:b.action,ownerState:y,children:a})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardContentUtilityClass(e){return generateUtilityClass(`MuiCardContent`,e)}var cardContentClasses=generateUtilityClasses(`MuiCardContent`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$37=[`className`,`component`],useUtilityClasses$32=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardContentUtilityClass,t)},CardContentRoot=styled$1(`div`,{name:`MuiCardContent`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),CardContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardContent`}),{className:a,component:o=`div`}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$37),l=_extends$3({},n,{component:o}),u=useUtilityClasses$32(l);return(0,import_jsx_runtime.jsx)(CardContentRoot,_extends$3({as:o,className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardActionsUtilityClass(e){return generateUtilityClass(`MuiCardActions`,e)}var cardActionsClasses=generateUtilityClasses(`MuiCardActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$36=[`disableSpacing`,`className`],useUtilityClasses$31=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getCardActionsUtilityClass,t)},CardActionsRoot=styled$1(`div`,{name:`MuiCardActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),CardActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardActions`}),{disableSpacing:a=!1,className:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$36),l=_extends$3({},n,{disableSpacing:a}),u=useUtilityClasses$31(l);return(0,import_jsx_runtime.jsx)(CardActionsRoot,_extends$3({className:clsx$1(u.root,o),ownerState:l,ref:t},s))}),import_ExpandMore=__toESM(require_ExpandMore()),import_KeyboardArrowUp=__toESM(require_KeyboardArrowUp()),import_KeyboardArrowDown=__toESM(require_KeyboardArrowDown()),watered_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVRIia1WvY3GIAz15ToqRqCmZoAMwT4R+3iJ66lTMwIjXGX04tjJp9NZQgFsnv1sfkL0gdRaj0/sPhIN5oH/yekTmOh0/239hkpmbhYQMzcNoJ1Y64mIvrQSjVC8ecvuwsDyrI2IiEopxxiDxhgLRMZPQSwGaFRKWeOUEglYSukCiDaix0wsB+hkjEG994ZjCwhFbGQeM/CtGcQYKYSwxxjXeM5JvfeWc17zzNxCCPuc8+I8xkg55/08zx+XgSc6RcgImSGDzQIXQ/x64LIOwTEjm7drtBMB0c5Qb8mmq64jk37vvWkG2O+93w4jkVEDTdPKse5bzAXndpJF+QSimXrgi4G3573rwcu3u4twEqNGx1gPLLbeDO4uqrUemGthgKBSaLyLiGgVGLNxu001fbwuvPRYRdcZuZwDZm4S6dPVjKlBRxqcSJ0D/fUcWGDM3KRdgnt6/rwXTLcnHLIm316utzf5X/9C3oL6BQBimEemYBpmAAAAAElFTkSuQmCC`,fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVRYhe2QwREAIAjD2MVBnc65dAUOi+0J+fSZXM2aX1hz7GcS71KkkIhbKSSGGpEll4jQfyBbrh9RVy4R0Q/0AyUecEGVfx0Roq4cFQGFIvXGNFEOnwmdSclbLhUAAAAASUVORK5CYII=`,rainbow_fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVRYhe3Quw2AMAxF0ezDFizDCjTMwLI0VKaBSFhyEht/pITXuDxXTulfL4NjBntkn+B1b5S6NmgjvsIijyBRJo6vToQQZ0WY4XB+iOgCb4kwx1kRVngpYlw8R1jjGxQ+EInXItRwyQdccCpCHed8wBXHESH4s1C8FiHGNSJccRwxHp4XitdiXFBqIWiPuwDmWChFXQDxHwAAAABJRU5ErkJggg==`,mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAVdJREFUWIXtlTFuwzAMRZmewwfw2sGH8KCtZ7CB3KB7gPgqBrL1FEUGX6L3YJey+CG+KCXxUBT6kyxL1CNFUiJNTU1NTf9Y6zKpjU/H9DtOQ6frMul2Od/M1dh8uQcAjfrx53WT0zFpGjr9uH4dRERe394P6zLdzNWCVcOkodMITH4ih+vx+ykoNMoMsXl/uF9nUcTrfhoGI8H2oGwNg66GMk9ERCwxPRgz5g+xxGZ7itfGKgarJGckigrCsPzy9kMof1gUXlzHDmHXbuuKUP6KEGYee/XzCIrG/b8cfPbqsJyxyZnmsdd57KuSkFVZlD9hPiGUL+HtclbmOToTtQDMLQQtVlvkkb8W3OcrjDlqTj3UHP0mD8m6MPadXIe+uykyKN/gogiwpsfy8iEQIWVbeptyzdSejV2hfKnWjM2B3V56KTyaQqKB+3aDqNGuXjc1NTX9AX0DskV/GZiF3KoAAAAASUVORK5CYII=`,rainbow_mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAYlJREFUWIXtVcGNg0AMdO5FFdRw96EDOrga6CCP0xZABXxQSqAXKIUHIKQk8r0GjRxzEPiddqRIu1mvPWuPjUhERERExD9GX+WKdSKd2rO2KdW9+Ac+3jGu01HX1rN8XhLp9PYIy/9f3z8XJm3vnUIWJoXDNWIg01f5YlOno/L+FCl2yqTWzpnM9T6/EKjTUVFam7nDpG6PoJwJz5bJwAb3nkOhfZUvv91E8BII06bZc4bysM1zKNz9Ztm8jmmbUjkjXgY8x/DVNqXW6ajPoVg0xHra7EI4ysKkWZiUCTBhJmRJeUE8rcFuk5QtkSWDF+MBfIa7uGPLiqbAg5BBlwi3sx1yIiKcduw9P9f7/BKEtWVJ2cytIpFumR8I3jal+3J+jDcCeC+mCru7ra9ytVoSU3NuaTGNYc9YyJbobrCOoAs7seHckuIyWVKHhyKcZGFSDsR7Sx5CteeeLt8mIuZz4c0ScUTJGuE5lkh3rFReIDvsPJu1NWf3MBmLrbqvBTull4iIiIgIkV/Jgy2+BhL+vQAAAABJRU5ErkJggg==`,shoveled_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXklEQVRYheWYPQ7CMAyFTRcGxMaRei/Ue3EXLoBYqg6dyhAZue6Lk1T5oeJJVURckk8vdtSE6MgaelqGnpaSc5xCAL7Y/eH+q9/hfjSGjiUBIZhxdu31HBrWlgW2CUgQBkBiKP2OhpVxHUNgXSzMa1q3z7d7R/eP8/rRcLIPrUKnOxAMEdHt4iYNtQgejc9zaKgvEAcsZ2KhLMiQoENSeyFQi5zSLnmBcjizx6lOEjJxTogYpzZAXH5cliVhUFVKU5o4ZDkFc6gGjC+XIFBzh2rnkJXY3rJvsVxEtP6EkLt0LYd4VXiVfs4hc6dulkM6qUs7ZAlujKUdCgIh1cghndAmUGko0yGUQ0TlHUr+HmrmEErqplWGluyvqswSPPZaB8TQJCkwyWWPxIPqFsVTl2sDJHOJH/k7NzwSPPTHXrn4zvUxdwIsfb4PXo8MPS2+q5ccSgay5LsbirlXOow+jbqqwQYBTPwAAAAASUVORK5CYII=`,apple_juice_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQJJREFUSIljYBgFo4CBgYHhxo0b/2/cuPGfLhbRxGAWFpb/MHzjxo3/yHwWFha8ljISY/i+nRPhfDFpZ4ZXT/eiqHFyz2f48+cPQbPwuhwbPrR3KgqN1QxCllw81sDALaCBIf71ww0Gfat8BmTfYQNMhCzAZjhM/OKxBgYn93zKLMAGnCd04bUcGRAMImRQmFLLcEmHl2FvQRnReoj2wY28OQyRj74ztG97xXDKrYS6FtzIm8Pw6cYNFLFVDnnUswDdcAYGBgYFNjbqWUAJINuCB79+Uc8Cs109GIaHHZhElAV4yw8WFpb/uHIyAzw3NzAwMDDgLIuIKuwIqSGroBsyAADMgGh66tN3lAAAAABJRU5ErkJggg==`,apple_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZlJREFUSIntlD9IQlEUxn9GjtEQFYJDi7ooEQ7RYoPg8sDddGvyjW8QXBpcBAehRSe3ol1wERxqCYMQqUVbGoKIaA8aXoOey33/THIK+oYH775zf9/5zr08+Ne/VlVoiRp7FU7QBwUd9Wo/0g+Ms0Cen4F9fhInUywBcHs94Ovl1VEQSyd5un9U71I7N3Iw3QYKfnN5AYBhWvS7V+TyBVUk771WU62FoxGOjrMeE93AhtlIBB7UsQDFxDAtAHqtJpliyWGyJvBRr6bgssEwLQzT4vntQ62JcvkC02FfJZQ0G5s7cm62uNjursPRCHu7W56uY+kkAPHDnAIapuVJAagk6+Iqxfqc3Zv9Zq/X6RJmCLCrlTKn+X1PkV8SffbS1HTYV6mkmU53TL3RVoesTPSY+g3SzfWk7vW7yScPkwkA9UZ7NiJRpzsGIJU1PZt1yHTYV6n0MbrhQMhxTauVsgOWSiQAeB+0PIco2p43A3jg6rHIRDfyk0BFOtzPAOb3189okeZgD3PR39TxFw0yDAIvY7DQ8JeMP6hvVK7PhaXOgsEAAAAASUVORK5CYII=`,banana_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYpJREFUSIntlE1LAlEUhh8lghhmQiQRgorUbYiIYotZ26JFW6VV/yJoFfQv+hUudO0iKSSirR/UQpCRQZxBpBbaou51ZvxodBXhu5lz7p37vOeeuXdgo43+vALrLsxHgxPvWKU7nuGtbCDAx4kjojtTj+4oQLvxNmPky8BZrRMci30/W60pRhgJk6UGi6qdBwZ4eH0HYH9vl05vQKU7Dmz5Ay+u2Av2ymUgwOmcDkC9VqX9M3d5cbASWEiuyEeDk3ROJ5NNEo4MATANhafHF2kGcHpy6AssWhQQ8Ju7KzkZ0lT6lj2Tl0sN6rXqUrDXIOgcDGkqAM3mWMYiBzg7T/wKBrA+RjJ2GYiqw5GhjEOaKlsW0lTSOZ1Ob7AQ3OkNsK1PeUylgWkorl2IXFRvGgp9y567Cy/YedGkgfiYfcvGNBTi8aDcDSBzZ+uWgYVcp0jE4pgCFIop2S7TUAhHhtxe36Nq265WLJK8B64Xa1VpVq9VSed0CsUU5dIzmWwSwBecdf5FM8X8e30B0FvZU200DxwAAAAASUVORK5CYII=`,banana_cream_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW1JREFUSIntlDFLw0AYht8WqSJWqks2g+BUKXQJEp1a8kuELP0L/o8sgkv/gqPUSUvpIgQ7lGBxdLI0IEVozqF+532Xu1jsJPSFwOW743m/y3sXYKON1lVphTViHY5tQkLTOPqVXm10rDyTgSDo3nYXAJCd3OcWlZOWnPt4vlGNGHPLBN89vVy+JV02+Tq8AwC4XsDqtD6NgWqjI2xfRqRxJBbZ3PiIsS/E2BeLbC5eBrfWNWkcCVNuDK7CCGiq2RrQTRjcBNOBth2odTKRGUx7PmrtPlwvwGS4rLnKFl0vQDlpYfJ+xTKgsPU6C3k0a6LuhMyEQqUxgVwvkGEDwPHBTwPUaMUJMZo1ASVtMXh4RH3/CQDw+XaNw6Md2ZkuU6fTng8ADH52cc4NSKoRqdbuW6EkHQ6gpJ5XZmIz0lVxQjnW4TBciJyJamQSQUkq3GQAOr8moyJ9g3PMor8pu402Qxt4FYNCwz8y/qG+AP/oVWW7If/LAAAAAElFTkSuQmCC`,bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVRIiWNgGAUDDRjJ1PefWPNIteA/AwMDw9Ic7JLRUzDNJdYCvAbjsIiRgYGBgYWaBt9+jimGywKKDcZlwX8GBgaGhmDcGlUliTMYmwX/YQYX1M/CqWFCYxphU5EAciT//3AJt8GkWNSwFmE2E0nOIQOMWkB/C5AjmIGBcE4m1WAUw6liAS6DKbaAkMG4JHGV88ToHQXkAQCMXCTuoxbh9AAAAABJRU5ErkJggg==`,burger_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVRIiWNgGAUEACOR6v6Tq5+Qgv8MDAwMkxJQBfml9Bk+PrvIkLeAsDm4JDAMhhlKqkXYLPiPz2BsFsEA1CIUM5mwKeSX0oez0Q2D8WFqkNViA+g+INv1aMEFNxerDwi5nhi1MIA1DvBZSgRAMZMFm4ozUFrlQT9OU/68qEfhi1h8wjAcqwAU/PdfA5FaaNJH0PDkJ58ZGBgYGDaG/Mcwk+QgenOCD86Guhod4LXg/6kWfMYTBmY1qObiTUXUADRPRXgzGjmApIxGDUCwsCMFYCvs8BbXZABiK7BRgAAAeO5Ta9GiRlQAAAAASUVORK5CYII=`,butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFklEQVRIS2NkoDFgpLH5DKMWEAzhgQmig0sY/iM7zT6G/LjC8AHIcDsHbxSvHzqwFc4n1TIUC7AZjh7IyJaB5AhZiGGBrp4+3ExBIRmCkUjIQrw+eP/uCdGWwdRevnQRxVdwC/Snff8/iY+TAT38YTbgsgwmDvMtyEfIwQa2AGT4hYirDIe2meC0ADms8PmMKhYg+wo9nvBaANII8gUM4AouQhbkffrOcDGLExw6KHEACiZkQMgyUFBh84Gd1xkGgxXaYEtQUhEoLkAWoFuE7jMQH+Q7ZAtgyRVkOAhgtQDmephFuCzDaiHUYGTDUYIIV45CtgyfhTCDQTQs/ImyAN1idAuR5ZENhokPTHFNsAAiQcHQ9wEAcVWNGQEhAZkAAAAASUVORK5CYIIA`,carrot_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVRIie2UsRXCMAxEzzz6PAaAESihyiJMwghMwiKpSMkIyQB5mUAUIOfiyCYQ6HylpPsnO34BsrKyXKInv2CFRQ+V834yXDcdDruNWXOXu8nlAFGomixgLIh7x2vr2SvevG46APBmhmiP61wLvcrUE4j0FVxResPttE1uGfb4iojl1jwkfTUYihJAawY8Ne6xdxTMM7GhT6XbA8M3+Jsmz3TpKXh7K2BRSAiPBXwVYsFTAcDrHb8Loqc961cRDUplzGBkxfUAEyhSiovwVIoAAAAASUVORK5CYII=`,cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVRIie2VsRHCMAxFfzi6tCzAEFmIYyyOhVIyAAvQpjaNjSVZsmWThjt+qTjvKYpyAX490w6MUGN+IwgA8Lrx4unKuaOCIMGWpFegdl2THPcGy7QEw2CPoDpnmjgOt6DZtQSG56U4M53vhcAEe4AAgG0F5oWVkoCNww2UcEWS1pR9jW6g6JbW4ojymnZDJdyoHdrUOqAVXbCteaa1OM6Ua0pv0uZMQ6/Fs2k9Ed9vKZiXLFEAMgQI4PEB208gwaLGgblTK1ng6rANtAWDHfYkoPz9/YM3a79OWiGiHuMAAAAASUVORK5CYII=`,chickn_pot_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACHklEQVRIS+1Vv08TYRh+3g8GimJigpOySSks+idggh20bC0DJNaEXoxbJTI50uhQicDoXaVltNdBXI1RBv8ErcRN4oKDCy1L7zXve72zP64hIekk79Cvd993z/M+z/d8d4QhFw0ZHxcEZzp8YdH/bNHX9XlmAogBZsYojYZ2tNACYGDYgyGCx4TEy4+Rgem6KaABSiJ1pctfITspv8e9eBIHj1fQyGfD+fGtCuqFN9oIEWGu+CnEDf/Un85zfLEbVBBEgQf/wcbuPsa39/D7aEzBJ2+c6th5zQwcbpQwu/lZsfVHOo+nJmCi3hxtn3S4lYYANPMPFDi2taddn6499K9fVQBtxqBeKKmSkGBm8TKIzcDYBQTNfBZj2xWYlu/myZMsQIS7s0m8u78KMGFyqol6wcFc8cAnkPq+foenUxNQQ9TLkT4ysUisWphJ4sujZRz/iiFWXMKlnTLYM8KjdbhRDjc9JLAsi9eu/oBGB0AiJYqkIU8TI8Te7SWMeO0cEOH4KIZr1xu6/tvzXRhZbwibf27CeW3/2wNZkMvlOJPJhF1PfXgBbu+KKDLGj6XXbilIjK+Y8HPhmTYh5boubLuHQCZERTqdVhsE4Dzlum9h26X+mHYSRAP7VgWHbxB5tVqF4zjRBAGJjKJEql+Nvx+9VavVVHVgTTA/8HtgWasssZVDJv53Wqb39MwYEHuqqhf4TILz+B/1zNC/aH8Brz3WGQIa2zUAAAAASUVORK5CYIIA`,chocolate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVRIic2VoRKCQBCGf7VTSQbeQGbovoQ2GxSzL2CkkE0+gb6A0U7wDQwkKt050zF3cHu7cOOMWxjudr5vd+8YgD8PxSUsQ+Cf3YaVLALhAIDV/UWy5ggsOCeZKnDCfZIpAi+ckkgFIrhLIrlFqq5rMRwAzNvFdaCqPMH2eOsX0rJgBWYHPoGq8gQA0LQdAOBwfrAS6RmM4ACwjiOrm6FMeot6uI6m7bCOo9G7lqVlQX4Hw0MmKzfh+vm87MnKXYIR3JRQ0izLSLi5wVZuSvT66fr2woeblsQ1czMkcFeC84B1TKmcEliSULgv0TmuqXAu2RrXHLgkVJUnCoJ/b5Dkl/Dg+AKF7I1oIzfs7AAAAABJRU5ErkJggg==`,garlic_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVRIS2NkoDFgpLH5DKMWEAzhwRVEGyrk/mNzckDHI5wOJdoHIMP9Ax6Bzf/4SRBizxsIdeASLwMuS4iyAGb4X1lPVA+8YmD4cv0EXksIWoBuuLTQVYan77QRFkEt+f+BgeHgI0yf4LUAp8uR/UGuBcQYLrDqBcMHBwlwMJHsA2QLkIMFbGiYBOVBBLLAwekzA4+2Be7MhBTJZPkAZgGGq2FWUmyB3mcGHntMH4CD7IY2PImCXA8CJKUicBDpfQZrxGYJAxGuB+klmEzhlmii+gSWwXCFPSwUibYAW0zjCxqiLAApghVw9nKQ4EIH2MIdWQ3BogKmmJySlGAc4M4AxMsQ7QPijURVSXMLAIP+thkNIUCYAAAAAElFTkSuQmCC`,garlic_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB00lEQVRIS7WVMUsDQRCFN8FGTKdYCYqglQiCRQjGRiwsBMFWA6KC/oFYim3+gBbaRC0VwcJCLDQhpBAEsVIQBSvR7sRGEnkb3zK37uUu4bLN7e3Nvm/ezG6SUB0eiQ7rq8iA80JffT7/oePl3PUuk/4HwGYEUIwC6bltVb3Y0Xs5Rwzi5btdER+AwQiCmBTgGsQ4J6xnaEFd7U74kiLI6WBm8059vZz5MqYIAEmvoiqlS+Omq3dclY8WTfLSvRPALGXWFAUc2bIsLiDdY7+zySjV1NKJ+vm81y6kSCY7q7MnAHG11z2zJsvbFCBrbYsACiffD3ktbLtqWiIWki5QW+kAMNcaXNRSGXM4ApssAbLOaDIa7+oLyoYBNzL7wBLhQ2FkoL5yuqVPDDLDMzm4ofvCQSi+YRzkSir/9Obra+BNBgCb1q+PdRO7xwragQQSTHE8WwJMplLq1vN0dqvFrHaCAQiAaDKyxmBsywCWgyBTn78JhGVM2wBb2PWOJGIDpG8aPxXV6cYJwogFQGGKxgoY3l9W/aM5k/H7Y1E9rx2254B3QTYRa4BwhIkjLvQfDffBhtgNdtWeMaGAICfNGisTiAQgxHU07WNpx0QGRLkHrphfBDxYKKqYnIMAAAAASUVORK5CYIIA`,flour_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEHUlEQVRIS7WVa2xTZRjH/6f30+vapVrqVl0ZSGKy6EQgDkwIypiaMYIfiEVjYoiXzZJM/KRRNOGTQuKcRickLtuIkhg2vCBREwNz04wwwiLboHRu3Uq30Z6ul9Pb1mPet+uxtzXGhPfLOee9/H//53ne9z0M7nJj7rI+ygGEMvD/so7OKZwoip5o2wOUQjBAe+dPuexcDeHtl5+iY8dO/Uz18wZbm+uw3malEwpEREEKJo3AC2BZ8VIAoVA86LkJQRCgUcsQ5ZfBMAz9Nto2/gtrXYUBuOxaQE1VZZ773BSJAOKciLMqKeKJZaTTGb3LP3Rg8zNOUZwAK6o34PnGetpXSrwsgGEEUZxMVLMyLHFByFVa+s7HltH14VsI8bwInZr14/SFK3m1zdZAaGuug91mpbn/5QsnHm1qy3OejIehUOloHwF8130MBg2LpWgMo+MzyIqfaGtCe+d5EVJU5FHXHQxd99I0EVG5Ukvzn5smUovAeD9GxyZp/3NHTtEnMTkXSODsIO0v2qaZOlRbccvjxafnrlFIthHRwpYtOBG+HYyDVSpQ/2BVdgcWA/Y2bMQTD9sR4WNY8HMUUq4RQ1w0BZNejRqrGdO+AOYWw/j24njpCN5xbAUXjmFrbSUWE0oEOA6sQorbgQjs1VbEoiGwGj3MygT+dPmxzqSl326Pl45fnfTgkU3Va0fwek6KaKpm5rDedh+21degUhFAx5nr0Go00LBK8LEEGEYCsykDIKZuzPMYm1rEwJC7dASH92+hB9SkY3FglwX+pAnf/3oVLzbZUHHPBKZmGzB8xU3BjpbtFNr94zSWIlFqhNSudnUnlixy42N2bN5gxtO76mGvGkJwYRMCSRN9d882oK//Eox6HWQyKQ48ac1A5xowOPwXLDoJFiJpjNyYxze/TZSOwLl/C6QQ8EqLHRX3TqLrtAFqNYuDe33oHbDQ4u/e8RB6zl7CwX07KLizW0nrRu6wWzNe1N6fOUtrbtNttZXwhtJIplI45ODxeZ8erzpC6O234NnHDTCYM65/H3HjhX0+9A1YsJKKw6JlaAQTngBOnh8rAgg9b+7EpI+HscJInRBHjuaMcxJB3zkLXNNevOeU4GjHCo46pej62kgLnkzEoVCqxHWk6KtbXLyuhZ72nRh2+WE1aSGXybFOL8HuRi4DaPHh+EkF1KwSrznC+PgrNQ6/xOOzXh0MOg0tLtl1JIVaNUt3VRHgeOsecEFOjIDcS8T5R18qcORQkqaCRPbuGxK835GmkXzwSZpGGorw0GvVVDgcFzDPRXBhZIqmSbzsSIr+uOmnByZ7cMiTOBsc+xvb6x6gAG8gDqtJBc8dHhKJFCtpAaxCBj6RglopR4iPg48ncfHabB6AfJT7B5e9MtYYLPlP/j9CZdf8Az/h7SitknPUAAAAAElFTkSuQmCC`,french_onion_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UPRKCMBBGvzh2Vlg43sDOgoOgDYU38BCUHMIbUNCgB6Gg8wYMBTlCbExY4iZk1DJfBfl5b5dkAGJiYoRnTv2DZQ8aaJMBp+thkXq/PQEA5wfPpQLVZNNLCJwTEZkAgJWG+zaEhClIGQsANfYdtvujmdXdLHXCfSLCEmu6eOw786xlxUYCAMpqQHHZzeBlNbB7aWZn4FqUtDlkWiNp89m4TGt2va4emM7AGw2iQBfczsc1dXURGlo9J/hJYsNdgq8kHNwnAN73eElErnbQr8Ip8iSEEePOC53iSqgjgs9oAAAAAElFTkSuQmCC`,fried_tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DIPDAj8Fhv/4fLrpAW6HEvQByPD+EhGs5u/a/wYsvv0sAwMuS/BaQMhwkMH+VtwMG499Jd0CQsECcjnIcBAg2wJcQQMytLDnzUi1ADnsiQkiUPjjAqCUhZKKkFMNKIwJWQAyGJsaUPJlY4ekLrgF6EmSGAtwGY6cfMEW4ErvIEtwAUKGw5IvI6npnVDhCMsbKBYQCmvkDEWs2lELsEYFtuIDHMnEhCssQxGrFlZ8E2UByLkgDcQ4BqYW5kWikinMNcQkafSKh2CNRijdE5KnuQUA0jXJFH9Pv6cAAAAASUVORK5CYIIA`,grape_syrup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUtJREFUSIljYBjqgJFYhSmBBv+R+XPWXyBKLwuxhvuavmVQMSliuHOmDypq8J8YS5iIsYASQHQQ1bpLoARR884XROslCtx/8Oj/wiTd/wuTdP/ff/DoPxFaGBjoEURERTIMqBVuIdkConxw/8Gj/y8+I0LlxLGTDMQGE8GIQjccBh5cPsVgYWXOoKggh9cMvJK4DCfFEooiWUHXjKAanJF8/8Gj/zUGPQxXvp9mYGBgYNDhNGXw+PCQQeXyJBR1RxRyGe4/ePQfly/wpiKY4TD2FXYGBh3bXgYGBgYGjw8PGXYIyDMwCMgz2OAxA6ut6K7HBnQ4TVHkN9xciTUucMYBPsOJkSdoAbXAwFkg/V+JaEPwqR24+uD+g0f/s9UqGZ4y3sNrgPR/JYapt9px5maCRUW2WiUDAwMDhkWwYMFnOEELYJbgkydU2AEARkyHfSdIwAwAAAAASUVORK5CYII=`,jackolantern_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVRIidVUMRKDIBA8mJS+wHfkL3mAM/bpU6a3d8YHJG9Jny6lL7CWNHAg3gFHJoVbiHC3e9yKABwdqoJjJHxpAXO/nHFye7yyGrpWvBQnMQNw5wAFDkg6iFFkL9WBIdY4sWxuXMCYK8EYSKFULhZROUIN1OC1yW8wL/597TtWKIyFnE0xO+Lu5wWgbfYCepxYcRcLua6L7Cl6Pz9VMSyezfgRSYukEFnkPA69XvtuN49zYrAdpEgU9DjJOohPTU6cjdlR2YrQNv5MO2I4UmsAtP/4sPjLnxxfYmwR1yEmpvPIuwi53MYq8w6OL4W0Y7hN+2EVAAAAAElFTkSuQmCC`,hot_sauce_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVRIiWNgGGTgPxQTDRhJMfz/f4jZjIyMROtlIsU15ACSfECOXpJ8sNrfkWG1vyMpWmgfREPfAmIj+T962Idu3E+UfmIswDCcFEuIsoCAPF4zWIiwgOHf/3lYxZkYkwjqJSuSbeYRNpgiC2atM6edBdd8ZpKknqg4IMdgGCDaB1pb0rGyCQGikimBVDQE8gGBnIwXDJ7CjkL9tAMAL4QnWOXkSy4AAAAASUVORK5CYII=`,rainbow_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVRIid2VvS9DURjGf5UrqZCwCBZNByQdhBvpQmLqH2BisIjqYrGQSNNEIo1BGCQsPrraDGKyaNIOGi4xSFiERGi6kDQ08XEM7j3t6a3bogvPcs77nvM+z3ve8wV/Ha4qcAgnzt8ICIDZ5oTiXMgMKLw1PyXX2EJjyzZgCspVfVdAWOROKBSpVEAAwhdM4gsmlYHFzKVjYDkBAYjRw4RC3BnsqjAv0JzII6lxrsRYWRJzY0ui1CkSAJHUOIAiYKx/Tj/f6FcC3Jyy0t6h+EI39QCuwhUIgFR8CIBd0+l1xZj3byrB/vATZ1Hn2luwBMTBjD9PMLijTJp+yQGwVLtMX3gKgO5wZ0UiVomU2/iWDRFzN0v7QkQAiM+9K8FGdNvMUucVg7X2YTlmlUieoofVAA+rAd6yIVsWd8ZRyez08IhiXz2f2ObYjunxcUaxr417vK4YAINz9lOtocvWW9frLHB6/Sj7Y7m8kEdvlf1s+oRs2p7pV7Cl9LR3q9iF5AD6RPHjqSJ0Uy/rD0UXrcfTWDajNr2Phpb8ZufoKSBHEltwusklsVjrLnY5PvllBYJa1OxZ7ff+EJtA0+Q+TCquavx6gPlyVovs/+ADoliAUUBEL7MAAAAASUVORK5CYII=`,salsa_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVRIie2ToU7DUBSGvzaIdZItRQ/sCAKDZWK2AbOXAMODkJBN42sgs3sCzAQZaoKKKZYMCRNLD4Ldw21v2y3o/urk9tzvO/e2hTp16uzMotGTRaMn/93vlT0YNbsSpSHBbMP36QEAY38JQJSGALSSmMeTSwBuvt4KWc7iqNkVGwIwGU7p355XTmrkeZGfhwcPC6I0pJXEum7gwWyjkwOs23MdIEpDojTUAZ0TmCvJx76isnVTt5KYVWfA2F/qSXxnpwUAdKOdyXCq8HV7rvWqM3A49n0J4ROvk2MADi/unGYzYb4G+Hy5B+Cs/w7La2VnBCKCd/QMoKIymQ1VMCAfV3jeHzv/FYnI7zsyorzMjoEaMJCBFwkyEm2yZJnGLVT7PHfosh/NkexKEbxKACBb0z7gUlaVICOqcuzBqFOeHxC+hOOYYjlcAAAAAElFTkSuQmCC`,soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVRIiWNgGJHAysrqP00Nf/H45n+aWAIzHIapagm64cRawkSs4etWzscQL6lsJqiXoAX4DO9pr6XMAkoNxwtgYR4TE4MS5jD+/3dr//9/t5b8iEaOVJihyIYr1zAQZQFRkdzTXgsPFnHuKwwqfcEMTE/4iXIoURbAALLht/rmMbz8qkNdCxgYGEgynCwLSDGcgYGBgYUUw0kxGAZI9sHwsiAoPJHh2LFjjDSxgBjD8Vpw7NgxxqDwRIoMJwqgl0mklj1EuQLZUKq5nFoAAB8UtnDnOmpmAAAAAElFTkSuQmCC`,spicy_apple_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZhJREFUSIljYBgFwx4wYhNcfv01Q6SmKIOJluZ/QgacuXadEaYeG2DCpZEYw4lRx4JPkl3LlKAFP6+dxiuPYcHy668ZeNjZGNi1TBkmzVxI0IK89HgGHnY2BlzBhBEHm+99ZOgoy/3f8/giQcNhoERWn6GiazKjrxI/YQusQ+JIMhzZkqNrFmGYhzcOGKI0CZu87DpeaewWQA22yFvO8O1QCwOXXQ1O+gRDJETPYcJuYWBggASRTTjD////////erAZTmftM0DhI9NZ+wz+W4fEEZWsGaxD4v7vYRRAMeS4uT4coxsOE8dlAc44OO7Qy2B5gIGBy66GgYFhDVwcFjzu02oZdhLhYKw52fnfe7gl3w61oMh9O9TCcNyhl6FhlQDUchKBdUgczrD+erD5/x5Ggf97GAUwxEkKoksXrjIwXIjEmopgwQZPRZOgqYiBDauDsccBNG3Dk+AFPDQsH8jqk2ABmkWUAIxIbvP2ZyzB4RpcoERWn6HN2x9r3YLhg2cWdgxtDAyMJVsZiMs4UEc9s7AjyVFUAwD/O/0eRzI1LwAAAABJRU5ErkJggg==`,spicy_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVRIid1UPWrDMBh9atrg3qCLSwYPhnbq2jVgaEyP0SP4ED6CzyEHCl27Zit4SCHEi2/gEFPUIZb49OOftF7aBwZL+vze+55kAX8dbAIO0cd58UtiUecR6jzC+90T6jyyBH/agWjJnLhevSrucwUEAPSRmyJjI9LiAIBNMsMmmVmF5tzlCOJOxw/p1+BcX0S9OVO0cbjAXB0M5mwSHneJVTNfpCcFF7HMUbY7hrBDQHWgxfH4sT69rLoJmRdAHLZqXMYFAMDnoV5H3Z/jsIwL+DxUQswLsF9yJSA7UMe0qTJ83j+jqTLLqemSOpVdiMPWcg+Qq2K/5NaiGYPVvhdoBlxQAj4P4fNQI6TvJnGXKbquCZgFZVxokbg+pobKuADzAswXKa5uXgDjLhJ0YyXx7VusEdCIZHzyvFMProEYOjnSeeuuk9CE+pOpQ7q5Qw7HQhx3iWiqTKC9OckzGSYn/B/4BhgmpsuPu4+VAAAAAElFTkSuQmCC`,spicy_pickled_garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEUlEQVRIS91VwQ3CMAxMxQZELMAGLIDon2cWYBBeDMIC6Y9/EQuwAQugsAEqMtJFrpuiJk0+9Gm1d2ffua5U4acqjK/+kEBr3c0dm3POT2YwouIEpN5a29Vn823kfWrV4lgPmlpeOvXa9/W1B6uMMb1i0GQQEDg9IQLOiPduD5dGQGCrzc4rBiDIsxCgC4AR4fN+9d1RPboDeMDHxNWjDj+SPJDz/+VLFMF2rb2PRMKBoVh6kY2Ajw4qSEQSgTRXJocnLIoAixYaR2g3klIkt3gs/+gyqgNu8phivs20F03TTN9kmSIOliVF5AEBYVtD+c8SU5oviHgXvD7LA77JUrH8h082GTch9rLJW0DfFz/6H7rf9hk80F8vAAAAAElFTkSuQmCC`,sun_butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DCgWHF/F+p8aFlqG/YabC2eADDdxkqKG+Qxn9j1jgFkyzCwAhQ+lwQQKHhDACCKQYHWM1/8vZw5RFA88JnYMrUu2YUYyzIIIWwGKLFhx+MMAWjBrYtP/wJg0inywfskshrT8OuxBNHwt4PnhijXYvnDsxhAnKYhwGYxuKrJFRFtArOEwy2CWEGUBLsNrA/nA5jWv/4QzyMi2AGY4zGRsloB8QZYF6IbjsoSgBaCyaGgXFZQWeOgFHcg8rJU+KKjIKZCQi2mYfpq3KgAeqqgZelcVKAAAAABJRU5ErkJgggAA`,chocolate_soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVRIiWNgGJHAysrqP00N/3Bl2X+aWAIzHIaJsYSRFMO3zcrBEPdKm8Jw7NgxnOYwUWJ4Tsc2gnoJWoDP8CkVXpRZQKnhDAwMDCyEDEc3DMZfM7ERKiKM1wKCQTSlwgse1siGt4vfJMYDxEUyzBJkw5me8FPPAhhANrycVYIhJL+euhYwMDCQZDhZFpBiOAMDnlSEDZBiMAyQ7IPhZQGhgo4iC4gxHK8Fx44dY/RKm0KR4XgtwGUJKYYzMBBZ4SDXXKQYThcAAIIOcW1FSq9sAAAAAElFTkSuQmCC`,olive_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgJNZ8dlmB/8hqfz7+QJReohSBDKa5BXpuIv9F+N6APfHmkwjDpV1viHIcUYrApvJz/ndy/Q5m7tvNycDw8TtReolShGw4LB6ItYSwBUguR08QxFhC0ALksEe3gJi4wGsBPsNhlhGyZGAteLCV7T+bnhjevPjr0isGBe9fOB2K1wd0taBjuhCKTyoy34H5VPEByHBdQ0mGt28hhoKAZsZlBtPHItSzQEqOHcUHVLUAZDJNgwhfMqJKHNDMgqGfk7EV0+jBdfSkAAO+6pNgaQqyRM+cG8XcSye/IvgEKh7CFhDbKsChjuYWAAAtPZoZgsyz7QAAAABJRU5ErkJgggAA`,onion_rings_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABMUlEQVRIS+2UsQ0CMRAE/RExISlUQAs0gIQQGWQUQQUQkxKSIYREA7RABcSUAVqktfZPd28nn+EI8fbO3d7aTep5NT3rpz+g6HCVRYtR+qjS7V1vbREA8ct5m573R2bsr6/f7xpQJ8AT104Isj4pOASUxCkKyHg4yIzDcZNW61PuzgV02QIlzzL8h0UrAUYnVQBuhkAE3y0nLaeqASreOyCaC4rQDrSolkWadx7QpFjvddDRPckAiKuoVjSdz1oDtFGN/Me+H0DFtSp70Oad1rAAN0Uqjo3IMFcXQMW9MzlFHoA30esMcCuuN9da3VgR7QIH7UMHADvj3k6ANwN6GrUeRdJqoVM3RaVH3su9N7cWgHS1wAPxXpQSxlmFb1HURSkAGvPwsStZxO9eAPiNhXwBw/0AOoT0r0UAAAAASUVORK5CYIIA`,popcorn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVRIie2VP2vCQBjGn0taDSI4tKBLUYyD+Kdzp27uguAkfoAuLf0UdusH6NhJlCKOQqFbP4AWhxAFF4dKrUopmvPtUA2pNMk1trRDn+W4e3PP7/K8IQf867fFRB5qX++RXS1TGgl5OJob4zwR12k6uCXiujknrpMTXMicGxMirtO81ySiChFViBsTc50bE28Qq/l6tALmvSYZ47xZs4NIbiA+PYfEHgGpCv58DyyLoFkZu7HOe31wB0hV2/07TuY0K0MO3QC4AJZFLJ/SYMF9yKEjLPppyAcnkIPAom/vYQvIlEbQLo+hp1qIP/igpzTkch20Wv7V3I944wrq6Ry9hg+Zs5FzFJ+9QDsbJSISGgF468G2cuzBprovr+gmIgCA9DcdwIygpobJqpoaNiOCTTzCgE1zK8QN8OM9EAIkAwrqq+zXqiciSAYU171uTWaMMWpnoyhoww+QgjZE5zAGxhjg8Ff+UkTJgIKCNhQ6uSeAF4lcFiKf4HaXzp/WG0R0GZSwU81hAAAAAElFTkSuQmCC`,pumpkin_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EG0v1j4P0EnMjAwOPa+xRmXWCVgBitocBBjPsODGz/A6rBZhGIBqQaj247NIrgFIMPxufjTt38o5vFxMeH0HcgimG/AFpBqOMxkYiwhygKQgaT4AKQe5guUIAJJEBuxuMIHPR5QIrmqquq/68+ZcL3EWgYzFKRxN3s6Q1tbG9xcjGQKsqSkLBFsycVmC6KSqX7tCbC6nq75KIaDxLDmA2RLiLIBh+E4LQBJgCwB0TDf4LII5GoQQA4WZLUEi2uYRbgswGUwTD1BC4gNIlzqhr4FAOLAXRkvhyyAAAAAAElFTkSuQmCC`,salt_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVRIS2NkoDFgpLH5DANqwX8yfYfiaFw++K++6TjJ5t/0s4TpgZuLzQKyDQc5CmoJTgvIDRYGmI8JWlBz4S7JQdNioEyaBVcPKxFtibbtPQaqWLAuB2Jn0BRUu6liAczwR48eMcjJyaFYQrEFMMPRwwzmE4osABkOczXVLcDlcpBFyEFFsQ9gQYHsG+SIpsgCWLCADEdPPTA5qliAL1OQZQHRuQyqkOSMhmyB0R9lDPvOsaAWJ3SzAL2gA7kMvbj+T25hB/UmRvGPtT4gNQ6wOBRuxIDWyWR4BFMLAHg9rRn+GIpBAAAAAElFTkSuQmCC`,summer_salad_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVRIie2VL2/CQByGn9IlBQdJde303ASmAr4BBsMHIJmZQZA0TSZmMCT7AJgZvsACogYxNz1bTQIOKppOHNdey7UlW4biNb1c797nvT+/Fm666a8yake8rpLK95N+pcddnfF82Kv0f+IUoAR03nmh8RnofY0OlAe8rhLVeLO/zLzbLoAUSKPKfP1l0G0LA9nW9alB5sNe7ty0Z7DZC4OPEMZ2E3sZAeAFBnGYPU0Hxp9NeDymc4pqFNPLgV5gYDrQmQnz7cAiDmF3bwHCHKDzHeEF+ZWoq2ig0XSRHY00tJcRpgP2ISIOYdsS/btnAS6TFmA6WWL7IFagmqogCfYCfTloAb6bpBNlOtMR2wECFIcivVTZKrQAmWbbstK9Vtv24bRdyyg1fhnpC14AJn1DFkq3Db2HBN9NssQDK22rSSXUd5PcLVJrQXtN5Y2QqTozI217gYHvJkwXBm+jIz6UXlG4QiVf+Vv0C1CZcT2gACpVzf/g3/UD5wa+Sc12t5MAAAAASUVORK5CYII=`,sweet_potato_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFElEQVRIS+1UMQ7CMAxsRngHG+IlCJ4AY/ukZmyfAE9BbLyDjiAHXXQ1DkklujVTGsd357NTV8283Mz41UKQdXix6L8WXU6rlyAe+6HY2uKLAr7d7ILi++OWJNEiAoEc5lQxAUjgD3ItEQ6HKVVQxGajEpxJriyrwkigVaUALTAm1EKjRczOaiyVINGqtWXyHZus/UMyK84Bc9XoS6wAQV2uRZQbfggRklEPuA+llqXIJF+IAoFWbzXSAtLVWtMVLKrrOpDsh340ahpUA/yaPLx4J+Bt20as63kd9ofu+SUaMQ5Y9xBvmuYzRZok18SSuIB7710cU9gkyVxRCRgrxl7AR++AgZhsCgFAOaf4bzqFiO++AQm8tH22dLVsAAAAAElFTkSuQmCC`,sweet_potato_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EF03o39P0EnMjAwGO76iTMusUrADFbz5iLGfIZbW7+B1WGzCMUCUg1Gtx2bRXALQIYT62JC3gJZBPMN2AJqGg6zHGYJfSyA+QJEEwqmV1xcDGLfIJGKDaDHA0okV1VV/Q890wvXR8gy5OCAsVebFDO0tbXBzcVIpiBLstyNwepft0YRik+wvGj1MjA9bedZFMNBYljzAbIlRNmAw3CcFoAkQJaAaJhvcFkEcjUIIAcLslqCxTXMIlwW4DIYpp6gBcQGES51Q98CAC9yVxnnyn4gAAAAAElFTkSuQmCC`,spaghetti_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVRIie2VIRLCMBBFfxngGhimAtEz9BBgEKgqLkANBgUX4ADY3AfBYLgGFYuAbXfThDSFGQxfZf4k/2W3mynw16+VhDaYEsTrxT6839YwFDwvDrhcb0inExhsKBbkBJgSxMFS7BkcyT7jg7YApgRl+Vp56XRSV8EgALXHUBdk4CtNBnfxsnytvpcTwK2JCZbevDi0IK0K+gT7PECPKdFqrGHLotV/2Xf2sNvq0NO9zmYAnSvCbNTwbFhIr1AAgMhK1BSdq6Z9ySjuTcmzCizW5NsUK749EBjTb8juw8dVyNu7AB9B7HAfoBfEFf4OAOD5IkMgMdrOrC6zGCol+h/xl9IDcxCDNEfiwBwAAAAASUVORK5CYII=`,strawberry_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVRJREFUSIljYBgFBAAjLon+MGsY8z8h/YWrjuJUwIRLgschgpDhDAwMDP+h6vC7AB0sv/6a4ffJTQxrnv4nZAFDiDQjI6u5H0OkpihWeRZcGtc8/f8//vtJQuYzLHxq/j8ST1DjtCDRxYJx/h6CQcSQ6GLB+AOPPIbNy6+/ZuBhZ2OYvXz1//qMZELmMzTOmMuQGhnK+OXnL6zBhBHJpBjOwMDAUJ+RzDB7+er/POxsWOUxLCDFcHRLsMlhjQMtFyOSLGBgYGBgCMnGKowzH1ALYLWA49w5Bo5z54gygJBanMkUpplSQHQQZe83ZMjeb0gbC2AG9xYzMvwwIi0BEO2D3mJEniTFEqIsmOp4nuz4wBrJMBeiG4rNErhvcOQDvKmI1PDGBjCCqFhKkDEch2twgfCQbIZiKUGsRTbW0lTqxCGG3mfvCRbVyI56ZmGHs9KhKQAAu7Vof/9SQdkAAAAASUVORK5CYII=`,sugar_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSIntlTFrAjEUx/8tdpBIN+lYpAURl3Np4XZHP4F0cG2/TUtcM/kJHN1v6KJbUXToKG5Fs1RIl+a4u7yX9Czi4h/C3Utyv/977wIBzjq1LgLr5r8sn4GZJgmaURQkz2czdOKY5FU4uNY6/biopNtFPJmkcTOKIIXAy25n/tCV1IAcUojcM/tepqUklIvt3EEGVMbF0ZDGNKQhDbh+pf8AAFS9jsFm42xqqyoAYPH0CAC4un53mKyBFIKEUmCrUgZaaydzDuwz4I5pDh4C++StoCy4VAVtVT0o46LYCr6/HpzJSm2ci/fbXi6mKrgMZTBUfQxV34HbtZDYFlk9D0YAgNc3BlAbO5VkxVawXK2D2SHTJm5/sEX4zdJWkpWdo9pn5b0PPqa3uL+78Rrvtz0sV2u0Op8k7+g32tH1Axo+8aH5Pi7fAAAAAElFTkSuQmCC`,tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVRIie1UuW3EMBAcmgTYgSAIduASHDhw6ALcgMu4Qq4MN+ACFCpQ4BIcUCYO14EACuvgjtLy0YmJHWnCITmzu7MgsGPHjj+HKLnUdy2VCj6/vAaamwZ919LDfYPRAVql55wfHXA+2cDkrkQcCEUmkvMdz5vBZgtYNeDio7twE0loBUgxBbwZLHyXRQZ8LLzKWFirRZzfAzBnlhjkxsJFOW8Gi6pukvOvj8NsEkyt71qq6gZmsCASECJcHs5VdTNXzrtR35/BmyQWrRA8jLdndICSEvbHgGd0Pi3iT+9H4Lqh2Qx4u0rK4IyH7LEmvmqg1bKKPFjP8QL4WGLx2ID4YymmJFhvptUlgy1xTtA1ebjHt1xTWWyJA5mQ4y3Ywi3x+KD4Q7uh8f/4BeeCk0AHVwhiAAAAAElFTkSuQmCC`,vegetable_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS2NkoDFgpLH5DERbwL71y39kx/z05iFKL1GKQAbT3IKWatH/oT6/wJ5YvYWNoab1NVGOI0oRsuGwYCLWEoIWYDOcFEvwWoDPcGItGbWAYIoa2EgGReTQTkVeNvr/nz18gLc8lJJXYNh25CLOoMYpAQqa4JhDDMfPXIJbkBgTxjB/ySoGZPrGjRsMa5fY4Sw6iLIAm8Ewi4aGBbAwQvcJSNzSRI+8IAJppmkkw/IAMVUqvrqBYE4mxgJ8aoa+BQAVra8Zml1jUgAAAABJRU5ErkJgggAA`,yeast_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS+2Uv0vDQBTHvwc6RAIhOJToZinURYiC+RdchG7FvbropH+HTrpId+mmuPRfiKABFwNSN00dJBSCGRRP7poLaS6/sHQQfVtyl8/nvXe5RzDjIDPm419Q2uG/1SKa6kel6qts4mCntw0aKQgBzPa18BUy8hbjbDcOG+huNpGVfufGxe3JY7IwiZcloNZRA4zoe+/otdbjzAXp5XWEpZrGL1H76g66sQD2YB9z2QQzLeDwwAvxQSmHPw/HsLwQknlCoBqKJEkK6NaZCX8QYOSFuGiZuZmnZexMdi4daIYCva6iv+/ElUwKTk3+rf8U4JNSdK1VqfdJOGvVck1Dx37AHCHQV1S+3D8oEQjI2yDAF7JFLLNd2+UNX6yPwSIqC5IiaSxSGVwqsPaa0NeU0vlStMG/D2Gfu5lnwF7SaSRpuPTPRpn9SJIFzxPwSkQbWEVFEbVDbKl0k9O89JSQrkFRAlWG3VSH/vsF3ysBgRmuWgXeAAAAAElFTkSuQmCC`,wine_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/C9ujweYbeC4FUUTpJUoR1NX/z2+DWGDoNVQt2LIkD+wDn5hJtAkimseBR7oU2Ac7Zj6jug/+e6ZLo6To7TOfEmUJMakIw3CYTcRYMuAW4HQ9sb4g5AMUC/4zQEoKRqRMTCiYiLYAZHiQrhvYgnWXd8EtoYoFMMM9bZTBFmw/chduCcUWgNI+yOVetsoM/6FlKSMjA8O2wxBLCOUJgkE0a0oC2HBD41qG82dbGP7//89gYVPLcPJoM9iStJwFePMDURaAgoaRkZHB0LiGgY2DgeHkUYhFoKCiigU09QF6HIDCHwSoFgegMgg5icIyGCypUpyKEIUcrDqGWQHxCqUWgMxANxmlVCVUNxNKReiGkcwHAB32mBlT632HAAAAAElFTkSuQmCC`,wine_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWUlEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/bB5+sPlTv3wEUUTpJUoR1NXDwAIlCVmwZ+69eEybIIrSdwZbsOzi3qFnwX+Y62HJmlhfEJOKMAwnxZKBt0BAUPC/l6whw39YHgblMCZGBpDAskv7CEY2QR/w8PD8X7ZsGcN/mA2MjAyf/SIZ+DYtZ4iKimL48uULXjMIWsArKPh/+vvfDLybloFd/dk/mkF271qGx85BDJmCbAyf37+nzAJuHp7/2zeuZXjkHMQgu3cd2GDejcsYBHk4GDz9gxm+UsUHn/4zMPByMDB8+Ay25MOXHwwMjIwM0dQIIlApemjvToZH7uEMvOsWgVPo5+A4BgY2FoZMtr+UBxHIgkhdJ3DK+f8PkpTAqYjIIoNgJIMsQM/FQyuj0cUH9or6DNJ8IijV99NPbxgO3r9IeU6GVZc4GgcE45CgAhJbHRjKAc39ixlOVxPLAAAAAElFTkSuQmCC`,apple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIljYBhRoM1G5D+peljItUwpRQlu2b059xhxqcMpgQ3AfDBHgw+rPDaLmEixAB/A5Qu8PmgSQQ1zFg0I/ecGA8OCAD6GZ7ufMfx4+AOvGTglm0RE/kfFRTAwMDAwvD56GKua3XefMjAwMDDUvXlDWhwQYzgMiFrbMixbtAKnRRgCpBiOzSJ0S3BGMimGw9RHxUVgxBuKBU0iIv9dlaVJMpiQo7D6gFTX4wNUywcjxIK6N28YYZmHHCBqbYvfAkoBUfmAXF9gcz1WCwhpwAWwuR6nBXVv3jAuW7QCqyXYfIfPMSQV1wwMDAzmPj4MJ7dsweoofGYNXQAAcmlmvV0urLkAAAAASUVORK5CYII=`,apple_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAEhJREFUaIHt1rEJACAMBEBxIUv3rxxLZ4gYMHDXB1L8h7QGANSw5thrjh2d6znrwEdu2/GKllFCpChCDZSW8Rk4jAAAAAAAmQ7xkRFp1rUPoQAAAABJRU5ErkJggg==`,apple_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAJ1JREFUaIHt1T0OQEAQhuEhInEOlWZP5HhOpFE5h0RDpfCXmF3DivcpN2Q38/mWCAAAOFS6fCpdPmnfS6wO0xSViIjUQyd9O17eJ7U4UJR8I4Pa26Neff0h7biLV8ssp7ibwLLR2XSsp5htF96IKZg2Ms3z5tPQRvzNX0doq26N7Om76Z+RIRoWUXo3xqp932zZGdoHAAAAAAAAIDYzqQZOI+OkkEgAAAAASUVORK5CYII=`,apple_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAbpJREFUaIHtljFrg0AUx/+KIaSdHFw6FDKJkCFbln6KjCI4ZM236FfI2qEgjv0UWbKVUpAOpRBolgydEqGF2CFKTj3PO89s7wcOyt3zf3f/994BBEEQBEH0itFnsNC1cT+4QWzus+Lb8m5mvH694/njRyqG1acgAIjNfRaNvPOL7yF4eskecCu9cLNvQSXiRHnKdQV1QPnIQteufWP94Z8cI0iTjH3f4igd35D5CSumzbSysZqwAGA6nmC125RWFbr8QDzTLsczAziLUvk5DxMAVrtNFi3miEYeopFX2gEhcYJoMS8tRpeLhzpkhMo82aOsZVmQJvBPjnTdkBlfeG89PGTFMx1PuGMtVDLDPznG9u/Y6AVuFgnGs4lQ9R6vU3CzTGRM1SwKXRvr4eEiJidIE3y+/dYEWaKAuinchcZK3XTuPJFt5McsNVZYqXUbJfIdDV3AH9S994hvNUFldR3LAiOKXUxTO9G6fqh4rJf7kKhRNvW1ooV0pbWgVWGbaCmdzx5TviFWEe6QUtC8r3UxPku/FzQN4xdoCarWF9U+yENrctXYbX2NIAiCIAiCIAiCIAiCIAji2vwDnIL7S+vEpDgAAAAASUVORK5CYII=`,apple_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAvFJREFUaIHtmG9r00Acx7+XlcLqyorWrtW4MBwiiLQwopThA0F8Pb4UX48KIj4ILCIDwQcykWj8Qy0jrlnRdW18UC+9JmlyubsWB/k+WXc5Lh++vz/3a4FChQoVKlSoUKFCF1ONejVYxXs0nk2NejUw9NpKoLiAePXoSVn6DKVAL56eSZ+hFEiFcgEl5ZHqvOIC6vUHxHG92Poykl0oZMusthLvxl5/QAAEhl6jS4Gh1+C4Hn2mREIOOa4HBiymLAfTnktVWZI7WXmV9Zw7ZEgO20L92xOwwBQmLczK+xBbkawTPDDI61AeKOokdYq3AGIONerVgKessw6POsVbjYkhU93s8rSGWMjWd33iHIWJG4j2GJozeRVzaPxbvsexMHkbZ2LINm/4hDY/NnS37+eDFenisZC5hxPoHQ0tY0AcZxa67btjEgyGOGb2ds3p3y8jDe7hBOAI1c4+weiUhPujSnTIPZygogE3dwahU5/frQXV8npsr2VP97f35tcXuZMGsxCIvoiVodfgn4wTK69rAo2NjUx39I6WCpMKRLXXXkuchaJ6/soPP1N3dpmc29nnS6VUIMsGvBMP7TsBcVwPpLSF7eYfroO7JlAeTV3RO1pmqKgyrw7LBrqmD6AKACClrdiLF+n92wBAvv7KfblSlxqtW+Hax0+zliDaCIWALBvwh/7cGvvya009/Cw7QeYaPx50N4ltH8TWX1u/AtO8F/6fFkZlQJYNfPvhLnze+/4htn+pQKuSNFDjyqzqhsd92ePkgAy9BuvNMMyfn8MSjOunUuOCkpCx+VMqT4TzRxiI7UW8nZtXFz+paS+iLkWvkpUCpfUiFRWWGyhNKioMqnNItsIgChTNI5XKDZR1p8lKKmTRC1WFlObQ+ZkmNXpAJdDVyjmcr5ekfw8QBoqOtJXLdVkWcaCkkVaVLv5dtmwVQFkSAuqa89/FVErYIfpdTHW3Vhay/24eUiXhH84fP2ySZy8PmKuihO3WUHpA+wuNIFwWNqXUngAAAABJRU5ErkJggg==`,apple_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAVdJREFUaIHtlTFLw0AYht+IOBYHoYOUm5NsQob8ASenkD/intGfI538Dx0Kbk1wDMVBcJCOLufQfHraJXf3BYK8z5JScs3T7973AhBCCCGEEEIIIYQQQgghhBAyT+rG2LoxdspnnPku6NoeU0olvgvqxtiu7QEAu7X/+kmQCeUVbFlAdVpR/7AsYA8rYLEHNludaXln6C+3L8vvzxqhjxZyZbq2jw69mlDX9kgzgzQzUVLB+14WAHDMEJzGicjjQz99A+vG2Lz6aVVZwN7nS9Wmjd4yyUiaGbhS2owScmUwbI9IXV1eA8O03PtDMzR6QiIj2ditkUh+hLyCzStEtS36YLy7uMHT5zMOq9Ngy1R9Aq5Se1cGzhR9ZQDgXENosT/9LrT20RN6/3iN/YlfBAsNB6M6wUKb7fEqtddC7V2mxf8RkgzNJtRTMTuh4INxaFmC4k31zf8FX1+FTiIxWQUAAAAASUVORK5CYII=`,apple_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAfJJREFUaIHtljFrwkAUx/8pBaFgBwcDgmQUk0lQMFO3foDgF+nu6MeR7HXrZEEhkwkdD6ngakFwug7h2Ys5jZqobXm/JcmR3P3vvf97F4BhGIZhGIZhGIZhGIZhGIZhmD9Or2/JXt+S11jrXrc43Q8Hwuj1LRmFAk3buoaetCAAiEKRuG/aFoYDYVxDkHYRilIUCsx8/Ts3w/EgHQ+F+ueQJ7UpU6EIkSg1YjTp56vAeJIe16U5y5N3x+zG8SBnPoyZD4OE0cQA0F2bcDvJKEahgC4KWZ486A91N+oEJKppW6jOKyhNF3h/WKaipHpQF2EdmSnT7eZnUiGr5Yr2O/pmV4jjQV6sat1ObPgXx5S7KVPFqJAF9pk600NZPH+YqTGqTF16hgNhHGqyucLmdiC7axObdg1BGGBVj8fzpCR3hIhVPfZJ07b2VthFBbmd+DpqLPH2FeBxHj9npSSLk8K6W8qUMgCpsj+XoyOk9qSij5KTBe22e7Vjb9o17fsX9xCJoeqZ+TCoqggq9ygUZxs7d9m37BZK0wVGjeXWW+rvy6ktoJCyHzWW2yqDEsVz+lHmWXYMT+UWAgSJsZs1xtJ0kXeKBLkbY9GcLWg8ia+bdq3QKBV2lhXF/xFEHipNF9pufXVBl+LXCcp9dKjPRfx+fANh1PjAaOOmbwAAAABJRU5ErkJggg==`,apple_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAwFJREFUaIHtWKuO20AUPa5KNz9QRcaJkUFWMtpl5VZ4eVl5YEBZUb+gNPIfrNSilVowyA62wgoK0g+YAu91ricz4xnPrFRFPigZOzPH5577cIAZM2bMmDFjxowZM24X210qTeuma75440Pm2LRXpGg9FpwJmXBsWqzWKQ77NolDyQNZCQklRLRGCA2fVSHd5mqI6goJJxoavgEhTkC3eV0hsYUoavi2u1RmJWRWQtJnnfRqiMbWg0kRGdM9roSKTWSCtoP5YVxZTubjh1yaSNmMbzQ1mVU96OEuH2xMvuHmth0+ZnwtIXrqukKiOyhf5yg2kId9m6gmLjaQ+TqHaASefyHBi9mJlLfxTYYmUmPhyMrr67qwmvBWt6h7gl6pk9NzDXBsWtQVnBTxrhdZefERDwtYuPg1Cn1WQrqEyruX1RUS0QiAeUm9RzQC52VHnpRZrVPomnMwIReclx1xHiZKgDFoPcRBT8Sl7sIk+vBACdfC4DOXzBoQ4nIe9m3C64wJHQnR/0711djDqbgK2bFpQYUrZrN0nQQGCpEq3bf2pTBeb9Lfw0LDwxeCKw9xNaiQcXPyMIpGOBNxVduYZaSC2tN0G6u1x7Snt6k5mUvTvFTZS38Lmwpt5jYqxFWgXrRap4Ox5N37FL+Xf7QH2l6ZbObWKmSTlrcBW0mgqnzYtwmv2NEyV9f9t7tUfvv6Sdv9+eRJHnyVMVclZSLE7+FETLM6IaiXLU7A56cvVsJqTxtrssHNlY+0nAj3DcdYkx1tri4o7h8hGtFn4JhpvXrZVNDI4Tr3mDA59YoNAECel933xQl9lXbp6lEIUVEjb+hGVl8CKrz/H1KrdWw4EVIHNf6uVtw/au+f6iFnhYgM+aKukJB/CJTuNORNIeWU9iZz8tmZsgzM1LyfuRIKTvvnn9/x468YkCMCU5polML4cJdDQAzWpnbzYIV0pg7Bq7wohiCKh2Li9hSKjZnQGKIQipn6t6lQTEwmxIezmIimkOn/Rl/8dyELmoFVRWLM1P8A+D8tayWwTnoAAAAASUVORK5CYII=`,apple_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA59JREFUaIHtWE1rE1EUPRNrUZCAdFHRQgQRTLLQIFOYVXUhrtxEf0DX3XXvsj+nZO+qdhUwi+giaaEIDq2lbqVYsdpxkd545+Z9zZsXtSVn08zMe++euffcjykwwwwzzHAB8Op1LSu6vugeQsXl8J1h6kyK1vvCSsiVBBHeGaaoN2rY3EijEGcr0Wwjk4Y5mWYb4/u0VkXWBUoP6QyrQiE9Mugg4i9QNHwVScDVsHxGIDLNNjKv8JHLye3c/RwyFKpnpv2FQB4iYjqjpmc20t6Qhvnbmt6+DBkumQlRDzqIuHFZg6S+yLODDiKXjJJrjMKnw+la5RHpQelNm4b4Gq5d40ITAQjN6OqSjhBEIhkXmfQhMwkG3diMeetNGpehKmJUVnJdqLS9jMRWb9QAJnY6rN6o5e7ZSO0MU5D4AaDeqKFI09aGsIi7bd5Q2SjUkXmK6ryjSmObJ0tD5SWnzPGFrcCp6pXq2qenRXzT5kYacTGbujQnoFvrskaigvMMoLi7jgyUfXItf8FBBxHpxzWjIn6ITbASPI0hSoV8IbJReLSl+LtowCRuGLRo0qiy23M3y+ZpI0ke0HVx21g7p9vAxxCqzLxyq5Dfm2YydC5jbUV1IDfKvVVv1NDaWhgfbto76CAiT/AwDjqITDqa8JCK/R/hplkLC+CH2/aSV8C+SIJ9tyXxKHxJrB5xJRHTvKTbV4glEen2Jjs/vTEPpanfQVMCJkJmQ6vRAtDPAER3nuczhsjYQmJ65v1t3+3lq3qzjay67zHnhCJE2NxIoyQGqvsj731+Yy4NNhQK2Ug7/Wwctn21Rogkx9KjCg7en1ltlPaQNKyDCxm4Ekpi4NnKDdWj4MOYE6FuDzj+dpy7NwrbGMGIBfkPGgCsra6Pf7uGUQVnQt2e2lC3d/733Vvl/akRYoai/rDvZ80BwUIGANtbu7m24oNShFqNFpIYGemnuniC+GG5d/TaLcPG9TM3f+atH29CHKcn82WPyCGohkKgMKGXL5Zy18uPmyH5FCPU7QGHRwf0O6ejEBkGnwFNh+riCeKbFQBuTVSHoBoqm2HwJSR1FBI+rWOso2ng4qe9CT9/VEqNHghJ6OuX6+h9KJdhCDJTLz8BAKw8fQD+RftXCZVNbRMuj6jLileHy+OhacGLUBIDt29Np314e+jw6CBbW12f+Pz5Z4Qktrd2g5zz32nIa8JLYuDe3fv4+GkvV5lPv1+Jrl77Vapw/gbAXZxH6Oy2KgAAAABJRU5ErkJggg==`,apple_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABwFJREFUaIHtWUFMG0cUfbOwDiHYmBDHEOyA41YtdiowEUioh5Jz1EZC4oAUqa2UU6McqqqnnHPuIUpPOfQQKYdIkXLwOe4JCaSQqAFaNYCJCYS4Sb22Q5ANnh7MH2Znd21jO1Ej5UsIe2Z25s1/b978BeBjfIzGgjVzsuhk+bfvZAfSL/M8EPSy9VQGC/feAyBaXI5A0Iv1VIYDwNT0CO7eeQhfr87Sm8WaQVUFJC9Mk0YngbGwjtnlIqe+M+ETbGX5Hz41PYJ0dlk8k4gbAMBqBaTJC9OP3BYIegGAB4JeU9/scpHfvtKFiQudmJoegRMYX69+KBaYuuPBU61saWMXAODr1ZHeLHJKP2kCOBg/caFTTLa16oU/lDGBOQxdJkAA+O0rXbh0898yGP9Rlt56Kxb0ecIWUARYBbW0uIbe0y62+axgolkOu/aFezYZoskTcQODkX6xYxkUgQUAFcy181ncSpZMGYIieLl98FQrljZ2+VhYZ7PLxQNRRyeB3tMubD4rCFCXBzRcf+CBP5QRdFAGaIzcTmAoSNBkA6SxRNygDHIAkJhhJkAA+MSFTmytegEA/lDGBEpoQ6FT1o5MW9+Aiz1PFoQNqIKXs0vgTYBUTagLSTvDF5+48MfTgmWsKmyVUgp1XqJRHPuFe0B6s4jggJsl4obpYZps4kInNp8VOIG5faULW6teQZe6gcFIv5iHxvhDGTFma9WLRNxAT1+70JQpQyQ8Sq9KFy2YiBu4faXL1OekOShilzfoD2XEQUHZSpg4ZW5PO3LZbYu50SJqmmWKnPrUDKtj6DmfJ4yLx1dx6ea/YLJ2BiP9thzbLaC22y3oBErOmJz1sbDOtLHwgZD9oQzODnULPdAkZ4e6K4KhDeyfFPGd9FULmN7TrrIPRSfLDi3zSym8/sCDs0PdgkKnU6K4s7CO/r4C3Cd68eTxK0sm7U4wAMa+//nAodUFacfU5wRuaXENXm8Hy2TyFnOlDdqBkkMAik4CwQE3UsmcSdCJuIHjvlYGAK/Tu6Y+JyNUDdMuq7SxJ49fmTZOPsTIodXTJaEWGVIntAMlG6UdtXZ3Y3DAzVLJHBbu7ddDsc/cjLxAjsFIv8lpKdLZZZwd6raY3tT0iBAyGaBdhuR5pqZHkErmRKGnuT3tmP8rZ3Jd1aXlyWiH6eyy6dTcfx0SbTJYOdN2obLCopPgapkBG3d18iKnPgK0tLiGvqCbPU/lxDqVCjkNCs9OYNRdUyZ9nrCjAfpDGUxNj+B5Ksf7gm62tLhmyjb5j1xVsi+/1bH2eI93nimBnFo1Lp8nbDnuTteAXT+J106P6ksACwxraGnj2Nth/PK1YQunTtdDpatBvZTtgDsB0tYflbC3U7707955CJ8nbHrYKdQTIwO8lSyZrh9IMpCvFLu3EgYAgWEN+jGO4hsmqLMrIVQayNzUXdtlxa683TdS01uJQCdTd/Gq2zIpXRuVjLGWkkOli4p7QRl1ytTJvqHeYf5QxgIGCoWyOTqNwX5xL7/9mgBRtLRxZqxoSMQNJOIG/KGM6X6jNlr4/o2cZUHVpe3MNhE38PVPBmI9LquG5AgMawDAg3qZ72ywfJcl4gaMlTL+zjMlGCsagnoJLX1tLJks8ItX3VVpo/uO5tGPcVZ8w7D+6EBbtoCOMo63nPGgXkKqqAkAHUc46ypxniqWwQDAdgnsSMiFjae7QntqNmRXNlY0tLRxRvKQwdgCIlDdLSW0a+AAkCpq6OlqYzy3DRcDj0VimF+cF8+nihr6Ahqer5d455mSxQDlzNhlRQ6Lhgh1u3YA+JuhIej5be52HbWMnZkrj9/Z3EVQL2eStCZniDJTCYwjIFpIjlgkhnx2j9uNHR8FTnZ0gMAbKxqMFQ33b+RM4PZ2KoOpCIjC6/GyfXoqRn47z2ORGAAgqJcQ1EtoO1I+sURV1UmqAZqZAzLZDDraO9j84jzGzkVRfOuqZV4AYK6Dl9GqVFG0VhswMweMj+bF97FzUVP/+Kjzs4sPOQBblh2jKmUUlKXxsQm5+XCrNQvQzByQ386b2kgvAHCqJyA+16K3hgFJC7Nff/vF0r7xYp3/8N2PclPdf26uGdDMHLDxYt25fzZhGf9OAb2vaBjQyW6/+Pz7gz8bna4xQLFIDC9fbQn9ePxvsVvQGvr/SVMok/XT6irVrZ+6AcledAjnrik+fFGTF1GW1KvkvQKq5EXNOGGHBlQpmnHC0GwNNXrCUC8gVUfNjEMDqnanNRoNUaZeqM2Ipmpot6BVrCBriaYBym4dRaur1HAFWTcgtaT96vznjWKpH5BdSdus+PDvsncdHwFVi/oKtFHzu1gzo+4M0btYs926aZT97+qhZkVdBdX4KBAe+BTLyb9NV0Vxp4XpbXsN1UT/AbUUA79aGpk9AAAAAElFTkSuQmCC`,apple_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAA60lEQVR4nO3UPw6CMBTH8R/GODh4A9IZ2EgYiFdwIhyHUW9jnDyEk5swN8TBxMEwutTBFEtMtOS9Sd9nJFC+9A+AEEIIIYQQ/6uslCkrZShjTDhjmlqjqTUoUWxBTa0RxQpRrMhRJEkBkxToX86xbN7KSg1enmcwm2Vq8gxsAd5LZvdIFCu4Udy8gtwYADjtEHyKoiyb9wzZmO1aBzaqC4f32P1EOW3B2AdceQazmqXY34/owmckgD7Ezqr9CB8sx96NAV6zODYGAKYcQYv2/drYEIs8Q9fbmTrEANufmosEffN7QYf5haOj9wCqOWHeZMY0fwAAAABJRU5ErkJggg==`,apple_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAARlJREFUaIHt1TGKg0AUBuDfsKTYIjeQqdVOsJC9QqrgcSw3twlWe4csCOmi9SBbBFIEy21mi2Si2YXFzDwIhP9rBIXn78y8J0BEREREREREREREREREREQuilKZolTGp0YgGaZtNAAgihU279qp9kwqUNtoRLFCFCu0jYbvSt0tz87XZAWTrHB9ucS2TVaU6ubleQazfktNnsHYgL4mb5k9I1GsMA4lbVKgcRgA2FcI/gvls22TV8iGsd2zrxD04fB8Ww/nqW2088H2avs8g1nOU3x879CH55C4rBBGnXfPCBBp+z4EFt3wcTaAyzx6kQi06P7ee9hgPJ6+fEvccA4kNXd+E/t1SHneQNtapo5zIBvg8/Ugk+TiB9HsZVMDm5FIAAAAAElFTkSuQmCC`,banana_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAARJJREFUSIndlD8OgjAYxR/+mfAELiSayOaOzHIMhw4OToYbeAHj1MGB3d1JVxMXL1AO4Anc0NSFRigt/mlNjG8itLzf1+97BfiyHPGQzPyPTQhlPJn5jvQOANAwKi83n456IJRx1boxQEgHadkwnyw6AID1uLpm7QQ6WQGEnovQc3HYDyttMgIQyvj1simBZFmZQVE8DeAMjlxcgd+dgWhP87z6DuBVWQfstydzQF17ojhD8b/0VopExnXmcvVKgO6nJYwBaAcrV18BEMo4TwMAwK07rxjUJUZVfQlAKOOj/oP3LH6yuap62EhRnTmKJxAb8msO0SoTc6iGLIN2y7bywyjOSvtfBsigKFan6pnx/+gOFz13YOwa2yQAAAAASUVORK5CYII=`,banana_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAixJREFUaIHtlrFv00AUh3+XOElBwRgbkCIk6FIxoEpdGLylexaGbggpa/6CTgydmJBgZMnAmIkqa5XxaKVKqQJIrVURIUWp2jo4bZHi1uYYwG7cNAlVz0ZI75t8d7rnT3f37h1AEARBEARBEARBEEMw2QHNpTnxs3cedn1thw2NAQB4zUpGyFyaE0ZOi/QddPvI5FPM8318rFuh2DgpqUKl508FANiuE/YZOQ0H3T5yMxnmDs6wvrYzMUZKplAgozCFAWBplma26+Be4TbcwZlgNwTmTR2L5YSEUq1t3PrhM0944DULvvDPx3QBpIEW76FRHR9DkSnE7mbZTOcQn77dx7ypj45np8eQukLi8BSrW0covdDR4r2RcYUpYaYlIgQAi2Xg3ZuNYQlmuw6MnAZPeGLafKlCq1tHkTavWfCEd6UY0lfouJO/1nzpQtdFupDyfTRxg3P0T4Tu3HQj7aueI+lCGScz8SaeRixnqFHFWKnB8UmyQkHqqxsPAACVoopsvw8A2Ld2YRYeoVJUkxMK+PC5E34/OR2IfWsXjbc14OuXiZdjrGlfKap4OPsYAH7L/CHouwypxfUiXUcH2ttieaWK968bAIDllSpevSyLcW8x6U/YYZ4tzGLPMURpwYz015scvL156b9j3bI9x4CRV1m9yf96Tuylwz6JFtx6k8PIq2N3JpFaVtCMyCpdlExMiLc3AQBdxw6lCpoR67klCIIgCIIgCIL4z/gFhUm39sdr3R0AAAAASUVORK5CYII=`,banana_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAnlJREFUaIHtljFoE1EYx/8vTWwq6XnmGmksiKCpQyNWtIXbkkUIDdYlW5ZzsBAoSqZODgXBSdCtLhkcg4M0IEJDwOWsYAmIQhOHVggJxJNrrNLQpM9Bk+aa5gZ7d4vfb7l379333o/vfXf3AIIgCIIgCIIgCILogVk9oZwI8YPvh9Ou50usZwwAoGbLzgjJiRCXhkVDX726A4/PxVrtNt7lyl2xQVKWCsWTMxwAtKbe7ZOGRdSrOxj2elhzbx/r+ZLpHC4rhToybuZmANgQG2JaU0cgeAbNvX3ekYkqDgm5Pm5i9GebtXgLaraMRq11OObn3XYh45AQGzvFvJVv2F7juCr7MX7OytlPwL37s4Z7ORHi8eQMlxMhPjDoL5bXUFQBnj99/8/xlgudFMuFzAp2e40jqsB02xzJkNdXxkJ6DCv5kBPLmRNVwM+fvcw719WNGDfLki1FvfBo3NC3kg8hvRjDlTtfDKJWr20qdfOWD1EF3YysbsQMbUeF0JOpXoHe9tEsdrD8+NFhfmoCjdkKJqUASlqdpxdjeHD3DS5cP8CkFGAlrW76Rlou0yE5N4JUROCXpl3869uXPBUReHJuZGCsba99KiIgFREQDoQBAIVn2e5YOBBGKiIcG+e2S6iq+/80tjb50nIGL54UAABLyxk8fqjwqu5nQKMvzpYamp+agMvjAQDUdInHp2XDeK6oQjz9g73+3H9Ys2XLXn2qoKZLqOkSJJ/AckW17xn91+ixsbYI3b4mQN36AADQdo3bkiuqkHzCwJ1x5F8WFCVDlrTdRlf4KLZ9h3qRL95AUJRQ1TUeFCVW1bWBQgRBEARBEARBEP8ZvwFFpOQ2GmcYagAAAABJRU5ErkJggg==`,banana_fruit_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAuZJREFUaIHtlj9IG1Ecx78vmsZIvMa7pCQKpdBEBSO19A/cliyFoFQXh4IU0kUICMXJqYNQ6JShTk4OnYoUtAZCwSB0SaXUKtLSxFC0kCYQT86orSHR10HvzHmJ051L32fJy/vde+9z7/d7jwMYDAaDwWAwGAwGg8GogRg9oTjipye759OuJDOkJgYASM1tXo2QOOKngs2p6Svm92B1WEj1+Bif4puqWCMpQ4UGRx9QAJDKston2Jwo5vdga7GS8lEFK8nMpXNYjBRSZJpJMwFAmkgTkcoy3N7rKB9VaIUeok/kEYpckZBlI422w2NSpVWk5jZRKlTPYzxF4audunp26X7OgY52n/lCxHWNtOR2sL1E0Sfy8NwAtpeoGp9Jnhb1788eGnyCujtlqNBCcgfv10sYfMpD+sHTSluWKhK1xT6T9CP/N0vrzWF4DYUiQKvrr7obl8HbOs0XAoD1nxuatx+bcAEAYtMJTIyH1d/UW7tulwwX2s851LayuEJ63qf53z2cNXp5PfcfOdDR7qOhCGgoAqq0F1fDdHE1rLaVmOlCZ/eMRkCR6mj3afr6RF43vtloIVfPLrp8HhKbTtD0vA/dw8px9yOGBIDTYu8ezmrSayqhyGnqatNTL2WX3dimSI299OCCgNo+i+kw/PNDYai3E6WHOXQJbmSkIp0YD+P5sw+4efcEXYKbZKQilmfNWr2OjMLogB3RIEdv91vor4/vaDTI0dEBe8OxplyMABANcogGOQTcAQDA8us5NRZwBxANcnXHGX7KFPLy2ZHeStPJqVm8iS0DACanZvHqRYTmZZ4AJd04U2poqLcTFqsVAFCQBTrYL2ri8bUUnK37JPFd/7FmSsoWvuVQkAUUZAGCgyPxtZTuGflPW92xpgg9vsMhtfUFACAdaNMSX0tBcHANM2NaUdfidQqaXZIOSqrwRUy7h2oRb92D1ykgL0vU6xRIXpYaCjEYDAaDwWAwGAzGf8Y/wKIyp5xRIncAAAAASUVORK5CYII=`,banana_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAtlJREFUaIHtlj9ME1Ecx7+vVyyYtrR3kNASFGMJJJaIKJqbaBlcIIoDg0mXbqSjcWByYHJycGIw6eBISIxp4gI0cTmJUWtMjPxJAEltFYpHC4ZCy89B7ujZg+nOxfdZ7r3fu/feN9/f7949gMPhcDgcDofD4XA4nBqY1QvKY110tH2y7MLcEqsZAwA0NjOkny3ZL0ge6yLJ5TPENnM7aHA7WKVaxZvUskGYMr1sr6CR2AABQKGs6jHJ5cNmbgeuxgZW3j/Ewpy5MxoOKwVpYpzMyQAwgQmsUFbRGmhGef+QDmkPvbKIaPwfCXJ8WoRnr8oqVIEyvYxivnIyJhLyH5qopWebSlk3gv6Q/YJYyznWmN3C+iyhVxbRfbGI9VnSx7P5VQDAt7dtdH/8u6lTlgqirQO8/FjEg4c/Ufgi0pbzB2kiaos9m1/F+3yJzNawvIaicWAmI+pCzqJLbLJ6e3NB0TiIygJpTyoLNBIboL/jQX+oziXLHSpl3Xp7fkrA0HhV7y++CBn63aMrVm9fz43bbgT9IYrGQdE4SGtrTtW6ZOaQ5RyfMwYBmqigP2SI9cpi3XzLU9bSs43BfsaGxqtob7sEHH9V81OCIUXdoytweQ6s3r6eO1e9iMb/pM6suGtjtp9DGukk4Gnf1Z3Siru2PdjPTP+jll8/NO5eaUfxZhZyhxPKRoXmpwSEbhEuXDuC3OFkykYF6aRdu59BbLgJiYiXLvc56OvrGUpEvBQbPv1AtCVlGomIF+HWMAAg/XRaj4dbw0hEvKZznHYKyqkisLZIE5NJPH+SBgBMTCbx+FGccqrIgGLdHNtqCADu9XUir0o00icb4qmMAt/5Env1uf6yZmvK8qoEye1lqYxSN6b+8pjOsVUQABR2jWlJZRRIbu+pmbFdEAAEfJLBpcJuEcraO9N3ba0hDbnzOgI+CTm1QAGfxHJq4VRBHA6Hw+FwOBwOh/Of8RuWiD5UfcCbswAAAABJRU5ErkJggg==`,banana_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABndJREFUaIHtms1vE0cYxp8xdpINiRM7K/ERmqaUhKwgTWXA2K2QiIRyQkWqlFtVFSmX9i/opfce+wdEoofefAL1hJBAimAdk0RaDHKFqZpCAmllNs6axCSh3h7s2c7Ozq6z/qoq9ZEs2buzs7993nfedzYK8L/+YyLJ2TEclgNYWzBN9sSJS4RsFypQU/mOAgUpTDyWsJ3ILKTNYwlCkrNjANAxMDJxdtwBY0GtpAGfbtEHYOXnYSygcrlsOyFJkg2sHhQF6RkgeJWGFX6/oSdXvj6NtQXTnFSmbBAUkB7zguLzkD6gJEnIrKQRUUyipvJC9xxAydkxRKNh/Hq/ZAKACMwLioWhoeeviSgmEbnH68QlQggYu/v7e/E8Uxa65QaVnB3DZo44YMrlMrI5DUcvgADAxkNY7rkps5KuDmatp26xUCwQDwXAAuLB30uGyAt1vy4ITY9sTkOAPaGm8tB1Ax9+2k+yOc2WR2zSx2MJK196Bgh40bEv1H0zHks4YMrlsu0jSZL1IAF+Mgo1EpdINqdZx3koAAj1VnOCdyeb03DiYshBygOwIFQOIApVKu3YnpZXPJbAn8vVvOBDCgBri/u2+sY7wYPSNAjCpZgBqIbuvmblE3VJNCk7ObiccbuGJj69l14wEHTrZccSILpuYPhcD8kua67VnE/+bE7zhGEhAGAkLpFSaQe6bkBN5RGUwkTcy9JpEyDYxC6GPwHJPEib8VjC1SURjJsjFAIASqUdW6ENvlyEOalM2XJFkiTbxJkHaddiRiWC4WsSaGhqbogUoADsh64GKq+nhkvi8zDD57pJRDGJrhtALW9FuStcZSKweCxhdX9+bDanYVKZ8oT5K7CLzRwx2c9hOeCAsporPcC3DQhaBz+GPcbDeFVrUW8MbBcqiCgmiSgmocVQtBVhnXIbw4rmDF+tedfXFkybU669jHfLzSWRY/yK4xcMuO0N65Swl4ncOohL9OkpjKhVsGB0TrY3OjujwC0+P6gyK2nbZoyH4ceyEuVTRDGrrUMkutcZifeSbEbzLIp8WPjwolb5325V107PAKkV3n9UDZkJVyAWCiA2692g6PKnecGCvN2CbZcZUezR2S6YUFN595BR1QsdTWpw+2/WEQpy9YsL+Pmnh573qwvEQ0GwiWeB6r2hTCajkCd03L3RBBAErzmsW1TZnGaDOR45hZebzxxznZ/pw8uHR4XnDgzEgnUfJthYgu19LpvTcPQ8yO62id/vmMKb8Zq+DodTwl7mJTWVx+52NTccTXWjDDWVx9Uvo36nbRyI6uQHb2x7bgDoLr3F9HWgVxZve3ndvQEcj5xqHkhN5RF8/sZxvPvNLgDgh++yB55raEJvHshLpfU+X+OzapuBmlXLgYKbnsXfoZbkEKsjR47Yfkd6d31dz5eHpoEMw7D9DhVDmL7e+HwtCVn3oUO233dvoGEofwGvo6G+HujFEK6d6QcyALDue46WJXU8lkDu0PvWHufmE/8wLQWi+mPouAkA31wO4/uvLnQeKBwOW9/jH120vr8qRvHtj957n7YAUQ2Gw8g8WsT5yG++dxAtBSoWCrbfL5514+aTdWwUhzoHdO3MMEZOis9FByr4bCoMdXUZydFznQECgKXXp82ZyzMAgEFZhl4oYHxUgWr0294mPv94pv1AJtkHAGQeLXqOU1eX8ar42hdYYw6RdyjqWwCAqCzXhQJggbUHKPAOADA+qiDzaNFK7MreXl2w9gAxGh9VMMi5NNQfwmdTYddr2grEuxKPJaAWh+r+CbBtQKhtQfhcGurrwbUzw/8OkMglttF2HChaq0OotZCnq7mG5/IN5FWlUatN46MKwNSrtgKBqdJ8qNg8KupbAHnXGSDUnKAAeqGAqCxb7liggQ4A0TDQosiKwiw9XsH0sNHQNsS/Q0zbgEfrWN/YwS3NEJ5rLRATBtalSm2FBbq6gCaqdVtepZup1k0BVfb2rCXeKh34vWxubg4AYKwuARs7NijU2sdg2B6iW5qBubk5zM/PW9dTzc/PC+9TdyXQidgJ6L9nUJhAVxcqe3sYlGUEABQNA5mVNH55/FQ4vxdckB9IT4pAWJhmxM7JwwXcTrhZ6qVWrJAAPNzwggqHnUu6wny/cnkGE2fHfa+0IBumRsX2NAp1595t1xxixd/b918/ajcxUXOB7qcHZRl37t3mx/kW4XNHRO0mPiSNQrD6G0LRP+c+tRWxAAAAAElFTkSuQmCC`,banana_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAiNJREFUaIHtls9u00AQh3+blDjulsrgWkIGJPvEDSKO5OIcECdQy6PwYiBegFx6Dy+Q5IBycROstE5cQ70c6nUc/4tbBw5oPikHJ+vZb2bs2QAEQRAEQRAEQRAEQRAEQRAEQRAEQRBlsDqL+mcWuNGG794I+V1Xa7HAiwAA55+nexNq1V3ouzfCdjjkJ/AiAUAYpo7+mfXvhbjRZpOhj8nQBwDYDsfgtA93Nt+rVK2WIW4bbluFwIuE7XAAgKX18O3LOQxTZ+5s3rh9lUJlWXeOWgiv8lIAWFOhgyoZw9ThzuYi+1t4FUF7wtlk6Avb4Zh6o8pNyhIrki8USssMTvu5DeOKiMfPN1JVAtrJMbyL5VZiXa3F5Lq0WK5lu2QyUpAy8cPOygSyseTLkW1zrkLcaOdkUjdvcEaJzHU8jw4fqlhdroV3scwJZBOzHS7jinRhckJy3ky9USKSHoLxNSZDP6mA2VMBAKvLdZJIUWWziWXjllWIyc3kDYEXbfU57r3MKhGraEuhQDYuyp6hNFWv8eCtifCoI8yeCkXbzNiyyu6KVyh0F969OYHih0L5+BTKbRtzInedS6VzqA6KH25d6+MFVo9UtoZ674ld+yzbhaX1AACHP9eNjo97C314dQz+TAcAvLBey6OjMY0q5P+Yi5ef3u9NprHQ3+D/E5Lt0scL/OoeNBojexFK8yD4ja/fl41iNJpD17zD9PEi93+pCX8ACFAUE3a7dgUAAAAASUVORK5CYII=`,banana_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9tJREFUaIHtll2L41QYx/8nbaczZqZkbYNSFVr0TofdK13ITYt4I7I0Lrigt/kQ+xH8DDLeCF7sytJhWBC8mV5Y0EVkRhlF2bVFpOimdUO62Wb6kuPF5Jw9maSvznZvzg8KTXLa/PJ/nucQQCKRSCQSiUQikUgkEolEIpFIJJLnB2FfDLMEvZiH3elRrZAjTtcFADTr7bUKKeKB3enRas2A03UpAKoVcjDMEgyztH6hTe3sa9s5Qrmi4nmJiSWj5YoaW1DSruBwvwkAWEcplXkLkhLTi/lnllai0KkT8E+SmN3p0WdiAyCddDKrPfVkUlmhxxD2nGGWFirdtDSTfsuFVD1FWg0v1kdMRBQrV1S0Gh4Ve3CWhFbIsXKL5whbI4rxKDx7wqTQanixG2Q1BVlNiZSRpZQkoxfzAEABUKfr0mrNQLmizu1Hcv6P2I18J0icOpZWVlPQanhQ9RTx7Al/SnGDrdYMXmIklF+YYMJ+H2nqZr2NZr0N3wl4WkmwpMoVFZ49iTW4KCMOiJjyqRNE+pGROGXNentuCZMwzFJkgxUlxEERxcoVFb4T8Iea2pRIKCE7z0p56gToHA2wsa2Q4eOAl6pcUbnMLNiDqnqKfPPZg/lC58WQ0F9Mqlh6iXTa/9BqzcBv7R9nyjCRTU0hfthXrIcS96FZ+E6AjW0lskVUawYO95uxJj4vIDwU8Z0AvhPE9qK5CYlTI57XXlaJ87fHy9M5GkAslSghJsGYtqHOTGjaCIfjSl98TY0kJcpspSdk/NBHyh9BaY2RezIEAHz9+3BmAFOFkmTe/eEkvHoC1D7B4X6TyxSvbHGZbe8x0fpP4PbGkVSv7hICbMyUShQyzBJUPRWTqf+U42tMfIl25U2eDMJeyZ10AIC6AD565+zG180z6Rs3R3SeVGIPhVNFyxU1IlJQx6TrpVFQx+h6aQoA2Q9fAQB0jgbInXRw69MM/5879WgzXzdV3Lg5AgCytJCqp+DZE5r/418uAgAHxy6uXT4TJFoG1BlRJvX57p8xidvfb0SOr+4S8t3PdLmEmNTWowEA4IVHAxwcu7E1oRgXev/+rzEJfScgdj+6Jy3dQ1jhFfW9v4ZcRJSw+8rcyVpIaBUyW5uYjMbE7o+XkhCZ+069CB93n1Y+lUmvLHNhQhfJykLXLueQ38kssHI5VhKyLAvZS6+i1x/RD97WI9cyOzosy1qPkHijrxq/RK69/lYBAHDn2wcYug9hWdZKYitN2d7eXuQ498YO3Pt9hGnRL24fLPSelcSFNbXtn+LuPRsHxy6XWUtClmXxhMKbU9yzxeP/xX92wDVIcXKaVAAAAABJRU5ErkJggg==`,banana_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9hJREFUaIHtl09r20gYxp+RnFpFtarGETQpCzZd6KWQ0EMvutiH3VMJTo97NvuhFsN+g00wOS2U+OJDcwj2oYdCW5tSnAXZWa28InITe/aQjBjLI6tS5KQseiAw0d/fPM8778hApkyZMmXKlClTpkyZMmXKxImwgblXgrFVhDUYUX1DI/bQAQC09/u3CiTx/1iDEa3WTNhDhwKg+oYGc68Ec690+0CKfjXs2x2UKyruCoyPjJYr6sIFJX0HRwdtAMBtRClFXSByzNgqrsytnOjgxJ7543wgymvHKO8uEw+Z1MHIyBgcAwOAXsuFokvEs2f+i829EhRdhmdPqaLLxLOnc+dEEkH7QD//+hSuNRVCicB6LRcASHu/PweztXMfg8753LP1DY3FDe6YsB79abvWFKohk17LZS+bU16XkNeluTgVXVqAYSroKgBQANQeOrRaM1GuqJH1OFcH7ISiS/Ds2VK38rqEXstFYTNHxqeXPsygc46Hhkr+sVxarZno251Ql7kVTJhLC4XJwFRDjoyQQZUrKib2DIPOOXIKIZce9WFEC4QHY/X45vdPQNiyb+/3IyMM1fUUGQyLml8UfPzligrPntHA7WIFI2THmWvMFQDgitl3jIcQiU1UNWTy528fo4GCYBDUFw8FANWaiff9k6UwDIS1DnArTdgYl8mzZ7j3QCK9lutDVWsmjg7aCBZxEICbFPHsGfg+xhTpEP9Zwh/XH6vE/usKirnER8VD8E4whXXypQ7xMPzs2fax/oM65xQPw0OInAhTqENBmPf9k7nzz0ovcHTQhghGNWTiWtNE+1lkH/qWImV9ZdA5h7p2SdyLXOLNNTQy1hTDYFiN8B1aezfA9JGK9tu/E8EsBQIXA0JWSm7oYfLHGc2/foKtnfuYfFIgu18Tw0QC8asluFI8e4bi538X7pFkeTVA19sGXdYzdrc1f/zTl684vBHKEiD2jQOAxFmyaSjUoTgQvwwJrJSAIj/yb1uJgXa3NRQLa+nS3NSh0fiCvnppAAAMJX/3QEzaj4U0HgP8r2poVUoExDfEtBUbaHdbw+Z6Hte/ue4eCABOzyb+6mKyvMndAW2u58nhsYUgFNPutpY41thAza6D07MJioU1cngs3DDoTeJM5FCz62A0vhCeC3NtpUAiLYswjlIDYjCHxxaKhbVv+gG6UiBeo/EFml0n0b2pAX1Xm2uaigVUr9f9cdEIL+Bm10G9Xvf/VgIUfPDIsuirlwaePt8QXt9oNNBoNGLBxAJiLxHJ+TCO/eIwpVZDljdJpbAT9wtc7VkLW0Sz6xAEIo4T3X8sUS1ZmPdudgAAAABJRU5ErkJggg==`,banana_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABJBJREFUaIHtmM2LIkcYxp/yY9T0apo4DRsTgrILuQRm2MNehOAektMyrDnmFpD8VfM3ZIbBS8hhJGAOnpx7iLIkZqF16Wg6o+tq5bBdNa9ld9t215DJsA8IQzv99s/n/SoF3ut/JqYzWL1ZBQCYhyU44ykX161KmdmjCbpnw50xUjphrEoZALgznvJnL+qoNQw8e1GHPZpwq1KWwLcOJGDs0USCDJ0+Fs4aQ6cvoaLEytCgVFHspRIwAgQAcua7z3t53pVp2yUmQPJmCnNnzfGuBpgznkYCqzersmZqDQMLZy1BAGDQcZE3U2zurKPVkGGlAYDPnTUXOfcKkpuHJdSb1Z25FzUTpKgwAJBx7RWvNQx5Yej0UWsYqJrHuDzvSscEVFBgkaogd6JK3r1w1vJFwcIcE+kK0z7ubADlzJR87QKjLRyULuFOZBJP7OvvH8G1VxwAaOrguUZTAECkEmSoBhYzALZvt2ZcewUALG+mMOi4G/Uk3AJp4aHTB2660jeoWjtBTeEHKy2tN6swrHRkt4QDfg6R9wCfVYKQ0SKf0D0bgrjFvKC+bgllCswXFgCKpgEAXF0lYfWIoOUa5paPE6gcFzaumQ8N5rxy5eSm94Kkn9ajcMl3l4W5RZ1S0zrouMh+wLZgRNeqXUzrUShwuXbPhuieDTF31jCsdCCUKu5VCoURIPR+EaPWMOTKAl2uVGpXuPYKnlMyhUFQb6+57FS/2qIa9a8BAIaVlqWz9d/0XENfWRQAgB08uElhzkyhclzAqH8t60kMyTCYQcelg5N55QGoRa2ea4TtpPhw8CDF+Jpj+Q+X7f559Qkuz7tQ60YtfiE6o9RZtDGHVBiakqDgAmrUv0ZQqtS55AcilAFpcxWGBhVwlePCFuCusWBYaebaq0hLluGmiCMXo9//qDNGXR+Rz0O7HuSXIpDW99t3g467lyu+QN6skS4JEPopxQKmcAJG1FASGIQtVz+76XwSZ/Dyb6+R++YTCbXP+TkUSH0gduS93qyiNJoiO3/LKdDB32/Y5U+jWDBbQPvq5KgEABJo8cMfWBgH7MdfxrFjavvmKpRz3yS6XztQUr0H2qX7C/TtWM9PTffToa9+T9bqVPfTIZ2KDXRyVMLDD3N6aYK+dUTVq78W/LsvPwUA2POFFqDEKfMD8ZZuLN1GDUX6tTVIWoGeP7USx9AK1O7ZKBeziUa29pRNZktcXE1j3x8LSC3a0uNibABVSRxKVLxBSpQyHUWsKjZQuZhl7Z6tlyYu0MXVFJPZUjsMdHaZldez17S3fbmYvTur4/lTC5PZ8u6sDh3SMhh1am+gk6MSPv4ohzs1GP98veDqULwTB7SwSR03rbGAgqY0uRY7nXsD7ZrSSfebtrZv9+z/5sR4clRCuZjdui5g2j0bn1n52KfGWA5NZsutLqNgL+357dZQq9WSf6vH00dfHAI+y/XiaopWq7Vxb2IgEez09HSvoEJx7rv1XSagojoVp6hl/dA02fOFljORFoemv850hAF0p6z0uIh2z8bF1TR22+/964f3sJu2/pm8mRAGAP4FlBPshc8G1hUAAAAASUVORK5CYII=`,banana_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABuNJREFUaIHtmF9oW1Ucx7/nkibXpEnb/BHp2iKm1dFGWhAjKZ1YGMJo6UCoTyIW86JP80V98V2GD/N9WB8EHwrCxmQvk8IMBq5MN5Zl2DbSdW03aZuluU2aZDXXh+TcnXtybpKbtBHBL1zI/Xfu535/v/P7nRvgf/3HRCLzI3D5JeR2yxp7wuWXSG63jPjSakeBbBQmOGU3nEjFSprcQ0hkfgQAOgZGIvMjNTAMFGDRLfoCrKy8jER/FDNlwwYAwSk7glN25HbLmssvCR/GgkTmRyD3EADQ6NboPl42l18iqVhJC4dHsWdf009QKEevhOCUHalYSXP5JRKZH6l5YzYPC/saglN2FDNlOHolpGIlDQCBiXu8SGR+BF6vB+l0VgMAEZijt2JkKlaqCR8LQ0PP30OB5B6Cwr6m1WJU5PJLxEDudjuhqnmhW2ZQ1XtrYHylYShKEo7uyjOKBxUQs3ylYxPeeuoWC8UC8VBVaWyY6DXdvXZykCk1BKHpsZk4epbUqM6GdDoLr9dDFCUJX2kYqOYRvYkOTutWNYkNovcdZEoanRg8ALs5eiX9RSR+MArldjuJoiT14zwUAHQ5KznBu6MoSbg89hpSHoAFoaoBolCqmje8La/glB1P85W84EMKALlsyVDfeCdY+UrDehrYUGc6VkOn5xN1STSoYXAkIYIRXasoSaSQhNfrIendrHkvk3sIKexrcDpl5PMF0yk9ELLp+/QB9WDoNVRut5PQaMSXVmF7zkNMexkA5PMFOPsIScUqITBzSQRj5ggLoap5Q6G1HWY1bSBkMyQsrc48XD2JYPiapIcmnTXtbxIFYDe2n6FBDYFJ4vMwTqdMAJB0OgswvU8IxEsEVu1nwmsVJYmBkK0uzN9SEWzTNWu85OxHrxgSmm8baJDI/DEepl61FvVGqVr+CQBCiyEfArYoBqfs2Ewc1RRJPsnpTOKrNe86v7Qx7WW8W2YuiRzjZxw/YcAtb1inhL1M5JbIJd7JYqZsgBG1ChaMjsn2xtrOKHCLOiXq+mwfK2bK2Ewcge9tYJbDVKJ8AkBMgSgUXSOZVWr68H7ny9jOr2AzcWQIIQWhlR8mCzVhyHiJmqyo61OxMKlYCalYCXIPIQBIYV9DfGkV8aVVVMEIu9GZVtchNBG6VKyEcHgUAPQJQEGoI3RKz773Oq5992vd5zUE4qFQjT+ziEc4PIrt/ErNjBG1h1cjXvhPp7G8KH5W3ZBRsbNP7iGETVAKA0Gh6++rbSl342moW93Cc2jWIVaR+RE4XATFXGWl6CsN68nscBFSzGl4cEPD9pO1hmNNL6DGqaYcYhVfWkUxV8mNYqYM9/Pdz04+PkR8aRWz73utDts6EFVfIUeKP2wBALZvHyKw8hccagHTC4DTf9jUGMuLqAldS0DxpVXYNg5qjjsOigCAS1/cbXos3+l0+0Cs/lj/zbCvbnWbXivS3fgxAx232gY6vH/fsG97YjO9VqRjySFWHwZG0edY1/f7nEVL9/PloW2gnYIRoCvThemF1sc7lhz6JPKGYX95ES1DWQt4A/m6ZaQzXTg/5gYUANiyPMaxzbLZcADpTJe+xrlyzzrMsQIx0gDg47c8+PKD1zsPFJAd+u9PL23rvx9lvPj82/prnxMBopo+dxYXL/RjcLhoeQVxrECeYXd1pArHwzUHrtzbwuOMr3NA58dOYegl8TlvTxlz4x7E128h8uJrnQECgIcrbu2zr1QAQHZNxcaD3zEzKWMvlzN8Tbwz8fbJA2nkKQDg4oX+utfF12/hUWbPElhrDpEjaLaKO/Ko0hAKgA52MkDSEQBgZlLGxQv9emIHQ/6GYCcDxGhmUkZ2TTUc87m7MDfuaWm8toF4V2bDAeypTxv+BXhiQKguQYYGJwzHfN0yzo+d+neARC6xjbbjQEODE9h4eBsAMPbun/jxl0LLY1kGqlelUa1NM5MywNSrEwUCU6X5ULE1SbOpADnqDBCqTlCAjYe3MTQ4obujg0odAKJhoEWRFYX5+pv7OPWCs6VliHWHmLYBNkyS8flbj/O4eifbASAmDKxLiZ9uYvrcWaQSu0Ab1fpEPqXbqdZtfQYFQ37MYLedIWrUtEPRaBTRaBRywFiE6Iziv2ABoMsdMNzPjmOmhjMhGo3i8uXLhmNz4x5tNhzQYVKJXQRDfmTXVISmz2D5+g1cU3bg6h8j31+PN35bRoaQseQ8BA/TjKzCGIBETlhVaPpMW/eD5lC9mJpBsh+IVInln/XfC28OYG7cU3emifKJ0APNukNDFpAdz77JqqIrx51CEdeUHVy9k7VcrW1WYADQh2gAsIABHSq7pmLx5iZ/nWVZdogVH5JWIVj9A/RCJ8Szd97YAAAAAElFTkSuQmCC`,banana_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABZElEQVR4nO2WvW6DMBSFP0Na0VJVLCztkrxB9yx5hTxpXiFL9r5BsrQLC6pKS3/AHRrQhQAywdl8JCQwxvp8fK4NODk5OTk5OTk5OQ1JmXRarueEsU+WFLpqCyJP5WkJwG5zsAbkmXbMkkIvViHVlaelBnQY+yzXc2tAM9OOYeyr/TbTQA0FcGwzctpERg7tNgeypABQQeSp/TZrvA8iz5pLo2cm8yRcIox9lSXF5DyNApIuXN95fL+XDShASaA+14agjYG6Ku3+cabeXn71YhXWQPKbIPKq8Mu2weo0CnXXMsF/oOUz0IDO05L2+6ow2vCjgCRMFWhZaV/HGV/dqhPotsQYndVpBNSGARr3D083APx86E6Yjqqsl+0sILkHcTqrOiOtgPcC5GnZG2xThxog1WCyiqSDYwDOAjIZTLiixgC0ZXyWGUrBtMPWNtDkndoK0Ovzp41hgAs4NFU2gaz8gvwB9BbCFUm9pKAAAAAASUVORK5CYII=`,banana_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAXRJREFUaIHtlj1Sg1AUhc+D6KA4Dg2NNskO7NNkC1lptpAmvTtIGm1oGEcUf+BZCHhByFzCS3e+mRQB8uZ7h3MhACGEEEIIIYQQQgghhBBCCCGEEHIujOai5XqOMPaRJYWtjwWRZ/K0BADsNgdnQp72wiwp7GIVov7kaWkB2DD2sVzPnQnNtBeGsW/228wCaKQAoDqmSlqDKqHd5oAsKQDABJFn9tusdT6IPGcpjd6Z7JNICWHsmywpJvdplJBM4fLGw+dr2ZICYKTQUGrHpNVCfZN2ez8zL0/fdrEKGyH5myDy6vLLY0enU1XqvtuEqtDyO37L30jnaYnu+XowhsJQCUmZutBy0j6qHV9cm3/SXcQavdOpEurK4K8zAIC7hysAwNeb7ZXpmcrmtp0kJJ9BPbtqOtIp+KBAnpaDxdYm1BKpF5NTJBMcI3CSkGYxkYoZI9BF/S5TYjDxZetaaPKT2onQ8+O7i2WAcyQ0FZdCTv6C/AAIicIVov1ikAAAAABJRU5ErkJggg==`,asparagus_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAV9JREFUSInFVTuOgzAUHKJttlmlJF2UFIgr0EUpkNiaC3AGjsEZuAA1kVKg7SjpIkSRgg4phyBF8pCxn8GglTJVHL/PvBk/AXwCjmf3/5Wz4QKd7WlRk6kcSw703WA4X+sLmrKz5KQlORsxEAB+fm1T4iM8Djf2/5FEYRwNwY/DDWEcTUrleHYfxtFQnGsyNGjKzsqSFPe6AAAc3bMR8yxJR2eZlGIy4V4XSjIHZ3tClbdaUl8mBeD99bLZorn7XYBrfgFQoMpbvcnkAQBUeQvfDbDffcN3g1W7MWpA4MbUvRB6DLr7UQPZZLEAoJonI4wjRR52AuAljyjX3Iuaule2lFhSA5pIZEd+idNy7NkJmrKzOLk4iUx2RbsHU4U4AjrM7gHwkkknARE4ukCWpMq+sBPIO6G7FyfLktTMA5kZB5KIMCUV28DUZBMPVpm8BKtNfv/upbOC2c/hXIGP4wnebtncsEc6vwAAAABJRU5ErkJggg==`,asparagus_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIljYBgFIxOoW0n8p5ZaJmwa1AUcibKEGLWM6BrcNb3g/J3XtzHcPPaCEUMXCWpZ0AV2Xt9GyOFkqR2hgJiEgJGKSDGcmNSGNYUQYzixqQ0jFRELXitdRXCu41ZHtgXntj4kVysqULeS+E9K0YEO8MYBLCIZGBgYbn7YjzOc8QGcQYQekTc/kGo0AQsYGEaLguECAF6gPZZVZb3GAAAAAElFTkSuQmCC`,asparagus_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQdJREFUSIljYBgF5AB1K4n/1FLLhE2DuoAjUZYQo5YRXYO7phecv/P6Noabx14wYugiQS2GD14rXSXkcJLUwy1Qt5L4H1qSBNdEjEUwNfjUYvhAWdOZ4dzWhwzntj5kCC1Jwhq+MMfA1J3b+pCgY8gCxCQEDB+QYjgxqQ1rCiHGcGJTGws5FjAwoEXsddzqyA4iYgFBC9StJP4TCmdcqY2gBfCIxBOZyprOeB2IMw7QI/LmB4R4aEkSw+qeeQwMDAwM57ZCaIoi+bXSVXhE3jz2grElqI0YbQwMDASCCLnIwBfOJFuAXC4xMBAOZ5ItQDf47vW9DKt75uEMZ3wApwb04CDH8OEBAFoqeOiVTrE/AAAAAElFTkSuQmCC`,asparagus_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSInFUz3KwkAQnYgHsIyVosVia5lGxELQwsoLeAaPkTPkAqks8oFFCpuU6WRJkSJdwMYbxMZdxv2b1U/wQSAhM/Pe/DyAX4BFYfet2J4pgQ2WXiQ+sYGasJ5t5PeZ/0FVtIGW9Uas1sFtcqWEvxUvCVgUdvvjQSb5EIkYV6zWwXS2ku/748E4XyyGgiSoijZI4wRqnmtENpRZQ4rROhCoeQ5pnBgXJ8SwwRLKrHGK6ZMyDcAXNB5uII0TSfwVAgBlsdxcXCN4BnX4W8zVVoCCtoOqaAPxSKcSbrUtWOsAQ3VqdTfHUddmvSIMPG/VA65rIwmwo9UxYOW7aGEdkZFAVYmLqYak4OxAFKbGcCou1n/W02NR2M23oxcyTIJH4jphL6OZLsXXF14ENc+hzJqPzOZ1pv+BU5HvnH+KB+Rns9NcWsNEAAAAAElFTkSuQmCC`,asparagus_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVRIie1VwQ2AIAw8jJMYV2CRDuoirkBYRT9CxJS2Up9ewsNiubO9IvBDQWBih7LvIjjWZakPKWc3yT25OfwrkpkLEkUAwLbtUq6plBMXVA4Grq8t60HWYKQH9R2iWMX0SjniokZEIXlDoOGVGUbdYbazx+MmF2kE7qmWkqxlEEX0CKyNVEWwg1ZQJtoqghs6kcAKotgV0yMIKefmypCsKF0tXhepPXD/UAwifsg4AawtUVA+F49vAAAAAElFTkSuQmCC`,blueberry_default=``+new URL(`blueberry-BBXqspnA.png`,import.meta.url).href,blueberry_growing1_default=``+new URL(`blueberry-growing1-Cj7olcs4.png`,import.meta.url).href,blueberry_seed_default=``+new URL(`blueberry-seed-fuVW1LxC.png`,import.meta.url).href,carrot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UMQ7DIAxFTVUJZcnIBTggU0+RKQfMBTJmQUx0aEDY2FSkdMvbwMn//o4VgJshrFOEdYr/N+m57xalKYaloqKd4o9uk4TzqnrmcqJW5+lOEH92m3BnmqZALJyU86+rDeFEK0E8Fp0Ps/PYyHklzrwwbnWADAAA5lfAJkSMQ9qiLL7tIV9Sw9OsuTmSO+p+2wNYU4zrk0QhAyEJl6Dq3hqNkiCS8JU1TcLWaJRANGGgBdQ9Fc0f+ft6Z8QEzMy7hLkX4rFo1PkvwokqgTV6iLBEhPL3cAMAb8x5cUBYehurAAAAAElFTkSuQmCC`,carrot_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFFJREFUSIljYBgFo2AUjAIagYmc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIH+JSQElKId7Ro2B4AAAM7CorC4ZVKwAAAABJRU5ErkJggg==`,carrot_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAG1JREFUSIljYBgFo2AUkAcmcv6nnYFUM3wi53+sBqOLoasj2xJcNAHAhFc2/zsjyQ4hCyC7Gt1XBAwmzoXIliADInxIvAXolhAZfMRagC8Y8JpBjAX/P3Wz45TkK/2J1xxcEpRkJtKCfRQMfQAAPQYyLlPDfzcAAAAASUVORK5CYII=`,carrot_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHNJREFUSIljYBgFo2CYgomc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIHxJvAbolRAYfsRbgCwa8ZhBjwf9P3ew4JflKf+I1h5AFeA0nxhJcFlCSW0mL11Ew9AEAw2E2LwiWHwcAAAAASUVORK5CYII=`,carrot_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVRIie2U3Q2AMAiErXEZGcShHeQcpz4YkipQ8CdqjN8bacvBlbZpfj4HEWUiyhx3VycfenCUASRVgCsAkGrrtT2MENCqsNf1PaaAPLyPRWjdvXkH40Rq+2WSMpEVC7ZTcAtnRN0x9S7doz1S1W0CEetci7TR4+QR60Jfhef7IqSLCIuiEwMgjRO5xVVesj8xln2mQEmtbSlis7Io2vZpHvkuXssMLP56RC4nRRUAAAAASUVORK5CYII=`,garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS82VvQ3CQAyFnRUoGIGWgoYSMQUVJQswBwtQUjEFoqShoGUEClYAOZLRi3P+OaRISRUS8z4/2+c0NPDVDKxP4wIsF5PP7f6uSiodzOLn4542uwPVQMYH4KGocZFyIOXBictC0oDL9UGv54mms23LWa/mqV6EAM6exflCQBbiAlC8BMhATIDUXUoi2WsX/NvrRxFgiUuTayA9gBYvlUYDJKbkpAPIiFsuLMgPgLMudbcaGz1HJy2gVjxygae9A8DMvSw9gC6V6yAqhU5I4nsO/imTNUl6GfamiAN470eNts4C/x+/F+ZBExBuUDzVerNqYXkf7iIUsu69L1y4TTMAL+YLkFzsGSkFyYQAAAAASUVORK5CYIIA`,garlic_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADtJREFUSIljYBgFo2AUjIJRMNxA6nS1/6TqYSLFcB19LZItIdoCcsEIsyBWZxrJFjASoQZfpBKjf4gDABs7CRP3VfqlAAAAAElFTkSuQmCC`,garlic_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJ1JREFUSIljYBgFo2AUDDPg2WH+37PD/D8+eXz6sMkzYdOMTaFnh/l/Gf73GHLI/O0VJxnR9bHAFKFLwjRi04QOiFGDE8As8uww/586Xe0/IZ+iAyZCCrZXnGTEFWTEuJxor8Hi4MlHQbjFxOgj6ANsgJQwJ9oCGf735LiFdB+QahFJFujoa5FkOMkWxOpMI9kCYiILX1onP4MNGQAAbEJDfI/EtV8AAAAASUVORK5CYII=`,garlic_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALxJREFUSIljYBgqwLPD/D/NDSfJEs8O8//oGrAZQIwaol2XOl0NxVJiDGPBZ/v2ipOM2ytOMuJy+faKk4wkuxSXGLIPsAULXt/gk8QXRNgcQZRvsFlCbBygizGRZSMD7jhAFyM6kjw7zP/L8L9nePJREKtBuADOVITPAHQ5ovQRShnERDI2Pm5BNDlSMhpZuRndAkKGwORpHslkJVNSigiy88HQtEBHX4u2FsTqTCPZAmIiC19yJL4+GLIAAIDwnt7DsMsUAAAAAElFTkSuQmCC`,garlic_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVRIS2NkoDFgpLH5DKMWEAzh0SCibRBZGAv9P3H2Hd5gJjsOQIbvO3CRwclBnwGfJWRZADMcFj74LCHZApDhK2YVM4ipxcHDnyoWgAwGmQgKFnRAsQXYXA2z5NWtRQwRab0444FgEIEMz80JZQgMqcGaJKkSyeiRSqzrQeoI+gBmGLIloGABAXxBA9NHtAUgDbCIhmkmlMlI8gHBMgGHApJ8QI4loxYQDDWaBxEAZwZJGciZbVQAAAAASUVORK5CYIIA`,grape_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVRIDWNgGAWjITC8QiDTTPk/zEcbwrXhbJgYWTSyoSADkPk0s4Qsl6JrwuU6mDiyT9D1Es2HGQbTAOOjGw4Th6kjmUY3ENkAmhmOz1JkBxDNRjYQmU2RD9A1IxsMchm6PNGuRVZIFUOQDRxlj4bA4AsBAEAiL1mYqo82AAAAAElFTkSuQmCC`,grape_green_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_purple_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DKMWEAzhwRFEQtm8/3E59d3Uz3gdiVcSZvAPxW9w8zn5OFHs+n+RkQGfJTgtABmOz2BkW/BZgtUCdMNBhqG4nAspxL5BjMBlCYYFJBnOwMDAEizM8GfxOypZgOTyim3/GUo/qDIIR91hYMDjC9J8gGRB1aqv4KBpC+OGRMc3Rqy+INsCjGQ7aCwAuQxvRCOnIGjQkJSKYF4nmJqQwojkfIBsCYyNLdOBDAYBsnIyeiRiK48IlUMgMwZHaUqw0MejYNQHBEMPACcseBmTrgJTAAAAAElFTkSuQmCC`,grape_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2ElEQVRIS2NkoDFgpLH5DKMWEAzhwRFEOpx2/3E59cr3Q3gdiVcSZrD4H1G4+eyMHCh2PWJ+zIDPEpwWgAzHZzCyLfgswWoBuuEgw5BdLsAmBDf/w693YDYuSzAsIMXwTc1HGLgz3jIY89tSxwJklxv6zWUo/aDKwOPKxGBXroXTFyT5ANkCY6fJYEPP7ssF06CgwhZMZFuAnmwHjwUgl+GLaORgggUNSakI5nVCqYmifIBsCYyNnulAEQoDZOVk9EhEL48IlUEw/YOjNCVY6ONRMOoDgqEHAPCIbxlb63vgAAAAAElFTkSuQmCC`,jalapeno_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7klEQVRIS2NkoDFgJMH8/1C1pOhhIFbxf6cwUbD5+1a9BlHE6iNeIQMDA1mWEO0SkAV+adIMXz78IskXxFoANxwWZ8QGFdEWwOIAOVEQYwlBC9w5WP+nSUviTGyznj5n2PnjN05z8FqAbLitrgrD4ct3sFqEzxKiLMBnOMhGsiwg1vUwL+GyBKcPYBYQcj1dLPgkyMyw4soTrJFNFR9QFAeEggif6/EWWoTSPyzsybYAZAAxllAto2HLYYRcT7Bcx+cDYgwnaAGuYCLWcLIsIMVwoixA9gWphhNtAcwSEI2vaMaWEAjWByS0OrAqBQDXPaUZstITfAAAAABJRU5ErkJgggAA`,jalapeno_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAwUlEQVRIS2NkoDFgpLH5DKMWEAzh0SAiP4hswh3+w3QfWXkAZ1DC1OFSg1UjSJO27Ue4664e5mf4/ekOnH9y+xOwPmR1IDXYLMGwAJvhMI3mnjJwX7HyqTAgOwJkITZLSLIAOTjQHUKWBcguwhYcMAthPiHKB7CwBdGwoMEXbNjUIyctojIaIQvwpVWSLcCVWnBZQpQFyMEASq6wZEowlzEwkFZcw5LpqAWgoIXnWGLCGU0NSrwSHclkWATWMvQtAAA9on8Z/HlQTAAAAABJRU5ErkJgggAA`,jalapeno_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/klEQVRIS+VUMQoCQQzcK2z1A5Z2PsBGwdYX+EZfcK2gjQ+ws/QD2lqczMHAXMwtWeREMc3BksxMMrlUaeCoBsZP30Ww2Eyb0XjmNn3c7V2x2Q6W23VDtMf9kgA+X93S+TBpvxp480h6CQCuIBY0SuISWHAoBSDCkvLtrQ5YTA9IwncIKvKAHVA15q/hGR0m8GYPcACgA0uk3TBPc1488AiojgSn+trW5XJJkiVQ47iyXFdVaT3JdkBl2q4q9daVgEX/AYv6PLHrGjbZ3oGPEmA88AAm6xnpUw+xoWuqBqOIWxQ59SECAtk1/W+CzkmIjEJyOmMv8qCQqE3/fYInGwy8GfZ6sOcAAAAASUVORK5CYIIA`,jalapeno_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABH0lEQVRIS2NkoDFgpLH5DIPLAnNPmf+sfCoonj6y8gBeR+KVtAl3+A8z7fenOwwgw7VtPzJcPcwPpkEAxMZnCU4LQIbDDIEZhI1PlgXohsMsANHoloDEKPYBzJWwOEAOHlgQ4rIEbxChawZZABJDjmhCcYHVAmzhD4pkGDi5/QkjrmBE9wmGBdgMh2mC+QDmC+T4wJWiiLYAOcmCDOPmvM/w9bsi2FP4ggmvBbDIhfkKPf2DLNm54CE4uHClJpxxANOAHGToFrx/eJXh6onX5OdkkCXIrkfPzSALwGGPxxKiCjuQJaCIRk6mIL62hSg4aCi2AJY8YRaAkikxhoP0EeUDbBYQW48MXwvg9QCxQYGkDiVUSAoiMiwjLZIHpQUAD3LJGUbvuUIAAAAASUVORK5CYIIA`,jalapeno_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVRIiWNgGAVDDtzebPH/9maL/zQz/P+zS///P7v0/9zUDKIsYSLFcBXjWSQ7imgLyAWMpCi+vdni/+dHBgwMDAwMRtkzSNI7CoYwoFvGw2UJ2fkAPePBki/VLKAawBe+tzdb/D83NYPocgmrAaQUbGQZTmrpiQ4GtrAbLdwYGBgYAFTPX5fT1wXtAAAAAElFTkSuQmCC`,pea_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbVJREFUSIntlMtKw0AUhr/YokRqkSAGurAUgiLSraZvkT5BnsGlO3d5jj5B8wKum7qTrlqE0o0QkFm0xWys40InTm3Sm7gQ/GFIzgx855x/LvAXZNdMAFmtlwD4/KbxVlIQNfzAkYA8udhHj40fFC79wJmb6HcFUSjwA4fWzSPVesnYOkG1XmLUm0oAP3Dod0W6FoWC08uyMbgf85MOMA8KJJOZVLHrWZxdWQBpBzvbgMtHRQCZTGbS9SyuW+e4nkUUfnXhBw6j3lQWNwErW8bPr7jeR6WNpk3ldJ9G004TqL2wa+b6HSi4Hzi4nkWjadNo2nTaMU+DFzrtGPiwRtkUDxPW6kCH97sirVp10GnHRKHAPCgYyWQm9Q1f2cF3uK6nwctcnExmWJVdIwoFVmXXAJafoqzKATrteO4/CgXlo6Ixfn5dYOQmWGaL7vnZlUXr5jGXlWnRurYoeLVeyi00b2GlLTp81Jvm8RcT2DWTeJhIdRSX2bIKDhkWxcNk4RHLs2UVPDMBkFqjLhFsZouuzIumX/9tbNFVyJi7hTcOj/dSeBQKHu7ExvA8ye/j8/X81+/oHfIfC2frtx3xAAAAAElFTkSuQmCC`,pea_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAelJREFUSIntlDFoE2EUx3+f3hESUbQXKFypQyg1iFNU6C0B41K7ZJIuSiI4NIJKFx0Es7YIWTK0QwsRBDchGDsUCprBG1pKx6pBkEiG4nWpJLWJfi7ekbP5rqkIXfqfvseD//+9/3vvg2McNURQMluM+uIz5yJUtuoS4NGlWyKTyhPWRgIFTgSR61qIatuR2kkdgMpWXeasBGkjTiaVl/10oAUlV1oNmTbilJ1NH1nZ2SRanhKj5pV/E8gWo0ROh2AbzNEIORIAzNnrAKSNOItfVmSysRFoMShm8ODFec8OlxSgO74WGhQ/f3UAKN3/phToOYNu8vEBUyR1Y18hobBGte3IsQs3aHVqSoGeFj21smLy6hOp70yLjQ+2L5ezPLtk17CVVvUUOMUgxcpDMf95SU4MDIul7bo3ZNcit8Ozr+6Ki8Njh+vgzdoC1bbjbZBbdS88//pOXnc+Ha4D8A5JmquTvqoBJowhMWevy5yVoPGx6a7xgRvlQ6tTo2TfIVYQ8l5piKlFk1hByGf2ZRkrCOnGrU5Nzi/fVvIoLzmsjfB27TVJ3RDNnR/sNvd8+d3mHrPWY1FZXRCZVF4pEHjJ3fv9978EcNOa+fOa2Zdzoezgf6FvgfcvvwfGKgRNvq/fsk+uYxwhfgNZt7hllq/TVQAAAABJRU5ErkJggg==`,pea_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIntlD0KwkAQhV/EI/jTpYt2CjYBFYSQRhSsxSOJeIxcQlIG0gS0U7t0MbnD2iQhGXaXWbX0gxTDvjA782YH+GOC77kAIKpvs14ptZOp3dIulo5UZ5FYJFGAXn8IALAdT6aptcfTAaPxAACw256l2o7szyLPlDenPO4v7bk0wa+T1FAPylgK9aCMzeGaqUJlYBOWmSqUHlB0fdaNd5ebQJfkEsZ0vAW4VTLNFEkUiCQKRPoMKy0ARgW3a4rmbcpYicl4s2GPt8ku+pS6j7SXFabvQupBkWf1RFBu15S+C+3EfLyLuPunVYHvudZsvhfN+BLGXycx4mdL7k/FG2sdid9DA0ygAAAAAElFTkSuQmCC`,pumpkin_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVRIie1UuxGDMAyVOUomYA52yRzpU9IzR3bJHExArzQg54S+puIur0On97GFBXB3lAYOZvhZA5wfE3283h9Xo2sVj6JPM4CSAwRuIHMCjtD1SidAoaaJub3cAPEpMBZRyOolk+IRWlCWqi3OYN3yohrnMKD06wYwDj6Z18ah1nYt/DUwk3FDLmjhym8awt/guoE2TG34HOJDi5I1Q/ehZcUtDl9i6rrYU9VGu0/cRcSVqecwwb6b4wsIwjy5qWuN/wAAAABJRU5ErkJggg==`,pumpkin_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVRIS2NkoDFgpLH5DKMWEAzh0SAaDSLsIVC1zu7/lYtPGTY13iWYSHAq8KtX/q+jLw22oS3oEFwdzHCQOMUWwNwPsghkCchSmBgxhoPUEvQisqGkGk6UBTBDYRYR63KYPoI+GLUAPYjgqYRgGYBfAdxcouOAXAtHLSAYcjQPIgAOZi8ZT91aaQAAAABJRU5ErkJgggAA`,pumpkin_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLkQUwg1+9+4PiEzEhFgaYJWRZgMtgZFtglpBsAchwdBeDDP786jvcfF4xTgayLMBmOMxgkKEU+QCX4egGgywhKg5g4QyLLGQL8LkaZAHBVIRsGMg1IAALd5DhyK6GyaMbDAsujEiGGY5uEHqOghmM7FpsuQ7FAnTDkcPSIlcenJmINRivD2CSyK6DWXBi8kOSkjbRioeMBSiFFsGiErcC6hR2xDiA6DggxjCCyZRcQ/DpG/o+AACfiHQZOpMMxAAAAABJRU5ErkJgggAA`,pumpkin_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYUk1H4AMwuZKqllAcx/ASkdQWYPsE2r5AKXYpaC2o7y4JtZykjINsYaSlZPJMRxvTibXQHR9AG+ifxnYavyUAAAAAElFTkSuQmCC`,pumpkin_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLtgXIhr569wfFJ2JCLAwwS8iyAGQ4uqHoYQWzhGQL0A3//Oo73GxeMU44mywLkA2HGYxsKLIvyLLAIlceHJkgw7EZDDIUBkiOA5jr0Q2HGYqccpB9QnQcwFwP0kzIUIosODH5IdGOAlmEUzEsSGCRBfMBVSyAGQ4yDDloQC6i2AJkw5HDkmo+ABmEzZWyfEwo5c3jT/+IigsMRdh8ADL8YrYeSmmgP/USAzGWYHUFckFmcEscbHCBwjeqWIASDAQLe9wKKC+uibWcqIgi1jBs6mhuAQBXJIAZAYF9rQAAAABJRU5ErkJgggAA`,pumpkin_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/0lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYQmz6OnCxyh56vGnf3iDDEMSZBA2V4LEQYZfzNZDsUB/6iUGfJZgWIDLB7J8TP/RDYfZhM8SrN5DLsgMbonDXVyg8A1r/USMBSjFLRVrOUaS0jQ5Fo9aQDDUALfWiRlPIsF9AAAAAElFTkSuQmCC`,pumpkin_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIid1UwQ3EIAxzK/7dI2MwCaMxScfIHkzAPSoQnJKS0uvj6h8SOI7jALwWRJSJKN+957RHPqTjECkz8zJ7bx0p9CHB0okGsQAzL3vcZjntsMzBOqv/RZ1626aWmhm4Ql7jBoiRKwKuFhf34BvWvZCEuHqINot8SGoRSUjt4Iy0COhsNMJkUVtkJOZxDBfv15vZWXQlLe0bQLfNPAON/PZ3bSI/QdfBbFL2uD2TrPd/1QDwAfx6iTTKaBYOAAAAAElFTkSuQmCC`,spinach_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7klEQVRIie1VXQqDMAz+OkfBu3gtnz1Ln3et3kUYSPegwTRNjNsYbLAPSjUmX/6aCvzxqyjbchEOCCzdgtSvT9PscmnCgjECQ1dLiYzI87LupLd+b/gumlcM3U5ASD0wRp08L+S4yVx63NO3iHgQGkQmV13LIeFyGYSA3QOLzMomL8Dt3nD6TdYiPIr6VIm4oVUmz9EGeYrqJksyWRaZpXJU9WPKjTw5OXpqDngz+bsWNe3GHEgHAdNcT6eVCc/gQMe7iwK0vmjNNUpkDZrumJeqvuhMG7vJ3LAl46S03kbBGAtSf/pf8JqTD5J/Jx5qr2HmmdxT5AAAAABJRU5ErkJggg==`,spinach_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVRIie2S0QnAIAxEzwpO41pO5VpOI4j9UmyrMelfSx4ICnrPgwCKonwfI7odXO37mFlvDzKsrRFvn7JXgllYOwuYC4KrPWz1Y29ZLegG90AASOXaZCOZC2I2SIUvFQsoibdgybcCStJgiFazzBpBYabyV07e8yJJjGp+5wAAAABJRU5ErkJggg==`,spinach_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAW0AE3Rtv+dDBT/D7Q7BhA0RdtSzftM2AQPXH1CkiE0jw9q+pi2gC4upUp40yUTDcqIczJQ/D8oHTawgKySFVc4Ui18sblohJf/QxoAANEqIe1OcIVOAAAAAElFTkSuQmCC`,strawberry_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAR1JREFUSInlVbENwjAQPCNIhSjp0oUGJohYgClIxRCZgDnYgg0yAGXS0aVOQ5AwTWzZzv8TU8JJkWznfee/s2TgH6GdT6oBAKhY8uKc2cmlbAyHIVSmxvybRQqoYSMAYBDTxTmz49GGCPLRZqIbu2Y6mCKgAaBP89GP5F55IoGYAoBPFuk+zS153XZYHGaTyb2BJMAhuVd2zIQvdiCS120HfdrDdOiG74LrwCOv2w7b4wrP64sspuyKuqab9ZIlJ0g9UAK6T3MvUAnGqkvZkFaxDNypQ2FTx+UVZiAGy8HNyLlZKhT4itzFQO4dWjQ5tEOaU+Thgg1XupJTT84KxCD0m8I8ijGCmCsgbarbDrvHTdo3WQDgn8LY1+9H8AYaOaFdHXkaZAAAAABJRU5ErkJggg==`,strawberry_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZpJREFUSIntVDFPwkAYfWdQoAYMgdiIcSHK0ASHslgGBiTGGBLZXJmMHXCE0ZmasGDSVf8BA4MhTiyd7OhiogMBAhEMDmrCcA7mCpUWMDI48KZe79173/u+ywELLPDvQWYhZUoBeH0cKp06Ta1vkbfXd1xnX/5mkCkFTOvaoEtlSYSq6WAmo7AzXJpUcW3QpZzHCRe3YuzJkohKp04BGByvj7NN4LATr3TqrGLKhFVNBwAcrG0QAD85lt2wTMAOMjy0c8b3kX+TVPstWu23DM7o/tQEnMcJ9ABV0zFqki0ngTSgarohrGr6RHHLBLe9pklAlkQIvAKBV0w8VdNxyu8SgVfwGGzbXpaxBFeOFEmUBYr0UGi0/8yc9V6WRBxrN7YzGDNINAQA3y0ReAUXnjg5Ke+ZDBlkSUS2nMRhMEIiuLZMYDlkAOTe/UyUjyTZbvCGIUN82U/OV6OE/dtp8jYyFglchYJp/ZnPo+LVSc59R2UMh372tA/M+BJMRTjmQqhI6KUWpaEioeGYa+azkyqgv6xjPmkWmDu+ABYSnXTgyhitAAAAAElFTkSuQmCC`,strawberry_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAmJJREFUSIntlL9P1GAYxz/vtbw5rw1X7gwOhKRAIrtMjCYmJCbEyb+BBRddWJxcWHTBxb/BRUNiojExrsawuAgJeAlBPQ/uCrRHeend63Bt0/uJTjrwTG369vs83x/vA1f1r0v8yaHXj+4A6Gl3jmOvLtyFRVRL6byZF2bOZGpp9e8bHLx9nj5/3/1K48c+Z81AjzsTwl1YRBpSx9+Ef1QFoOiUuPXgRRdO7pLhNaCvu7OcNQMAceI1kIZMhhNCtznxGrrolPQgAHMUetSORBiFWhqSe0/f9zEDOK3XmHbnaAa+KFj26AYfntwHOlSnllbZ3lwHEKqlBjFDtZQoOiWs8qSwypPY5RujG5x4DT3tzkHszfzyGgBbGytsbaz0MePsPEYxsYtlHbWjPk+7GmSpZqXY+fSRolPSzcAX1Z0vWO4Mh5U9YQJjCN1S58JXPra0NT3B6TVZFCwby50hakepFAD7lV0Klq0TZoeVPX5W9jTAxXmINKRQLTWaQRKx7c11wijUtrQT6Rh3JsSxV6folNLzU7M3RRuwrlnM3H3Yi92ZOPuS6DzmOKlh0pCp4XE8kYbEVz55M4+ZMzUghl22LomagQ+gLzwPacgUMCnVUjq5YABhFGqA8PS4LwgDGxzVqunPcTR11I5Sw/NmvotxonujegCg4wGHN4h1TkF85ScSML+8hpkzIZbVlnbK8rRe6wpBtobuoqzmymsQHP0COkH49uYZGanE53evGHcmALj9+GUXztBVkb1kzcCnYNm6l12yTZM1MqguW3YAFCxb71d20/fYHxFG4chVfVX/R/0G94oNtjdxwCgAAAAASUVORK5CYII=`,sugarcane_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaZJREFUSIntVT1PwlAUPSVNXNgMTdwaZCWmG+pqIouGONGNyYE/0N8APwEWtzoZI0ubsArdCHFwqcQNxfADSAh1sO/xPm4BcfUsXN4995x377sEAwpcr5ioZ35rYuzCo/hSoesVE6dU1QpGcSAVZfEovlZkFZaYfZmczL6zIpEXDvua+OXphcQ3xSRZFP8UOagCXiCJU12Ew0A65wZ+a2LA65Oth8OAm6jiVmGZcmhDcq5iJ2LLTqnKP1WemNPegBJn30dxIJmwmOKxNxIXIqePow+/NTFGccBvJt6SLQAlDmKlJQORuHg9AuYz8BiAnV/Bzq+kM8xn65hAjrmqu86RmjBhKU5zDO1uU/vx8Q6YeLvbTCjivf9Cxqq4Wqvd+O7xNmFzjnpjfl53y1xYjAGgcnUCpAvSqHUkTX0kokk6gmgwRd0tax1VztLZH1qkOKgtAoBGrWOIt9+GqDcmxTMNKGx7gyyYm5LvbwseU28g5vcysI8PAAAfn2uTTXkKO49oX2R28PD0bADnmf9afzZYmwA317RRNJhKPAqZCRWqySbRf/wK36wQGKXFDcrEAAAAAElFTkSuQmCC`,sugarcane_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSIljYBgFo4DuICvV9z9NDX/6bOZ/mliSler7//adOf9v35lDkiVMpFjy4MFDBgYGBoZv35gZXrx8R5QeoizISvX9X93owzB90j64JcQCoix48fIdw7dvzAyTZ8SRbAlJQYRsCU0sYGBgYGit30KSepIs6O/cyBAYbsBQXBFAfQtghnNx8ZHiJuItIMdwkiwgFxBtATmuJ8kCcgEjsQqD/KxRyp51m44SrXcU4AUAXQNE1DhUevgAAAAASUVORK5CYII=`,sugarcane_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVtJREFUSIntVCFvg0AYfSzVcyCWrElNp3BzJPUYBArSZEk9Fl1VhRyi/wDUxNKEX4CrQw1DQpOJzU2TMNOPHNe7K5TJPXXhfXnve/d9hwYFgtBuASCOMk3GyXiClAhCu50vFwCAuqx6Iiwn4q8asAKG3uDre9aJEGfoDY75aVoCOj9bj50JKy5LOCoBCZAJL84n5LXuZOJ1WaEuKxh6g/ly0V0HL37MT10Nm1powIrHUabFUaaxApSEFacaAEIT4frxUYPQbj8/fnp1D0/3ws3ir0o6ZBauY7Web/a+pUmBt/f8ohG+uYsZTMGgIfNwHavFuWMCeyZeBqWB61jt6/4FAOD5JtKkQJoUoOsiXmUyGyJO4OfA86MT/AWUBrvtoTvLZsDWjDZYb1adgGgGu+0B683qdgMyIXi+2ZvDNfFBBlMh3aLzK1Xu+BBM+lVwzdxuAMGLVYn+YxR+Ad5z26tYeOTaAAAAAElFTkSuQmCC`,sugarcane_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAK5JREFUSIljYBgFo2AUDD6Qler7n6aGP3028z8pljCTYnhguAEDN7cgg7ObKsOPT4wNp8/daiSkj4lYw6sbfRimT9rH8ODBQ4Zv35gZXrx8R5TDiLLgxct3DN++MTNMnhEHt4RYQJQFMPDtGzODhLgQw/RJ+2hjQX/nRobAcAOG4ooA6lsAM5yLi48UNxFvATmGk2QBOYaTZAG5gJFYhUF+1ii5d92mo0TrHQV4AQCQmDoaSzRzBAAAAABJRU5ErkJggg==`,compost_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIljYBgFo2AUjAKCgJFYhSbafP8NlP8xXLjLxMDAwMBw5uonovQSpchEm+8/Pnl8lrFQariB8j8GBgaIGmwWMWHTlOLH899Em+8/suEQg0h3DIYFJtp8/2HhjAyQxXwc5LGKYwN4ZZENQgZbDjzEKl6cZIThC7wWIBtUnGSETymDj4M8Q++8cwwMDKhBhREphCKVWACLcPwBiOQ6YsSQAcyhTNgE0cGTx/cxxHDFAzrA6gP0JImcUgjFBbp+eBxgcz1y0cDAQHzxQFcAAE2zRkug2a02AAAAAElFTkSuQmCC`,corn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbRJREFUSInVlDFrwkAYhh+lKB2CToVupW5C6VgQOrl07OoiCrp37WKhS/5CQUERxNVR/0CgowhxUtwEJyWDxKHpkNxpktNYLYV+S+AueZ/3e7/cwX+v2C9oOIf04ueKr6cVlsMc62klCDsb4CyHOWzLhLmBbZlKyKkAZzGrA7BJleE6txdycZLzPrBqwtwg4UE0LYttmW5HO/VTgLOeVrAtk6SWxQaSWhZWTWwPlFg1fR/Iqd89u22Nenv/LGcxq4cEAJgbbkxA+t7w6caFeKmYoavXJEjlPLFquo6Fc7YzSGrZkLgEiBqMOyqIs+wjY7HiD248XtYJbxaXt42QeAiggDjraUU6tC0T7etTwkQn6SeU4hAxZOEcAs+5IYeavqnuFVd24CvPuXAqn976VYS4BIx6xFrtSWhzN2vbMtmkyrKDfZkH62BEu4PNv1QBA8/QUeKRAJF1/q1BV69t13UovL47B87McYDHDwCDrl5jMO749rp6jQLREN9JLhUzcqPVniiFg9VqTw6dfnUHrfaEUjGjFA/+DFEdHH3ZCeFjct8t38viighGdYqwEhAEnSP8Z/UN/uTZrzroGIUAAAAASUVORK5CYII=`,corn_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFJJREFUSIljYBgFo2AUjALaAZdGhv8ujQz/CaljItfwPZfZiFJLsgWkGE4eCGH7zxDCRlTwkG0B7QxngAQRKerJiuRBZQEjDnFKwhiXmaNggAAALTwUmwa1nZEAAAAASUVORK5CYII=`,corn_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIhJREFUSIntlMENgCAMRb/GdBu36AjsY9jHEboF23DBExyMUijhxjvDf9A2BRaL6bBHYo9kvb9r4QAggWCVVAU5fFTShqMER93lUn9QuOPW/aguwYekZQD6BK9wCaT2xiTI4QDAZ6yePSwCCVSC5UK1NyYBn1ENNjNvTI1MF/zVcWQlzOnNwswDkWwuFghkVfgAAAAASUVORK5CYII=`,corn_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVRIS9WVsQ3CMBREnQFoGQBqiqxCBkIMxCwU1JkiA4Au0kUfy/Y/W7EQaVLY/u/f3XcyhM7P0Ll++C1gup3fVPi4z8lmuCe3XlSAw8/XsjLGyyHYIiycW2djkkWn63FVQohaHGckADZaCLtOKYuHRgYQAhUAxJblptEFxCF6oVYpsF5b/3MTk1IhTxH9xns3ADsqjav3JXAziCFquFX3wEKsRUrgsgILQQaqbU0AwOwnohR8E4AXTZmoJoBSuClkHIL3u98DO+t/A9j+ZN5NTax/5Vodci2wO+ADXJmJGbhBn08AAAAASUVORK5CYIIA`,corn_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAvRIJBSpJMUBckTCXAwSw5ViKEpFsPAG0VSzAOYibMmVUNjD5AnGAbolxEYuyRZgy7XERDjRPkD2CSgOiA02sixAz8X4Ip4sC2AZjZgURZYFxBhMViTDIprq+QA5zVM1J2PLTNSyAF6TEZtjkdShxCvJkUyqhTS3AADroZQZ0g/6xwAAAABJRU5ErkJgggAA`,corn_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAlhYJ4poMoAimFCkkhQHyBEJcjG7KB/Dz9efwJFNyOUweaJTESy8QTTVLIC5AltypYoPkA2BWUJs5BIVROiuRI5gUK6e/+Y6WAm+ICM6spCDCxbZVM1oyBag52J8viDLB7CMRih4SCoq0H1AbFIlywfEGk62D4aEBfCajNgci6QOJdhJjgNSLaS5BQCfTpUZV5cHzQAAAABJRU5ErkJgggAA`,corn_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVRYhWNgGAWjYBQMRuCtxfDfW4vhPz3sYsFmuYetHpR36f/WawyM+AxAdygh9QQdAAPn774nqBnZsTD13gyPCToaGTCRazkl6pEBVpfCgpUYn1AaBXQB+BI1zjRATcvxJWqsaYAWAFc6oYsDKEmkVAH0LNhIBjizDL2yF85yAJFyIXH48tljmjgCbzYkN/GQUpBhdQBE4yWyooDUygxnCFAjuMWlZAlWTlQvCWGhJy4lS22jSQPE5n2SghnZQGrlCKINQW98UCtbklwXULtcH/AoGAUDDgAvcmw2gDIKjQAAAABJRU5ErkJggg==`,potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVRIie2UsRWAIAxET58jULuJm1m6mZtQuwMWyhNjOAgWNl6FIP8IpwF+fa2ucV+oZVkNAgCsy/HgN2B0x3iadZ7FIERwVGqQM+mtcL9dkyk8p5oKHidnklWUKqiCp1VJMYOwLvfNcszAJQP15KPTM2BZaBmY7jzVm6+oWdRA3jG789yPZq5ACz0HB4CBwWR4WpgMzhaKQZ9gCi8tqo2tFmx5Sbbm1hb/6yPtXRM6Z/YOWwgAAAAASUVORK5CYII=`,potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIntlDEKwzAMRb+Tdg3oAJm9detBfFIfJFs2zT2AIWtI3KGkQ6gixR0KxW8y2H5PYDBQqfwMHyj7QFk7dymVd7fltQZljslJZ8WNvRAAOCbnA2Wm+b137xtMYwsp0linZZqxlwPA8FgP76sBTeLTVZzeHNhEZ+WmAMfkPoksclNgi5TIzYFvqAEV6aHUP6bAWflXnpbpO+4f7cK2AAAAAElFTkSuQmCC`,potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIntlD0OwjAMhV8L3VAlH4DZWzcOkitwwR6EjS0zB4jEGpUwFAc3JJS/CfVNUWP7s1+SAot+ITYU2FD4JLd+pXjbDbDkkUI0uNTEOlcQAGzvKjYULHnglAdb8thtazDGnLYbwKBge1dJXJUmtd2Aw+kCdk2ElKaz5MGuiWsA2G1rnI8rCCRapIvHZJngNpF8t+THbqV47ypZS75ocgZ6k12DthsmMB17Pq7uIDPaIpAsQAeUutF7uqkUos9gMkEuIJX4XrIlzX24ptHrZKIctGTLW9Les6GA/ebhvj+7abMP7Zldr8TMAr7VAphV6XA++jXP1Fz0r7oCqWWiCeEH+pYAAAAASUVORK5CYII=`,potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQ0lEQVRIS+WULQ7CQBSEtwLBj6nClIQEj+Ai3AKJ5R5IBHfgIgg8CQEMCsOPQJS8pdPMvnbbpoAg1PRnu/O9mX27gfnyFXxZ3/wJYDSOYolyvTpax/q9KObSiESsO2yb3eFmmmfLMfcwMP1ey5w211QbcA3LALg6eRYxXAyQb/LOMIFodw5AV8sTdGUiDICMsSNxLO5kfgpgca6Yf4YjOMEYYIgP7jIAHQeyxwQIcOUshgYA0AHoQa4mD6Cr1RFi0Z2ImFy0wOKA1wfOsQ7cUWlfcytyv+dBAUDVXIweSwGoIm+yD8ixcAPkOuBKfTvTJ8JO9IZz1sC3G3UU2uVbR0WVGD4FsAfRaBxJB0Gz9Cwr/SFRihfTgX08Xx4m7DTsfbbcy6dCjSoAKw5hHcdkvi2E+ACvc7ne5WhWcVAPk8z6fcATQYkRKFHnkOsAAAAASUVORK5CYIIA`,potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdElEQVRIiWNgGAUjD+R5MfwnR9+UVIb/2PQyoSsi12G3nmIXZ8IujAmI8dmkbQyMxDsJiwXkBh/RgJIgHAWDDFAzMrHmg1tPqWcJzoyGK2cOGMCVCalaVBAs7HABYuJj0jYGRjVpTHGifUAMyJlNQWE3cgEAMasir1+5WT8AAAAASUVORK5CYII=`,sweet_potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWMEQZ8P5HD+ZlFz7DQ4asIEI2tDlIE2z+1TuXGbRVdMHs2nXXGWCWkGQBzGCYobgSCMkWEGswzEKSLAAZjsvFoGCBAVjwkBRE2AzHZShycBHlA1yGI7uUojhAtwA5lRDK/QR9QIzhyBbiSqIgh2AkU2IMx+cDZNdjWAAzHFdwEAomdMNRLAAZ3lmQxvDr0WFCQYxVHpvhFFmA7huSLEDXjC9oQAaDAHIBh+xFlEjGl2uxhQsuV+O0ACSBraREz6UwPi5X47UAWZJQWU9MaiCpuCbGQHQ1Q98CAPnipBlXIGtSAAAAAElFTkSuQmCC`,sweet_potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABE0lEQVRIS+1VIQ7CQBC8fgNXQ4KrxRE0CoWo4g1oBJo3oCpQKDTBYetIMHV8o2SaTLPd7vXO1DScau72ZmZn97aJG3klI+O7P0HQ4QlblO3SmvmX16qXqTxHnBWDfdMiXN6fV+5dfhuOV/HpAOB8mc9b/xfZzF0OT5PEVCbBiSJJNAFifCQdAuviEAFIsZCNzpL3gt4ycLtJ3TF/NPGnYl3f7lUDTOW+OnhrQI+hjOAABokkoIAoixCsbfIRgIidRDEWSa8GVvdI5czAssvquJZAt6YO1iS0hvvMRr+HDoH03SoawLAv1fPbN5R6Fg29SqplJ4XAvS/ZUkP1PIsBjyVoZ9LAbPZO5QmP6+CvKjJgdIt+t2zOGYhEhSEAAAAASUVORK5CYIIA`,sweet_potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS+WVoQ7CQBBEj9/AYUhwtTiCRqEQVXwDGoHmG1AIFApNcFgcCQbHb5RMk2m22927MxWEc727zuvOTu8Goecx6Fk//CGgWI0q2Po4vbOqdzdRiD2CIOam5ThMimE4bG5ZEBMAofV+Fp6PT5OB+/EVIM5BiA6JrqwDsMQhogGxOQlpAWiBFV0AMGQVFlTb1wBS4vwq7rOA2j6806nA+vrlYhS25bXeuzvOq/Pl3VTigTDfAUBAVsJNFAZEA7CmGw4bTYC2yQMAxBizJ9J7rNHSVg9kNCGurWEFMbvMmHq5lwBpE/sEu2Q11t9dV6B951FAAS3oPVsBaVlknTESkgJGAd694AE0zHs/60S0IL8FYIKkDYxq6srNsai+YBLD1ckBpMSj670Dvl62CygLcuKEAAAAAElFTkSuQmCC`,sweet_potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVRIS+WVoW4CURBFZ38Dh2lSh8WR6qqqChTfgK5A8w1VK6qqqpu6WhwJBsdv0NxN7ubu7Oy8Lckq1gDz3jt35s7so7KJn2pivt2hwOJ1fqWth49z0YHBDQoCEDDEluuHhv+4mNn79qeJZ30MFwHa7Fd2PFzas7/1yQhnkCIq4AV7AhEcgEjAx6KqOgJqgS8bMDxaRVYVK2kFSnCCCY0EvXUQ6VUQNUyzpg2IaQ98f5BATwBwrUSzzazxzcbeUMDblAmw0mhswQl7oKOpDaTfbLJf0/6EY5rNPWAvz3N7W39Xu/rp+vl17rx0ak/00jVN9r4jBihhAFNAhbLMaWFnTHkl4JNQ/Y4YfkOEiemZaALTe8SLKNwnMXQfFW/DqBLCdO1mgcwuWvXv2zQ6QP+5NgaOvUWLzKz9g0kyHeSMEcgcKK5NLvAHBzcHKPX7AFMAAAAASUVORK5CYIIA`,sweet_potato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQElEQVRIS92ULQ7CQBCFt9fA1ZDganEEjUIhqjgDGoHmDKgKFApNcNg6Ekwd1yiZJm8znZ3ubCA1rIHuz3z73sxs5kYe2cjx3Z8Cik3ewrr63PykMjhMwbfHhXvW747xqF6OQzic1q0L9ABacK6E1ufl1NfFrJi40+4ehXiAPEw358HkNyg0z4dUFCjAZm4TrOJAbU5TpOZABkIw+rVUSUigYCg4zeMw/efWDJ0hu3o5IFsoaXJoicUch/JzqL4OIKtH+mslHBBuYQCIeasBcFtNHe8PrwAbtXKUfmOPZo9szB6AFrXylJ3NrZAQFRDLgwyOQrCsgYVfdXKKNQEAKnip8bysV7m7XBvfaNYToQJk/ePlpIY5VMtWAqyXlOKZbz0F3pe3bh8gKc90kgJsosBcHYBByysTpoKUILE9owM+Bp4PKJgW4PEAAAAASUVORK5CYIIA`,sweet_potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABUElEQVRIS2NkoDFgpLH5DMPIguRM+f+w4Jo7/SGGz2Dy2OTwBTPYIJDmyAR9uLrlCy4yIBsEkq8tTgbLN/fORZEjFIeMyJrvvD2DYQmyPEwS3RJ8vkexAGYAzCKQT2Au//tEhoFZ5gncATBLCPkeHkQwg5C9DDIEBG5v/8Iwf0E3Q2JCKYOqJw9YDBSE6L5DdhgsiOGRCfMmsotBBh568JbRTkH4P8gCEEAWA/FB4jCfYQtirPkAZiDMMJBByGIgvpevF0NosCPY0raVjRhxjeEDdBXoloD4IEO3bd4GNhxEwwDIl7hSE04JXBaADAIZjs9QZMvwFhXYgoUUw0EWEbQAFBwwV8OChljXE7QAFrkwS0gNHqIsgFkCSzlUDaK//5/+Z2aUBgcjciqiahCBLMGVBGGW45InOohgPsFFU2QBcjDhYlNkAT7NxMgN/ToZAJfI8RlnygRTAAAAAElFTkSuQmCC`,olive_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABdklEQVRIS2NkoDFgpLH5DKMWEAxhioMor0rvP8yWSW2XMMyjyAKQ4bpGInBfXD73hgHdErItgBn+9s1HuAVaGVcY/Bh+opiJ0wJkr4NMQHYZSE5KjhUj/Im2YCMDx//rM7TBBgiL8INpkPdhFuGy4Nmj38QFEbIFMGciW4TN9dgMB+nFGkS4XAizDGQYyBIQjQ0gByfeOMDmUpCBYIMZ/zJIyXKhmC8swgvmP77/laGp9CTYbAwL0CMXYsI/Bik5djDr2aM/DAwM8KQPFf8HNwoUlOIhR+CpCcWCvCrd/xCDYML/IZH8n4Xh8vnnYHGIrxgZYK4FRT5ED8hSkL5/DMipCcUCSOTqYgSrsLAQkgVsDFoZl8BqXq6xYbh87jXUgr8MDAzMcF9OajuPGUS4LIAEzU+oDxAWXJuhA44PkA+ePfwDjhf0PEMgiBCegVjwH+pahDZQnMBciy1FERnJiJyML4cTZQHWhE2BINmFHbF2jlpAMKQAvHOcGReApVIAAAAASUVORK5CYIIA`,olive_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS2NkoDFgRDZf20LqP4h/9cQzFHFK3AA3CGS4e4Aq2KydG27DLaHUUqwWwCwB0dgsJcVHGEGEbCCMje4rfBag+xgjrEEKqqN1GVqXXkZxPXrcYAs6bMGM1QIZJQ6wI5/c+wGmkfmgBAAyCJsYNh9jBBFMI8jgeEtVhoXHb8NDBGYhsqUwh4B8feYrxEHIiQQlktFdi42PHEcwx4AcAjIcZDB6UIItQA87mCJYOINct+fwc4aTj97A4wWkxoSbAyWusCUGDAtwJVFclsBcjSs5Y80HIJfBwhNmobmcCIOLrSTYJyAalMqQgwNXhsRaVMAMg4UrKOUkhen9BxkMAiDD0VMRrryBtcxBToagCAS5GgRgPgDFBXJqA6UuXOUX3nyAnARhLgRZNm/VJax5AZsvCGY0WPAg+wBkASz1oSdLdEtwBhG6RlgcwHyAK8yJsgCb5lELCAbpkA8icGMADRDVMCBKEcHww6MAAJp4MShPAj9kAAAAAElFTkSuQmCC`,olive_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6UlEQVRIS2NkoDFgpLH5DKMWEAzhgQ2i+BCL/wvXnMDrCJAaZG+gq8epGaSxLESfoWvNRQZslsAMBqmRMTFheHLmDNgedPVYLQBpntSRjFMTujzIYJglRFuA7DJkTTCfIRsKY+dVzMXwLYYPcLkOphlZHl/QwOIFqwXIrsfmdfSIBRmGKzHgtAA9geOKbEIZgWAQ4Yo8QgbjDCKQBHpEYos8qlhAafiDHIE3o8FcCYtAXEkUX/wQXRbBDIf5CjmJgti4gpFoC9DjBl/uRY4fkiyAWYIewfgKRJItIDb14E2mpBqCT/3Q9wEAeMK+GRpnxQAAAAAASUVORK5CYIIA`,onion_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAOxJREFUSInVVCsWgzAQnPCIqeUc2MqaCu5QhazkAlW9QGUlqndA1FRie45aTHhQ0/RBPpvl8ehnVFiWmZ0su8C3sVrL3nV2PbsQhRKaWgkO0Sy4XHBFgw7mYpLAsPqmVoLzDStJk+53WwDA+XIFV2DxKwpWEUfoAeB02IzixfEGAGg7moN8GUfoVZWTBcisJEW8VzQif9zthFdMVfnbJVvAIk9SixhJyhKZ1mQt5nLkgSXgrd50ArBc/NYk/4dA20HIrJxM5JsH2sHwj9HnUOMNeCeQnAUjRk3z4quCvexMId2nWcvOJaQRIv4YnrKKcGJDnEswAAAAAElFTkSuQmCC`,onion_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAExJREFUSIljYBgFo2AUjIJRgAm4zFj/c5mx/qeZ4a1LY/63Lo0h2hIWUgyvzg9nePv6DUmOYiJFMamGk2wBOYARixg1IhCbuaNguAIAavoTMVykVcgAAAAASUVORK5CYII=`,onion_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVRIS2NkoDFgpLH5DKMWEAxhkoJIwpT3/4vTn+F60PnYbCNoAbIhQ9MCkLdx+YIqQUQXC5AtgbmaGNeD9BGMZFjKQDd4aFqAnM6R8wO+3EZSEJXkhYPN6pm0EkwTYwlJFiREuoANFhEVBltCMwtAlixYvmfUAtS0AUr3sDigNIj+EyzkCSuAJx6iUxFhM7GrGPoWAABQhIsZroeW7AAAAABJRU5ErkJgggAA`,onion_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVRIS2NkoDFgpLH5DIPDAglT3v8vTn8GOwYXG1dI4PQBMYbC1CCrRbdocFiAHDTYXE2WD3CFN1UtwOdyYiObYDJFdzGID7IYW6rClpIosgDdMoosIBTRJOcDZA3YggkURPhSD0w/wSBCdzlMI1UtgFlSkhcONr9n0kowDYtofAUmUT6AWZAQ6QI2S0RUGGwJzSwAWbJg+R6qWgBO+zgA3lAgFERggz+v9mNgElJk+PfuPgbNG7oJb4LBZ8H/r3vzMQyFmYZuGbfzRJAUhnnYLMAXHPgSDLIc3FxCQUSsgeRFEMWmYwszahiKbAYAYw7wGetnhO0AAAAASUVORK5CYIIA`,onion_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQklEQVRIiWNgGAVIQEFB4f9AuwECiHXJ4HExtQBFPhpawTG0XEspGPy+RXfh4HcxTcEI9z4UUCUUhk5QDh2X0hIAAFsvEdRqfNUJAAAAAElFTkSuQmCC`,soybean_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVRIie2VPQ6DMAyFX3+Wbp27IuVuHXsajsCdkHqHbkyVO4RExDiOQ9NOPAkJiPO+h2MJYNcfRfOV6NDKvOv9zfOe+h4bAbJqAYjpfwGg20Mv+AZAXQ9cHDCN7QFJWzTIFoDac67aMSU3AO+XvMhHFKj7gpj8dLVvsgLitIT0HCKlF19I5iH5NPoD5cqZWwCrA+UQzRzQW1SclpJ5bpEAwA3+QZqY2bhoLhUkqcNBLiGW1EudtUXBuMo8V7z6aWwx3mXWB53sOFv+9drCAAAAAElFTkSuQmCC`,soybean_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVRIie2TwQ2AIAxFq/HCCg7Afk7ifgzgChzxYBp+qq0VboZ3Eoz/t/2VaDDoZWr5aN2o4PnYdZ3ZI4aC/BzidQ7xbug2WDcqLIQiIRLlVE0s1NZkpTnVdyickz2ixXLnSp+q5ntLnMiRQYj3UWDVMiOJ6S7njgZ4Z3XjXlMMHOGxaVl8+g/YRAZuBf2agQYLdm2R18SiuQMvWgXq2nVoDv7KCeIgQHNazaXdAAAAAElFTkSuQmCC`,soybean_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAr0lEQVRIiWNgGAWkgt97Ov+fm5rxn1rmMaIbDmNfvnmfwSh7BiOmFtwOu3zzPgMDAwOKPiYqOBLuMF11RQw5FAtYXcoZL9+8zwBzCTUA0UGADyDHGSnBOjQASd7BlVLwAaJTEb6UQhULKAbE5OBzUzNIzuXwcIQFAak5mBCgeRDBLYDl4kEP0OOSqtkaW2lMUj4glIKwBTFRPiClnoA5AqaGhRgLSAFkJ3FyMhldAADK8WmxC7dL5gAAAABJRU5ErkJggg==`,sunflower_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABTUlEQVRIS7WVPQrCQBCFJzFdOlsVb2AnKIinEDyj4ClEULDzBqK2duliIhN4YXZ2N9kYTZM1bt43b342Ef35in6hX+Zp+T5nNFikFCWZodkbAPHhOqbXobAgTkBTRNKxFMdzDbEAbRFJQH6kkiPnazaN6XorqjVDkhVV2gYgJKJeDkIi0k3R5riXA8A6dVFTRC6h8ZxKBm22I9rvnvS4mGkP7iIXeLLMamEJYChABgB/8F2+0FR8QNgFO9BuaoAU1Zvaii/f1amyHGAD7gy7n1LiowA9j17H0QAAXMg6WDXQmwGSEDmtXxXZZ1l2EedeprJTF2kXLMS2XWBAXOmxjgoMjq/gPjHddXLaW9sUm13FRzGDAL6oZTfxGqnQgxVUA51jnVdfOwY50Pl3Fc0n1AnAwl2FMAvoNm+RpQus5VQ2CenvBH73/uj7hPH8Azk1pyhepQfHAAAAAElFTkSuQmCC`,sunflower_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGlJREFUSInt0MEJwCAMBdBv19A13ERwRsFNXEPnsCchxKQg7aWQdwyJ3wQwxhjzVyFihoh5OiPVL6kxZY+UvTqkzUj9W0BvcLUMADgK0WwBVC0DvcHx334WwD2dYm3NOalIH6AbaHXzyg1mdiJmJYRz+AAAAABJRU5ErkJggg==`,sunflower_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHFJREFUSIljYBgFo2AUjIKRDGRMGf5TwxwmXIaHhEuTZAkutVgtIBXgcxCGBciKiPEFzHBcAMUCdMVrVj5leHKagRGXAxgYGBienGZgXLPyKXEWwBTjchE5cYMRRIRchAvg0sOITRDZhchBhEt8FFAEAPyuLmpSKFsiAAAAAElFTkSuQmCC`,sunflower_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKlJREFUSIntkdENwyAMRI+qW5A1sgkSMyKxCWvAHMmXI5ecSVH/Kt4XAdt3FwOLxeJP2XYc245jtofdv1hhiB4herPJ6mH1N4Fa4HJqADAlYnET0OTUUAvctyLM0FAAGMeX996QKcCGhOg/kkiNnEP0Q4OXAHPaD9fLl8E5NYxELgFZri7Wkfvly5u+Z7z1Ry1wGe0xNvvXjwn6JLNYPdSF3oN2at0vfuIEQtBnyE8BEcQAAAAASUVORK5CYII=`,sunflower_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIntUkEKwyAQHKW/0EM/4U8C+UYLeUY/EvAZOQT8hv6iYE+mG7ubWNqjA0Gi4+6Ms0BHR8cO1iH/u6amxYfRwDrk5/L+WkQ1861Dvj1MpuuRK44vOgCAGKD8nDCMZtsrrrgGHL/maulSKe7nhBigJBeUzwn6aEBRireGzwk6bADsw5fOa0H0XEtkThWdljIA9P05sGPKFbcOeVoNptXgescWbB2y2ICbCGpZCr8OucaF/sQA5ZFObZ9NFuugdvItpDusCpoDVSrtd/yEF231okoU8YDYAAAAAElFTkSuQmCC`,sunflower_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPNJREFUSIntVDEOgzAMPBC/SIZ+IluXjt2R+EYr8Yx+BIm9YxcGJL4Bv0BKhyrEuE5CRUdOQkBy9p1jK8CBA3uRSYtzB+u+i7PM2covJPLruf6PiaT4OSVr4538HdrA3h7KagM7d/7ZEreZT0XcO1aVxOec1RGNA7K2mVBWalkrKxU8OonPuXkoyCVvmwnjEG4y5UuGvgQoXHIXkDpryVBUAPiUTF3RkXT73BDdT44pd3W5eq4Tj2ER4E55cm1g616h7hVOdyyN5U0OCkgTQZ2Hms+bzLG6KsYBWYspWXZqssQKeCW/IhQjuqB9oE5D6wd24Q0PlLoJNXPrzwAAAABJRU5ErkJggg==`,sunflower_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA40lEQVRIS81UwQkCQQzMVSFiURbhQxAswPPtWYAg3MMiLErEKpR5LOztTTYxsOh+j5vJZCbTSePXNcaX3xActut3qew83kPDzH4C+HDqJ/jPx0su15tESCYECRyA5dMIcrVsAKpgv9u4CHK1mkq6V48HTC1TGTLOC441/C9B7lMtYWEFicCKr2mylv0UBOs2zEPrj0PowFLOVQLkerlaSFMCTGHt2GrjqoJmBJ4IsmvHQKXpZhexFbHGBTjrIzWmUFFrUFQ6a91yreqhYcraDbDGZZ6FLhlAYQ+s2H37PazAS/QBL7jGGVi1//gAAAAASUVORK5CYIIA`,watermelon_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW5JREFUSIntVbFuglAUPS81rTTwQpcmNowMGAddXDv1D/oVTv0WJ7/CP3By7SKDKQOjCUkXyYOITnTQ+/qA56MmDh08CQkh3HPuudzzAG7417h7uQeA0nSd3jkLpnv44D/iEO9KAOCTnpFAzBKqYYd4ZxawX5+QL7clAHjTvpawO7Dl/X6dy/vNxxdxsHy5bQpYIwfFKiv9xVgWiig1dk/ggSuF47dPWCOHFaus4aD0pv0K6fO7VyFSO1ah1vDAJTcMADoAYA0dFGEGEaXggdtKSKCuuwO74fr0HaWD0l+MG8SXjEgV3K9z6aJDL33PN62F9QYI1IiuISmgjqaOtlHpagWSqoBOXVdYdwPo3RMqDuo7rhM1NaLWUwAZ8JtcPukZR/UXiCiFmCWwhg4rwuzogCLOA7ex0wTdaHTbxgMXAgmKsBY0SrJ6RFy6psDxyDiXZCkCALpc1KHZ+wp5Q0AKHZN9ldPUiGv8D25oxQ++q8nB7rJdfQAAAABJRU5ErkJggg==`,watermelon_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWNJREFUSIntkj9Lw0AYxp+T1jYxViPFYtFJFMSl3CBE3Lp0cHR0yGhAt34FwcGthawufgOHog5SLBWEIl0LBf+QgjS1rdUMVc7pwiVpqTg45Qc33MvzPs+9xwuEhISETISMKuqFJLI0hX2qMq4j0m1AI3J21J4cIDaVhzYzNIp8RsJ9s0+2NusejTwbQ6ljMQDYXVwh/bfPkSFT4iVLUygPbRaLR93aqlnB3YsDvZCEXkgiocooD21W6ljM0CgMjeLi9ZklVDkwVWAC5uyw0wcHZrXm1gyNwqzWkFtIEwDgxgCQz0gAAN6jOMvkqfWNbtEaH8Ab/PBQHggAneYSlLU5VzNo9BBRoqR98jg2AFeNdxxc15lY5y8WOT5veczFkG7Rcn0DW+T/x7g8jctey/0W8fUAAhMA8ARE/AH+TVjfjgN7Xo10M0MiHwN8bSiMmwqMXH0/7C9HzqmYP0z/xj/kH/kBY5CYjlZ/xP0AAAAASUVORK5CYII=`,watermelon_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAN9JREFUSIntVNsRgzAMU3odTKN4lIySUTwKm7gfJTkIsSHQz+qHOzvIL9nAH18YSajqwZFmWESkfUk2cgCVPG3sAIDXTIBSiomIqeow25FtBLfcNVtTVavVVBuArc0nrwRBNiMy8x6/PUcQIAFAKeVgG2E4A5JYlsX75zFauSICEbk8vFvBgnlEYmiIZOoOrvpyztGb0wBY9R4u4+32nfTf0771m/wEfXvaDm2NU6eiw9Qd22XiqeNq20JynEhTVS3nHAXZwW2Rpw6SIGndqag4tG32VKTqf4LT5fnjp/gAHB6L7zj2AgcAAAAASUVORK5CYII=`,wheat_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVRIib1VuxGEIBBd6MAxsZwLDC3DMggtgzIMDSzHxLEDuQSY3XVB/Nxtgp/Hvo8gAImyRrvUuyul32hSRMAUOzZmHeXeRYJ+2JUHumWqAQDAj84a7fphV1fVEwJPAtbQ1KzR0A97TnGZW6TeWaPJGFyc4SXcgWSZajIpXAvwg5BAikEaq+k+FYzzRrqM8wbdp4oNcQQBj0ceUfxw1mgXANKkcd4Af2gJL+HwKorqE81J9qVucURwMgnCcg0rLRNRdHE3ImeNhkxEsffdiIrcEoKSSV7IpYh4JTcax53smYgX/6ZcUQ6TcysRqKZdyQN/z+2qpl3FiDhechBJEs1FJym3Tw6cIrdPT7RTt/87MlkpvBt/QfBK8zcreYp9ARnARYgSAH7PAAAAAElFTkSuQmCC`,wheat_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVRIiWNgGAWjABfYsIb1PzHqmMg1XEVZlihLiLLgynklolxLFrhyXun/hjWs/9EtoWkQUQUguxib65F9gM83WH1w5bzS/zt3H+O1JCDkNyPMcHwRTlQQ6RjeYyRGHUkA3cXIfHTXkhxE1ASjFhAE2FIHpcUC9VPcKBjcAAAkzD98KD5/RAAAAABJRU5ErkJggg==`,wheat_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAWo4D+6ABM1Db8xA7slRLmEWEuIUjQjm+E/BZZQzSW0dcCNGQPnS9paOuDxR3WbkTMavoxCNYuxGj7g4UpzyweDD4choJqXsVU4/2dk47WEKpbjNHwgS9GBAQB1RDSsD2ft+gAAAABJRU5ErkJggg==`,tomato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPlJREFUSInlVbENgzAQPCJLVJ6ABtGlSpMJWIANskeKVBTZIxt4ASagSUUXpWECqkhIThHkfJwHbBAoUk5y43/u/t7mDfwdolRqn/zNkuTeAlMQuCT1VV4XjdP3Q9AduVlRKs0eifWirwINAFEqoe7NRyCLJQCY/SyWqAuT88XHnYEuE56cElOUyWuBcWML6C6RJaKgTnaHoxGyRaiAIR+DLX69nHtFJl/TIRGKVf8D5xaNYX97cy/uYPVRMbtNtD0A40CFYp6CBW5U6NNWIHu03mR29QB/BkFetV5OVChYcnaDQAPAkBsVCuSVibFcLvN87BWb/Sb8Np74sVisxYmO1AAAAABJRU5ErkJggg==`,tomato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGZJREFUSIljYBgFo2AUjHAQWqHxP7RC4z/VDLEpEv1vUyT6nxTDGYm1hIGBgeH5r7cMDAwMDJJswgwMDAwMqztuENTPRIwF2AwixnCSAXIQEQuI8gElYOhbgC2iKEvXRKbMUTCMAAAvbR7j6+Sr/gAAAABJRU5ErkJggg==`,tomato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJFJREFUSIljYBgF5ILQCo3/oRUa/+lqiU2R6H+bIlEMSylyDLJmdAuIMZiRWEsYGBgYnv96y8DAwMAgySYMl1vdcQOvGURZALME2QJCBsMAE7EWEGsg2RaQaxlZFsAAMZFM0AJchsDEqBLJuFIRMUFFVBBhM4jcSMcLcOVkfICiSB4ZFmCLKEqLaOpH/igY3AAAKrlIKa6/Bn8AAAAASUVORK5CYII=`,tomato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DIPLAs8Ctf8gH2+fcItoh6EojC0zARsAA4u7zqDI47MAl164ASAFyAbCNCCL4bIAXS/IgTAxsAXYFMDEQTTMEmwW4NILCwWCYYnsE3QLCBkOsoSgBcg+efPrE9hhImx8YBo9jrAleaIsgFmCbAExhhPtA5jLYEEE8gFFFmBLQSBL8KUiXEGGEUTIEYduEbZIRjYYW6QTjANcqQiXL9EjmqAFwzMVkV3YEaobKC5Nh40FKHUCIV9hkUdJmUQlUzIsgWsZ+hYAAF7KnRnkpkjpAAAAAElFTkSuQmCC`,tomato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABC0lEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+HYNGPzATafgsyE6ScYychxgm4BNoehp0qCFsB8CKLf/PoE1i/Cxgem0eMIW5InaAFyUCFbgC2VkWUBsiZYEIF8gM0C5BQH04fVB7jyAq5kii/vYFiAHHEwjYr6WgygjINsASzfIKd7bJGOYgG6F9ENQbYAl6vRzSAYyYRSEaHCkigLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLh74FACQg3hnrDTBLAAAAAElFTkSuQmCC`,tomato_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABGElEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+EPrwf+l9dcz4gsh80HMHmYepgDYZYTjGTkOEG3AJvD0FMlQQtgPgTRb359AusXYeMD0+hxhC3JE7QAOZyRLcCWysiyAFkTLIhAPsBmAXKKg+nD6gNceQFXMsWXdzAsQI44mEZFfS0GUMZBtgCUamrmP4bHBa7UiGIBuhfRDUG2AJer0c0gGMmEUhGhwpIoC2CWoKcibJFKVj6AaSK2sEO2hGgfgDSNWgALOnClQgFACXaS4oAcS4e+BQAsoN4Zr8Q2BQAAAABJRU5ErkJgggAA`,tomato_growing6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVRIS2NkoDFgpLH5DMPQgtgyk/+gYFvcdQbDd54FamC57RNu4fV53dK4/03Ri8Bq4ApBgvcvXoMbDLIIZAmyYnwWwByG7ji4BTADkSMdXQzdApjl6OqQ+WALsBn+IsDjv8SGHYzIcth8AJOHqYc5EGY5wVSEHCfoFmBzGHqyJ2gBzIcg+s2vT2D9Imx8YBo9jrDlKYIWIIczsgXYUhlZFiBrggURyAfYLEBOcTB9WH2AKy/gSqb48g6GBcgRB9OoqK/FAMo4yBY8vB74v2b+Y3hc4EqNKBagexGU9ErV3sANQbYAl6vRzSAYyYRSEaHSmCgLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLaW4BAFsM3RnfTMpLAAAAAElFTkSuQmCC`,tomato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAWUgorEwP+UyNPfkorEwP/4NFDFxQNiOCmOGBQOoVpwMFHDEKoCXGFMlI/JDRaaGk4RoKmPKLGELuUTVQDZlpCT3anmI1wGDZ1wH3kAAGHuPqjrva2eAAAAAElFTkSuQmCC`,fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVRIiWNgGOqAEYf4f2qZh82C/0EzfMgyfV3GFgwzWQgoJhrgchROCxgYGBim5JoSZXjO5NM45fBagAyyd6AaMtWDOMuJtoAUQ5EBEymKs3ecxvAJITC4fEAOINoCclzPwEAgiPAlP4otIDc3E20BAwPxuRmfYwimov9nHfDKMxofwCtPdDI9f/YrCt/QmJsofURbQKyBJFtAKAgosoAaKYnmOZnmVebQBwBEGSTr3HTDzQAAAABJRU5ErkJggg==`,rainbow_fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9UlEQVRIidWVOwrCQBCGv4gIor0n0CaVSHqxyhG8gJV6ABsbG7uAj8LK1iNYib0Ee8+hWK5FDMlCspn4wvywZHYnmW9m2CFQdFkp5+pT8ZIASnl2YA0aAExqTQDmLILzaQWA6uwCwJYWAP0gXFrSGkARVCFeO1RoayqbSKuxk5UMAKPlKdVnBMQ13EdB1q4MDFASv/kMvHYdDZYlcQUQVfFXFeQCvCIxIN6WPC1K0m/mQHl27klOkvEWWfXD0wqfG81/j9J5DQCg/K7Rb3WORr94Ds7+Tdu3OzXRd2KANGBuQFYL3gKoaw/IvkUmfX2Sv/7LLL4egFJcIh1wkL8AAAAASUVORK5CYII=`,mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWBJREFUSInNlaFvwkAUh78tk7UkU03aNHU0QUyMhIoqUgECi5ucmJiYwC2ZRPAH4LCITRBURZd0ArGk+IoqEmw9U9dQ6O5asib7qff6cr/v3t01DxrWlaR2+Auv3wAH7f6WScfD1DUWyxXdOxegkJu6RpJmvH0HZF+7Ur9r2Zb6Xjs363vtszxJM0xdk7Z1I60C45EPwDrYnuWmrmFbhnS9tIPedIZtGflOxfGI3LYMetPZ5QAB6XttbMvg4f2jcDwqc1SXXEcXXfKxHLeF47ZqQSsDHLdFHO6Jw31tiBIgzIVOISqg9JmempdByurHavySlT8aQBzt8tjp1gMrAXG0K5gKmPh2Wq8FKFt8bEyFjv7HjzbpeMyHg9JYJSVgPhwQbUKSNDuLq6hSB68vj7nxeOTnsWoWKAGfz08slivWwZbxyC8dOKpOpK9IGAMkaUaSbgsDJ9qEgCsFND70G9cPCX+r1Lc361oAAAAASUVORK5CYII=`,rainbow_mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIljYBjqgBGP3H9qmMWEy3AeSwmGD1NdGf5+SWOY86eaofT3Dwaz6m8MHAwXGGbJfWUo/f2DYc6faoa/X9IYeCwlcDoIlwVUAwNrgcySywQN4HfdhFceVyT/h4Yr0eDL8RdYzSM6iPTsRBn07ERJspRoC/TsRBkuHXrNcOnQa5ItIWgBzHAYQLeEkIUspBiOzRJs8siA5pGM1wcwcOnYCzhbz4o0iwlacOnYCxRDYZbBxNDlSbIAm2ZkgxmI8NHgyGgTDiczZB56wKDldI/hz/EdDH1P7zJkHnpAlMUELfi42w+vxRRZ8CRGl6AB+BxA0AJqAJpbQPM6meYAAHXOYpMBqH4dAAAAAElFTkSuQmCC`,wood_chips_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAdtJREFUSIntlSFPw0AYhh8IgYTM7BRqycYys0wgMJAgqhrsJib4A/sBm5yH6WUJGoEAS2qoIAGDmFgwC4xkqqo1CwkzRXR3XK9lKwgSEj61fum9z3fPtSv8158sIUQohAiz3Lv+k/B20+ZwdzsTaOM7wQCDToNKubjo3nGwf0Tv0gkBfN9fM9clGsumLhVyTKYzAPXbtmqMn1+ZTGf0Lh1M0EpFQohw0GkAUCkXsa0aABfXN5QKORx3BIBt1Wg3bQadBrq2LwHS7+15m8l0RqmQo3vax3FHlAo5ACbTGQ+Pd1TKRdVvnV2tViSECA93tzmpH6vJu6d9DvaPsK2aCpPgi+sbeRZY1S3cp3elKQGQSqTrh8foIM2pAU7qx1TKRcbPr7TOrrCqWwAxwIYZ3m7ascODKFzuItrVZ89xR2pyADbzgJdUJIQI5fZYPI76tFKPVCV3d//yFoVv5qOgeZCuSAJkmSDdOaAOU4XPg9jaVEX6FBImg/T3IKFEC1+pyASZO4pNrd+zuHaH3pIXTV80D6LrRU/CY0r08HmQCI8p8n1/zR0SWns7cYgOxktV4g49lYFRsTOQEIBUUAYlSwH6FKkgXaXxOGYGLAd5K5WYlenvGu17kDX41+oDGp4mCPU5SPMAAAAASUVORK5CYII=`,scarecrow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4UlEQVRIieWUvQ3CMBCF3yHEIEhsEadKQUHLEkgpvECWyBi0FBRUeIV0bEJjChzkOP45WyBF4kmWT9a9+86OY2Bh0mawRTnFn9d3sNnzvVzAp/goLmTFBBQr1EHWOcfqhXZA1oC+HDHOduzL5QK+JjbA6ngSp8S+RW5ROpxZ/qz/oMTLPSJd9wqDBAYJ1L3yAYsBepDzRbOWhKQAnC6jOeuAgez5tFW47QQaKACwYgE3F8638e3Am9g8lDeOeUIAuxsAoHsrZklmjQKeCZmromuapa6C7qq8h3A5b9H/An6uF4WMRHW3ug60AAAAAElFTkSuQmCC`,sprinkler_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVRIie1VQQqAMAzLxO/5AP+y4/7iA3zgPDikbG1XrYKIAWFsWRLSgcCPNyOXz8UL0qWUEgAgxujiDb14RYBLeIhrkJI1AlVC7cxsIAnBKm4xaEwoeuKAYQZenKqIg6eipv913tfTYp+DVBE7XAq6pzzl/gyUdIEzbkjKWa44mVZE9zWt8aK5mff4M/0Nbof1J/QhbIFgQxZVKNMbAAAAAElFTkSuQmCC`,lightning_rod_basic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIdJREFUSIntlUEOwCAIBNd+Ex+CL6i/ppfSaKOi1UMP7pHAzoYYAX4i+Tp49Jh7ohpELHgNYCUWABKYEZh7+vPhwCyvdOKJJDEu9RTlGhAAwBnjUyzUavMmAJpMTVW3uWk8omw1o/vueUVuJnEPYEobsAEbsAELAXo20TifRY38kqnp0nswpQtltzTIu+xVhgAAAABJRU5ErkJggg==`,lightning_rod_superior_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIZJREFUSIntlTEOwCAMA03/x+MYeIkfmC6lolUgoTB0wGOU+KwIEeAnkq+Dh8c8p9SCiAVvAazEAkBIgqSn/zlMUl7pJKcklbHWoyp0IACAGONdVGqteROAkqyYFl3mpvGIHqsZ3bfnFYWZxB7AlDZgAzZgAxYCytlE53yqGvkla9Ol92BKJ/RIO3xwMn1QAAAAAElFTkSuQmCC`,lightning_rod_ultimate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAItJREFUSIntlbENwCAMBE3GQkLZly1oMgW7fApEAglgEyhS8KXl/7MshIl+Inw1bpJwb00NAg5eA3ATg4gApwlOS/pzM5zGYzp4a5AEl3qKUg1IaNiPu/iu1fwsgOJkMfQyhHA2uEfZanr3LXlFamRiCWBIC7AAC7AAEwHxbFLjfBbV80umoVPvwZBOeOk68oFQoKYAAAAASUVORK5CYII=`,cow_feed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABaUlEQVRIie1VO46DMBAdom18idRQEMk3oKfbK1ClQZyFxhXHoPcNkOKCPpdw6S3Qc8aOnZBNmpV2GpBt3m8YIPqvT9U6Sfeb5w57gM/fpSMiUkPpXiV6SqCNpb4VRETU1CIgfptgnaRrakHjbImI/FUNm6M9JFmCdZJOGxuswQlKG/uUJEmwTtKNs/WR9O3NhTbbOt+Ho90EyH2cLcEF1F+uNzcg5b2Jq8g5SJFyIO6kbwVV3ZLEunOA7Hn+2livHHsgOx3zou4IkGVTCw+ArHlETS28AP6WpUi+uHK+Mc6WTsctayjOzQRcgIhXwcEBmmsaokKDc2d5PzxB3EQA8BjiOYjJ4RI4VbcUBw6ujfU2+1YEvQA4sscV5y9XCmbDO1BD6WA7pQjKeTzxmUf3QQ/imF5Z4875Od8M/hal1OaaytdTLoLpU0PpUtOaUl91S/HoQ5ebbO8kfnidpMMPJ/dxU0OZ3fu79QOnNyLrGvOANgAAAABJRU5ErkJggg==`,hugging_machine_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgUlEQVRYhe2W0QrAIAhFbexT/Sz/tb2skKYPw+kGuwd6CemeJEgiAP5Oc/Z7VZ4l0Jk5JV1ELpmrwAw/ix9jOXfmblaxLlLdaJE970KmQCUQgAAEIAABCLz+HWuBzswkIpQ5kIyMkb17hVWYb8AYLqLL7eqnHqE1CXtT810yzwYxDkKWK8nSGBQGAAAAAElFTkSuQmCC`,milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVRIie2UwRGAMAgEL45F2IIV0IB2bQNUoCXYBf70YYBkIuND+cLckoMABEcqqJEWDQ8gzGwWEJGp0zmA5gi3qC/pQiTPSMnv71WLBNC7PwWuV2S1NIB4wgrophdukTrkeQsGAMAylmwxMK26ne6aCg9mPtFu5sNn8AM+AHDX1FvDJoD1gUoj/Ni557qGUVn/TByjTiCJ3SiEogAAAABJRU5ErkJggg==`,milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIicWUwREDIQhFv5ktwhZSAQ0kHVimJaQBKkhKsAty2s0hKrCGyT8q8x8CAgQrGWJkxUMDCDNPA4ho6nNRAMsKL9FmyUKkz0hJz++vJRJgnP1h8HlF12sEEM14APryCy/RsMn3VzAAAB5XyxQDt+e4nOqYCufpfaI2vQ/vgQtQqaEqGZ8GVGoonFE4uyAmwG6+ywMxAUqn0b2z04AVqWOqjeESYPaBrApfduq69jCc8b/RG+oJMonZquS9AAAAAElFTkSuQmCC`,milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVRIicWUwRECMQhFfxwryCktWAENaNc2QAVaQk5pAS9GHU0CbDYjp50J8x98WIDFEQw5MqOhAYSZhwlENNQ5KIDpWG7R0VKFSJsRgl7fXy0SoF/9S+DdRVOrBxBNuAP60VtuUXfIl/tiAABcT5YtBs63vp3qmgqn4XugPHx3zaBQRlEENwMKZUROiJxcEBOgitcOPBDTqaiC8TmPz28tXB18A3cDtKq1dqBapK3hFGD0A1lj+bFTz7WH4czfJx6xwUOYVCI2qwAAAABJRU5ErkJggg==`,rainbow_milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVRIie2UQQrCMBBFX0WE4gH0AtKFB8i+p/AC0ivUhW7cuBM8hVfJEfQEHqBQXI2LgCg2k5ZYCuKHbDKT/yeTn4GekbTIkRiOkIBYa9UEY4zKMwoIRKP3FrW6gVQ5pRSUUoDc3dqGdDsIxEATEECkyv0Z7haC0saxj1yOy3B5QMoFgJpMaHiPwVwk56B53rFyVB98vha9HgpCK0YVABA7V+OJuanxQW36F/gRgaBNQzaMEuj6m5vgHRXPYbeeAbCZLgA4cHL7uwkA6f4KQE3WyKfNgq7lt5sr38YDiBMyusgc/RoAAAAASUVORK5CYII=`,rainbow_milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVRIicWUsY0CMRBFHwidhCiAbeBEQAHOqWEDGjhtC1zAJZeQIVEFwTbiEqCCLQAJXTQEq0WH8M7YGMSXnNiz/43HswMv1iAiRnI8LIB479UA55zqMzQA2Xp5iaJuIKcFK6lYSQXy1661xU0A5EgDCCByWvRHtLcQlDKO+sxlO7fTA8YcADgzEwLv8bYukr3ZPLdatlZ3fn0l+v+RKS0ZFQAgvlDPB65Rz9/apneqXUNtZPwwoHYNpS8ofZEEiQJ05p1SIFGAMvDQob2HATky29RqwyxA6t8cUu+ouA67rykA35NPADbs2v2fDwDGv0cAzsyCftosSE0/bq48WxfOzkS6fPRuuQAAAABJRU5ErkJggg==`,rainbow_milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVRIicWUOwrCQBCGP0UEsUtjLiAWHmB7T+EFxCtooY2NneApvMoeQU+QKpUgVmMRFR/JzK5R/CEQdjf/N4/NwI/VCDgjdTwsgHjv1QPOOdWnaQBq6+clCspAjiNmMmUmU5Bz8SwsbgSgjjSAACLHUfWJIgtBKWOrylw2Qzs8oMMegBMDoaQff7tFsjMvz7PGhdWbX1WJHj8ypQWjAgDEp+p+w2XqflQPcpeRG4YfA3KXkfiUxKdRkCDAzfyWQQzE7AFwN0yu/Xh8txSVwSvwa4CyaEMzMEtkXcNagNi/uUyVo+I+7CY9AObdPgBrtsX6sg1AZ3UA4MSg1E+bBbHhh82Vb+sCloZVyeeaHwgAAAAASUVORK5CYII=`,chocolate_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVRIiWNgoDFgJELNf0rMIGTB/5MnT+JVYG5ujtccJgIWUAxoHkQsxLhiS7wGVnGfhTcI6h3QIPrPwIDb9TCA5AusZuGy4D8hg3FYhGEezYMIZyRP/XGdRKOwBwbeVLR9JTGpmIHBMxx3SiaYTP+flMArz2j+Aq88zeNg1IIRYAHBZEooGVJkAb4MRLEF2RyaJBm0HYc4weKaBEBcuUJtAAAZkx6s4XKlkgAAAABJRU5ErkJggg==`,weed_yellow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJVJREFUSIljYBgFAw0YiVX44aHBfxhbQP4C0fqYSHHNyTM/SFFOugXmJhwkW4ABPjw0+A/D6HLSSboYYoQAVh9gCwpshuNzDF4LsAXF03mX4RErnaT7H2YhOfECB+iuRjaYgYE4H5BkCTlxQJIl6D6guiU0MxzZElL1EMxouAylqm+Q44BUw4kutJANRc4To2AU0B4AAKGOTyVh8wmJAAAAAElFTkSuQmCC`,weed_orange_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKRJREFUSIljYBgFAw0YiVX4YZ3BfxhbIOgC0fqYSHHNyf8/SFFOugXmjBwkW0ASkE7S/U9YFSpgocRwYuIFpwXomp/Ou8wIswTZspP/f+ANOrxxgC1SpZN0/z+dd5nx6bzLjAwMhOMFbxDBNMMMZWBgYIDRDAykJVe8ADloyIlooi2hmeHIlpCqh2BGw2UoVX2DnjxJMZzoVIBsKHJKGgWjgPYAAKhMQnagnSlUAAAAAElFTkSuQmCC`,weed_pink_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJNJREFUSIljYBgFAw0YiVV4w+DDfxhb44IA0fqYSHHNw1oLUpQzMDDQwQdYDYJhdDnpJF0MMUIAaxBhCwpshuNzDF4L5JtPYIg9nXcZa7CQEy9wgO5qZL50ku5/YnxAkiUwNjlxQZQl0km6/6luOLIlNDMc2RJS9RDMybgMpapv0COXFMOJzvLIhuLKE6NgFNAGAACdX07JsB31AgAAAABJRU5ErkJggg==`,inventory_box_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAUEACMeuf/UMAuXBf8v9/GTZLpu0Ues5mGzgGTD8VmCbgHZhuOyBNkCig3HZgnMAlIjlFjAyAJj/TsUQlWTmezWQGiqmorNolELRi0YtWAYWEDzwo5G5tIRAAC2nxYih/81pwAAAABJRU5ErkJggg==`,scarecrow_animated_default=``+new URL(`scarecrow-animated-Bwzq1lj5.gif`,import.meta.url).href,tumbleweed_default=``+new URL(`tumbleweed-bTBlbTRd.gif`,import.meta.url).href,axe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMhJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzXLt6lYGBgYFh1aoVOC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAiEhUWgxAvJFty994Cxob6WGKUolpDkg7v3HjCuWrWCYdWqFQy3r1/HJs8wL0sdxRKSIpkBNUn+P3/5IoOhrj6DqqYmQ3tHB8O8LHWGV6/fkmokfgAN9//zstT/d4SK/GdgYPiPLS4oARiGU9MCFMOpZeio4aOGjxo+ajgtDYdbQk3DAf7opSv4aVYzAAAAAElFTkSuQmCC`,axe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMBJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bl+u02b49O4VAwMDA4P1FIb/uCwhyQJlJYX/MINhhhMCOL2Gz3BswHrKa6xBxUSsBYTA0RxRlHgh2YK79x4w6jZdJUYpiiUk+eDuvQeM1lNeM1hPec1w5M4nbPIM87LUMSwhCygrKfxXVlL4vyZL/f+LPtP/DAwM/+dlqf/vCBX5TxULkC1CNxxbXFACMAynpgW0CZZRw0cNHzV81HAaGg63hJqGAwAUOabJn4ZdhgAAAABJRU5ErkJggg==`,axe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzfPjwgYGBgYFhQn8vTktYSDUcZjDMcEKAaB8gG44N4PIFE7EWEAIFhcUo8UKyBXfvPWBsqK8lRimKJWRHsqGuPoO9iwuKXG5uLsO8LHWGpGk34WaTFMkMqEny//nLF+EWwQx/9fotqUbiB1Af/Z+Xpf6/I1TkPwMDw39scUEJwDCcmhagGE4tQ0cNHzV81PBRw2lpONwSahoOALJMnzT9kEEcAAAAAElFTkSuQmCC`,axe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgYvn7+Q4eWnTwwMDAwMBfm5OC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAhMmDgZJV5ItuDuvQeMkYnxxChFsYQkH9y994CxID+XoSA/l+HWtWvY5BnmZaljWEIWUFZS+K+spPC/t7Pz/+bNm/8zMDD8n5el/r8jVOQ/VSxAtgjdcGxxQQnAMJyaFtAmWEYNHzV81PBRw2loONwSahoOADMdpw7laSIwAAAAAElFTkSuQmCC`,axe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bt9YF8LA8vEYAwMDA4NKIsN/XJaQZIGyksJ/uMFQwwkBnF7DazgWoJL4DGtQMRFrASFwZ74USryQbMHdew8YNYLWEKMUxRKSfHD33gNGlcRnDCqJzxhuXMIMqrv3HjDMy1LHsIQsoKyk8F9ZSeH/9ckM//8ftPrPwMDwf16W+v+OUJH/VLEA2SJ0w7HFBSUAw3BqWkCbYBk1fNTwUcNHDaeh4XBLqGk4AGtcorcNDPQ+AAAAAElFTkSuQmCC`,hoe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVRIic2UwQ3DIAxFPx2ALNSJOPRMJmjOnal7pReIHGMIGFfKl5CsyP/9YBDAjbWnxeuTHhNwl+s1RoQQ8vfpAArHGiMAYPFebB4NKP6cStqFdkSiFu+LkJkA9942MYRqNMChcluo0uj2bNCoeRZpZw5Q3qLv6wgB2Kgo/FQMwvH8FP4jkBpGAlrwqnoDVPDeRjW8p3kKfmWYhrdMJvCa0QwumU3hHGAOp5C/wAH2FlnDuS6f4VvqB7TESLgVFsd2AAAAAElFTkSuQmCC`,hoe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVRIic2Uuw3DMAxETxnAdQYwkAncaaIUKTKIi8yRMdJlEW/hNJJBUx9LJAP4AAGEwXtnUYKAE2sNi9c7XRRwF+tlnvC+3+J3dQCFY5knAIAfh2xzb0Dy51S5XUhHlJUfhyREE+Cuz282hKo3wKFwW6jC6NZokKh6FmFnDhDeos9jCwHYqCh8V3TC4V+Jfwukhp6AGryo1gARvLVRDG9pVsGPDGp4zWQCLxnN4DmzKZwDzOEU8hc4wN4iazjX4TN8Sv0AN2RJwOjZLUAAAAAASUVORK5CYII=`,hoe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtUlEQVRIic2Uyw3EIAxEhy3DtaQl9k4bcUvpK3uByDGfgGGljIRkRZ43wSCAF+uMS9c3fSbgLtXMjBBC+j4dIOFgZgAAERWbRwOyP5cq7cI6oqKIKAuZCXDe+2KI1GiAQ+W2SMXRnclgUfMs4s4cYLxFx/cKAdSoJPxWDMKx7Zn/CpSGkYAWvKreABO8t9EM72megj8ZpuEt0xJ4zbgMXjIvhWvAcriE/AUOqLdoNVzr8Rl+pX42rEn4TvbkRQAAAABJRU5ErkJggg==`,hoe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIic2U/QnEIAzFnzdIJukKrnLDFJwkK3Sv3j9aUr+qMQd9IISS93s1isCLdcaV1zd9FuAu1cyMEEL6vhwg4WBmAAARVZtnA4o/l6rtQjuiqoioCFkJcN77aojUbIBD47ZIxdGdyaBR9yzizhygvEXH9woBslFJ+K2YhGPbC/8VKA0zAT14U6MBKvhooxo+0rwEfzIsw3smE3jLaAavmU3hOcAcLiF/gQPZW2QNz/X4DL9SP/ScS3hB0In3AAAAAElFTkSuQmCC`,hoe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVRIic2UUQrDIBBE35Ycpl89QCnkRj1Me6JCyRV6HPvRROKqia4WMiCIum+cTRAOLDcPPQ90aoDLMnevK5+nXw8kesEC97Bxipi1CbJwIJnC2qKkzpe4VbUtWieARAoIW1WbQMj8LcEtfqbOuxi0+S1aEgC4992bAMgMjOAAgxGuJTJO3jDYsMBvj/LaUgMTvPSgGV5yuAm+V9AM3yrqAs8VdoOnirvCNaA7fA35CxzUW9QbrrX7DB9SX0XaUBQX3euqAAAAAElFTkSuQmCC`,scythe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS+2V2w3DIAxFnb06S9QF6DBlgSqz9C/qTES2SoQcbjCPfFQq3+QcfGU7E118pov59BdwwoEIJ9EbUbjPM72WhUVZVo8geO+lRz7rCiWtgvB+EN2eRCVJi0DgfFjAJ0qcc4eoagUaHr+XuHJR1QgQXDoJVWEVnMHjMhCJjskisMBhFSWBFQ6rOBPUwvcq0piQoAW+V5FOdU7QAz9sfy0YCtdTNxyeFXzHv9Rd5h9hCuK9DteumaguDnspesDvCzbc3VkZpaP6uQAAAABJRU5ErkJgggAA`,scythe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMBhriPw/e+MNzpCgKIhAhrd6ijNUb3/JgMsSsi0AGb41TRGcRi48/obTEnIt+H8kj4Ehf5cIAyFLyLEAbDgI2ExiAMUB3BLvWfcxgopUC1AMZ2CAJHNYcGELKlIswGo4sgUgNroviLUAp+GwkgDmC3IsIGg4Pl8Q8gFRhuPzBT4LSDIc2RfIwYTLApINR/YFcq7GZgHZhmMr+tEtoKrhIAuRLaC64VgtAGV/NIspqvRQfAA1iVDSJclCqhpGTCST5DpiFNPcBwAgan0Z4Vp7jQAAAABJRU5ErkJgggAA`,scythe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2klEQVRIS2NkoDFgpLH5DKMWMORlRP2fNGMZzpCgKIhAhqsqyzHcvvuIAZclZFsAMtzY1AqcRj69e4LTEnIt+H8kj4Fh1a8oBkKWkGMB2HAQsJnEAIoDuCVnTx/DCCpSLUAxnIEBksxhwYUtqEixAKvhyBaA2Oi+INYCnIbDSgKYL8ixgKDh+HxByAdEGY7PF/gsIMlwZF8gBxMuC0g2HNkXyLkamwVkG46t6Ee3gKqGgyxEtoDqhmO1AJT90SymqNJD8QHUJEJJlyQLqWoYMZFMkuuIUUxzHwAAb2p9GTK1pfkAAAAASUVORK5CYIIA`,scythe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVRIS+2VuxHDIBBEV305oAyqcKQyiDwugjIIHFKJm5DnZOM5YX6HIDORAs172uVACyavZTIffwG01pu1NtvEqYoIrpSCcw45SbeA4Ou67jPivc9KegXb4wrcnxo1SY9gh9O63EB78JUYY36qkgoOcOA95qGuVFUSQRLOBfQcp2gVZOHhJggpegRVeClFLUETvJSiJBDBeQpeU04ghvMU/FSnBN3w1NUfC4bCScgFw+FJAR3/SHzqp3dI8CHVRlckHApr2WTR17W8PD3BC4S6fRnQ192VAAAAAElFTkSuQmCC`,scythe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMDQW2/2v7z2EMyQoCiKQ4YZa/Aznr31kwGUJ2RaADC9MVAGnkQMnX+O0hFwL/h/JY2DYy2rHQMgSciwAGw4CNpMYQHEAt6R//h2MoCLVAhTDGRggyRwWXNiCihQLsBqObAGIje4LYi3AaTisJID5ghwLCBqOzxeEfECU4fh8gc8CkgxH9gVyMOGygGTDkX2BnKuxWUC24diKfnQLqGo4yEJkC6huOFYLQNkfzWKKKj0UH0BNIpR0SbKQqoYRE8kkuY4YxTT3AQBP8HwZfM9pkQAAAABJRU5ErkJgggAA`,shovel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSInV1cENgzAMBdDfqovQOToT5zBBOXeL7MEcMIp7akWM3Vi2OdRHK37fKAKAk+uS5JDmRgMIAKZSmuZznr/2LYJzeN023Ieh6V0zcak8ASrOt/cGmHHAf8k0lSLi+wsGAk/Q2zwSQMsI1FoPON/eE0DLeABVXGxY8Mermf28xaJlDdDwblkOunHL4RDeGwjjv4ZScG0wDZeGU3EOpON75BQcYJ+KbJwX/3H/R70B5PVOSsiwgM8AAAAASUVORK5CYII=`,shovel_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS7WVoQ7CMBCGbxa9BIXAVZLsIQjhPfBYPBrPexDCQ5Ag5xDYaWzJLbnmVjp69G7Vzfe1/+3vKph4VRb8xtWec+5tF7gqAYEvu+XgnNvzE0hSLEB4DH683rBazEAtGIPjNdSCHBwlqhvEAoyFTk6DUAkQQpIcHPeWDtk3robjZt5nzhc/fanA3/auZx6uHfAvKYaXCAJ8fWoxqiBIwf8VDOAUL5WNt5dHJp1BEi55ZiSCYrgkIhU8J1DDfwlM4GMCM3hKYAqPBeZwLpgE/iXA+isewGTveNHwxy0pnqTAYY85MLZ/AKAsiRkhT8wtAAAAAElFTkSuQmCC`,shovel_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVRIS2NkoDFgpIb5eRlR/5HNmTRjGdxciiyAGWxsaoXizrOnjzHALCHbApDh6AZ/eveEgU9IhoFiC3AZDvIGxRYQMhxkCUU+QLcAFCwwl8MigiILQIbALCFkOEgtuZH8Py8jikFVWQ4c5sgA2fXkWvB/Z6EG2Myt340YkFMSuuHkWAA33L3/Biio4BZgM5xUC1AMhwUvLLMh517kICM2DrAaTkwxQ4wFZBtOTBBRZDghCyg2HJ8FVDEclwVUMxybBVQ1HN0CqhuObAFNDMewAJT9KSgAseY75IwGqriJyXjEZGC4GqobiG47AJ1ZiBlTJ5acAAAAAElFTkSuQmCC`,shovel_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS7WVwQ3DIAxFnW167IEBuHUF1qjEGEgdoVdW6A4M0A06BpUjGTmUFIIdzug9+M4nC5y8Fg2+cy5zToyxcEUCAnvvN+cMIQBJpgUIr8EpJTDGgFiwB8driAU9OEpEN6gFGAudnAYhEiCEJD047p0dcnbOgbV2zZwvfvpZQX7dLyvz+bkC/5Jq+IygwG+PN0ZVBC34UcEGTvFS2Xh7eWSjM2jCR56ZEcE0fCQiEbwnEMP/CVTgewI1eEugCq8F6nAuOAX+I8D6Cx7AZu940fDHPVK8kQKXPerA2v4F7oGIGVytZc4AAAAASUVORK5CYIIA`,shovel_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7ElEQVRIS7WVsQ3CMBBFLyxABRNQIDoquoiOORghygAoA6CMwBx0iAo2oGADhnB0kc66GAcfvotr6z37X75TwMSrsOA3dek453S+e65KQODquBqcs728gSTZAoSH4NvzA/vdAtSCMTheQy1IwVGiukEowFjo5DQIlQAhJEnBcW/ukF1Tl7DdzPvM+eKnzxW4a7XumY/ZEviXFMJzBB5+aF8YlRfE4P8KBnCKl8rG28sjk84gCpc8MxJBNlwSkQqeEqjhvwQm8DGBGTwmMIWHAnM4F0wC/xJg/RUPYLR3vGj445YUT1Jgv8ccGNo7Yi6HGb8waRoAAAAASUVORK5CYIIA`,picker_pole_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwVc0KbKAl6EiiL70LigzRRZ4FfeJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgid6YaJFjLg4A3lq0GdAnXEmqE1GSCgBO5K2LrBF5a9GOIwJ+mabKiehyXCkFlOQTHvahk/MwIBx8Ugcx/HWf0wF806ziXdcBQDUvCVEn8hVPjd76kwLQ3pjlLVp9cD/j4X8rOIZvmrL4ta53iu935v8DjeIlxzIXKYkXyx3NFIrQtrXu7gAAAABJRU5ErkJggg==`,picker_pole_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMVJREFUSInt07ENgzAQBdBPFNFdywJegCYs4EVSpWCYdGm8AFOwwK8YIz0DXJoYEeIQxcYFUr6EZZp3urMN7CD6/II5pOIkQRKtMcEix1QcAAZrUSdAn3AlqU5ESSoAOJG3LpJGNFiLuu/h8cs4Fk5E5+OKKaAkX3C/952cuw7+4KM6COHLfUoHGKpqFW+aBgCKaYmIOpGveGz0fj0pAG2Nmd+i1Qf3M+7/t4JD+KbJi9/Kcqf4fmf+P9AgnnMsU5GceLY8ANzvjrB3K5O7AAAAAElFTkSuQmCC`,picker_pole_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFKyD0ngBpmCBX7ELA1yaGJHEIYqNC0v5EpZp3unONlBA9PEFc0rFSYIkemOCRc6pOADM1qJNgD7hSlKdiJJUAHAib10kjWi2Fu00wePXZamciG7HFVNAST7hfu87uYwj/MFHdRDCX/cpHWBuml286zoAqNYlIupEvuKx0WEYFID2xmxv0e6D+xn3/0fBIfzQ5MVvdV0oXu7M/wcaxHOOZS2SE8+WO1CxjyD9waCMAAAAAElFTkSuQmCC`,picker_pole_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFOyTxgswADUL/IpdGODSxIgkDlFsXFjKl7BM8053toECoo8vmFMqThIk0RsTLHJOxQFgthZtAvQJV5LqRJSkAoATeesiaUSztWinCR6/LkvlRHQ7rpgCSvIJ93vfyWUY4A8+qoMQ/rpP6QBz0+ziXdcBQLUuEVEn8hWPjY7jqAC0N2Z7i3Yf3M+4/z8KDuGHJi9+q+tC8XJn/j/QIJ5zLGuRnHi23AFsB5Igc4ovIAAAAABJRU5ErkJggg==`,picker_pole_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwW8QCoXtF6EiiL70HiBTJGC9lfZJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgic6YaJFjLg4Ao3NoM6BPuJJUL6IkFQC8yFsXWSManUM7DAj4ZZoqL6LLcaUUUJJPeNiHTs59j3DwSR3E8Nd9TgcYm2YVt9YCQDUvCVEv8hVPjertpAC0M2Z5i1Yf3M94+N8KjuGbpix+reud4vud+f9Ao3jJscxFSuLFcgcutJEoVhTynQAAAABJRU5ErkJggg==`,watering_can_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVRIie1UwRGEMAgkV8JVYAOWRjWUZgNWYAvxYzJkDwg697vbGWeMJLuyQIj+mKAEsZrc90igikhfMPNjkVdEfhHTta7G3inwr5C8WILOWROYQQGSASLSH0pmZFnUyQhqYcVnAqkiNxzLSu99G77NGiBsUy1yLGt/vyPiWoTQpFqMKLbLEzAtikQ8hHNgoYmgTVmBkBxFGpjZtSldAw+KXIt0IavyqSwaOcG0Y+zWHDjkH2d0zLMovDKivsfY7MJyU/f2YyxzI5qpfxtDZ/wWThNOcCnuawEeAAAAAElFTkSuQmCC`,applewood_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP9JREFUSIntkzEOgkAQRT+JV1ALiYnG2FsQ72BCZesNPIAdhR0H4CQk3oFQ0BMiicECOAQWZCfLLCAghQW/2iW778+fYYFJk36VNgbENPRC3rt+QtzZGND5cgEA2K5X4lMhTHol4FAJWNHz9UaeZnD9ROuUQIDboAIMlEnyNAPQ0iK52qNxaITJqjMnAz4oDuXALknIwDT04n67Vg5ZtkPD+wbk0MYWhVEMANjvNq3QtvZ4fkADBgBNVB9GMYHF2rIdahWvUJbnB7SW34CSQIaLNPKf0RWqGHBoXfQ+0IpBefBRXM4npUUc3BWqJABQScDhQ8BCdJG/A2BYxZP+Tx/oyoY1054VqwAAAABJRU5ErkJggg==`,coal_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAThJREFUSIntlK9zg0AQhb/WrEecw8cwCE4wmHj+zriaKDyGqSAiLh53vuJiiOjsFQYSYCJqeIqf39t9t3ew67/18ca//RrWVoMAPRwOOOcwxiAiXK/XWd4Wgz6KIowxWGtp2xYRoes6AOI4njVZa9CnaYr3PjxwzgWw9x7n3KzJ59rKFSIiIRqFiwjGmFEBaw36NE0xxuCcoyxLvPfhPkkSRIQ8y0ZdDbUUUchdAXp9LAq+LxfyLKNumvDudruNuK86CNVrLHEccywKRIS6acizjJ/7PcCttZs66IejeCwK6qYBCLF8nc/A30IDkw5eGkRRRFmWYSSTJKGqqvDBEGyt5XQ6TZiLHcB08XQddD88y3/JYGSiMPiNSMdWs5+rfo0BDI4H3Ww6shrds2NircGs2ZucXbs26AE1fqYGir1jrgAAAABJRU5ErkJggg==`,stone_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVRIidWVwRnDIAhGSb9ukyUYwxFcIqcs4Tgu4Tz2In6EIGjaS/+zvgeGKMC/Z1tcX1cZnuACTCndFsQYTdZIUEdAnpwzIKIp0gR1BgwAHc7TRJ371uC8slmw5JCEd3CpXMJGUlnAvu9wHEdnUwe3Y+HgmaoJLvPyNiEiIGIXrcBdAQ9JpMiCmwLtzGU3I/h5ngBt1Kc7kCKCl1LMtY8EPJ5EFXgj6Z27K1iN1QX9B1uMsYYQTBB93NnqueC2UZt7C0xdyDXyLjJhGkALvyrkbVrbDA/jSThcE3wlkfCR4JFEg1sCAP39tbL6vv8mH84SiYSmpt3xAAAAAElFTkSuQmCC`,salt_rock_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS+2VMQ6DMAxFzUm6s1XiCsz0OpyA65SZKyCxsfckqRzJlXE+sauKrVkq1OQ/5zmBhi4ezcX59Ae4hr9RlExaaG1oEhGltK6H/Kbr+Nld707g8Oc00dD3hY4IxAPkyudlOQD4mQdDPUgNcNAiEAvLniq6zgCFc121dfUzAFUdhaAd5KaK40g4z3mMIzxVECBHMhp+b1u6DUMIABt7dl25AA7f9j3/IojdAWyuvQPScA6VwRCkSQOKcFmsVUnVaFcIEgJwmK5alCCI1eQCkA4OPoPUALyuaLL2bCtGEA/wgdRca5CGRE6RrE2veXY/JlpV9B7oUPuB8YDwvea9rr1Q9/83lhuWGQG9q4IAAAAASUVORK5CYIIA`,bronze_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYlJREFUSIntlDFPwkAYhh8bE2JhgM2pTCasEP0dMjKSsNCJRB0c3WAAYzccSBgZ+R+akjgRnCAOTopJIXFpHeAu17uCja68C+1x97xv7/vu4KCD/qujlPOivzJ+M4gAOt0e+VwWgGWwom6NABiGNW5vrvfy9hlEnW4vBhPPAN6iYixoPzwazF0GUafb4+ttJgdajh+bMLYbAFTXg1iA06unGNfal7zl+BRLZYqlsgEXYKG6NWIY1gyYbhC931/IRMOwJkEisfhV/xMSdVKlbpGEC6mJ9MXLYEU+l5Umak3UWhzrji8fJwD4+UsJrq4HeFOzqF8AzuariqXNWHU9oK3MiRmM7QbYMJ9OIJhJiEdFFlkvrnge2w2WwcrY9JjBfDoB4h2jF1TtGnXbxPnQu0hv06jf7xuFFQn15Hev5wAUMqEc089CUptKmP6uwr1FhUImpJAJaTk+n9+WcVaSvgC210PTdWPJ1MUiuXw/ewYwtmeXgTRquq4BSoJvwYm8VJddCqW9lQ8y9QNiZaVNTKTieAAAAABJRU5ErkJggg==`,bronze_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DKMWEAzh0SD6jxZGGCFCahChGFjnwsXgaakJtmP78esMTXu+gZgoZhKyAKeBuGLXsvksiiXYLIAbiuxCgskFSQGyJegW/CfXUGQHIAcXsgVgw0EAFq6kuBoWD5rS/AwKclIMMF+gWHC81hhs5oNHz8CKCAGQS0EGwgCyHrwW4LIEn4HojsFqAXr4k2IgMXEAUoMSyaQEFTQPINsDDn6syRTmE1wWIKUSDAPRgwpXRkPxCSkGEmsBOLgIlTOEUhmuICJGH9FqCJVFRBuES+HQtwAAGJ1YGe/MnNkAAAAASUVORK5CYIIA`,iron_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZZJREFUSIntlLFKA0EQhr+onHfYHCG6RXIKFj5AykCeSgufQCyUFNZWwSqQlwikkqusUgjxkmKjSBpJDISz2mF3cwlJJYJ/d8fONzP/zg7867dV2vF8vitz2wQ5QLfTBqDXTwFoNurOocFwwvXVpcM92Ab81H4kCgOB2+DZfAFApqeFgHUd5AAPrRvKFUWmp1ycnThwAzaJB8MJejxCVWtOF0Ud5N1Om8FwQrkSA3C0/02vn3J+eixwGwwI/OLsxIHtrYMnKpbWX9/eaTbqlCuK2XzB54cuhBfJTpA/tR8FHoUBnx9agk3VURhQrSVikR6PxDa/evHJrzwKA5kUVa3JP1u25z7cnibnDowtxu+v5eEKfDZfkOnpWrj/vWcHRmHAc/qyMt8+fJMGw4ncjZPABDYbdcajrLB6I7/6Xj8VsN/N2oeWqJhMT8U2uwgDNlLVmiT1k5gOStdXl1LF1/KwEK7HI2dqjCXmXKJiJwZWX7Iss9u7+0Jb7Or8NZGomOf0BYBWqwVQ2rTsttmcm7Trpv7XX9UPRxDlZCE0bRgAAAAASUVORK5CYII=`,iron_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVRIiWNgGAWjYNADRgr1/ydkHqkWoBiYmxHNYGxqxcDAwMBw9vQxhskzlmKYScgCnAbiAgnJ2SjmYrMAbigxBhKyBN2C/+QaigyQg4sJ3XBVZXmyDf707inD2dPHUBzIgqwAOcKI8cWnd08Zbt99iKLfWEgaRQ0LuiaYQmyWEGMgOkCxANlQY1MrsgyEmQMDeCOZ2KBCilRkwIjhAwYGBsbJM5b+z2VgwGswPgOJEmTA4hNiDSRFEcFyZhQMDQAAaMBZ6FnVQEEAAAAASUVORK5CYII=`,silver_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQhJREFUSIntlD1uhDAQhb9EuUOK5BBbeGsoOARHoF8XOUIKp+cCvgWFqTNFbkQajIgZbHaVkichIWZ4PzOW4cSJE0cwzc9DeCqR930PQNd1R/o3eD7aKCLwQJqco2kmTUVimiMc+QSpAIAxBhGhbVs+3RcUEhVHpImsv5VE9gSW5UbH6/cQAhdzBaCpq6zBbAJjzK7zSD6EMZviJUeeEoYQALiYa9F5hHYCJhHBObcp7I1lCCMAH/a24UwFpjnuQhJ/buoK5xzWWtXpEEZVQN2BRg5grcV7v9RiPULbhTqidYpUBMB7z+vb+5+epq7iociOKCuyxo98LzsBff45Abj/Br37IvwX/AKZJHqzxczScgAAAABJRU5ErkJggg==`,silver_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVRIie2Uyw3DIBBEJ1HOThFTgSN6oUY3E1ewRZgGnEuIWAPmk0si8SQuCN7sAgIYDH6ey5f795KvNUAJl2UBSQCAiMBaGzlLAVlhDmOM8qYCPtIaYSnkGLD3SkPC47oe5Y957hbfpwkiogoMA0ASm3MQkSahH5tzUfe31EaSUSVe+FxXta50nCoglJLsEnqP5/SSU13khO9LDUm+IhWSCzgTVk0i0UmtsGVR8Z8Z/AcvcvFbDaU3IKgAAAAASUVORK5CYII=`,gold_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAXZJREFUSIntlC1vwkAYx38s+wALroIvQBAVbfAkJJVIbB0OAQLRTE1MbAIz2+BQaBIS0hAMLwJBENgKXFNXycS45ijXg5GphX/SNL3r83+5J/fAAw/8CxxPz114uka8n7k0m827hQp55MnWIYwMprsqALXygumuSqvVulZ7BlWCY7J1LhZLxQO18oL9zOW0f1OirIuUPIwMSsWDsiiMDEbLCpv1iuFwqOLRJmAwb5y9sygVD2zWK0zLZj9zQZNE1+RcEXlttKxoRWSBY7J1GMwbaUNVhIN5gyAIMC0bgLYz4fUryTX4fC2BSkSg7Uzoj+uYFqIXeoEwMqiVF7kiQRAAYFo2bWdykzG5+8f3j8/Umfv2cvGzfCwy+uM6AL1uJ8upbnJ/XMf3YnwvxrRsTMvG92I265XSuS6NLFA4OUgLhDPx7XsxYWSke2Jfh2yCQq/bSYuzQvBzB4SInDgvRe4skvuhcioumoDq/HUC8PvJedPw+3N8A0QSnZsj1HFJAAAAAElFTkSuQmCC`,gold_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA00lEQVRIie2UKxLDIBRFL52YYLqRLiAKURNkVVeQZbGCKmRjKqKyADZSE+SrIgMpBYaadiZnBsW8c3n8gJ2dn4d9WU8536FCuA6tBKyRsEZCKxELzHYQFGgl0Hc8WdCe7oE3FrBKS4S5kG0A1Up9xnnBZZgAgDVb+XNpq8W3B+HIbbBAP2CdGOelqAsndFzPHEBY1yBC3/FoSIlwSxDgS/uOVwmdx5E85NKt8g7Vh711AIBdhil7k1LCUkgrQdZIskaSViJ4wYi82E+kUrP/zM5/8ALJtmHuganBugAAAABJRU5ErkJggg==`,rainbow_cow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNUlEQVRoge2YPW7CMBTH/w+hIgTXQB1yCy6R3oA5GwzpwsIWqVtvUE7QjVtk4B4smV6HxE7i70BIK9U/yRLE9vuwn99zAkQikUgkEolEIr8FTaCDR9BplfGoA6rgUIRe33zyjKGhDvSE7XmnDTjhoxG98Au7bQEAh9VGnx8mg2ZeLY0u3L/aZoGN8U5yv0qfA1bDgwywCS0S0PoimwYt6nYklxMEAHOXnrstBACuWmO6j4sElJVgbsUTURuOtND6kHPtjOHM2nbAafyg1edKriIXSa+LHEfQ1dfF5MB4xk+A6sAkxnORyBXuhQ8AcNXr8x3k7hkYx3g19Ymz4JB30DqbOe8vXnXCAYalaKhx6+JEn/rDgHrwCNYsNMRwwGL8BGiHmItksPGhUFaOLjO0Ev9ZXIVsMvrh1/ktMpCliAG6A0RZyc8KIaAOIyFfXCP4fDaPTf3FbA6A+bYFrS8iEz2XnEEZAVkpDac0BQDvfxMzAKDV98N2ma7WPXLuFSXbqptoxhrrVB1CtPC9OASx5119n1dzv6eaqs4McW6GNmy08KGsvC/1cdVvHkwh4gqbLt4sxOdzLSwrx7vI5QxKSa601KHoFTR9QVnIiFCgvnzseWOZYeHY2rDEFZS+SvmmsOk4NSi5MBcJc5GItzHZOs/k2IFNzlviyktcQ8dbCdkBaoy39Y0BAeCvxuY32AuXyv+5SjzjIqbydseGmmaYvoKN8XXtKTpCd2CKT5BT6IhEIpGR+QG4Bej6ikQYYQAAAABJRU5ErkJggg==`,cow_variation_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8ElEQVRoge1YS3bDMAiEvN7RN0BnUm7gU9JFioMIWNhR0uZVs2j1oTADSLYLMDExMTExMTHxv8Hm90fhAgBARB9JHgDg6w0xbHJwpA9UBiMcZ6Hj9uz2bPBoBRpnRBQaXq/Xrh/5+1prs1lKER/dBGUFNAFHIOOLiHqJ6AoYTlz8WWJShVJKs7cjArcf4J8BHkHcBhdCzPfuQMRtrscyVyIezukliDuEvBAWX6MrCdAK2B5orwjkAREB8ZZUObh2vQcRsLXSO8gTUUNQx9RjaZ896EPcu3OHwhLTV+mRJEZn4DDsXX4Guo2yGCbgTPAR2BUgWa21Pp3h3kPpbAIeBAhZTbiUAqUUV5AVNqKVjiD1KlFrbTLkjcVGz+1+VIFoXQ5z9BCLFlk/CS2kEroitvxWsH1NMMSA19WNhcvS4+qCLYiIiaiZezbWXtbsGG7XNfO6Mq9rdu4i3UIevGrs2TdZCrIe2eKyuN8sp65Re4B1y+hz4LVRRFALsvM97ArIvpP0KtGrjun1cM3l6KxthxgRpXyykXKaCvzje5sbws7e8VtIB/EyckaQVJSZ7+P+LRS2QVeA2ZC17Ed5FDOMkeDXIHMLNQGPBkjCE5XyPexl7reQ/rdK9gvpGZyJ4Qr4q2Q9ZCvwekXviTExMTExGN/dZHBpuZub8gAAAABJRU5ErkJggg==`,cow_variation_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVRoge2YUZLDIAiGYad3zA3MmeQGOSX7sINFI0Ia2+6D30w7jbHwo0BsARaLxWKxWCwWi2+BH/DBE3yaNu4G0BqOIn6976MzB68GUBlLKZkTicg3xmP96MsLB8AAY8EtXgDaVs65urfve9SOG8Bl4RHHKaXqfrsTeuXbuXpaeTPgV4Rrcs6nNBBBWjQilmv9Wa5VECe9P+8Uv+87MHPZwdbmKMcD+Q8A/QBuiwd45rHO53fQBjBFfFuULSmlssJtyjBzdc/T81CfzZ4mgiKr6YkXRsKYObxzsgMMRkFHBWnenTYaq4i/TnThzACICIgIELGs6Mhoznl43+rnnk0PqYFy5tBOJE9HD6WeE2mhHhGBni1dxAiqC8kOAJwL7pW66Akrjo2eL93JeohZg5dbqRVQb+WICFJK1VOaj6P7fdw2T+ucAACuBwHwFC5CnetuAF/rQtaqD+Z2n1PTArAKLVIvfBxVQO31iGEKWUU8IiIYESuBuG0nwe2YlUaPdqCFj6Pk5IxzEsDzvCMCtQ/tVxjVQHcH5CxCRKfC0vQCGu2Abpf60BboQpd++jIzc0qJ4a9wykuNlbkXX5UP/mv0kfmXaI2DiG/G7tD10RlzMVMIoGw5GmN3mObDLWIh+hPvDq/46AbwX8X2iO7AJ/6C/ISPxWKxmMwve31ULTQV7Y8AAAAASUVORK5CYII=`,cow_variation_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVRoge2Ya46EIAyAy8Q7eoMeihtwyu6PEQdqS4FBd5PtlzhxtPaBfagAjuM4juM4jvNbhAds0AKbqo5vA+CKe8l2reuDIRNGA6iUIaIqGGM0lbWu79QRNtPKG+oxOEKPLkQ0g7DuwLTjLcOj+hRd4fxRoBUrzo3P6jz0XPzVUqhyvnRi1IEsH2Os9iUZ65zESzimOr8SIgIiEm20znF4AEvS5knKFDJ7Og9OWx1rERARQtHBS/nWOYkcAIEyNO66Iy29IzZ750DFXXUxg1TETSzntdXrGUozDAfw15hKodVYzUAbYgDXAEKM8bZWmtOIDzRKSZQP+27q3ODo/THG3Im+crAkO8jbJHc8O2r9lxiugVaRSs7n/cu0VVZd4pAV59R2GLBeHCpWpxgPZiS4F3zS5pI+0sr1MhNk2Pdz68VMIUppOhCe++U+dzLsO1BK58bPgVKf0kEqu0SrkL55MZGK+eLcx+ZQcyFEJEQkeNfFuRXHTtnBzbShyKv0DLIA+mP2qs8ylY3W4OL8n0eJJ55AZ2yIRSzIrPi6douN3jvwxCfIJ2w4juMs5gdcWvZP4r+1igAAAABJRU5ErkJggg==`,cow_variation_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVRoge1YW3aEMAiFnu5xdoBrijtwlfRjJEWEhHQcpx+559ipJsKFXPIQYGJiYmJiYmJiYuJTwBt88AU+QxuvBmANZyF+e+9jpw9+DTpmfTEzRFfGDhG57xIREJH0ayIbgJAOSS7LkjT1xE6w+Z70aaEnocoyympEYF3XJjHdbm0jYthXd6t/ArAYKKU0urWzaJ0LIU0aEeu9/l/uVRAnvpGEKvmI5LIs9WpBNG3tCbkIrTaNb8+n50xGYVTro/1HYUfAJX81iKhm2EqGmQ9tPS56BLrkvWyWUv6U5ZafkQTKCDAEBd0q4F5x3wGvBgAgT+7dGu9BL+kI++rqQYhGgelAooJf19WVh2fTexcGplEX75BMZDPrKx2ANWjXAWn3st8jiYjuJe1R9vVDXcShjISYJuRJyw6/nqlERqWUOl3ytrm+8PHwuJ7ARFQ3a3sAaRBRup9cILvZbWPetuy9i7SEom2Dl/nUFiPIeqOvG4QcGA6/vf28lZFtE3h1A/CU0UgAAFVO7iwkD0+NUkwWXqG+sh4YrYfPsqi6hV2H8HsCG64F0b19Bkrj2gcY/fdqwKvsKiFErEPtZaQntZOz4KCSmIXCGagbgGmQZ9lDeeSPZUVundwCfgeEeyFjJCrsqz7LIJyDStke/Srx75AZAQDIH/FeQUdOLtwacPpc8XXtLT6yI3DHJ8g7fExMTExcjB/HIw4rhmRWFQAAAABJRU5ErkJggg==`,cow_variation_5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVRoge2YbXLEIAiGcad3zA3ImfQGnpL+2JoiQcWPzewPn5nMtAnKi4BrArDZbDabzWYzjHvYHw34Jfb3bdxrSk4f1DbpH/NiRiMORhn1dRv3AgBAxE+L/9j8P5PjZ4VNB5aagsDWWJlDRKwae+/fTpw+dRqf7BLneQIAQAhBG5ZNZs0AcYdWzvME7z0Q0S0Iy1yIKIO4rUQrAwQAQESXoBG891kAUlia/xJVtu3aRgkRs8llqkdIgojourhg51z2LIRQzVYpAOotFwtyzlJvtJ5xtAAy8bxsRkuohCwd6zOObOLlK6+VHSLe6vwSIEqqpScF4MCwJ3vvl2WhJqxnEXkJLT/YrWj6Fk8e5orIQHsCbwagTZ6uFrzclB+lJQxnoKcXVu9enOJRQlthKURrannPIr51VvrLnGokA3AhBLLswSnAnp0plZEQBhSjau+Oozln8zCXDmQ1kT1Nx3shCU9CW/9rVHugJHrF9lha9YqtWhbmF5oe0dzWUl4ymJ7gqhkIIXxk6yvhjsNU99kY5d7VxM45oBj/a9J4wKrB37b4SkvhyjPzSYESAEAUI1GMBO8azK5e+Ni/DwmqD8VnkWYGxIN0j7/J9XCNk1tph76mgQzAFe7NsMzHVxzmZjBvo9ZXvBlGfKgBfKtYDWsGnviK/fSX8s1ms1nAL4ZTXaf8TqprAAAAAElFTkSuQmCC`,cow_variation_6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVRoge2YWXLDIAxARSd3zA10KN3Ap6QfLVQm2sDU/tGbScYJsjYkMTZAkiRJkiRJkjxFucFG3WBT1XE1gFFxlGbXu784MmU2gJDDiAhEFJKzCOgoXxGH4Mfx1WyLeM5HZV7O+rTTUcd4dsd7xjVlJ0r/UljKuOXMSXn9U19K6fcR0cca48NfrYQqIoay6WHpKUYLWmscqYQqN8ivI415N+MOVCvr3o7M7FjLMC+fpoOvefAALk2ZHeW2QiuhCv6hAQDnqfCU05zoOXBiV4M3XZH/NLxzIIzX4NHTmctH9KoBWAeNJjdDNMte4C2AXv9SfRORaHCX85qeQU4cSS9BoHpH/Sqj3nZdj0OUL++3q1OKyjwLOLM7MNZ1c7w56vwWd2BpCu1Ay7ohK474bVPoCmMwM8GZO0BEZpnM9IYlK9V6pP4BnB4gIqjH0ZXNPEFFZHmmR4eFNbEHQgFIBiJOSk7zeyem0NSjb0XEiojtMbJ/2H9ddvLj2lDkVSJNXEAfrbtey5xs/O5MSPdjY3QX4TF6x9PYig2xiQWZHW/X/sVGdAfueAV5h40kSZLNfAP8suojqxWMSgAAAABJRU5ErkJggg==`,cow_variation_7_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVRoge2YXZKDMAiAYad39AZ4JnODnjL7UixBkJim7j7wzdixJuEvJEQBkiRJkiRJkuSvwBt01Ak6XRmfOqAF98J6o/EY9MGfi4qrukyIqEsOEQERQa21ufh5YDwAAPQ60CjsMDBEyljXNezj8Qja9whoYfy/lBIqsZDjWBY7otscHbj/OBymz4qI54DnIBtU61s8Ijb9rbaXnIO93gyMLs4dNlwaJgOAiI2hkrM2jbUG3JE6mj3pM5pivWgHPo58DzwTiNikz7ZtbpuHTKHQ+Bm7jydr27YhPTwDFYKipoXOTA1pvLzv4bAGrH1+ZuRn49aB2UbzVjhb7tWjxM5MQ9Z1datxRFSJT4mqca+TPN4qeuK5uUblqXC/H4mup9zqpx2vz6fZF5fFshX0w6pK9ZAD0qBovDacDQ3+mw58lEKaK457Uff64rKYW/0DAKCUEr04fBXtzBXnfuDt1cG7UsrXzzIeKv9dwhR6TR8AzNs6iQhwWZpIa4ONtvE1wE707jQe+kVFLlYrbYRTl97dKxFVItLvv/LZ3vfiFepw+rv0zMDZ1jrrs0yj46xwaYaPEv+F7jpwx240osOaJusr2Iyva1/R0TsDd3yCvENHkiTJZH4BOxYPBJ6xfbsAAAAASUVORK5CYII=`,pixel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`,plotStates={"watered-plot":watered_plot_default,"fertilized-plot":fertilized_plot_default,"rainbow-fertilized-plot":rainbow_fertilized_plot_default,"mulched-plot":mulched_plot_default,"rainbow-mulched-plot":rainbow_mulched_plot_default,"shoveled-plot":shoveled_plot_default},smeltedItems={"bronze-ingot":bronze_ingot_default,"iron-ingot":iron_ingot_default,"silver-ingot":silver_ingot_default,"gold-ingot":gold_ingot_default,"axe-bronze":axe_bronze_default,"axe-iron":axe_iron_default,"axe-silver":axe_silver_default,"axe-gold":axe_gold_default,"hoe-bronze":hoe_bronze_default,"hoe-iron":hoe_iron_default,"hoe-silver":hoe_silver_default,"hoe-gold":hoe_gold_default,"scythe-bronze":scythe_bronze_default,"scythe-iron":scythe_iron_default,"scythe-silver":scythe_silver_default,"scythe-gold":scythe_gold_default,"shovel-bronze":shovel_bronze_default,"shovel-iron":shovel_iron_default,"shovel-silver":shovel_silver_default,"shovel-gold":shovel_gold_default,"picker-pole-bronze":picker_pole_bronze_default,"picker-pole-iron":picker_pole_iron_default,"picker-pole-silver":picker_pole_silver_default,"picker-pole-gold":picker_pole_gold_default},craftedItems={"apple-pie":apple_pie_default,"banana-bread":banana_bread_default,"banana-cream-pie":banana_cream_pie_default,"carrot-soup":carrot_soup_default,cheese:cheese_default,"chickn-pot-pie":chickn_pot_pie_default,chocolate:chocolate_default,"chocolate-soy-milk":chocolate_soy_milk_default,compost:compost_default,bread:bread_default,burger:burger_default,butter:butter_default,fertilizer:fertilizer_default,"french-onion-soup":french_onion_soup_default,"fried-tofu":fried_tofu_default,"garlic-bread":garlic_bread_default,"garlic-fries":garlic_fries_default,flour:flour_default,jackolantern:jackolantern_default,"hot-sauce":hot_sauce_default,mulch:mulch_default,"olive-oil":olive_oil_default,"onion-rings":onion_rings_default,popcorn:popcorn_default,"apple-juice":apple_juice_default,"grape-syrup":grape_syrup_default,"pumpkin-pie":pumpkin_pie_default,rainbowCheese:rainbow_cheese_default,"rainbow-mulch":rainbow_mulch_default,salsa:salsa_default,"soy-milk":soy_milk_default,"spicy-apple-jam":spicy_apple_jam_default,"spicy-cheese":spicy_cheese_default,"spicy-pickled-garlic":spicy_pickled_garlic_default,spaghetti:spaghetti_default,"strawberry-jam":strawberry_jam_default,sugar:sugar_default,salt:salt_default,"summer-salad":summer_salad_default,"sun-butter":sun_butter_default,"sweet-potato-fries":sweet_potato_fries_default,"sweet-potato-pie":sweet_potato_pie_default,tofu:tofu_default,"vegetable-oil":vegetable_oil_default,"wood-chips":wood_chips_default,yeast:yeast_default,"basic-lightning-rod":lightning_rod_basic_default,"superior-lightning-rod":lightning_rod_superior_default,"ultimate-lightning-rod":lightning_rod_ultimate_default,...smeltedItems},items={apple:apple_default,"apple-fruit-growing-1":apple_fruit_growing_1_default,"apple-fruit-growing-2":apple_fruit_growing_2_default,"apple-fruit-grown":apple_fruit_grown_default,"apple-tree-dead":apple_tree_dead_default,"apple-tree-growing-1":apple_tree_growing_1_default,"apple-tree-growing-2":apple_tree_growing_2_default,"apple-tree-growing-3":apple_tree_growing_3_default,"apple-tree-growing-4":apple_tree_growing_4_default,"apple-tree-grown":apple_tree_grown_default,"apple-sapling":apple_sapling_default,"apple-tree-sapling-planted":apple_tree_sapling_planted_default,banana:banana_default,"banana-fruit-growing-1":banana_fruit_growing_1_default,"banana-fruit-growing-2":banana_fruit_growing_2_default,"banana-fruit-growing-3":banana_fruit_growing_3_default,"banana-fruit-grown":banana_fruit_grown_default,"banana-tree-dead":banana_tree_dead_default,"banana-tree-growing-1":banana_tree_growing_1_default,"banana-tree-growing-2":banana_tree_growing_2_default,"banana-tree-growing-3":banana_tree_growing_3_default,"banana-tree-growing-4":banana_tree_growing_4_default,"banana-tree-grown":banana_tree_grown_default,"banana-sapling":banana_sapling_default,"banana-tree-sapling-planted":banana_tree_sapling_planted_default,asparagus:asparagus_default,"asparagus-growing-1":asparagus_growing1_default,"asparagus-growing-2":asparagus_growing2_default,"asparagus-growing-3":asparagus_growing3_default,"asparagus-seed":asparagus_seed_default,blueberry:blueberry_default,"blueberry-growing-1":blueberry_growing1_default,"blueberry-seed":blueberry_seed_default,carrot:carrot_default,"carrot-growing-1":carrot_growing1_default,"carrot-growing-2":carrot_growing2_default,"carrot-growing-3":carrot_growing3_default,"carrot-seed":carrot_seed_default,garlic:garlic_default,"garlic-growing-1":garlic_growing1_default,"garlic-growing-2":garlic_growing2_default,"garlic-growing-3":garlic_growing3_default,"garlic-seed":garlic_seed_default,"grape-seed":grape_seed_default,"grape-cabernet-sauvignon":grape_purple_default,"grape-cabernet-sauvignon-growing-1":grape_purple_growing1_default,"grape-cabernet-sauvignon-seed":grape_seed_default,"grape-chardonnay":grape_green_default,"grape-chardonnay-growing-1":grape_green_growing1_default,"grape-chardonnay-seed":grape_seed_default,"grape-nebbiolo":grape_purple_default,"grape-nebbiolo-growing-1":grape_purple_growing1_default,"grape-nebbiolo-seed":grape_seed_default,"grape-sauvignon-blanc":grape_green_default,"grape-sauvignon-blanc-growing-1":grape_green_growing1_default,"grape-sauvignon-blanc-seed":grape_seed_default,"grape-tempranillo":grape_purple_default,"grape-tempranillo-growing-1":grape_purple_growing1_default,"grape-tempranillo-seed":grape_seed_default,jalapeno:jalapeno_default,"jalapeno-growing-1":jalapeno_growing1_default,"jalapeno-growing-2":jalapeno_growing2_default,"jalapeno-growing-3":jalapeno_growing3_default,"jalapeno-seed":jalapeno_seed_default,pumpkin:pumpkin_default,"pumpkin-growing-1":pumpkin_growing1_default,"pumpkin-growing-2":pumpkin_growing2_default,"pumpkin-growing-3":pumpkin_growing3_default,"pumpkin-growing-4":pumpkin_growing4_default,"pumpkin-growing-5":pumpkin_growing5_default,"pumpkin-seed":pumpkin_seed_default,pea:pea_default,"pea-growing-1":pea_growing1_default,"pea-seed":pea_seed_default,spinach:spinach_default,"spinach-growing-1":spinach_growing1_default,"spinach-seed":spinach_seed_default,corn:corn_default,"corn-growing-1":corn_growing1_default,"corn-growing-2":corn_growing2_default,"corn-growing-3":corn_growing3_default,"corn-growing-4":corn_growing4_default,"corn-growing-5":corn_growing5_default,"corn-seed":corn_seed_default,potato:potato_default,"potato-growing-1":potato_growing1_default,"potato-growing-2":potato_growing2_default,"potato-growing-3":potato_growing3_default,"potato-seed":potato_seed_default,olive:olive_default,"olive-growing-1":olive_growing1_default,"olive-seed":olive_seed_default,onion:onion_default,"onion-growing-1":onion_growing1_default,"onion-growing-2":onion_growing2_default,"onion-growing-3":onion_growing3_default,"onion-seed":onion_seed_default,soybean:soybean_default,"soybean-growing-1":soybean_growing1_default,"soybean-seed":soybean_seed_default,"sweet-potato":sweet_potato_default,"sweet-potato-growing-1":sweet_potato_growing1_default,"sweet-potato-growing-2":sweet_potato_growing2_default,"sweet-potato-growing-3":sweet_potato_growing3_default,"sweet-potato-growing-4":sweet_potato_growing4_default,"sweet-potato-seed":sweet_potato_seed_default,wheat:wheat_default,"wheat-growing-1":wheat_growing1_default,"wheat-seed":wheat_seed_default,tomato:tomato_default,"tomato-growing-1":tomato_growing1_default,"tomato-growing-2":tomato_growing2_default,"tomato-growing-3":tomato_growing3_default,"tomato-growing-4":tomato_growing4_default,"tomato-growing-5":tomato_growing5_default,"tomato-growing-6":tomato_growing6_default,"tomato-seed":tomato_seed_default,strawberry:strawberry_default,"strawberry-growing-1":strawberry_growing1_default,"strawberry-seed":strawberry_seed_default,sugarcane:sugarcane_default,"sugarcane-growing-1":sugarcane_growing1_default,"sugarcane-growing-2":sugarcane_growing2_default,"sugarcane-seed":sugarcane_seed_default,sunflower:sunflower_default,"sunflower-growing-1":sunflower_growing1_default,"sunflower-growing-2":sunflower_growing2_default,"sunflower-growing-3":sunflower_growing3_default,"sunflower-growing-4":sunflower_growing4_default,"sunflower-growing-5":sunflower_growing5_default,"sunflower-seed":sunflower_seed_default,watermelon:watermelon_default,"watermelon-growing-1":watermelon_growing1_default,"watermelon-seed":watermelon_seed_default,weed:weed_pink_default,"weed-yellow":weed_yellow_default,"weed-orange":weed_orange_default,"weed-pink":weed_pink_default,wood:applewood_default,coal:coal_default,stone:stone_default,"salt-rock":salt_rock_default,"bronze-ore":bronze_ore_default,"iron-ore":iron_ore_default,"silver-ore":silver_ore_default,"gold-ore":gold_ore_default,"rainbow-fertilizer":rainbow_fertilizer_default,scarecrow:scarecrow_default,sprinkler:sprinkler_default,"cow-feed":cow_feed_default,"hugging-machine":hugging_machine_default,"milk-1":milk_1_default,"milk-2":milk_2_default,"milk-3":milk_3_default,"rainbow-milk-1":rainbow_milk_1_default,"rainbow-milk-2":rainbow_milk_2_default,"rainbow-milk-3":rainbow_milk_3_default,"chocolate-milk":chocolate_milk_default,"scarecrow-animated":scarecrow_animated_default,"inventory-box":inventory_box_default,tumbleweed:tumbleweed_default,...craftedItems},wines={[grapeVariety.CHARDONNAY]:wine_green_default,[grapeVariety.SAUVIGNON_BLANC]:wine_green_default,[grapeVariety.CABERNET_SAUVIGNON]:wine_purple_default,[grapeVariety.TEMPRANILLO]:wine_purple_default,[grapeVariety.NEBBIOLO]:wine_purple_default},tools$1={axe:axe_default,hoe:hoe_default,"picker-pole":picker_pole_default,scythe:scythe_default,shovel:shovel_default,"watering-can":watering_can_default},animals={cow:{rainbow:rainbow_cow_default,variations:[cow_variation_1_default,cow_variation_2_default,cow_variation_3_default,cow_variation_4_default,cow_variation_5_default,cow_variation_6_default,cow_variation_7_default]}},noop$3=()=>{},getFinalCropItemFromSeedItem=({id:e},t=0)=>{let n=getFinalCropItemIdFromSeedItemId(e,t);if(n)return itemsMap[n]},getItemCurrentValue=({id:e},t)=>{let n=Math.round((t[e]?getItemBaseValue(e)*(itemsMap[e].doesPriceFluctuate?t[e]:1):getItemBaseValue(e))*100);return Number(toDecimal(dinero({amount:n,currency:USD})))};function noop$2(){}function returnTrue(){return!0}function charIsNumber(e){return!!(e||``).match(/\d/)}function isNil(e){return e==null}function escapeRegExp(e){return e.replace(/[-[\]/{}()*+?.\\^$|]/g,`\\$&`)}function getThousandsGroupRegex(e){switch(e){case`lakh`:return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case`wan`:return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function applyThousandSeparator(e,t,n){var a=getThousandsGroupRegex(n),o=e.search(/[1-9]/);return o=o===-1?e.length:o,e.substring(0,o)+e.substring(o,e.length).replace(a,`$1`+t)}function splitDecimal(e,t){t===void 0&&(t=!0);var n=e[0]===`-`,a=n&&t;e=e.replace(`-`,``);var o=e.split(`.`);return{beforeDecimal:o[0],afterDecimal:o[1]||``,hasNagation:n,addNegation:a}}function fixLeadingZero(e){if(!e)return e;var t=e[0]===`-`;t&&(e=e.substring(1,e.length));var n=e.split(`.`),a=n[0].replace(/^0+/,``)||`0`,o=n[1]||``;return(t?`-`:``)+a+(o?`.`+o:``)}function limitToScale(e,t,n){for(var a=``,o=n?`0`:``,s=0;s<=t-1;s++)a+=e[s]||o;return a}function repeat(e,t){return Array(t+1).join(e)}function toNumericString(e){e+=``;var t=e[0]===`-`?`-`:``;t&&(e=e.substring(1));var n=e.split(/[eE]/g),a=n[0],o=n[1];if(o=Number(o),!o)return t+a;a=a.replace(`.`,``);var s=1+o,l=a.length;return s<0?a=`0.`+repeat(`0`,Math.abs(s))+a:s>=l?a+=repeat(`0`,s-l):a=(a.substring(0,s)||`0`)+`.`+a.substring(s),t+a}function roundToPrecision(e,t,n){if([``,`-`].indexOf(e)!==-1)return e;var a=e.indexOf(`.`)!==-1&&t,o=splitDecimal(e),s=o.beforeDecimal,l=o.afterDecimal,u=o.hasNagation,d=parseFloat(`0.`+(l||`0`)),f=(l.length<=t?`0.`+l:d.toFixed(t)).split(`.`),m=s.split(``).reverse().reduce(function(e,t,n){return e.length>n?(Number(e[0])+Number(t)).toString()+e.substring(1,e.length):t+e},f[0]),h=limitToScale(f[1]||``,Math.min(t,l.length),n),v=u?`-`:``,y=a?`.`:``;return``+v+m+y+h}function setCaretPosition(e,t){if(e.value=e.value,e!==null){if(e.createTextRange){var n=e.createTextRange();return n.move(`character`,t),n.select(),!0}return e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}function findChangedIndex(e,t){for(var n=0,a=0,o=e.length,s=t.length;e[n]===t[n]&&n<o;)n++;for(;e[o-1-a]===t[s-1-a]&&s-a>n&&o-a>n;)a++;return{start:n,end:o-a}}function clamp(e,t,n){return Math.min(Math.max(e,t),n)}function getCurrentCaretPosition(e){return Math.max(e.selectionStart,e.selectionEnd)}function addInputMode(e){return e||typeof navigator<`u`&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function objectWithoutProperties(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)===-1&&(n[a]=e[a]);return n}var defaultProps={displayType:`input`,decimalSeparator:`.`,thousandsGroupStyle:`thousand`,fixedDecimalScale:!1,prefix:``,suffix:``,allowNegative:!0,allowEmptyFormatting:!1,allowLeadingZeros:!1,isNumericString:!1,type:`text`,onValueChange:noop$2,onChange:noop$2,onKeyDown:noop$2,onMouseUp:noop$2,onFocus:noop$2,onBlur:noop$2,isAllowed:returnTrue},NumberFormat=function(e){function t(t){e.call(this,t);var n=t.defaultValue;this.validateProps();var a=this.formatValueProp(n);this.state={value:a,numAsString:this.removeFormatting(a),mounted:!1},this.selectionBeforeInput={selectionStart:0,selectionEnd:0},this.onChange=this.onChange.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.setState({mounted:!0})},t.prototype.componentDidUpdate=function(e){this.updateValueIfRequired(e)},t.prototype.componentWillUnmount=function(){clearTimeout(this.focusTimeout),clearTimeout(this.caretPositionTimeout)},t.prototype.updateValueIfRequired=function(e){var t=this,n=t.props,a=t.state,o=t.focusedElm,s=a.value,l=a.numAsString;if(l===void 0&&(l=``),e!==n){this.validateProps();var u=this.formatNumString(l),d=isNil(n.value)?u:this.formatValueProp(),f=this.removeFormatting(d),m=parseFloat(f),h=parseFloat(l);((!isNaN(m)||!isNaN(h))&&m!==h||u!==s||o===null&&d!==s)&&this.updateValue({formattedValue:d,numAsString:f,input:o,source:`prop`,event:null})}},t.prototype.getFloatString=function(e){e===void 0&&(e=``);var t=this.props.decimalScale,n=this.getSeparators().decimalSeparator,a=this.getNumberRegex(!0),o=e[0]===`-`;o&&(e=e.replace(`-`,``)),n&&t===0&&(e=e.split(n)[0]),e=(e.match(a)||[]).join(``).replace(n,`.`);var s=e.indexOf(`.`);return s!==-1&&(e=e.substring(0,s)+`.`+e.substring(s+1,e.length).replace(new RegExp(escapeRegExp(n),`g`),``)),o&&(e=`-`+e),e},t.prototype.getNumberRegex=function(e,t){var n=this.props,a=n.format,o=n.decimalScale,s=n.customNumerals,l=this.getSeparators().decimalSeparator;return RegExp(`[0-9`+(s?s.join(``):``)+`]`+(l&&o!==0&&!t&&!a?`|`+escapeRegExp(l):``),e?`g`:void 0)},t.prototype.getSeparators=function(){var e=this.props.decimalSeparator,t=this.props,n=t.thousandSeparator,a=t.allowedDecimalSeparators;return n===!0&&(n=`,`),a||=[e,`.`],{decimalSeparator:e,thousandSeparator:n,allowedDecimalSeparators:a}},t.prototype.getMaskAtIndex=function(e){var t=this.props.mask;return t===void 0&&(t=` `),typeof t==`string`?t:t[e]||` `},t.prototype.getValueObject=function(e,t){var n=parseFloat(t);return{formattedValue:e,value:t,floatValue:isNaN(n)?void 0:n}},t.prototype.validateProps=function(){var e=this.props.mask,t=this.getSeparators(),n=t.decimalSeparator,a=t.thousandSeparator;if(n===a)throw Error(`
|
|
155
155
|
Decimal separator can't be same as thousand separator.
|
|
156
156
|
thousandSeparator: `+a+` (thousandSeparator = {true} is same as thousandSeparator = ",")
|
|
157
157
|
decimalSeparator: `+n+` (default value for decimalSeparator is .)
|
|
@@ -726,7 +726,7 @@ Create a new `,"processor first, by invoking it: use `processor()` instead of ",
|
|
|
726
726
|
animation: ${0} 1.4s linear infinite;
|
|
727
727
|
`,circularRotateKeyframe)),CircularProgressSVG=styled$1(`svg`,{name:`MuiCircularProgress`,slot:`Svg`,overridesResolver:(e,t)=>t.svg})({display:`block`}),CircularProgressCircle=styled$1(`circle`,{name:`MuiCircularProgress`,slot:`Circle`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.circle,t[`circle${capitalize_default(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})(({ownerState:e,theme:t})=>_extends$3({stroke:`currentColor`},e.variant===`determinate`&&{transition:t.transitions.create(`stroke-dashoffset`)},e.variant===`indeterminate`&&{strokeDasharray:`80px, 200px`,strokeDashoffset:0}),({ownerState:e})=>e.variant===`indeterminate`&&!e.disableShrink&&css$2(_t4||=_`
|
|
728
728
|
animation: ${0} 1.4s ease-in-out infinite;
|
|
729
|
-
`,circularDashKeyframe)),CircularProgress=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCircularProgress`}),{className:a,color:o=`primary`,disableShrink:s=!1,size:l=40,style:u,thickness:d=3.6,value:f=0,variant:m=`indeterminate`}=n,h=_objectWithoutPropertiesLoose$3(n,_excluded$2),v=_extends$3({},n,{color:o,disableShrink:s,size:l,thickness:d,value:f,variant:m}),y=useUtilityClasses$2(v),b={},x={},S={};if(m===`determinate`){let e=2*Math.PI*((SIZE-d)/2);b.strokeDasharray=e.toFixed(3),S[`aria-valuenow`]=Math.round(f),b.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,x.transform=`rotate(-90deg)`}return(0,import_jsx_runtime.jsx)(CircularProgressRoot,_extends$3({className:clsx$1(y.root,a),style:_extends$3({width:l,height:l},x,u),ownerState:v,ref:t,role:`progressbar`},S,h,{children:(0,import_jsx_runtime.jsx)(CircularProgressSVG,{className:y.svg,ownerState:v,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:(0,import_jsx_runtime.jsx)(CircularProgressCircle,{className:y.circle,style:b,ownerState:v,cx:SIZE,cy:SIZE,r:(SIZE-d)/2,fill:`none`,strokeWidth:d})})}))});function DayAndProgressContainer({dayCount:e,experience:t,itemsSold:n}){let a=levelAchieved(t),o=scaleNumber(t,experienceNeededForLevel(a),experienceNeededForLevel(a+1),0,100),s=experienceNeededForLevel(a+1)-t,l=a+1;return(0,import_jsx_runtime.jsxs)(`h2`,{className:`day-and-progress-container`,children:[(0,import_jsx_runtime.jsxs)(`span`,{children:[`Day `,integerString(e),`, level:`]}),(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,placement:`top`,title:EXPERIENCE_GAUGE_TOOLTIP_LABEL`${s}${l}`,children:(0,import_jsx_runtime.jsxs)(Box,{children:[(0,import_jsx_runtime.jsx)(CircularProgress,{value:o,variant:`determinate`}),(0,import_jsx_runtime.jsx)(`span`,{className:`current-level`,children:integerString(a)})]})})]})}DayAndProgressContainer.propTypes={dayCount:import_prop_types$1.number.isRequired,experience:import_prop_types$1.number.isRequired,itemsSold:import_prop_types$1.object.isRequired};function Consumer$15(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(DayAndProgressContainer,{...t,...n,...e})})}var FarmNameDisplay=({farmName:e,handleFarmNameUpdate:t})=>{let[n,a]=(0,import_react$24.useState)(e);return(0,import_react$24.useEffect)(()=>{a(e)},[e,a]),(0,import_jsx_runtime.jsxs)(`h2`,{className:`farm-name`,children:[(0,import_jsx_runtime.jsx)(TextField,{variant:`standard`,inputProps:{maxLength:12},onChange:({target:{value:e}})=>{a(e)},onBlur:({target:{value:e}})=>{t(e)},placeholder:`Farm Name`,value:n}),` `,`Farm`]})},OnlineControls=({activePlayers:e,handleActivePlayerButtonClick:t,handleChatRoomOpenStateChange:n,handleOnlineToggleChange:a,handleRoomChange:o,isChatAvailable:s,isOnline:l,room:u})=>{let[d,f]=(0,import_react$24.useState)(u);(0,import_react$24.useEffect)(()=>{f(u)},[u,f]);let m=()=>{n(!0)},h=()=>{o(d)},v=e=>{h(),a(e)};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(FormControl,{variant:`standard`,className:`online-control-container`,component:`fieldset`,children:[(0,import_jsx_runtime.jsx)(FormGroup,{className:`toggle-container`,children:(0,import_jsx_runtime.jsx)(FormControlLabel,{control:(0,import_jsx_runtime.jsx)(Switch,{color:`primary`,checked:l,onChange:(e,t)=>{v(t)},name:`play-online`}),label:`Play online`})}),(0,import_jsx_runtime.jsx)(TextField,{className:`room-name`,inputProps:{maxLength:25},label:`Room name`,onChange:({target:{value:e}})=>{f(e)},onKeyUp:({key:e})=>{e===`Enter`&&h()},value:d,variant:`outlined`})]}),e&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(Button,{color:`primary`,onClick:t,variant:`contained`,children:[`Connected players: `,integerString(e)]}),s?(0,import_jsx_runtime.jsx)(Button,{variant:`contained`,color:`primary`,onClick:m,children:`Open chat`}):(0,import_jsx_runtime.jsxs)(Typography,{className:`chat-placeholder`,children:[`Chat is available for online rooms other than "`,`global`,`"`]})]})]})},{FARMERS_LOG,PRICE_EVENTS,STATS,ACHIEVEMENTS,ACCOUNTING,SETTINGS,ONLINE_PEERS,KEYBINDINGS}=dialogView,dialogTriggerTextMap={[FARMERS_LOG]:`Open Farmer's Log (l)`,[PRICE_EVENTS]:`See Price Events (e)`,[STATS]:`View your stats (s)`,[ACHIEVEMENTS]:`View Achievements (a)`,[ACCOUNTING]:`View Bank Account (b)`,[SETTINGS]:`View Settings (comma)`},dialogTitleMap={[FARMERS_LOG]:`Farmer's Log`,[PRICE_EVENTS]:`Price Events`,[STATS]:`Farm Stats`,[ACHIEVEMENTS]:`Achievements`,[ACCOUNTING]:`Bank Account`,[SETTINGS]:`Settings`,[ONLINE_PEERS]:`Active Players`,[KEYBINDINGS]:`Keyboard Shortcuts`},dialogContentMap={[FARMERS_LOG]:(0,import_jsx_runtime.jsx)(Consumer$20,{}),[PRICE_EVENTS]:(0,import_jsx_runtime.jsx)(Consumer$18,{}),[STATS]:(0,import_jsx_runtime.jsx)(Consumer$16,{}),[ACHIEVEMENTS]:(0,import_jsx_runtime.jsx)(Consumer$21,{}),[ACCOUNTING]:(0,import_jsx_runtime.jsx)(Consumer$23,{}),[SETTINGS]:(0,import_jsx_runtime.jsx)(Consumer$17,{}),[ONLINE_PEERS]:(0,import_jsx_runtime.jsx)(Consumer$19,{}),[KEYBINDINGS]:(0,import_jsx_runtime.jsx)(KeybindingsView,{})},Navigation=({activePlayers:e,blockInput:t,currentDialogView:n,farmName:a,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleClickDialogViewButton:l,handleCloseDialogView:u,handleDialogViewExited:d,handleFarmNameUpdate:f,handleOnlineToggleChange:m,handleRoomChange:h,handleViewChange:v,inventory:y,inventoryLimit:b,isChatAvailable:x,isDialogViewOpen:S,isOnline:C,room:T,stageFocus:E,viewList:D,currentDialogViewLowerCase:O=(n||``).toLowerCase(),modalTitleId:k=`${O}-modal-title`,modalContentId:j=`${O}-modal-content`})=>(0,import_jsx_runtime.jsxs)(Header,{className:`Navigation`,sx:{flexDirection:`column`,flexShrink:0,display:`flex`,"& .version":{fontFamily:`"Francois One", sans-serif`,textAlign:`center`},"& .farm-name":{lineHeight:`1.3em`,margin:`0.25em 0`,"& .MuiInput-root":{background:`none`,margin:0,"& input":{fontFamily:`"Francois One"`,paddingLeft:`0.5em`,paddingRight:`0.5em`,textAlign:`center`}}},"& .online-control-container":{alignItems:`center`,display:`flex`,flexDirection:`row`,margin:`1em 0`,"& .toggle-container":{minWidth:`155px`}},"& .button-array":{marginLeft:`3em`,marginRight:`3em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`2em`,marginRight:`2em`}},"& .current-level":{alignItems:`center`,bottom:0,display:`flex`,justifyContent:`center`,left:0,position:`absolute`,right:0,top:0,userSelect:`none`},"& h1":{fontSize:`3em`,fontWeight:`bold`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{fontSize:`2.5em`}},"& button":{fontSize:`1.3em`,margin:`0.3em`,minWidth:`56px`},"& h1, & h2, & h3":{textAlign:`center`},"& .day-and-progress-container":{alignItems:`center`,display:`flex`,fontSize:`1.5em`,margin:`0.5em auto`,"& .MuiBox-root":{display:`inline-flex`,marginLeft:`0.5em`,position:`relative`}},"& .inventory-info":{fontSize:`1em`},"& .MuiSelect-select":{padding:`1em`},"& .chat-placeholder":{fontSize:`0.75em`,padding:`0.5em 0`,textAlign:`center`}},children:[(0,import_jsx_runtime.jsx)(`h1`,{children:`Farmhand`}),(0,import_jsx_runtime.jsxs)(`p`,{className:`version`,children:[`v`,`1.22.2`]}),(0,import_jsx_runtime.jsx)(FarmNameDisplay,{farmName:a,handleFarmNameUpdate:f}),(0,import_jsx_runtime.jsx)(Consumer$15,{}),(0,import_jsx_runtime.jsx)(OnlineControls,{activePlayers:e,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleOnlineToggleChange:m,handleRoomChange:h,isChatAvailable:x,isOnline:C,room:T}),b>-1&&(0,import_jsx_runtime.jsxs)(H3,{className:(0,import_classnames.default)(`inventory-info`,{"is-inventory-full":!doesInventorySpaceRemain({inventory:y,inventoryLimit:b})}),sx:{color:doesInventorySpaceRemain({inventory:y,inventoryLimit:b})?void 0:colors.error},children:[`Inventory: `,integerString(inventorySpaceConsumed(y)),` /`,` `,integerString(b)]}),(0,import_jsx_runtime.jsx)(Select,{variant:`standard`,className:`view-select`,onChange:v,value:E,children:D.map((e,t)=>(0,import_jsx_runtime.jsxs)(MenuItem,{key:e,value:e,children:[t+1,`: `,STAGE_TITLE_MAP[e]]}))}),(0,import_jsx_runtime.jsx)(`div`,{className:`button-array`,children:[{dialogView:FARMERS_LOG,Icon:import_Book.default},{dialogView:PRICE_EVENTS,Icon:import_FlashOn.default},{dialogView:STATS,Icon:import_Assessment.default},{dialogView:ACHIEVEMENTS,Icon:import_Beenhere.default},{dialogView:ACCOUNTING,Icon:import_AccountBalance.default},{dialogView:SETTINGS,Icon:import_Settings.default}].map(({dialogView:e,Icon:t})=>(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,key:e,placement:`top`,title:dialogTriggerTextMap[e],children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":dialogTriggerTextMap[e],color:`primary`,onClick:()=>l(e),children:(0,import_jsx_runtime.jsx)(t,{})})}))}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,{"block-input":t}),fullWidth:!0,maxWidth:`xs`,onClose:u,open:S,TransitionProps:{onExited:d},"aria-describedby":k,"aria-labelledby":j,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:k,children:n?dialogTitleMap[n]:``}),(0,import_jsx_runtime.jsx)(DialogContent,{id:j,children:n?dialogContentMap[n]:null}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:u,color:`primary`,autoFocus:!0,children:`Close`})})]})]});Navigation.propTypes={activePlayers:import_prop_types$1.number,blockInput:import_prop_types$1.bool.isRequired,farmName:import_prop_types$1.string.isRequired,handleClickDialogViewButton:import_prop_types$1.func.isRequired,handleChatRoomOpenStateChange:import_prop_types$1.func.isRequired,handleActivePlayerButtonClick:import_prop_types$1.func.isRequired,handleCloseDialogView:import_prop_types$1.func.isRequired,handleDialogViewExited:import_prop_types$1.func.isRequired,handleFarmNameUpdate:import_prop_types$1.func.isRequired,handleOnlineToggleChange:import_prop_types$1.func.isRequired,handleRoomChange:import_prop_types$1.func.isRequired,handleViewChange:import_prop_types$1.func.isRequired,inventory:import_prop_types$1.array.isRequired,inventoryLimit:import_prop_types$1.number.isRequired,isChatAvailable:import_prop_types$1.bool.isRequired,isDialogViewOpen:import_prop_types$1.bool.isRequired,isOnline:import_prop_types$1.bool.isRequired,stageFocus:import_prop_types$1.string.isRequired,viewList:import_prop_types$1.array.isRequired};function Consumer$14(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Navigation,{...t,...n,...e})})}var getNotificationKey=({message:e,severity:t})=>`${t}:${e}`,snackbarProviderContentCallback=(e,{message:t,onClick:n,severity:a})=>(0,import_jsx_runtime.jsx)(Alert,{elevation:3,key:e,onClick:n,severity:a,style:{cursor:n?`pointer`:`default`},children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{source:t})}),NotificationSystem=({enqueueSnackbar:e,latestNotification:t})=>((0,import_react$24.useEffect)(()=>{t&&e(t,{key:getNotificationKey(t),autoHideDuration:NOTIFICATION_DURATION,preventDuplicate:!0})},[e,t]),null);NotificationSystem.propTypes={latestNotification:(0,import_prop_types$1.shape)({message:import_prop_types$1.string.isRequired,onClick:import_prop_types$1.func,severity:import_prop_types$1.string.isRequired})};var NotificationSystem_default=withSnackbar(function(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(NotificationSystem,{...t,...n,...e})})}),require_ZoomIn=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)([(0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14`},`0`),(0,a.jsx)(`path`,{d:`M12 10h-2v2H9v-2H7V9h2V7h1v2h2z`},`1`)],`ZoomIn`)})),require_ZoomOut=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z`}),`ZoomOut`)}));function areArraysEqual(e,t,n=(e,t)=>e===t){return e.length===t.length&&e.every((e,a)=>n(e,t[a]))}init_extends(),init_esm(),init_extractEventHandlers();var INTENTIONAL_DRAG_COUNT_THRESHOLD=2;function asc(e,t){return e-t}function findClosest(e,t){var n;let{index:a}=e.reduce((e,n,a)=>{let o=Math.abs(t-n);return e===null||o<e.distance||o===e.distance?{distance:o,index:a}:e},null)??{};return a}function trackFinger(e,t){if(t.current!==void 0&&e.changedTouches){let n=e;for(let e=0;e<n.changedTouches.length;e+=1){let a=n.changedTouches[e];if(a.identifier===t.current)return{x:a.clientX,y:a.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function valueToPercent(e,t,n){return(e-t)*100/(n-t)}function percentToValue(e,t,n){return(n-t)*e+t}function getDecimalPrecision(e){if(Math.abs(e)<1){let t=e.toExponential().split(`e-`),n=t[0].split(`.`)[1];return(n?n.length:0)+parseInt(t[1],10)}let t=e.toString().split(`.`)[1];return t?t.length:0}function roundValueToStep(e,t,n){let a=Math.round((e-n)/t)*t+n;return Number(a.toFixed(getDecimalPrecision(t)))}function setValueIndex({values:e,newValue:t,index:n}){let a=e.slice();return a[n]=t,a.sort(asc)}function focusThumb({sliderRef:e,activeIndex:t,setActive:n}){var a,o;let s=ownerDocument(e.current);if(!((a=e.current)!=null&&a.contains(s.activeElement))||Number(s==null||(o=s.activeElement)==null?void 0:o.getAttribute(`data-index`))!==t){var l;(l=e.current)==null||l.querySelector(`[type="range"][data-index="${t}"]`).focus()}n&&n(t)}function areValuesEqual(e,t){return typeof e==`number`&&typeof t==`number`?e===t:typeof e==`object`&&typeof t==`object`&&areArraysEqual(e,t)}var axisProps={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Identity$1=e=>e,cachedSupportsTouchActionNone;function doesSupportTouchActionNone(){return cachedSupportsTouchActionNone===void 0&&(cachedSupportsTouchActionNone=typeof CSS<`u`&&typeof CSS.supports==`function`?CSS.supports(`touch-action`,`none`):!0),cachedSupportsTouchActionNone}function useSlider(e){let{"aria-labelledby":t,defaultValue:n,disabled:a=!1,disableSwap:o=!1,isRtl:s=!1,marks:l=!1,max:u=100,min:d=0,name:f,onChange:m,onChangeCommitted:h,orientation:v=`horizontal`,rootRef:y,scale:b=Identity$1,step:x=1,shiftStep:S=10,tabIndex:C,value:T}=e,E=import_react$24.useRef(void 0),[D,O]=import_react$24.useState(-1),[k,j]=import_react$24.useState(-1),[M,N]=import_react$24.useState(!1),F=import_react$24.useRef(0),[I,L]=useControlled({controlled:T,default:n??d,name:`Slider`}),R=m&&((e,t,n)=>{let a=e.nativeEvent||e,o=new a.constructor(a.type,a);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:f}}),m(o,t,n)}),z=Array.isArray(I),B=z?I.slice().sort(asc):[I];B=B.map(e=>e==null?d:clamp$1(e,d,u));let V=l===!0&&x!==null?[...Array(Math.floor((u-d)/x)+1)].map((e,t)=>({value:d+x*t})):l||[],H=V.map(e=>e.value),{isFocusVisibleRef:U,onBlur:W,onFocus:G,ref:ee}=useIsFocusVisible(),[te,K]=import_react$24.useState(-1),q=import_react$24.useRef(null),ne=useForkRef(y,useForkRef(ee,q)),re=e=>t=>{var n;let a=Number(t.currentTarget.getAttribute(`data-index`));G(t),U.current===!0&&K(a),j(a),e==null||(n=e.onFocus)==null||n.call(e,t)},J=e=>t=>{var n;W(t),U.current===!1&&K(-1),j(-1),e==null||(n=e.onBlur)==null||n.call(e,t)},ie=(e,t)=>{let n=Number(e.currentTarget.getAttribute(`data-index`)),a=B[n],s=H.indexOf(a),l=t;if(V&&x==null){let e=H[H.length-1];l=l>e?e:l<H[0]?H[0]:l<a?H[s-1]:H[s+1]}if(l=clamp$1(l,d,u),z){o&&(l=clamp$1(l,B[n-1]||-1/0,B[n+1]||1/0));let e=l;l=setValueIndex({values:B,newValue:l,index:n});let t=n;o||(t=l.indexOf(e)),focusThumb({sliderRef:q,activeIndex:t})}L(l),K(n),R&&!areValuesEqual(l,I)&&R(e,l,n),h&&h(e,l)},ae=e=>t=>{var n;if(x!==null){let e=Number(t.currentTarget.getAttribute(`data-index`)),n=B[e],a=null;(t.key===`ArrowLeft`||t.key===`ArrowDown`)&&t.shiftKey||t.key===`PageDown`?a=Math.max(n-S,d):((t.key===`ArrowRight`||t.key===`ArrowUp`)&&t.shiftKey||t.key===`PageUp`)&&(a=Math.min(n+S,u)),a!==null&&(ie(t,a),t.preventDefault())}e==null||(n=e.onKeyDown)==null||n.call(e,t)};useEnhancedEffect$1(()=>{if(a&&q.current.contains(document.activeElement)){var e;(e=document.activeElement)==null||e.blur()}},[a]),a&&D!==-1&&O(-1),a&&te!==-1&&K(-1);let oe=e=>t=>{var n;(n=e.onChange)==null||n.call(e,t),ie(t,t.target.valueAsNumber)},se=import_react$24.useRef(void 0),ce=v;s&&v===`horizontal`&&(ce+=`-reverse`);let Y=({finger:e,move:t=!1})=>{let{current:n}=q,{width:a,height:s,bottom:l,left:f}=n.getBoundingClientRect(),m;m=ce.indexOf(`vertical`)===0?(l-e.y)/s:(e.x-f)/a,ce.indexOf(`-reverse`)!==-1&&(m=1-m);let h;if(h=percentToValue(m,d,u),x)h=roundValueToStep(h,x,d);else{let e=findClosest(H,h);h=H[e]}h=clamp$1(h,d,u);let v=0;if(z){v=t?se.current:findClosest(B,h),o&&(h=clamp$1(h,B[v-1]||-1/0,B[v+1]||1/0));let e=h;h=setValueIndex({values:B,newValue:h,index:v}),o&&t||(v=h.indexOf(e),se.current=v)}return{newValue:h,activeIndex:v}},le=useEventCallback$1(e=>{let t=trackFinger(e,E);if(!t)return;if(F.current+=1,e.type===`mousemove`&&e.buttons===0){ue(e);return}let{newValue:n,activeIndex:a}=Y({finger:t,move:!0});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(n),!M&&F.current>INTENTIONAL_DRAG_COUNT_THRESHOLD&&N(!0),R&&!areValuesEqual(n,I)&&R(e,n,a)}),ue=useEventCallback$1(e=>{let t=trackFinger(e,E);if(N(!1),!t)return;let{newValue:n}=Y({finger:t,move:!0});O(-1),e.type===`touchend`&&j(-1),h&&h(e,n),E.current=void 0,X()}),de=useEventCallback$1(e=>{if(a)return;doesSupportTouchActionNone()||e.preventDefault();let t=e.changedTouches[0];t!=null&&(E.current=t.identifier);let n=trackFinger(e,E);if(n!==!1){let{newValue:t,activeIndex:a}=Y({finger:n});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(t),R&&!areValuesEqual(t,I)&&R(e,t,a)}F.current=0;let o=ownerDocument(q.current);o.addEventListener(`touchmove`,le,{passive:!0}),o.addEventListener(`touchend`,ue,{passive:!0})}),X=import_react$24.useCallback(()=>{let e=ownerDocument(q.current);e.removeEventListener(`mousemove`,le),e.removeEventListener(`mouseup`,ue),e.removeEventListener(`touchmove`,le),e.removeEventListener(`touchend`,ue)},[ue,le]);import_react$24.useEffect(()=>{let{current:e}=q;return e.addEventListener(`touchstart`,de,{passive:doesSupportTouchActionNone()}),()=>{e.removeEventListener(`touchstart`,de),X()}},[X,de]),import_react$24.useEffect(()=>{a&&X()},[a,X]);let fe=e=>t=>{var n;if((n=e.onMouseDown)==null||n.call(e,t),a||t.defaultPrevented||t.button!==0)return;t.preventDefault();let o=trackFinger(t,E);if(o!==!1){let{newValue:e,activeIndex:n}=Y({finger:o});focusThumb({sliderRef:q,activeIndex:n,setActive:O}),L(e),R&&!areValuesEqual(e,I)&&R(t,e,n)}F.current=0;let s=ownerDocument(q.current);s.addEventListener(`mousemove`,le,{passive:!0}),s.addEventListener(`mouseup`,ue)},pe=valueToPercent(z?B[0]:d,d,u),me=valueToPercent(B[B.length-1],d,u)-pe,he=(e={})=>{let t=extractEventHandlers(e),n=_extends$3({},t,{onMouseDown:fe(t||{})});return _extends$3({},e,{ref:ne},n)},ge=e=>t=>{var n;(n=e.onMouseOver)==null||n.call(e,t);let a=Number(t.currentTarget.getAttribute(`data-index`));j(a)},Z=e=>t=>{var n;(n=e.onMouseLeave)==null||n.call(e,t),j(-1)};return{active:D,axis:ce,axisProps,dragging:M,focusedThumbIndex:te,getHiddenInputProps:(n={})=>{var o;let l=extractEventHandlers(n),m=_extends$3({},l,{onChange:oe(l||{}),onFocus:re(l||{}),onBlur:J(l||{}),onKeyDown:ae(l||{})});return _extends$3({tabIndex:C,"aria-labelledby":t,"aria-orientation":v,"aria-valuemax":b(u),"aria-valuemin":b(d),name:f,type:`range`,min:e.min,max:e.max,step:e.step===null&&e.marks?`any`:e.step??void 0,disabled:a},n,m,{style:_extends$3({},visuallyHidden,{direction:s?`rtl`:`ltr`,width:`100%`,height:`100%`})})},getRootProps:he,getThumbProps:(e={})=>{let t=extractEventHandlers(e);return _extends$3({},e,t,{onMouseOver:ge(t||{}),onMouseLeave:Z(t||{})})},marks:V,open:k,range:z,rootRef:ne,trackLeap:me,trackOffset:pe,values:B,getThumbStyle:e=>({pointerEvents:D!==-1&&D!==e?`none`:void 0})}}init_isHostComponent();var shouldSpreadAdditionalProps=e=>!e||!isHostComponent(e);init_generateUtilityClasses(),init_generateUtilityClass();function getSliderUtilityClass(e){return generateUtilityClass(`MuiSlider`,e)}var sliderClasses=generateUtilityClasses(`MuiSlider`,`root.active.colorPrimary.colorSecondary.colorError.colorInfo.colorSuccess.colorWarning.disabled.dragging.focusVisible.mark.markActive.marked.markLabel.markLabelActive.rail.sizeSmall.thumb.thumbColorPrimary.thumbColorSecondary.thumbColorError.thumbColorSuccess.thumbColorInfo.thumbColorWarning.track.trackInverted.trackFalse.thumbSizeSmall.valueLabel.valueLabelOpen.valueLabelCircle.valueLabelLabel.vertical`.split(`.`));init_clsx();var useValueLabelClasses=e=>{let{open:t}=e;return{offset:clsx$1(t&&sliderClasses.valueLabelOpen),circle:sliderClasses.valueLabelCircle,label:sliderClasses.valueLabelLabel}};function SliderValueLabel$1(e){let{children:t,className:n,value:a}=e,o=useValueLabelClasses(e);return t?import_react$24.cloneElement(t,{className:clsx$1(t.props.className)},(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[t.props.children,(0,import_jsx_runtime.jsx)(`span`,{className:clsx$1(o.offset,n),"aria-hidden":!0,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.circle,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.label,children:a})})})]})):null}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useSlotProps(),init_isHostComponent(),init_styled(),init_DefaultPropsProvider(),init_slotShouldForwardProp(),init_capitalize();var _excluded$1=`aria-label.aria-valuetext.aria-labelledby.component.components.componentsProps.color.classes.className.disableSwap.disabled.getAriaLabel.getAriaValueText.marks.max.min.name.onChange.onChangeCommitted.orientation.shiftStep.size.step.scale.slotProps.slots.tabIndex.track.value.valueLabelDisplay.valueLabelFormat`.split(`.`);function Identity(e){return e}var SliderRoot=styled$1(`span`,{name:`MuiSlider`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`color${capitalize_default(n.color)}`],n.size!==`medium`&&t[`size${capitalize_default(n.size)}`],n.marked&&t.marked,n.orientation===`vertical`&&t.vertical,n.track===`inverted`&&t.trackInverted,n.track===!1&&t.trackFalse]}})(({theme:e})=>{var t;return{borderRadius:12,boxSizing:`content-box`,display:`inline-block`,position:`relative`,cursor:`pointer`,touchAction:`none`,WebkitTapHighlightColor:`transparent`,"@media print":{colorAdjust:`exact`},[`&.${sliderClasses.disabled}`]:{pointerEvents:`none`,cursor:`default`,color:(e.vars||e).palette.grey[400]},[`&.${sliderClasses.dragging}`]:{[`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]:{transition:`none`}},variants:[...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:`horizontal`},style:{height:4,width:`100%`,padding:`13px 0`,"@media (pointer: coarse)":{padding:`20px 0`}}},{props:{orientation:`horizontal`,size:`small`},style:{height:2}},{props:{orientation:`horizontal`,marked:!0},style:{marginBottom:20}},{props:{orientation:`vertical`},style:{height:`100%`,width:4,padding:`0 13px`,"@media (pointer: coarse)":{padding:`0 20px`}}},{props:{orientation:`vertical`,size:`small`},style:{width:2}},{props:{orientation:`vertical`,marked:!0},style:{marginRight:44}}]}}),SliderRail=styled$1(`span`,{name:`MuiSlider`,slot:`Rail`,overridesResolver:(e,t)=>t.rail})({display:`block`,position:`absolute`,borderRadius:`inherit`,backgroundColor:`currentColor`,opacity:.38,variants:[{props:{orientation:`horizontal`},style:{width:`100%`,height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{height:`100%`,width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:`inverted`},style:{opacity:1}}]}),SliderTrack=styled$1(`span`,{name:`MuiSlider`,slot:`Track`,overridesResolver:(e,t)=>t.track})(({theme:e})=>{var t;return{display:`block`,position:`absolute`,borderRadius:`inherit`,border:`1px solid currentColor`,backgroundColor:`currentColor`,transition:e.transitions.create([`left`,`width`,`bottom`,`height`],{duration:e.transitions.duration.shortest}),variants:[{props:{size:`small`},style:{border:`none`}},{props:{orientation:`horizontal`},style:{height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:!1},style:{display:`none`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t,track:`inverted`},style:_extends$3({},e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:_extends$3({backgroundColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62),borderColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62)},e.applyStyles(`dark`,{backgroundColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)}),e.applyStyles(`dark`,{borderColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)})))}))]}}),SliderThumb=styled$1(`span`,{name:`MuiSlider`,slot:`Thumb`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.thumb,t[`thumbColor${capitalize_default(n.color)}`],n.size!==`medium`&&t[`thumbSize${capitalize_default(n.size)}`]]}})(({theme:e})=>{var t;return{position:`absolute`,width:20,height:20,boxSizing:`border-box`,borderRadius:`50%`,outline:0,backgroundColor:`currentColor`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:e.transitions.create([`box-shadow`,`left`,`bottom`],{duration:e.transitions.duration.shortest}),"&::before":{position:`absolute`,content:`""`,borderRadius:`inherit`,width:`100%`,height:`100%`,boxShadow:(e.vars||e).shadows[2]},"&::after":{position:`absolute`,content:`""`,borderRadius:`50%`,width:42,height:42,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`},[`&.${sliderClasses.disabled}`]:{"&:hover":{boxShadow:`none`}},variants:[{props:{size:`small`},style:{width:12,height:12,"&::before":{boxShadow:`none`}}},{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-50%, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 50%)`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{[`&:hover, &.${sliderClasses.focusVisible}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`},{"@media (hover: none)":{boxShadow:`none`}}),[`&.${sliderClasses.active}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`})}}))]}}),SliderValueLabel=styled$1(SliderValueLabel$1,{name:`MuiSlider`,slot:`ValueLabel`,overridesResolver:(e,t)=>t.valueLabel})(({theme:e})=>_extends$3({zIndex:1,whiteSpace:`nowrap`},e.typography.body2,{fontWeight:500,transition:e.transitions.create([`transform`],{duration:e.transitions.duration.shortest}),position:`absolute`,backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`0.25rem 0.75rem`,variants:[{props:{orientation:`horizontal`},style:{transform:`translateY(-100%) scale(0)`,top:`-10px`,transformOrigin:`bottom center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, 50%) rotate(45deg)`,backgroundColor:`inherit`,bottom:0,left:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-100%) scale(1)`}}},{props:{orientation:`vertical`},style:{transform:`translateY(-50%) scale(0)`,right:`30px`,top:`50%`,transformOrigin:`right center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, -50%) rotate(45deg)`,backgroundColor:`inherit`,right:-8,top:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-50%) scale(1)`}}},{props:{size:`small`},style:{fontSize:e.typography.pxToRem(12),padding:`0.25rem 0.5rem`}},{props:{orientation:`vertical`,size:`small`},style:{right:`20px`}}]})),SliderMark=styled$1(`span`,{name:`MuiSlider`,slot:`Mark`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markActive`,overridesResolver:(e,t)=>{let{markActive:n}=e;return[t.mark,n&&t.markActive]}})(({theme:e})=>({position:`absolute`,width:2,height:2,borderRadius:1,backgroundColor:`currentColor`,variants:[{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-1px, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 1px)`}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]})),SliderMarkLabel=styled$1(`span`,{name:`MuiSlider`,slot:`MarkLabel`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markLabelActive`,overridesResolver:(e,t)=>t.markLabel})(({theme:e})=>_extends$3({},e.typography.body2,{color:(e.vars||e).palette.text.secondary,position:`absolute`,whiteSpace:`nowrap`,variants:[{props:{orientation:`horizontal`},style:{top:30,transform:`translateX(-50%)`,"@media (pointer: coarse)":{top:40}}},{props:{orientation:`vertical`},style:{left:36,transform:`translateY(50%)`,"@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]})),useUtilityClasses$1=e=>{let{disabled:t,dragging:n,marked:a,orientation:o,track:s,classes:l,color:u,size:d}=e;return composeClasses({root:[`root`,t&&`disabled`,n&&`dragging`,a&&`marked`,o===`vertical`&&`vertical`,s===`inverted`&&`trackInverted`,s===!1&&`trackFalse`,u&&`color${capitalize_default(u)}`,d&&`size${capitalize_default(d)}`],rail:[`rail`],track:[`track`],mark:[`mark`],markActive:[`markActive`],markLabel:[`markLabel`],markLabelActive:[`markLabelActive`],valueLabel:[`valueLabel`],thumb:[`thumb`,t&&`disabled`,d&&`thumbSize${capitalize_default(d)}`,u&&`thumbColor${capitalize_default(u)}`],active:[`active`],disabled:[`disabled`],focusVisible:[`focusVisible`]},getSliderUtilityClass,l)},Forward=({children:e})=>e,Slider=import_react$24.forwardRef(function(e,t){var n,a,o,s,l,u,d,f,m,h,v,y,b,x,S,C,T,E,D,O,k,j,M,N;let F=useDefaultProps({props:e,name:`MuiSlider`}),I=useRtl(),{"aria-label":L,"aria-valuetext":R,"aria-labelledby":z,component:B=`span`,components:V={},componentsProps:H={},color:U=`primary`,classes:W,className:G,disableSwap:ee=!1,disabled:te=!1,getAriaLabel:K,getAriaValueText:q,marks:ne=!1,max:re=100,min:J=0,orientation:ie=`horizontal`,shiftStep:ae=10,size:oe=`medium`,step:se=1,scale:ce=Identity,slotProps:Y,slots:le,track:ue=`normal`,valueLabelDisplay:de=`off`,valueLabelFormat:X=Identity}=F,fe=_objectWithoutPropertiesLoose$3(F,_excluded$1),pe=_extends$3({},F,{isRtl:I,max:re,min:J,classes:W,disabled:te,disableSwap:ee,orientation:ie,marks:ne,color:U,size:oe,step:se,shiftStep:ae,scale:ce,track:ue,valueLabelDisplay:de,valueLabelFormat:X}),{axisProps:me,getRootProps:he,getHiddenInputProps:ge,getThumbProps:Z,open:_e,active:Q,axis:$,focusedThumbIndex:ve,range:ye,dragging:be,marks:xe,values:Se,trackOffset:Ce,trackLeap:we,getThumbStyle:Te}=useSlider(_extends$3({},pe,{rootRef:t}));pe.marked=xe.length>0&&xe.some(e=>e.label),pe.dragging=be,pe.focusedThumbIndex=ve;let Ee=useUtilityClasses$1(pe),De=le?.root??V.Root??SliderRoot,Oe=le?.rail??V.Rail??SliderRail,ke=le?.track??V.Track??SliderTrack,Ae=le?.thumb??V.Thumb??SliderThumb,je=le?.valueLabel??V.ValueLabel??SliderValueLabel,Me=le?.mark??V.Mark??SliderMark,Ne=le?.markLabel??V.MarkLabel??SliderMarkLabel,Pe=le?.input??V.Input??`input`,Fe=Y?.root??H.root,Ie=Y?.rail??H.rail,Le=Y?.track??H.track,Re=Y?.thumb??H.thumb,ze=Y?.valueLabel??H.valueLabel,Be=Y?.mark??H.mark,Ve=Y?.markLabel??H.markLabel,He=Y?.input??H.input,Ue=useSlotProps({elementType:De,getSlotProps:he,externalSlotProps:Fe,externalForwardedProps:fe,additionalProps:_extends$3({},shouldSpreadAdditionalProps(De)&&{as:B}),ownerState:_extends$3({},pe,Fe?.ownerState),className:[Ee.root,G]}),We=useSlotProps({elementType:Oe,externalSlotProps:Ie,ownerState:pe,className:Ee.rail}),Ge=useSlotProps({elementType:ke,externalSlotProps:Le,additionalProps:{style:_extends$3({},me[$].offset(Ce),me[$].leap(we))},ownerState:_extends$3({},pe,Le?.ownerState),className:Ee.track}),Ke=useSlotProps({elementType:Ae,getSlotProps:Z,externalSlotProps:Re,ownerState:_extends$3({},pe,Re?.ownerState),className:Ee.thumb}),qe=useSlotProps({elementType:je,externalSlotProps:ze,ownerState:_extends$3({},pe,ze?.ownerState),className:Ee.valueLabel}),Je=useSlotProps({elementType:Me,externalSlotProps:Be,ownerState:pe,className:Ee.mark}),Ye=useSlotProps({elementType:Ne,externalSlotProps:Ve,ownerState:pe,className:Ee.markLabel}),Xe=useSlotProps({elementType:Pe,getSlotProps:ge,externalSlotProps:He,ownerState:pe});return(0,import_jsx_runtime.jsxs)(De,_extends$3({},Ue,{children:[(0,import_jsx_runtime.jsx)(Oe,_extends$3({},We)),(0,import_jsx_runtime.jsx)(ke,_extends$3({},Ge)),xe.filter(e=>e.value>=J&&e.value<=re).map((e,t)=>{let n=valueToPercent(e.value,J,re),a=me[$].offset(n),o;return o=ue===!1?Se.indexOf(e.value)!==-1:ue===`normal`&&(ye?e.value>=Se[0]&&e.value<=Se[Se.length-1]:e.value<=Se[0])||ue===`inverted`&&(ye?e.value<=Se[0]||e.value>=Se[Se.length-1]:e.value>=Se[0]),(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[(0,import_jsx_runtime.jsx)(Me,_extends$3({"data-index":t},Je,!isHostComponent(Me)&&{markActive:o},{style:_extends$3({},a,Je.style),className:clsx$1(Je.className,o&&Ee.markActive)})),e.label==null?null:(0,import_jsx_runtime.jsx)(Ne,_extends$3({"aria-hidden":!0,"data-index":t},Ye,!isHostComponent(Ne)&&{markLabelActive:o},{style:_extends$3({},a,Ye.style),className:clsx$1(Ee.markLabel,Ye.className,o&&Ee.markLabelActive),children:e.label}))]},t)}),Se.map((e,t)=>{let n=valueToPercent(e,J,re),a=me[$].offset(n),o=de===`off`?Forward:je;return(0,import_jsx_runtime.jsx)(o,_extends$3({},!isHostComponent(o)&&{valueLabelFormat:X,valueLabelDisplay:de,value:typeof X==`function`?X(ce(e),t):X,index:t,open:_e===t||Q===t||de===`on`,disabled:te},qe,{children:(0,import_jsx_runtime.jsx)(Ae,_extends$3({"data-index":t},Ke,{className:clsx$1(Ee.thumb,Ke.className,Q===t&&Ee.active,ve===t&&Ee.focusVisible),style:_extends$3({},a,Te(t),Ke.style),children:(0,import_jsx_runtime.jsx)(Pe,_extends$3({"data-index":t,"aria-label":K?K(t):L,"aria-valuenow":ce(e),"aria-labelledby":z,"aria-valuetext":q?q(ce(e),t):R,value:Se[t]},Xe))}))}),t)})]}))}),import_ZoomIn=__toESM(require_ZoomIn()),import_ZoomOut=__toESM(require_ZoomOut()),extendStatics$1=function(e,t){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},extendStatics$1(e,t)};function __extends$1(e,t){extendStatics$1(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var __assign$1=function(){return __assign$1=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var o in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__assign$1.apply(this,arguments)};function __rest$1(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var o=0,a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(n[a[o]]=e[a[o]]);return n}var initialState={wrapperComponent:null,contentComponent:null,previousScale:1,scale:1,positionX:0,positionY:0,options:{disabled:!1,transformEnabled:!0,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,limitToWrapper:!1,centerContent:!0,wrapperClass:``,contentClass:``},wheel:{disabled:!1,step:5,wheelEnabled:!0,touchPadEnabled:!0,limitsOnWheel:!1},pan:{disabled:!1,panAnimationType:`linear`,lockAxisX:!1,lockAxisY:!1,velocity:!0,velocityEqualToMove:!0,velocitySensitivity:2,velocityActiveScale:1,velocityMinSpeed:1,velocityBaseTime:1600,velocityAnimationType:`easeOutQuart`,padding:!0,paddingSize:30,panReturnAnimationTime:400,panReturnAnimationType:`easeOut`,disableOnTarget:[]},pinch:{disabled:!1},zoomIn:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},zoomOut:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},doubleClick:{disabled:!1,step:20,mode:`zoomIn`,animation:!0,animationType:`easeOut`,animationTime:200},reset:{disabled:!1,animation:!0,animationType:`easeOut`,animationTime:200},scalePadding:{disabled:!1,size:.2,animationTime:200,animationType:`easeOut`}},roundNumber=function(e,t){return Number(e.toFixed(t))},checkIsNumber=function(e,t){return typeof e==`number`?e:t},boundLimiter=function(e,t,n,a){return roundNumber(a?e<t?t:e>n?n:e:e,2)},calculateBoundingArea=function(e,t,n,a,o,s,l){var u=e>t?n*(l?1:.5):0,d=a>o?s*(l?1:.5):0;return{minPositionX:e-t-u,maxPositionX:u,minPositionY:a-o-d,maxPositionY:d}},getDistance=function(e,t){return Math.sqrt((e.pageX-t.pageX)**2+(e.pageY-t.pageY)**2)},deleteUndefinedProps=function(e){var t=__assign$1({},e);return Object.keys(t).forEach(function(e){return t[e]===void 0&&delete t[e]}),t},handleCallback=function(e,t){e&&typeof e==`function`&&e(t)},handleWheelStop=function(e,t,n){var a=n.scale,o=n.options,s=o.maxScale,l=o.minScale;return e?a<s||a>l||Math.sign(e.deltaY)!==Math.sign(t.deltaY)||e.deltaY>0&&e.deltaY<t.deltaY||e.deltaY<0&&e.deltaY>t.deltaY||Math.sign(e.deltaY)!==Math.sign(t.deltaY):!1},mergeProps=function(e,t){return Object.keys(e).reduce(function(n,a){return typeof t[a]==`object`&&t[a]!==null?n[a]=__assign$1(__assign$1({},e[a]),t[a]):n[a]=t[a]===void 0?e[a]:t[a],n},{})};function getWindowScaleY(e){return e?window.innerHeight/e.offsetHeight:0}function getWindowScaleX(e){return e?window.innerWidth/e.offsetWidth:0}var easeOut=function(e){return-Math.cos(e*Math.PI)/2+.5},linear=function(e){return e},easeInQuad=function(e){return e*e},easeOutQuad=function(e){return e*(2-e)},easeInOutQuad=function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic=function(e){return e*e*e},easeOutCubic=function(e){return--e*e*e+1},easeInOutCubic=function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart=function(e){return e*e*e*e},easeOutQuart=function(e){return 1- --e*e*e*e},easeInOutQuart=function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint=function(e){return e*e*e*e*e},easeOutQuint=function(e){return 1+--e*e*e*e*e},easeInOutQuint=function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},availableAnimations={easeOut,linear,easeInQuad,easeOutQuad,easeInOutQuad,easeInCubic,easeOutCubic,easeInOutCubic,easeInQuart,easeOutQuart,easeInOutQuart,easeInQuint,easeOutQuint,easeInOutQuint};function handleDisableAnimation(){this.mounted&&(this.animation&&cancelAnimationFrame(this.animation),this.animate=!1,this.animation=!1,this.velocity=!1)}function animate(e,t,n){var a=this;if(this.mounted){var o=new Date().getTime(),s=1;handleDisableAnimation.call(this),this.animation=function(){if(!(!a.animation||!a.mounted)){var l=new Date().getTime()-o,u=l/t,d=availableAnimations[e],f=d(u);l>=t?(n(s),a.animation=null):(n(f),requestAnimationFrame(a.animation))}},requestAnimationFrame(this.animation)}}function animateComponent(e){var t=this,n=e.targetState,a=e.speed,o=e.type,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=n.scale-l,m=n.positionX-u,h=n.positionY-d;a===0?(this.stateProvider.previousScale=this.stateProvider.scale,this.stateProvider.scale=n.scale,this.stateProvider.positionX=n.positionX,this.stateProvider.positionY=n.positionY,this.applyTransformation()):animate.call(this,o,a,function(e){t.stateProvider.previousScale=t.stateProvider.scale,t.stateProvider.scale=l+f*e,t.stateProvider.positionX=u+m*e,t.stateProvider.positionY=d+h*e,t.applyTransformation()})}function checkZoomBounds(e,t,n,a,o){var s=t-(o?a:0);return!isNaN(n)&&e>=n?n:!isNaN(t)&&e<=s?s:e}function checkPositionBounds(e,t,n,a,o,s){var l=n.minPositionX,u=n.minPositionY,d=n.maxPositionX,f=n.maxPositionY,m=s?o*s.offsetWidth/100:0,h=s?o*s.offsetHeight/100:0;return{x:boundLimiter(e,l-m,d+m,a),y:boundLimiter(t,u-h,f+h,a)}}function getDelta(e,t){return checkIsNumber(t,e?e.deltaY<0?1:-1:0)}function wheelMousePosition(e,t,n){var a=t.getBoundingClientRect(),o=(e.clientX-a.left)/n,s=(e.clientY-a.top)/n;return(isNaN(o)||isNaN(s))&&console.error(`No mouse or touch offset found`),{mouseX:o,mouseY:s}}function getComponentsSizes(e,t,n){var a=e.offsetWidth,o=e.offsetHeight,s=t.offsetWidth,l=t.offsetHeight,u=s*n,d=l*n;return{wrapperWidth:a,wrapperHeight:o,newContentWidth:u,newDiffWidth:a-u,newContentHeight:d,newDiffHeight:o-d}}function handleCalculatePositions(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.options.transformEnabled,m=n-l;return typeof e!=`number`||typeof t!=`number`?console.error(`Mouse X and Y position were not provided!`):f?checkPositionBounds(u-e*m,d-t*m,a,o,0,null):{newPositionX:u,newPositionY:d}}function getClientPosition(e){var t=e.touches;return t&&t.length===1?{clientX:t[0].clientX,clientY:t[0].clientY}:t?null:{clientX:e.clientX,clientY:e.clientY}}function handlePanning(e){var t=this.stateProvider,n=t.scale,a=t.positionX,o=t.positionY,s=t.options,l=s.limitToBounds,u=s.minScale,d=t.pan,f=d.lockAxisX,m=d.lockAxisY,h=d.padding,v=d.paddingSize,y=t.wrapperComponent;if(this.startCoords){var b=this.startCoords,x=b.x,S=b.y,C=getClientPosition(e);if(!C)return console.error(`Cannot find mouse client positions`);var T=C.clientX,E=C.clientY,D=T-x,O=E-S,k=f?a:D,j=m?o:O,M=h&&n>=u?v:0;if(!(k===a&&j===o)){var N=checkPositionBounds(k,j,this.bounds,l,M,y);handlePaddingAnimation.call(this,N.x,N.y)}}}function handlePanningAnimation(){var e=this.stateProvider,t=e.scale,n=e.options.minScale,a=e.pan,o=a.disabled,s=a.padding,l=a.panReturnAnimationTime,u=a.panReturnAnimationType;if(!(o||t<n||!s)){var d=handlePanToBounds.call(this);animateComponent.call(this,{targetState:d,speed:l,type:u})}}function handlePanToBounds(){var e=this.stateProvider,t=e.positionX,n=e.positionY,a=e.scale,o=e.options,s=o.disabled,l=o.limitToBounds,u=o.limitToWrapper,d=this.state.wrapperComponent;if(!s){var f=this.bounds,m=f.maxPositionX,h=f.minPositionX,v=f.maxPositionY,y=f.minPositionY,b=t>m||t<h,x=n>v||n<y,S=t>m?d.offsetWidth:this.stateProvider.minPositionX||0,C=n>v?d.offsetHeight:this.stateProvider.minPositionY||0,T=S,E=C,D=handleCalculatePositions.call(this,T,E,a,this.bounds,l||u),O=D.x,k=D.y;return{scale:a,positionX:b?O:t,positionY:x?k:n}}}function handlePaddingAnimation(e,t){this.stateProvider.pan.padding&&(this.stateProvider.positionX=e,this.stateProvider.positionY=t,this.applyTransformation())}function handleCalculateZoom(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.options,d=u.maxScale,f=u.minScale,m=s.scalePadding,h=m.size,v=m.disabled,y=s.wrapperComponent,b=null;if(o){var x=window.innerWidth*1e-4,S=e<0?30:20;b=l+(t-t*x)*e*(l/S)}else{var C=2-window.innerWidth/y.offsetWidth,x=Math.max(.2,Math.min(.99,C)),S=20;b=l+t*e*((l-l*x)/S)}if(a)return b;var T=!n&&!v;return checkZoomBounds(roundNumber(b,3),f,d,h,T)}function handleCalculateBounds(e,t){var n=this.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=getComponentsSizes(a,o,e),l=s.wrapperWidth,u=s.wrapperHeight,d=s.newContentWidth,f=s.newDiffWidth,m=s.newContentHeight,h=s.newDiffHeight,v=calculateBoundingArea(l,d,f,u,m,h,t);return this.bounds=v,v}function handleWheelZoom(e){var t=this.stateProvider,n=t.scale,a=t.contentComponent,o=t.options.limitToBounds,s=t.scalePadding,l=s.size,u=s.disabled,d=t.wheel,f=d.step,m=d.limitsOnWheel;e.preventDefault(),e.stopPropagation();var h=getDelta(e,null),v=handleCalculateZoom.call(this,h,f,!e.ctrlKey);if(n!==v){var y=handleCalculateBounds.call(this,v,!m),b=wheelMousePosition(e,a,n),x=b.mouseX,S=b.mouseY,C=o&&(u||l===0||m),T=handleCalculatePositions.call(this,x,S,v,y,C),E=T.x,D=T.y;this.bounds=y,this.stateProvider.previousScale=n,this.stateProvider.scale=v,this.stateProvider.positionX=E,this.stateProvider.positionY=D,this.applyTransformation()}}function handleZoomToPoint(e,t,n,a,o){var s=this.stateProvider,l=s.contentComponent,u=s.options,d=u.disabled,f=u.minScale,m=u.maxScale,h=u.limitToBounds,v=u.limitToWrapper;if(!(d||e)){var y=checkZoomBounds(roundNumber(t,2),f,m,null,null),b=handleCalculateBounds.call(this,y,v),x=n,S=a;if(o){var C=wheelMousePosition(o,l,t);x=C.mouseX,S=C.mouseY}var T=handleCalculatePositions.call(this,x,S,y,b,h);return{scale:y,positionX:T.x,positionY:T.y}}}function handlePaddingAnimation$1(){var e=this.stateProvider,t=e.scale,n=e.wrapperComponent,a=e.options,o=a.minScale,s=a.limitToBounds,l=e.scalePadding,u=l.disabled,d=l.animationTime,f=l.animationType,m=u||t>=o;if((t>=1||s)&&handlePanningAnimation.call(this),!m){var h=n.offsetWidth/2,v=n.offsetHeight/2,y=handleZoomToPoint.call(this,!1,o,h,v,null);animateComponent.call(this,{targetState:y,speed:d,type:f})}}function handleDoubleClick(e){e.preventDefault(),e.stopPropagation();var t=this.stateProvider,n=t.contentComponent,a=t.scale,o=t.doubleClick,s=o.disabled,l=o.mode,u=o.step,d=o.animationTime,f=o.animationType;if(l===`reset`)return resetTransformations.call(this,e,d);var m=l===`zoomOut`?-1:1,h=handleCalculateZoom.call(this,m,u,void 0,void 0,!0),v=wheelMousePosition(e,n,a),y=v.mouseX,b=v.mouseY,x=handleZoomToPoint.call(this,s,h,y,b);if(x.scale!==a){var S=getButtonAnimationTime(handleCalculateZoom.call(this,m,u,!0,void 0,!0),h,d);animateComponent.call(this,{targetState:x,speed:S,type:f})}}function handleZoomControls(e,t){var n=this.stateProvider,a=n.scale,o=n.positionX,s=n.positionY,l=n.wrapperComponent,u=n.zoomIn,d=n.zoomOut,f=l.offsetWidth,m=l.offsetHeight,h=(f/2-o)/a,v=(m/2-s)/a,y=handleCalculateZoom.call(this,e,t,void 0,void 0,!0),b=y>a,x=b?u.animationTime:d.animationTime,S=b?u.animationType:d.animationType,C=b?u.disabled:d.disabled,T=handleZoomToPoint.call(this,C,y,h,v);if(T.scale!==a){var E=getButtonAnimationTime(handleCalculateZoom.call(this,e,t,!0,void 0,!0),y,x);animateComponent.call(this,{targetState:T,speed:E,type:S})}}function resetTransformations(e){var t=this.props.defaultValues,n=t.defaultScale,a=t.defaultPositionX,o=t.defaultPositionY,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.reset,m=s.options,h=m.disabled,v=m.limitToBounds,y=m.centerContent,b=m.limitToWrapper;if(!(h||f.disabled)&&!(l===n&&u===a&&d===o)){var x=typeof e==`number`?e:f.animationTime,S=checkIsNumber(n,initialState.scale),C=checkIsNumber(a,initialState.positionX),T=checkIsNumber(o,initialState.positionY);if(v&&!b||y){var E=handleCalculateBounds.call(this,S,b);C=E.minPositionX,T=E.minPositionY}var D={scale:S,positionX:C,positionY:T};animateComponent.call(this,{targetState:D,speed:x,type:f.animationType})}}function getButtonAnimationTime(e,t,n){return t/e*n}function round(e,t){var n=10**t;return Math.round(e*n)/n}function getCurrentDistance(e){return getDistance(e.touches[0],e.touches[1])}function checkIfInfinite(e){return e===1/0||e===-1/0}function calculatePinchZoom(e,t){var n=this.stateProvider,a=n.options,o=a.minScale,s=a.maxScale,l=n.scalePadding,u=l.size,d=l.disabled;if(typeof t!=`number`||typeof e!=`number`)return console.error(`Pinch touches distance was not provided`);if(!(e<0))return checkZoomBounds(roundNumber(e/t*this.pinchStartScale,2),o,s,u,!d)}function calculateMidpoint(e,t,n){var a=n.getBoundingClientRect(),o=e.touches,s=round(o[0].clientX-a.left,5),l=round(o[0].clientY-a.top,5),u=round(o[1].clientX-a.left,5),d=round(o[1].clientY-a.top,5);return{mouseX:(s+u)/2/t,mouseY:(l+d)/2/t}}function handleZoomPinch(e){var t=this.stateProvider,n=t.scale,a=t.options,o=a.limitToBounds,s=a.limitToWrapper,l=t.scalePadding,u=l.disabled,d=l.size,f=t.wheel.limitsOnWheel,m=t.pinch,h=this.state.contentComponent;if(!(m.disabled||this.stateProvider.options.disabled)&&(e.cancelable&&(e.preventDefault(),e.stopPropagation()),this.pinchStartDistance!==null)){var v=calculateMidpoint(e,n,h),y=v.mouseX,b=v.mouseY;if(!(checkIfInfinite(y)||checkIfInfinite(b))){var x=getCurrentDistance(e),S=calculatePinchZoom.call(this,x,this.pinchStartDistance);if(!(checkIfInfinite(S)||S===n)){var C=handleCalculateBounds.call(this,S,s),T=o&&(u||d===0||f),E=handleCalculatePositions.call(this,y,b,S,C,T),D=E.x,O=E.y;this.lastDistance=x,this.stateProvider.positionX=D,this.stateProvider.positionY=O,this.stateProvider.scale=S,this.stateProvider.previousScale=n,this.applyTransformation()}}}}var throttleTime=30;function velocityTimeSpeed(e,t){return this.stateProvider.pan.velocityEqualToMove?t-t/Math.max(1,e):t}function handleEnableVelocity(){this.setState({startAnimation:!1})}function handleFireVelocity(){this.setState({startAnimation:!0})}function animateVelocity(){var e=this,t=this.stateProvider,n=t.positionX,a=t.positionY,o=t.options.limitToBounds,s=t.pan,l=s.velocityBaseTime,u=s.lockAxisX,d=s.lockAxisY,f=s.velocityAnimationType,m=s.panReturnAnimationTime,h=s.panReturnAnimationType,v=s.padding,y=s.paddingSize,b=t.wrapperComponent;if(this.mounted){if(!this.velocity||!this.bounds)return handleDisableAnimation.call(this);var x=this.bounds,S=x.maxPositionX,C=x.minPositionX,T=x.maxPositionY,E=x.minPositionY,D=this.velocity,O=D.velocityX,k=D.velocityY,j=D.velocity,M=velocityTimeSpeed.call(this,j,l);if(!M){handlePanningAnimation.call(this);return}var N=O,F=k,I=M>m?M:m,L=v?y:0,R=b?L*b.offsetWidth/100:0,z=b?L*b.offsetHeight/100:0,B=S+R,V=C-R,H=T+z,U=E-z,W=checkPositionBounds(n,a,this.bounds,o,L,b),G=new Date().getTime();animate.call(this,f,I,function(t){var s=new Date().getTime()-G,l=s/m,f=availableAnimations[h],v=f(l);(s>m||v>1||v===1/0||v===-1/0)&&(v=1);var y=getPosition(u,N,t,v,C,S,o,n,W.x,V,B),b=getPosition(d,F,t,v,E,T,o,a,W.y,U,H);(n!==y||a!==b)&&(e.stateProvider.positionX=y,e.stateProvider.positionY=b,e.applyTransformation())})}}function calculateVelocityStart(e){var t=this,n=this.stateProvider,a=n.scale,o=n.options.disabled,s=n.pan,l=s.velocity,u=s.velocitySensitivity,d=s.velocityActiveScale,f=s.velocityMinSpeed,m=n.wrapperComponent;if(!(!l||d>=a||o)){handleEnableVelocity.call(this);var h=Date.now();if(this.lastMousePosition){var v=getClientPosition(e);if(!v)return console.error(`No mouse or touch position detected`);var y=v.clientX,b=v.clientY,x=y-this.lastMousePosition.clientX,S=b-this.lastMousePosition.clientY,C=h-this.velocityTime,T=2-m.offsetWidth/window.innerWidth,E=2-m.offsetHeight/window.innerHeight,D=20*Math.max(f,Math.min(2,T)),O=20*Math.max(f,Math.min(2,E)),k=x/C*u*a*D,j=S/C*u*a*O,M=x*x+S*S,N=Math.sqrt(M)/C*u;if(this.velocity&&N<this.velocity.velocity&&this.throttle)return;this.velocity={velocityX:k,velocityY:j,velocity:N},this.throttle&&clearTimeout(this.throttle),this.throttle=setTimeout(function(){t.mounted&&(t.throttle=!1)},throttleTime)}var F=getClientPosition(e);this.lastMousePosition=F,this.velocityTime=h}}function getPosition(e,t,n,a,o,s,l,u,d,f,m){if(l){if(d>o&&u>s){var h=d-(d-s)*a;return h>m?m:h<s?s:h}if(d<o&&u<o){var h=d-(d-o)*a;return h<f?f:h>o?o:h}}return e?d:boundLimiter(u+t*n,o,s,l)}function makePassiveEventOption(e){return e}var propsList=`previousScale.scale.positionX.positionY.defaultPositionX.defaultPositionY.defaultScale.onWheelStart.onWheel.onWheelStop.onPanningStart.onPanning.onPanningStop.onPinchingStart.onPinching.onPinchingStop.onZoomChange.options.wheel.scalePadding.pan.pinch.zoomIn.zoomOut.doubleClick.reset`.split(`.`),getValidPropsFromObject=function(e){return Object.keys(e).reduce(function(t,n){return propsList.includes(n)&&(t[n]=e[n]),t},{})},Context=import_react$24.createContext({}),wheelStopEventTimer=null,wheelStopEventTime=180,wheelAnimationTimer=null,wheelAnimationTime=100,StateProvider=function(e){__extends$1(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.mounted=!0,t.state={wrapperComponent:void 0,contentComponent:void 0},t.stateProvider=__assign$1(__assign$1(__assign$1(__assign$1({},initialState),mergeProps(initialState,t.props.dynamicValues)),t.props.defaultValues),{previousScale:t.props.dynamicValues.scale||t.props.defaultValues.scale||initialState.scale}),t.windowToWrapperScaleX=0,t.windowToWrapperScaleY=0,t.startCoords=null,t.isDown=!1,t.pinchStartDistance=null,t.lastDistance=null,t.pinchStartScale=null,t.distance=null,t.bounds=null,t.velocityTime=null,t.lastMousePosition=null,t.velocity=null,t.offsetX=null,t.offsetY=null,t.throttle=!1,t.previousWheelEvent=null,t.lastScale=null,t.animate=null,t.animation=null,t.maxBounds=null,t.handleWheel=function(e){var n=t.stateProvider,a=n.scale,o=n.wheel,s=o.disabled,l=o.wheelEnabled,u=o.touchPadEnabled,d=t.props,f=d.onWheelStart,m=d.onWheel,h=d.onWheelStop,v=t.state,y=v.wrapperComponent,b=v.contentComponent;t.isDown||s||t.stateProvider.options.disabled||!y||!b||!l&&!e.ctrlKey||!u&&e.ctrlKey||(wheelStopEventTimer||(t.lastScale=a,handleDisableAnimation.call(t),handleCallback(f,t.getCallbackProps())),handleWheelZoom.call(t,e),handleCallback(m,t.getCallbackProps()),t.applyTransformation(null,null,null),t.previousWheelEvent=e,handleWheelStop(t.previousWheelEvent,e,t.stateProvider)&&(clearTimeout(wheelStopEventTimer),wheelStopEventTimer=setTimeout(function(){t.mounted&&(handleCallback(h,t.getCallbackProps()),wheelStopEventTimer=null)},wheelStopEventTime)),t.animate=!1,t.lastScale=t.stateProvider.scale,clearTimeout(wheelAnimationTimer),wheelAnimationTimer=setTimeout(function(){t.mounted&&handlePaddingAnimation$1.call(t,e)},wheelAnimationTime))},t.checkPanningTarget=function(e){var n=t.stateProvider.pan.disableOnTarget;return n.map(function(e){return e.toUpperCase()}).includes(e.target.tagName)||n.find(function(t){return e.target.classList.value.includes(t)})},t.checkIsPanningActive=function(e){var n=t.stateProvider.pan.disabled,a=t.state,o=a.wrapperComponent,s=a.contentComponent;return!t.isDown||n||t.stateProvider.options.disabled||e.touches&&(e.touches.length!==1||Math.abs(t.startCoords.x-e.touches[0].clientX)<1||Math.abs(t.startCoords.y-e.touches[0].clientY)<1)||!o||!s},t.handleSetUpPanning=function(e,n){var a=t.stateProvider,o=a.positionX,s=a.positionY;t.isDown=!0,t.startCoords={x:e-o,y:n-s},handleCallback(t.props.onPanningStart,t.getCallbackProps())},t.handleStartPanning=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.scale,s=n.options,l=s.minScale,u=s.maxScale,d=s.limitToWrapper,f=n.pan.disabled,m=e.target,h=e.touches;f||t.stateProvider.options.disabled||a&&!a.contains(m)||t.checkPanningTarget(e)||o<l||o>u||(handleDisableAnimation.call(t),t.bounds=handleCalculateBounds.call(t,o,d),h&&h.length===1&&t.handleSetUpPanning(h[0].clientX,h[0].clientY),h||t.handleSetUpPanning(e.clientX,e.clientY))},t.handlePanning=function(e){t.isDown&&e.preventDefault(),!t.checkIsPanningActive(e)&&(e.stopPropagation(),calculateVelocityStart.call(t,e),handlePanning.call(t,e),handleCallback(t.props.onPanning,t.getCallbackProps()))},t.handleStopPanning=function(){if(t.isDown){t.isDown=!1,t.animate=!1,t.animation=!1,handleFireVelocity.call(t),handleCallback(t.props.onPanningStop,t.getCallbackProps());var e=t.stateProvider,n=e.pan.velocity,a=e.scale;t.velocity&&n&&a>1?animateVelocity.call(t):handlePanningAnimation.call(t)}},t.handlePinchStart=function(e){var n=t.stateProvider.scale;e.preventDefault(),e.stopPropagation(),handleDisableAnimation.call(t);var a=getDistance(e.touches[0],e.touches[1]);t.pinchStartDistance=a,t.lastDistance=a,t.pinchStartScale=n,t.isDown=!1,handleCallback(t.props.onPinchingStart,t.getCallbackProps())},t.handlePinch=function(e){t.isDown=!1,handleZoomPinch.call(t,e),handleCallback(t.props.onPinching,t.getCallbackProps())},t.handlePinchStop=function(){typeof t.pinchStartScale==`number`&&(t.isDown=!1,t.velocity=null,t.lastDistance=null,t.pinchStartScale=null,t.pinchStartDistance=null,handlePaddingAnimation$1.call(t),handleCallback(t.props.onPinchingStop,t.getCallbackProps()))},t.handleTouchStart=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=n.scale,l=n.options,u=l.disabled,d=l.minScale,f=e.touches;if(!(u||!a||!o||s<d)){if(handleDisableAnimation.call(t),f&&f.length===1)return t.handleStartPanning(e);if(f&&f.length===2)return t.handlePinchStart(e)}},t.handleTouch=function(e){var n=t.stateProvider,a=n.pan,o=n.pinch;if(!n.options.disabled){if(!a.disabled&&e.touches.length===1)return t.handlePanning(e);if(!o.disabled&&e.touches.length===2)return t.handlePinch(e)}},t.handleTouchStop=function(){t.handleStopPanning(),t.handlePinchStop()},t.zoomIn=function(e){var n=t.stateProvider,a=n.zoomIn,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom in function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,1,s)},t.zoomOut=function(e){var n=t.stateProvider,a=n.zoomOut,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom out function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,-1,s)},t.handleDbClick=function(e){var n=t.stateProvider,a=n.options,o=n.doubleClick,s=o.disabled,l=o.step,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Double click function requires event prop`);s||a.disabled||!d||!f||handleDoubleClick.call(t,e,1,l)},t.setScale=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options.disabled,f=t.state,m=f.wrapperComponent,h=f.contentComponent;if(!(d||!m||!h)){var v={positionX:s,positionY:l,scale:isNaN(e)?u:e};animateComponent.call(t,{targetState:v,speed:n,type:a})}},t.setPositionX=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:isNaN(e)?s:e,positionY:l,scale:u};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setPositionY=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.scale,u=o.positionY,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:s,positionY:isNaN(e)?u:e,scale:l};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setTransform=function(e,n,a,o,s){o===void 0&&(o=200),s===void 0&&(s=`easeOut`);var l=t.stateProvider,u=l.positionX,d=l.positionY,f=l.scale,m=l.options,h=m.disabled,v=m.transformEnabled,y=t.state,b=y.wrapperComponent,x=y.contentComponent;if(!(h||!v||!b||!x)){var S={positionX:isNaN(e)?u:e,positionY:isNaN(n)?d:n,scale:isNaN(a)?f:a};animateComponent.call(t,{targetState:S,speed:o,type:s})}},t.resetTransform=function(){var e=t.stateProvider.options,n=e.disabled,a=e.transformEnabled;n||!a||resetTransformations.call(t)},t.setDefaultState=function(){t.animation=null,t.stateProvider=__assign$1(__assign$1(__assign$1({},t.stateProvider),{scale:initialState.scale,positionX:initialState.positionX,positionY:initialState.positionY}),t.props.defaultValues),t.forceUpdate()},t.setWrapperComponent=function(e){t.setState({wrapperComponent:e})},t.setContentComponent=function(e){t.setState({contentComponent:e},function(){var n=t.stateProvider,a=n.wrapperComponent,o=n.options,s=o.centerContent,l=o.limitToBounds,u=o.limitToWrapper,d=n.scale,f=t.props.defaultValues,m=f.positionX,h=f.positionY;if(l&&!u||s&&!m&&!h){var v=`translate(25%, 25%) scale(`+d+`)`;e.style.transform=v,e.style.WebkitTransform=v,t.forceUpdate();var y=new Date().getTime(),b=2e3,x=setInterval(function(){if(a.offsetWidth){var e=handleCalculateBounds.call(t,d,!1);t.stateProvider.positionX=e.minPositionX,t.stateProvider.positionY=e.minPositionY,t.applyTransformation(null,null,null),clearInterval(x),x=null}else new Date().getTime()-y>b&&(clearInterval(x),x=null)},20)}else t.applyTransformation(null,null,null)})},t.applyTransformation=function(e,n,a){if(t.mounted){var o=t.state.contentComponent,s=t.props.onZoomChange,l=t.stateProvider,u=l.previousScale,d=l.scale,f=l.positionX,m=l.positionY;if(!o)return console.error(`There is no content component`);var h=`translate(`+(n||f)+`px, `+(a||m)+`px) scale(`+(e||d)+`)`;o.style.transform=h,o.style.WebkitTransform=h,t.forceUpdate(),s&&u!==d&&handleCallback(s,t.getCallbackProps())}},t.getCallbackProps=function(){return getValidPropsFromObject(t.stateProvider)},t}return t.prototype.componentDidMount=function(){var e=makePassiveEventOption(!1);window.addEventListener(`mousedown`,this.handleStartPanning,e),window.addEventListener(`mousemove`,this.handlePanning,e),window.addEventListener(`mouseup`,this.handleStopPanning,e)},t.prototype.componentWillUnmount=function(){var e=makePassiveEventOption(!1);window.removeEventListener(`mousedown`,this.handleStartPanning,e),window.removeEventListener(`mousemove`,this.handlePanning,e),window.removeEventListener(`mouseup`,this.handleStopPanning,e),handleDisableAnimation.call(this)},t.prototype.componentDidUpdate=function(e,t){var n=this.state,a=n.wrapperComponent,o=n.contentComponent,s=this.props.dynamicValues;if(!t.contentComponent&&o&&(this.stateProvider.contentComponent=o),!t.wrapperComponent&&a&&a!==void 0){this.stateProvider.wrapperComponent=a,this.windowToWrapperScaleX=getWindowScaleX(a),this.windowToWrapperScaleY=getWindowScaleY(a);var l=makePassiveEventOption(!1);a.addEventListener(`wheel`,this.handleWheel,l),a.addEventListener(`dblclick`,this.handleDbClick,l),a.addEventListener(`touchstart`,this.handleTouchStart,l),a.addEventListener(`touchmove`,this.handleTouch,l),a.addEventListener(`touchend`,this.handleTouchStop,l)}(a&&o||e.dynamicValues!==s)&&(this.maxBounds=handleCalculateBounds.call(this,this.stateProvider.scale,this.stateProvider.options.limitToWrapper)),e.dynamicValues&&e.dynamicValues!==s&&(this.animation=null,this.stateProvider=__assign$1(__assign$1({},this.stateProvider),mergeProps(this.stateProvider,s)),this.applyTransformation(null,null,null))},t.prototype.render=function(){var e=this.state,t=e.wrapperComponent,n=e.contentComponent,a={loaded:!!(t&&n),state:this.getCallbackProps(),dispatch:{setScale:this.setScale,setPositionX:this.setPositionX,setPositionY:this.setPositionY,zoomIn:this.zoomIn,zoomOut:this.zoomOut,setTransform:this.setTransform,resetTransform:this.resetTransform,setDefaultState:this.setDefaultState},nodes:{setWrapperComponent:this.setWrapperComponent,setContentComponent:this.setContentComponent}},o=this.props.children,s=typeof o==`function`?o(__assign$1(__assign$1({},a.state),a.dispatch)):o;return import_react$24.createElement(Context.Provider,{value:a},s)},t}(import_react$24.Component),TransformWrapper=function(e){var t=e.children,n=e.defaultPositionX,a=e.defaultPositionY,o=e.defaultScale,s=e.onWheelStart,l=e.onWheel,u=e.onWheelStop,d=e.onPanningStart,f=e.onPanning,m=e.onPanningStop,h=e.onPinchingStart,v=e.onPinching,y=e.onPinchingStop,b=e.onZoomChange,x=__rest$1(e,[`children`,`defaultPositionX`,`defaultPositionY`,`defaultScale`,`onWheelStart`,`onWheel`,`onWheelStop`,`onPanningStart`,`onPanning`,`onPanningStop`,`onPinchingStart`,`onPinching`,`onPinchingStop`,`onZoomChange`]),S=__assign$1({},x);return S.options&&S.options.limitToWrapper&&(S.options.limitToBounds=!0),import_react$24.createElement(StateProvider,{defaultValues:deleteUndefinedProps({positionX:n,positionY:a,scale:o}),dynamicValues:deleteUndefinedProps(getValidPropsFromObject(S)),onWheelStart:s,onWheel:l,onWheelStop:u,onPanningStart:d,onPanning:f,onPanningStop:m,onPinchingStart:h,onPinching:v,onPinchingStop:y,onZoomChange:b},t)};function styleInject(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>`u`)){var a=document.head||document.getElementsByTagName(`head`)[0],o=document.createElement(`style`);o.type=`text/css`,n===`top`&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var css=`.TransformComponent-module_container__3NwNd {
|
|
729
|
+
`,circularDashKeyframe)),CircularProgress=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCircularProgress`}),{className:a,color:o=`primary`,disableShrink:s=!1,size:l=40,style:u,thickness:d=3.6,value:f=0,variant:m=`indeterminate`}=n,h=_objectWithoutPropertiesLoose$3(n,_excluded$2),v=_extends$3({},n,{color:o,disableShrink:s,size:l,thickness:d,value:f,variant:m}),y=useUtilityClasses$2(v),b={},x={},S={};if(m===`determinate`){let e=2*Math.PI*((SIZE-d)/2);b.strokeDasharray=e.toFixed(3),S[`aria-valuenow`]=Math.round(f),b.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,x.transform=`rotate(-90deg)`}return(0,import_jsx_runtime.jsx)(CircularProgressRoot,_extends$3({className:clsx$1(y.root,a),style:_extends$3({width:l,height:l},x,u),ownerState:v,ref:t,role:`progressbar`},S,h,{children:(0,import_jsx_runtime.jsx)(CircularProgressSVG,{className:y.svg,ownerState:v,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:(0,import_jsx_runtime.jsx)(CircularProgressCircle,{className:y.circle,style:b,ownerState:v,cx:SIZE,cy:SIZE,r:(SIZE-d)/2,fill:`none`,strokeWidth:d})})}))});function DayAndProgressContainer({dayCount:e,experience:t,itemsSold:n}){let a=levelAchieved(t),o=scaleNumber(t,experienceNeededForLevel(a),experienceNeededForLevel(a+1),0,100),s=experienceNeededForLevel(a+1)-t,l=a+1;return(0,import_jsx_runtime.jsxs)(`h2`,{className:`day-and-progress-container`,children:[(0,import_jsx_runtime.jsxs)(`span`,{children:[`Day `,integerString(e),`, level:`]}),(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,placement:`top`,title:EXPERIENCE_GAUGE_TOOLTIP_LABEL`${s}${l}`,children:(0,import_jsx_runtime.jsxs)(Box,{children:[(0,import_jsx_runtime.jsx)(CircularProgress,{value:o,variant:`determinate`}),(0,import_jsx_runtime.jsx)(`span`,{className:`current-level`,children:integerString(a)})]})})]})}DayAndProgressContainer.propTypes={dayCount:import_prop_types$1.number.isRequired,experience:import_prop_types$1.number.isRequired,itemsSold:import_prop_types$1.object.isRequired};function Consumer$15(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(DayAndProgressContainer,{...t,...n,...e})})}var FarmNameDisplay=({farmName:e,handleFarmNameUpdate:t})=>{let[n,a]=(0,import_react$24.useState)(e);return(0,import_react$24.useEffect)(()=>{a(e)},[e,a]),(0,import_jsx_runtime.jsxs)(`h2`,{className:`farm-name`,children:[(0,import_jsx_runtime.jsx)(TextField,{variant:`standard`,inputProps:{maxLength:12},onChange:({target:{value:e}})=>{a(e)},onBlur:({target:{value:e}})=>{t(e)},placeholder:`Farm Name`,value:n}),` `,`Farm`]})},OnlineControls=({activePlayers:e,handleActivePlayerButtonClick:t,handleChatRoomOpenStateChange:n,handleOnlineToggleChange:a,handleRoomChange:o,isChatAvailable:s,isOnline:l,room:u})=>{let[d,f]=(0,import_react$24.useState)(u);(0,import_react$24.useEffect)(()=>{f(u)},[u,f]);let m=()=>{n(!0)},h=()=>{o(d)},v=e=>{h(),a(e)};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(FormControl,{variant:`standard`,className:`online-control-container`,component:`fieldset`,children:[(0,import_jsx_runtime.jsx)(FormGroup,{className:`toggle-container`,children:(0,import_jsx_runtime.jsx)(FormControlLabel,{control:(0,import_jsx_runtime.jsx)(Switch,{color:`primary`,checked:l,onChange:(e,t)=>{v(t)},name:`play-online`}),label:`Play online`})}),(0,import_jsx_runtime.jsx)(TextField,{className:`room-name`,inputProps:{maxLength:25},label:`Room name`,onChange:({target:{value:e}})=>{f(e)},onKeyUp:({key:e})=>{e===`Enter`&&h()},value:d,variant:`outlined`})]}),e&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(Button,{color:`primary`,onClick:t,variant:`contained`,children:[`Connected players: `,integerString(e)]}),s?(0,import_jsx_runtime.jsx)(Button,{variant:`contained`,color:`primary`,onClick:m,children:`Open chat`}):(0,import_jsx_runtime.jsxs)(Typography,{className:`chat-placeholder`,children:[`Chat is available for online rooms other than "`,`global`,`"`]})]})]})},{FARMERS_LOG,PRICE_EVENTS,STATS,ACHIEVEMENTS,ACCOUNTING,SETTINGS,ONLINE_PEERS,KEYBINDINGS}=dialogView,dialogTriggerTextMap={[FARMERS_LOG]:`Open Farmer's Log (l)`,[PRICE_EVENTS]:`See Price Events (e)`,[STATS]:`View your stats (s)`,[ACHIEVEMENTS]:`View Achievements (a)`,[ACCOUNTING]:`View Bank Account (b)`,[SETTINGS]:`View Settings (comma)`},dialogTitleMap={[FARMERS_LOG]:`Farmer's Log`,[PRICE_EVENTS]:`Price Events`,[STATS]:`Farm Stats`,[ACHIEVEMENTS]:`Achievements`,[ACCOUNTING]:`Bank Account`,[SETTINGS]:`Settings`,[ONLINE_PEERS]:`Active Players`,[KEYBINDINGS]:`Keyboard Shortcuts`},dialogContentMap={[FARMERS_LOG]:(0,import_jsx_runtime.jsx)(Consumer$20,{}),[PRICE_EVENTS]:(0,import_jsx_runtime.jsx)(Consumer$18,{}),[STATS]:(0,import_jsx_runtime.jsx)(Consumer$16,{}),[ACHIEVEMENTS]:(0,import_jsx_runtime.jsx)(Consumer$21,{}),[ACCOUNTING]:(0,import_jsx_runtime.jsx)(Consumer$23,{}),[SETTINGS]:(0,import_jsx_runtime.jsx)(Consumer$17,{}),[ONLINE_PEERS]:(0,import_jsx_runtime.jsx)(Consumer$19,{}),[KEYBINDINGS]:(0,import_jsx_runtime.jsx)(KeybindingsView,{})},Navigation=({activePlayers:e,blockInput:t,currentDialogView:n,farmName:a,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleClickDialogViewButton:l,handleCloseDialogView:u,handleDialogViewExited:d,handleFarmNameUpdate:f,handleOnlineToggleChange:m,handleRoomChange:h,handleViewChange:v,inventory:y,inventoryLimit:b,isChatAvailable:x,isDialogViewOpen:S,isOnline:C,room:T,stageFocus:E,viewList:D,currentDialogViewLowerCase:O=(n||``).toLowerCase(),modalTitleId:k=`${O}-modal-title`,modalContentId:j=`${O}-modal-content`})=>(0,import_jsx_runtime.jsxs)(Header,{className:`Navigation`,sx:{flexDirection:`column`,flexShrink:0,display:`flex`,"& .version":{fontFamily:`"Francois One", sans-serif`,textAlign:`center`},"& .farm-name":{lineHeight:`1.3em`,margin:`0.25em 0`,"& .MuiInput-root":{background:`none`,margin:0,"& input":{fontFamily:`"Francois One"`,paddingLeft:`0.5em`,paddingRight:`0.5em`,textAlign:`center`}}},"& .online-control-container":{alignItems:`center`,display:`flex`,flexDirection:`row`,margin:`1em 0`,"& .toggle-container":{minWidth:`155px`}},"& .button-array":{marginLeft:`3em`,marginRight:`3em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`2em`,marginRight:`2em`}},"& .current-level":{alignItems:`center`,bottom:0,display:`flex`,justifyContent:`center`,left:0,position:`absolute`,right:0,top:0,userSelect:`none`},"& h1":{fontSize:`3em`,fontWeight:`bold`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{fontSize:`2.5em`}},"& button":{fontSize:`1.3em`,margin:`0.3em`,minWidth:`56px`},"& h1, & h2, & h3":{textAlign:`center`},"& .day-and-progress-container":{alignItems:`center`,display:`flex`,fontSize:`1.5em`,margin:`0.5em auto`,"& .MuiBox-root":{display:`inline-flex`,marginLeft:`0.5em`,position:`relative`}},"& .inventory-info":{fontSize:`1em`},"& .MuiSelect-select":{padding:`1em`},"& .chat-placeholder":{fontSize:`0.75em`,padding:`0.5em 0`,textAlign:`center`}},children:[(0,import_jsx_runtime.jsx)(`h1`,{children:`Farmhand`}),(0,import_jsx_runtime.jsxs)(`p`,{className:`version`,children:[`v`,`1.23.0`]}),(0,import_jsx_runtime.jsx)(FarmNameDisplay,{farmName:a,handleFarmNameUpdate:f}),(0,import_jsx_runtime.jsx)(Consumer$15,{}),(0,import_jsx_runtime.jsx)(OnlineControls,{activePlayers:e,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleOnlineToggleChange:m,handleRoomChange:h,isChatAvailable:x,isOnline:C,room:T}),b>-1&&(0,import_jsx_runtime.jsxs)(H3,{className:(0,import_classnames.default)(`inventory-info`,{"is-inventory-full":!doesInventorySpaceRemain({inventory:y,inventoryLimit:b})}),sx:{color:doesInventorySpaceRemain({inventory:y,inventoryLimit:b})?void 0:colors.error},children:[`Inventory: `,integerString(inventorySpaceConsumed(y)),` /`,` `,integerString(b)]}),(0,import_jsx_runtime.jsx)(Select,{variant:`standard`,className:`view-select`,onChange:v,value:E,children:D.map((e,t)=>(0,import_jsx_runtime.jsxs)(MenuItem,{key:e,value:e,children:[t+1,`: `,STAGE_TITLE_MAP[e]]}))}),(0,import_jsx_runtime.jsx)(`div`,{className:`button-array`,children:[{dialogView:FARMERS_LOG,Icon:import_Book.default},{dialogView:PRICE_EVENTS,Icon:import_FlashOn.default},{dialogView:STATS,Icon:import_Assessment.default},{dialogView:ACHIEVEMENTS,Icon:import_Beenhere.default},{dialogView:ACCOUNTING,Icon:import_AccountBalance.default},{dialogView:SETTINGS,Icon:import_Settings.default}].map(({dialogView:e,Icon:t})=>(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,key:e,placement:`top`,title:dialogTriggerTextMap[e],children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":dialogTriggerTextMap[e],color:`primary`,onClick:()=>l(e),children:(0,import_jsx_runtime.jsx)(t,{})})}))}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,{"block-input":t}),fullWidth:!0,maxWidth:`xs`,onClose:u,open:S,TransitionProps:{onExited:d},"aria-describedby":k,"aria-labelledby":j,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:k,children:n?dialogTitleMap[n]:``}),(0,import_jsx_runtime.jsx)(DialogContent,{id:j,children:n?dialogContentMap[n]:null}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:u,color:`primary`,autoFocus:!0,children:`Close`})})]})]});Navigation.propTypes={activePlayers:import_prop_types$1.number,blockInput:import_prop_types$1.bool.isRequired,farmName:import_prop_types$1.string.isRequired,handleClickDialogViewButton:import_prop_types$1.func.isRequired,handleChatRoomOpenStateChange:import_prop_types$1.func.isRequired,handleActivePlayerButtonClick:import_prop_types$1.func.isRequired,handleCloseDialogView:import_prop_types$1.func.isRequired,handleDialogViewExited:import_prop_types$1.func.isRequired,handleFarmNameUpdate:import_prop_types$1.func.isRequired,handleOnlineToggleChange:import_prop_types$1.func.isRequired,handleRoomChange:import_prop_types$1.func.isRequired,handleViewChange:import_prop_types$1.func.isRequired,inventory:import_prop_types$1.array.isRequired,inventoryLimit:import_prop_types$1.number.isRequired,isChatAvailable:import_prop_types$1.bool.isRequired,isDialogViewOpen:import_prop_types$1.bool.isRequired,isOnline:import_prop_types$1.bool.isRequired,stageFocus:import_prop_types$1.string.isRequired,viewList:import_prop_types$1.array.isRequired};function Consumer$14(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Navigation,{...t,...n,...e})})}var getNotificationKey=({message:e,severity:t})=>`${t}:${e}`,snackbarProviderContentCallback=(e,{message:t,onClick:n,severity:a})=>(0,import_jsx_runtime.jsx)(Alert,{elevation:3,key:e,onClick:n,severity:a,style:{cursor:n?`pointer`:`default`},children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{source:t})}),NotificationSystem=({enqueueSnackbar:e,latestNotification:t})=>((0,import_react$24.useEffect)(()=>{t&&e(t,{key:getNotificationKey(t),autoHideDuration:NOTIFICATION_DURATION,preventDuplicate:!0})},[e,t]),null);NotificationSystem.propTypes={latestNotification:(0,import_prop_types$1.shape)({message:import_prop_types$1.string.isRequired,onClick:import_prop_types$1.func,severity:import_prop_types$1.string.isRequired})};var NotificationSystem_default=withSnackbar(function(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(NotificationSystem,{...t,...n,...e})})}),require_ZoomIn=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)([(0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14`},`0`),(0,a.jsx)(`path`,{d:`M12 10h-2v2H9v-2H7V9h2V7h1v2h2z`},`1`)],`ZoomIn`)})),require_ZoomOut=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z`}),`ZoomOut`)}));function areArraysEqual(e,t,n=(e,t)=>e===t){return e.length===t.length&&e.every((e,a)=>n(e,t[a]))}init_extends(),init_esm(),init_extractEventHandlers();var INTENTIONAL_DRAG_COUNT_THRESHOLD=2;function asc(e,t){return e-t}function findClosest(e,t){var n;let{index:a}=e.reduce((e,n,a)=>{let o=Math.abs(t-n);return e===null||o<e.distance||o===e.distance?{distance:o,index:a}:e},null)??{};return a}function trackFinger(e,t){if(t.current!==void 0&&e.changedTouches){let n=e;for(let e=0;e<n.changedTouches.length;e+=1){let a=n.changedTouches[e];if(a.identifier===t.current)return{x:a.clientX,y:a.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function valueToPercent(e,t,n){return(e-t)*100/(n-t)}function percentToValue(e,t,n){return(n-t)*e+t}function getDecimalPrecision(e){if(Math.abs(e)<1){let t=e.toExponential().split(`e-`),n=t[0].split(`.`)[1];return(n?n.length:0)+parseInt(t[1],10)}let t=e.toString().split(`.`)[1];return t?t.length:0}function roundValueToStep(e,t,n){let a=Math.round((e-n)/t)*t+n;return Number(a.toFixed(getDecimalPrecision(t)))}function setValueIndex({values:e,newValue:t,index:n}){let a=e.slice();return a[n]=t,a.sort(asc)}function focusThumb({sliderRef:e,activeIndex:t,setActive:n}){var a,o;let s=ownerDocument(e.current);if(!((a=e.current)!=null&&a.contains(s.activeElement))||Number(s==null||(o=s.activeElement)==null?void 0:o.getAttribute(`data-index`))!==t){var l;(l=e.current)==null||l.querySelector(`[type="range"][data-index="${t}"]`).focus()}n&&n(t)}function areValuesEqual(e,t){return typeof e==`number`&&typeof t==`number`?e===t:typeof e==`object`&&typeof t==`object`&&areArraysEqual(e,t)}var axisProps={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Identity$1=e=>e,cachedSupportsTouchActionNone;function doesSupportTouchActionNone(){return cachedSupportsTouchActionNone===void 0&&(cachedSupportsTouchActionNone=typeof CSS<`u`&&typeof CSS.supports==`function`?CSS.supports(`touch-action`,`none`):!0),cachedSupportsTouchActionNone}function useSlider(e){let{"aria-labelledby":t,defaultValue:n,disabled:a=!1,disableSwap:o=!1,isRtl:s=!1,marks:l=!1,max:u=100,min:d=0,name:f,onChange:m,onChangeCommitted:h,orientation:v=`horizontal`,rootRef:y,scale:b=Identity$1,step:x=1,shiftStep:S=10,tabIndex:C,value:T}=e,E=import_react$24.useRef(void 0),[D,O]=import_react$24.useState(-1),[k,j]=import_react$24.useState(-1),[M,N]=import_react$24.useState(!1),F=import_react$24.useRef(0),[I,L]=useControlled({controlled:T,default:n??d,name:`Slider`}),R=m&&((e,t,n)=>{let a=e.nativeEvent||e,o=new a.constructor(a.type,a);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:f}}),m(o,t,n)}),z=Array.isArray(I),B=z?I.slice().sort(asc):[I];B=B.map(e=>e==null?d:clamp$1(e,d,u));let V=l===!0&&x!==null?[...Array(Math.floor((u-d)/x)+1)].map((e,t)=>({value:d+x*t})):l||[],H=V.map(e=>e.value),{isFocusVisibleRef:U,onBlur:W,onFocus:G,ref:ee}=useIsFocusVisible(),[te,K]=import_react$24.useState(-1),q=import_react$24.useRef(null),ne=useForkRef(y,useForkRef(ee,q)),re=e=>t=>{var n;let a=Number(t.currentTarget.getAttribute(`data-index`));G(t),U.current===!0&&K(a),j(a),e==null||(n=e.onFocus)==null||n.call(e,t)},J=e=>t=>{var n;W(t),U.current===!1&&K(-1),j(-1),e==null||(n=e.onBlur)==null||n.call(e,t)},ie=(e,t)=>{let n=Number(e.currentTarget.getAttribute(`data-index`)),a=B[n],s=H.indexOf(a),l=t;if(V&&x==null){let e=H[H.length-1];l=l>e?e:l<H[0]?H[0]:l<a?H[s-1]:H[s+1]}if(l=clamp$1(l,d,u),z){o&&(l=clamp$1(l,B[n-1]||-1/0,B[n+1]||1/0));let e=l;l=setValueIndex({values:B,newValue:l,index:n});let t=n;o||(t=l.indexOf(e)),focusThumb({sliderRef:q,activeIndex:t})}L(l),K(n),R&&!areValuesEqual(l,I)&&R(e,l,n),h&&h(e,l)},ae=e=>t=>{var n;if(x!==null){let e=Number(t.currentTarget.getAttribute(`data-index`)),n=B[e],a=null;(t.key===`ArrowLeft`||t.key===`ArrowDown`)&&t.shiftKey||t.key===`PageDown`?a=Math.max(n-S,d):((t.key===`ArrowRight`||t.key===`ArrowUp`)&&t.shiftKey||t.key===`PageUp`)&&(a=Math.min(n+S,u)),a!==null&&(ie(t,a),t.preventDefault())}e==null||(n=e.onKeyDown)==null||n.call(e,t)};useEnhancedEffect$1(()=>{if(a&&q.current.contains(document.activeElement)){var e;(e=document.activeElement)==null||e.blur()}},[a]),a&&D!==-1&&O(-1),a&&te!==-1&&K(-1);let oe=e=>t=>{var n;(n=e.onChange)==null||n.call(e,t),ie(t,t.target.valueAsNumber)},se=import_react$24.useRef(void 0),ce=v;s&&v===`horizontal`&&(ce+=`-reverse`);let Y=({finger:e,move:t=!1})=>{let{current:n}=q,{width:a,height:s,bottom:l,left:f}=n.getBoundingClientRect(),m;m=ce.indexOf(`vertical`)===0?(l-e.y)/s:(e.x-f)/a,ce.indexOf(`-reverse`)!==-1&&(m=1-m);let h;if(h=percentToValue(m,d,u),x)h=roundValueToStep(h,x,d);else{let e=findClosest(H,h);h=H[e]}h=clamp$1(h,d,u);let v=0;if(z){v=t?se.current:findClosest(B,h),o&&(h=clamp$1(h,B[v-1]||-1/0,B[v+1]||1/0));let e=h;h=setValueIndex({values:B,newValue:h,index:v}),o&&t||(v=h.indexOf(e),se.current=v)}return{newValue:h,activeIndex:v}},le=useEventCallback$1(e=>{let t=trackFinger(e,E);if(!t)return;if(F.current+=1,e.type===`mousemove`&&e.buttons===0){ue(e);return}let{newValue:n,activeIndex:a}=Y({finger:t,move:!0});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(n),!M&&F.current>INTENTIONAL_DRAG_COUNT_THRESHOLD&&N(!0),R&&!areValuesEqual(n,I)&&R(e,n,a)}),ue=useEventCallback$1(e=>{let t=trackFinger(e,E);if(N(!1),!t)return;let{newValue:n}=Y({finger:t,move:!0});O(-1),e.type===`touchend`&&j(-1),h&&h(e,n),E.current=void 0,X()}),de=useEventCallback$1(e=>{if(a)return;doesSupportTouchActionNone()||e.preventDefault();let t=e.changedTouches[0];t!=null&&(E.current=t.identifier);let n=trackFinger(e,E);if(n!==!1){let{newValue:t,activeIndex:a}=Y({finger:n});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(t),R&&!areValuesEqual(t,I)&&R(e,t,a)}F.current=0;let o=ownerDocument(q.current);o.addEventListener(`touchmove`,le,{passive:!0}),o.addEventListener(`touchend`,ue,{passive:!0})}),X=import_react$24.useCallback(()=>{let e=ownerDocument(q.current);e.removeEventListener(`mousemove`,le),e.removeEventListener(`mouseup`,ue),e.removeEventListener(`touchmove`,le),e.removeEventListener(`touchend`,ue)},[ue,le]);import_react$24.useEffect(()=>{let{current:e}=q;return e.addEventListener(`touchstart`,de,{passive:doesSupportTouchActionNone()}),()=>{e.removeEventListener(`touchstart`,de),X()}},[X,de]),import_react$24.useEffect(()=>{a&&X()},[a,X]);let fe=e=>t=>{var n;if((n=e.onMouseDown)==null||n.call(e,t),a||t.defaultPrevented||t.button!==0)return;t.preventDefault();let o=trackFinger(t,E);if(o!==!1){let{newValue:e,activeIndex:n}=Y({finger:o});focusThumb({sliderRef:q,activeIndex:n,setActive:O}),L(e),R&&!areValuesEqual(e,I)&&R(t,e,n)}F.current=0;let s=ownerDocument(q.current);s.addEventListener(`mousemove`,le,{passive:!0}),s.addEventListener(`mouseup`,ue)},pe=valueToPercent(z?B[0]:d,d,u),me=valueToPercent(B[B.length-1],d,u)-pe,he=(e={})=>{let t=extractEventHandlers(e),n=_extends$3({},t,{onMouseDown:fe(t||{})});return _extends$3({},e,{ref:ne},n)},ge=e=>t=>{var n;(n=e.onMouseOver)==null||n.call(e,t);let a=Number(t.currentTarget.getAttribute(`data-index`));j(a)},Z=e=>t=>{var n;(n=e.onMouseLeave)==null||n.call(e,t),j(-1)};return{active:D,axis:ce,axisProps,dragging:M,focusedThumbIndex:te,getHiddenInputProps:(n={})=>{var o;let l=extractEventHandlers(n),m=_extends$3({},l,{onChange:oe(l||{}),onFocus:re(l||{}),onBlur:J(l||{}),onKeyDown:ae(l||{})});return _extends$3({tabIndex:C,"aria-labelledby":t,"aria-orientation":v,"aria-valuemax":b(u),"aria-valuemin":b(d),name:f,type:`range`,min:e.min,max:e.max,step:e.step===null&&e.marks?`any`:e.step??void 0,disabled:a},n,m,{style:_extends$3({},visuallyHidden,{direction:s?`rtl`:`ltr`,width:`100%`,height:`100%`})})},getRootProps:he,getThumbProps:(e={})=>{let t=extractEventHandlers(e);return _extends$3({},e,t,{onMouseOver:ge(t||{}),onMouseLeave:Z(t||{})})},marks:V,open:k,range:z,rootRef:ne,trackLeap:me,trackOffset:pe,values:B,getThumbStyle:e=>({pointerEvents:D!==-1&&D!==e?`none`:void 0})}}init_isHostComponent();var shouldSpreadAdditionalProps=e=>!e||!isHostComponent(e);init_generateUtilityClasses(),init_generateUtilityClass();function getSliderUtilityClass(e){return generateUtilityClass(`MuiSlider`,e)}var sliderClasses=generateUtilityClasses(`MuiSlider`,`root.active.colorPrimary.colorSecondary.colorError.colorInfo.colorSuccess.colorWarning.disabled.dragging.focusVisible.mark.markActive.marked.markLabel.markLabelActive.rail.sizeSmall.thumb.thumbColorPrimary.thumbColorSecondary.thumbColorError.thumbColorSuccess.thumbColorInfo.thumbColorWarning.track.trackInverted.trackFalse.thumbSizeSmall.valueLabel.valueLabelOpen.valueLabelCircle.valueLabelLabel.vertical`.split(`.`));init_clsx();var useValueLabelClasses=e=>{let{open:t}=e;return{offset:clsx$1(t&&sliderClasses.valueLabelOpen),circle:sliderClasses.valueLabelCircle,label:sliderClasses.valueLabelLabel}};function SliderValueLabel$1(e){let{children:t,className:n,value:a}=e,o=useValueLabelClasses(e);return t?import_react$24.cloneElement(t,{className:clsx$1(t.props.className)},(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[t.props.children,(0,import_jsx_runtime.jsx)(`span`,{className:clsx$1(o.offset,n),"aria-hidden":!0,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.circle,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.label,children:a})})})]})):null}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useSlotProps(),init_isHostComponent(),init_styled(),init_DefaultPropsProvider(),init_slotShouldForwardProp(),init_capitalize();var _excluded$1=`aria-label.aria-valuetext.aria-labelledby.component.components.componentsProps.color.classes.className.disableSwap.disabled.getAriaLabel.getAriaValueText.marks.max.min.name.onChange.onChangeCommitted.orientation.shiftStep.size.step.scale.slotProps.slots.tabIndex.track.value.valueLabelDisplay.valueLabelFormat`.split(`.`);function Identity(e){return e}var SliderRoot=styled$1(`span`,{name:`MuiSlider`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`color${capitalize_default(n.color)}`],n.size!==`medium`&&t[`size${capitalize_default(n.size)}`],n.marked&&t.marked,n.orientation===`vertical`&&t.vertical,n.track===`inverted`&&t.trackInverted,n.track===!1&&t.trackFalse]}})(({theme:e})=>{var t;return{borderRadius:12,boxSizing:`content-box`,display:`inline-block`,position:`relative`,cursor:`pointer`,touchAction:`none`,WebkitTapHighlightColor:`transparent`,"@media print":{colorAdjust:`exact`},[`&.${sliderClasses.disabled}`]:{pointerEvents:`none`,cursor:`default`,color:(e.vars||e).palette.grey[400]},[`&.${sliderClasses.dragging}`]:{[`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]:{transition:`none`}},variants:[...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:`horizontal`},style:{height:4,width:`100%`,padding:`13px 0`,"@media (pointer: coarse)":{padding:`20px 0`}}},{props:{orientation:`horizontal`,size:`small`},style:{height:2}},{props:{orientation:`horizontal`,marked:!0},style:{marginBottom:20}},{props:{orientation:`vertical`},style:{height:`100%`,width:4,padding:`0 13px`,"@media (pointer: coarse)":{padding:`0 20px`}}},{props:{orientation:`vertical`,size:`small`},style:{width:2}},{props:{orientation:`vertical`,marked:!0},style:{marginRight:44}}]}}),SliderRail=styled$1(`span`,{name:`MuiSlider`,slot:`Rail`,overridesResolver:(e,t)=>t.rail})({display:`block`,position:`absolute`,borderRadius:`inherit`,backgroundColor:`currentColor`,opacity:.38,variants:[{props:{orientation:`horizontal`},style:{width:`100%`,height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{height:`100%`,width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:`inverted`},style:{opacity:1}}]}),SliderTrack=styled$1(`span`,{name:`MuiSlider`,slot:`Track`,overridesResolver:(e,t)=>t.track})(({theme:e})=>{var t;return{display:`block`,position:`absolute`,borderRadius:`inherit`,border:`1px solid currentColor`,backgroundColor:`currentColor`,transition:e.transitions.create([`left`,`width`,`bottom`,`height`],{duration:e.transitions.duration.shortest}),variants:[{props:{size:`small`},style:{border:`none`}},{props:{orientation:`horizontal`},style:{height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:!1},style:{display:`none`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t,track:`inverted`},style:_extends$3({},e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:_extends$3({backgroundColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62),borderColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62)},e.applyStyles(`dark`,{backgroundColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)}),e.applyStyles(`dark`,{borderColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)})))}))]}}),SliderThumb=styled$1(`span`,{name:`MuiSlider`,slot:`Thumb`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.thumb,t[`thumbColor${capitalize_default(n.color)}`],n.size!==`medium`&&t[`thumbSize${capitalize_default(n.size)}`]]}})(({theme:e})=>{var t;return{position:`absolute`,width:20,height:20,boxSizing:`border-box`,borderRadius:`50%`,outline:0,backgroundColor:`currentColor`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:e.transitions.create([`box-shadow`,`left`,`bottom`],{duration:e.transitions.duration.shortest}),"&::before":{position:`absolute`,content:`""`,borderRadius:`inherit`,width:`100%`,height:`100%`,boxShadow:(e.vars||e).shadows[2]},"&::after":{position:`absolute`,content:`""`,borderRadius:`50%`,width:42,height:42,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`},[`&.${sliderClasses.disabled}`]:{"&:hover":{boxShadow:`none`}},variants:[{props:{size:`small`},style:{width:12,height:12,"&::before":{boxShadow:`none`}}},{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-50%, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 50%)`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{[`&:hover, &.${sliderClasses.focusVisible}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`},{"@media (hover: none)":{boxShadow:`none`}}),[`&.${sliderClasses.active}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`})}}))]}}),SliderValueLabel=styled$1(SliderValueLabel$1,{name:`MuiSlider`,slot:`ValueLabel`,overridesResolver:(e,t)=>t.valueLabel})(({theme:e})=>_extends$3({zIndex:1,whiteSpace:`nowrap`},e.typography.body2,{fontWeight:500,transition:e.transitions.create([`transform`],{duration:e.transitions.duration.shortest}),position:`absolute`,backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`0.25rem 0.75rem`,variants:[{props:{orientation:`horizontal`},style:{transform:`translateY(-100%) scale(0)`,top:`-10px`,transformOrigin:`bottom center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, 50%) rotate(45deg)`,backgroundColor:`inherit`,bottom:0,left:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-100%) scale(1)`}}},{props:{orientation:`vertical`},style:{transform:`translateY(-50%) scale(0)`,right:`30px`,top:`50%`,transformOrigin:`right center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, -50%) rotate(45deg)`,backgroundColor:`inherit`,right:-8,top:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-50%) scale(1)`}}},{props:{size:`small`},style:{fontSize:e.typography.pxToRem(12),padding:`0.25rem 0.5rem`}},{props:{orientation:`vertical`,size:`small`},style:{right:`20px`}}]})),SliderMark=styled$1(`span`,{name:`MuiSlider`,slot:`Mark`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markActive`,overridesResolver:(e,t)=>{let{markActive:n}=e;return[t.mark,n&&t.markActive]}})(({theme:e})=>({position:`absolute`,width:2,height:2,borderRadius:1,backgroundColor:`currentColor`,variants:[{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-1px, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 1px)`}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]})),SliderMarkLabel=styled$1(`span`,{name:`MuiSlider`,slot:`MarkLabel`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markLabelActive`,overridesResolver:(e,t)=>t.markLabel})(({theme:e})=>_extends$3({},e.typography.body2,{color:(e.vars||e).palette.text.secondary,position:`absolute`,whiteSpace:`nowrap`,variants:[{props:{orientation:`horizontal`},style:{top:30,transform:`translateX(-50%)`,"@media (pointer: coarse)":{top:40}}},{props:{orientation:`vertical`},style:{left:36,transform:`translateY(50%)`,"@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]})),useUtilityClasses$1=e=>{let{disabled:t,dragging:n,marked:a,orientation:o,track:s,classes:l,color:u,size:d}=e;return composeClasses({root:[`root`,t&&`disabled`,n&&`dragging`,a&&`marked`,o===`vertical`&&`vertical`,s===`inverted`&&`trackInverted`,s===!1&&`trackFalse`,u&&`color${capitalize_default(u)}`,d&&`size${capitalize_default(d)}`],rail:[`rail`],track:[`track`],mark:[`mark`],markActive:[`markActive`],markLabel:[`markLabel`],markLabelActive:[`markLabelActive`],valueLabel:[`valueLabel`],thumb:[`thumb`,t&&`disabled`,d&&`thumbSize${capitalize_default(d)}`,u&&`thumbColor${capitalize_default(u)}`],active:[`active`],disabled:[`disabled`],focusVisible:[`focusVisible`]},getSliderUtilityClass,l)},Forward=({children:e})=>e,Slider=import_react$24.forwardRef(function(e,t){var n,a,o,s,l,u,d,f,m,h,v,y,b,x,S,C,T,E,D,O,k,j,M,N;let F=useDefaultProps({props:e,name:`MuiSlider`}),I=useRtl(),{"aria-label":L,"aria-valuetext":R,"aria-labelledby":z,component:B=`span`,components:V={},componentsProps:H={},color:U=`primary`,classes:W,className:G,disableSwap:ee=!1,disabled:te=!1,getAriaLabel:K,getAriaValueText:q,marks:ne=!1,max:re=100,min:J=0,orientation:ie=`horizontal`,shiftStep:ae=10,size:oe=`medium`,step:se=1,scale:ce=Identity,slotProps:Y,slots:le,track:ue=`normal`,valueLabelDisplay:de=`off`,valueLabelFormat:X=Identity}=F,fe=_objectWithoutPropertiesLoose$3(F,_excluded$1),pe=_extends$3({},F,{isRtl:I,max:re,min:J,classes:W,disabled:te,disableSwap:ee,orientation:ie,marks:ne,color:U,size:oe,step:se,shiftStep:ae,scale:ce,track:ue,valueLabelDisplay:de,valueLabelFormat:X}),{axisProps:me,getRootProps:he,getHiddenInputProps:ge,getThumbProps:Z,open:_e,active:Q,axis:$,focusedThumbIndex:ve,range:ye,dragging:be,marks:xe,values:Se,trackOffset:Ce,trackLeap:we,getThumbStyle:Te}=useSlider(_extends$3({},pe,{rootRef:t}));pe.marked=xe.length>0&&xe.some(e=>e.label),pe.dragging=be,pe.focusedThumbIndex=ve;let Ee=useUtilityClasses$1(pe),De=le?.root??V.Root??SliderRoot,Oe=le?.rail??V.Rail??SliderRail,ke=le?.track??V.Track??SliderTrack,Ae=le?.thumb??V.Thumb??SliderThumb,je=le?.valueLabel??V.ValueLabel??SliderValueLabel,Me=le?.mark??V.Mark??SliderMark,Ne=le?.markLabel??V.MarkLabel??SliderMarkLabel,Pe=le?.input??V.Input??`input`,Fe=Y?.root??H.root,Ie=Y?.rail??H.rail,Le=Y?.track??H.track,Re=Y?.thumb??H.thumb,ze=Y?.valueLabel??H.valueLabel,Be=Y?.mark??H.mark,Ve=Y?.markLabel??H.markLabel,He=Y?.input??H.input,Ue=useSlotProps({elementType:De,getSlotProps:he,externalSlotProps:Fe,externalForwardedProps:fe,additionalProps:_extends$3({},shouldSpreadAdditionalProps(De)&&{as:B}),ownerState:_extends$3({},pe,Fe?.ownerState),className:[Ee.root,G]}),We=useSlotProps({elementType:Oe,externalSlotProps:Ie,ownerState:pe,className:Ee.rail}),Ge=useSlotProps({elementType:ke,externalSlotProps:Le,additionalProps:{style:_extends$3({},me[$].offset(Ce),me[$].leap(we))},ownerState:_extends$3({},pe,Le?.ownerState),className:Ee.track}),Ke=useSlotProps({elementType:Ae,getSlotProps:Z,externalSlotProps:Re,ownerState:_extends$3({},pe,Re?.ownerState),className:Ee.thumb}),qe=useSlotProps({elementType:je,externalSlotProps:ze,ownerState:_extends$3({},pe,ze?.ownerState),className:Ee.valueLabel}),Je=useSlotProps({elementType:Me,externalSlotProps:Be,ownerState:pe,className:Ee.mark}),Ye=useSlotProps({elementType:Ne,externalSlotProps:Ve,ownerState:pe,className:Ee.markLabel}),Xe=useSlotProps({elementType:Pe,getSlotProps:ge,externalSlotProps:He,ownerState:pe});return(0,import_jsx_runtime.jsxs)(De,_extends$3({},Ue,{children:[(0,import_jsx_runtime.jsx)(Oe,_extends$3({},We)),(0,import_jsx_runtime.jsx)(ke,_extends$3({},Ge)),xe.filter(e=>e.value>=J&&e.value<=re).map((e,t)=>{let n=valueToPercent(e.value,J,re),a=me[$].offset(n),o;return o=ue===!1?Se.indexOf(e.value)!==-1:ue===`normal`&&(ye?e.value>=Se[0]&&e.value<=Se[Se.length-1]:e.value<=Se[0])||ue===`inverted`&&(ye?e.value<=Se[0]||e.value>=Se[Se.length-1]:e.value>=Se[0]),(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[(0,import_jsx_runtime.jsx)(Me,_extends$3({"data-index":t},Je,!isHostComponent(Me)&&{markActive:o},{style:_extends$3({},a,Je.style),className:clsx$1(Je.className,o&&Ee.markActive)})),e.label==null?null:(0,import_jsx_runtime.jsx)(Ne,_extends$3({"aria-hidden":!0,"data-index":t},Ye,!isHostComponent(Ne)&&{markLabelActive:o},{style:_extends$3({},a,Ye.style),className:clsx$1(Ee.markLabel,Ye.className,o&&Ee.markLabelActive),children:e.label}))]},t)}),Se.map((e,t)=>{let n=valueToPercent(e,J,re),a=me[$].offset(n),o=de===`off`?Forward:je;return(0,import_jsx_runtime.jsx)(o,_extends$3({},!isHostComponent(o)&&{valueLabelFormat:X,valueLabelDisplay:de,value:typeof X==`function`?X(ce(e),t):X,index:t,open:_e===t||Q===t||de===`on`,disabled:te},qe,{children:(0,import_jsx_runtime.jsx)(Ae,_extends$3({"data-index":t},Ke,{className:clsx$1(Ee.thumb,Ke.className,Q===t&&Ee.active,ve===t&&Ee.focusVisible),style:_extends$3({},a,Te(t),Ke.style),children:(0,import_jsx_runtime.jsx)(Pe,_extends$3({"data-index":t,"aria-label":K?K(t):L,"aria-valuenow":ce(e),"aria-labelledby":z,"aria-valuetext":q?q(ce(e),t):R,value:Se[t]},Xe))}))}),t)})]}))}),import_ZoomIn=__toESM(require_ZoomIn()),import_ZoomOut=__toESM(require_ZoomOut()),extendStatics$1=function(e,t){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},extendStatics$1(e,t)};function __extends$1(e,t){extendStatics$1(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var __assign$1=function(){return __assign$1=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var o in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__assign$1.apply(this,arguments)};function __rest$1(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var o=0,a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(n[a[o]]=e[a[o]]);return n}var initialState={wrapperComponent:null,contentComponent:null,previousScale:1,scale:1,positionX:0,positionY:0,options:{disabled:!1,transformEnabled:!0,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,limitToWrapper:!1,centerContent:!0,wrapperClass:``,contentClass:``},wheel:{disabled:!1,step:5,wheelEnabled:!0,touchPadEnabled:!0,limitsOnWheel:!1},pan:{disabled:!1,panAnimationType:`linear`,lockAxisX:!1,lockAxisY:!1,velocity:!0,velocityEqualToMove:!0,velocitySensitivity:2,velocityActiveScale:1,velocityMinSpeed:1,velocityBaseTime:1600,velocityAnimationType:`easeOutQuart`,padding:!0,paddingSize:30,panReturnAnimationTime:400,panReturnAnimationType:`easeOut`,disableOnTarget:[]},pinch:{disabled:!1},zoomIn:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},zoomOut:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},doubleClick:{disabled:!1,step:20,mode:`zoomIn`,animation:!0,animationType:`easeOut`,animationTime:200},reset:{disabled:!1,animation:!0,animationType:`easeOut`,animationTime:200},scalePadding:{disabled:!1,size:.2,animationTime:200,animationType:`easeOut`}},roundNumber=function(e,t){return Number(e.toFixed(t))},checkIsNumber=function(e,t){return typeof e==`number`?e:t},boundLimiter=function(e,t,n,a){return roundNumber(a?e<t?t:e>n?n:e:e,2)},calculateBoundingArea=function(e,t,n,a,o,s,l){var u=e>t?n*(l?1:.5):0,d=a>o?s*(l?1:.5):0;return{minPositionX:e-t-u,maxPositionX:u,minPositionY:a-o-d,maxPositionY:d}},getDistance=function(e,t){return Math.sqrt((e.pageX-t.pageX)**2+(e.pageY-t.pageY)**2)},deleteUndefinedProps=function(e){var t=__assign$1({},e);return Object.keys(t).forEach(function(e){return t[e]===void 0&&delete t[e]}),t},handleCallback=function(e,t){e&&typeof e==`function`&&e(t)},handleWheelStop=function(e,t,n){var a=n.scale,o=n.options,s=o.maxScale,l=o.minScale;return e?a<s||a>l||Math.sign(e.deltaY)!==Math.sign(t.deltaY)||e.deltaY>0&&e.deltaY<t.deltaY||e.deltaY<0&&e.deltaY>t.deltaY||Math.sign(e.deltaY)!==Math.sign(t.deltaY):!1},mergeProps=function(e,t){return Object.keys(e).reduce(function(n,a){return typeof t[a]==`object`&&t[a]!==null?n[a]=__assign$1(__assign$1({},e[a]),t[a]):n[a]=t[a]===void 0?e[a]:t[a],n},{})};function getWindowScaleY(e){return e?window.innerHeight/e.offsetHeight:0}function getWindowScaleX(e){return e?window.innerWidth/e.offsetWidth:0}var easeOut=function(e){return-Math.cos(e*Math.PI)/2+.5},linear=function(e){return e},easeInQuad=function(e){return e*e},easeOutQuad=function(e){return e*(2-e)},easeInOutQuad=function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic=function(e){return e*e*e},easeOutCubic=function(e){return--e*e*e+1},easeInOutCubic=function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart=function(e){return e*e*e*e},easeOutQuart=function(e){return 1- --e*e*e*e},easeInOutQuart=function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint=function(e){return e*e*e*e*e},easeOutQuint=function(e){return 1+--e*e*e*e*e},easeInOutQuint=function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},availableAnimations={easeOut,linear,easeInQuad,easeOutQuad,easeInOutQuad,easeInCubic,easeOutCubic,easeInOutCubic,easeInQuart,easeOutQuart,easeInOutQuart,easeInQuint,easeOutQuint,easeInOutQuint};function handleDisableAnimation(){this.mounted&&(this.animation&&cancelAnimationFrame(this.animation),this.animate=!1,this.animation=!1,this.velocity=!1)}function animate(e,t,n){var a=this;if(this.mounted){var o=new Date().getTime(),s=1;handleDisableAnimation.call(this),this.animation=function(){if(!(!a.animation||!a.mounted)){var l=new Date().getTime()-o,u=l/t,d=availableAnimations[e],f=d(u);l>=t?(n(s),a.animation=null):(n(f),requestAnimationFrame(a.animation))}},requestAnimationFrame(this.animation)}}function animateComponent(e){var t=this,n=e.targetState,a=e.speed,o=e.type,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=n.scale-l,m=n.positionX-u,h=n.positionY-d;a===0?(this.stateProvider.previousScale=this.stateProvider.scale,this.stateProvider.scale=n.scale,this.stateProvider.positionX=n.positionX,this.stateProvider.positionY=n.positionY,this.applyTransformation()):animate.call(this,o,a,function(e){t.stateProvider.previousScale=t.stateProvider.scale,t.stateProvider.scale=l+f*e,t.stateProvider.positionX=u+m*e,t.stateProvider.positionY=d+h*e,t.applyTransformation()})}function checkZoomBounds(e,t,n,a,o){var s=t-(o?a:0);return!isNaN(n)&&e>=n?n:!isNaN(t)&&e<=s?s:e}function checkPositionBounds(e,t,n,a,o,s){var l=n.minPositionX,u=n.minPositionY,d=n.maxPositionX,f=n.maxPositionY,m=s?o*s.offsetWidth/100:0,h=s?o*s.offsetHeight/100:0;return{x:boundLimiter(e,l-m,d+m,a),y:boundLimiter(t,u-h,f+h,a)}}function getDelta(e,t){return checkIsNumber(t,e?e.deltaY<0?1:-1:0)}function wheelMousePosition(e,t,n){var a=t.getBoundingClientRect(),o=(e.clientX-a.left)/n,s=(e.clientY-a.top)/n;return(isNaN(o)||isNaN(s))&&console.error(`No mouse or touch offset found`),{mouseX:o,mouseY:s}}function getComponentsSizes(e,t,n){var a=e.offsetWidth,o=e.offsetHeight,s=t.offsetWidth,l=t.offsetHeight,u=s*n,d=l*n;return{wrapperWidth:a,wrapperHeight:o,newContentWidth:u,newDiffWidth:a-u,newContentHeight:d,newDiffHeight:o-d}}function handleCalculatePositions(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.options.transformEnabled,m=n-l;return typeof e!=`number`||typeof t!=`number`?console.error(`Mouse X and Y position were not provided!`):f?checkPositionBounds(u-e*m,d-t*m,a,o,0,null):{newPositionX:u,newPositionY:d}}function getClientPosition(e){var t=e.touches;return t&&t.length===1?{clientX:t[0].clientX,clientY:t[0].clientY}:t?null:{clientX:e.clientX,clientY:e.clientY}}function handlePanning(e){var t=this.stateProvider,n=t.scale,a=t.positionX,o=t.positionY,s=t.options,l=s.limitToBounds,u=s.minScale,d=t.pan,f=d.lockAxisX,m=d.lockAxisY,h=d.padding,v=d.paddingSize,y=t.wrapperComponent;if(this.startCoords){var b=this.startCoords,x=b.x,S=b.y,C=getClientPosition(e);if(!C)return console.error(`Cannot find mouse client positions`);var T=C.clientX,E=C.clientY,D=T-x,O=E-S,k=f?a:D,j=m?o:O,M=h&&n>=u?v:0;if(!(k===a&&j===o)){var N=checkPositionBounds(k,j,this.bounds,l,M,y);handlePaddingAnimation.call(this,N.x,N.y)}}}function handlePanningAnimation(){var e=this.stateProvider,t=e.scale,n=e.options.minScale,a=e.pan,o=a.disabled,s=a.padding,l=a.panReturnAnimationTime,u=a.panReturnAnimationType;if(!(o||t<n||!s)){var d=handlePanToBounds.call(this);animateComponent.call(this,{targetState:d,speed:l,type:u})}}function handlePanToBounds(){var e=this.stateProvider,t=e.positionX,n=e.positionY,a=e.scale,o=e.options,s=o.disabled,l=o.limitToBounds,u=o.limitToWrapper,d=this.state.wrapperComponent;if(!s){var f=this.bounds,m=f.maxPositionX,h=f.minPositionX,v=f.maxPositionY,y=f.minPositionY,b=t>m||t<h,x=n>v||n<y,S=t>m?d.offsetWidth:this.stateProvider.minPositionX||0,C=n>v?d.offsetHeight:this.stateProvider.minPositionY||0,T=S,E=C,D=handleCalculatePositions.call(this,T,E,a,this.bounds,l||u),O=D.x,k=D.y;return{scale:a,positionX:b?O:t,positionY:x?k:n}}}function handlePaddingAnimation(e,t){this.stateProvider.pan.padding&&(this.stateProvider.positionX=e,this.stateProvider.positionY=t,this.applyTransformation())}function handleCalculateZoom(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.options,d=u.maxScale,f=u.minScale,m=s.scalePadding,h=m.size,v=m.disabled,y=s.wrapperComponent,b=null;if(o){var x=window.innerWidth*1e-4,S=e<0?30:20;b=l+(t-t*x)*e*(l/S)}else{var C=2-window.innerWidth/y.offsetWidth,x=Math.max(.2,Math.min(.99,C)),S=20;b=l+t*e*((l-l*x)/S)}if(a)return b;var T=!n&&!v;return checkZoomBounds(roundNumber(b,3),f,d,h,T)}function handleCalculateBounds(e,t){var n=this.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=getComponentsSizes(a,o,e),l=s.wrapperWidth,u=s.wrapperHeight,d=s.newContentWidth,f=s.newDiffWidth,m=s.newContentHeight,h=s.newDiffHeight,v=calculateBoundingArea(l,d,f,u,m,h,t);return this.bounds=v,v}function handleWheelZoom(e){var t=this.stateProvider,n=t.scale,a=t.contentComponent,o=t.options.limitToBounds,s=t.scalePadding,l=s.size,u=s.disabled,d=t.wheel,f=d.step,m=d.limitsOnWheel;e.preventDefault(),e.stopPropagation();var h=getDelta(e,null),v=handleCalculateZoom.call(this,h,f,!e.ctrlKey);if(n!==v){var y=handleCalculateBounds.call(this,v,!m),b=wheelMousePosition(e,a,n),x=b.mouseX,S=b.mouseY,C=o&&(u||l===0||m),T=handleCalculatePositions.call(this,x,S,v,y,C),E=T.x,D=T.y;this.bounds=y,this.stateProvider.previousScale=n,this.stateProvider.scale=v,this.stateProvider.positionX=E,this.stateProvider.positionY=D,this.applyTransformation()}}function handleZoomToPoint(e,t,n,a,o){var s=this.stateProvider,l=s.contentComponent,u=s.options,d=u.disabled,f=u.minScale,m=u.maxScale,h=u.limitToBounds,v=u.limitToWrapper;if(!(d||e)){var y=checkZoomBounds(roundNumber(t,2),f,m,null,null),b=handleCalculateBounds.call(this,y,v),x=n,S=a;if(o){var C=wheelMousePosition(o,l,t);x=C.mouseX,S=C.mouseY}var T=handleCalculatePositions.call(this,x,S,y,b,h);return{scale:y,positionX:T.x,positionY:T.y}}}function handlePaddingAnimation$1(){var e=this.stateProvider,t=e.scale,n=e.wrapperComponent,a=e.options,o=a.minScale,s=a.limitToBounds,l=e.scalePadding,u=l.disabled,d=l.animationTime,f=l.animationType,m=u||t>=o;if((t>=1||s)&&handlePanningAnimation.call(this),!m){var h=n.offsetWidth/2,v=n.offsetHeight/2,y=handleZoomToPoint.call(this,!1,o,h,v,null);animateComponent.call(this,{targetState:y,speed:d,type:f})}}function handleDoubleClick(e){e.preventDefault(),e.stopPropagation();var t=this.stateProvider,n=t.contentComponent,a=t.scale,o=t.doubleClick,s=o.disabled,l=o.mode,u=o.step,d=o.animationTime,f=o.animationType;if(l===`reset`)return resetTransformations.call(this,e,d);var m=l===`zoomOut`?-1:1,h=handleCalculateZoom.call(this,m,u,void 0,void 0,!0),v=wheelMousePosition(e,n,a),y=v.mouseX,b=v.mouseY,x=handleZoomToPoint.call(this,s,h,y,b);if(x.scale!==a){var S=getButtonAnimationTime(handleCalculateZoom.call(this,m,u,!0,void 0,!0),h,d);animateComponent.call(this,{targetState:x,speed:S,type:f})}}function handleZoomControls(e,t){var n=this.stateProvider,a=n.scale,o=n.positionX,s=n.positionY,l=n.wrapperComponent,u=n.zoomIn,d=n.zoomOut,f=l.offsetWidth,m=l.offsetHeight,h=(f/2-o)/a,v=(m/2-s)/a,y=handleCalculateZoom.call(this,e,t,void 0,void 0,!0),b=y>a,x=b?u.animationTime:d.animationTime,S=b?u.animationType:d.animationType,C=b?u.disabled:d.disabled,T=handleZoomToPoint.call(this,C,y,h,v);if(T.scale!==a){var E=getButtonAnimationTime(handleCalculateZoom.call(this,e,t,!0,void 0,!0),y,x);animateComponent.call(this,{targetState:T,speed:E,type:S})}}function resetTransformations(e){var t=this.props.defaultValues,n=t.defaultScale,a=t.defaultPositionX,o=t.defaultPositionY,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.reset,m=s.options,h=m.disabled,v=m.limitToBounds,y=m.centerContent,b=m.limitToWrapper;if(!(h||f.disabled)&&!(l===n&&u===a&&d===o)){var x=typeof e==`number`?e:f.animationTime,S=checkIsNumber(n,initialState.scale),C=checkIsNumber(a,initialState.positionX),T=checkIsNumber(o,initialState.positionY);if(v&&!b||y){var E=handleCalculateBounds.call(this,S,b);C=E.minPositionX,T=E.minPositionY}var D={scale:S,positionX:C,positionY:T};animateComponent.call(this,{targetState:D,speed:x,type:f.animationType})}}function getButtonAnimationTime(e,t,n){return t/e*n}function round(e,t){var n=10**t;return Math.round(e*n)/n}function getCurrentDistance(e){return getDistance(e.touches[0],e.touches[1])}function checkIfInfinite(e){return e===1/0||e===-1/0}function calculatePinchZoom(e,t){var n=this.stateProvider,a=n.options,o=a.minScale,s=a.maxScale,l=n.scalePadding,u=l.size,d=l.disabled;if(typeof t!=`number`||typeof e!=`number`)return console.error(`Pinch touches distance was not provided`);if(!(e<0))return checkZoomBounds(roundNumber(e/t*this.pinchStartScale,2),o,s,u,!d)}function calculateMidpoint(e,t,n){var a=n.getBoundingClientRect(),o=e.touches,s=round(o[0].clientX-a.left,5),l=round(o[0].clientY-a.top,5),u=round(o[1].clientX-a.left,5),d=round(o[1].clientY-a.top,5);return{mouseX:(s+u)/2/t,mouseY:(l+d)/2/t}}function handleZoomPinch(e){var t=this.stateProvider,n=t.scale,a=t.options,o=a.limitToBounds,s=a.limitToWrapper,l=t.scalePadding,u=l.disabled,d=l.size,f=t.wheel.limitsOnWheel,m=t.pinch,h=this.state.contentComponent;if(!(m.disabled||this.stateProvider.options.disabled)&&(e.cancelable&&(e.preventDefault(),e.stopPropagation()),this.pinchStartDistance!==null)){var v=calculateMidpoint(e,n,h),y=v.mouseX,b=v.mouseY;if(!(checkIfInfinite(y)||checkIfInfinite(b))){var x=getCurrentDistance(e),S=calculatePinchZoom.call(this,x,this.pinchStartDistance);if(!(checkIfInfinite(S)||S===n)){var C=handleCalculateBounds.call(this,S,s),T=o&&(u||d===0||f),E=handleCalculatePositions.call(this,y,b,S,C,T),D=E.x,O=E.y;this.lastDistance=x,this.stateProvider.positionX=D,this.stateProvider.positionY=O,this.stateProvider.scale=S,this.stateProvider.previousScale=n,this.applyTransformation()}}}}var throttleTime=30;function velocityTimeSpeed(e,t){return this.stateProvider.pan.velocityEqualToMove?t-t/Math.max(1,e):t}function handleEnableVelocity(){this.setState({startAnimation:!1})}function handleFireVelocity(){this.setState({startAnimation:!0})}function animateVelocity(){var e=this,t=this.stateProvider,n=t.positionX,a=t.positionY,o=t.options.limitToBounds,s=t.pan,l=s.velocityBaseTime,u=s.lockAxisX,d=s.lockAxisY,f=s.velocityAnimationType,m=s.panReturnAnimationTime,h=s.panReturnAnimationType,v=s.padding,y=s.paddingSize,b=t.wrapperComponent;if(this.mounted){if(!this.velocity||!this.bounds)return handleDisableAnimation.call(this);var x=this.bounds,S=x.maxPositionX,C=x.minPositionX,T=x.maxPositionY,E=x.minPositionY,D=this.velocity,O=D.velocityX,k=D.velocityY,j=D.velocity,M=velocityTimeSpeed.call(this,j,l);if(!M){handlePanningAnimation.call(this);return}var N=O,F=k,I=M>m?M:m,L=v?y:0,R=b?L*b.offsetWidth/100:0,z=b?L*b.offsetHeight/100:0,B=S+R,V=C-R,H=T+z,U=E-z,W=checkPositionBounds(n,a,this.bounds,o,L,b),G=new Date().getTime();animate.call(this,f,I,function(t){var s=new Date().getTime()-G,l=s/m,f=availableAnimations[h],v=f(l);(s>m||v>1||v===1/0||v===-1/0)&&(v=1);var y=getPosition(u,N,t,v,C,S,o,n,W.x,V,B),b=getPosition(d,F,t,v,E,T,o,a,W.y,U,H);(n!==y||a!==b)&&(e.stateProvider.positionX=y,e.stateProvider.positionY=b,e.applyTransformation())})}}function calculateVelocityStart(e){var t=this,n=this.stateProvider,a=n.scale,o=n.options.disabled,s=n.pan,l=s.velocity,u=s.velocitySensitivity,d=s.velocityActiveScale,f=s.velocityMinSpeed,m=n.wrapperComponent;if(!(!l||d>=a||o)){handleEnableVelocity.call(this);var h=Date.now();if(this.lastMousePosition){var v=getClientPosition(e);if(!v)return console.error(`No mouse or touch position detected`);var y=v.clientX,b=v.clientY,x=y-this.lastMousePosition.clientX,S=b-this.lastMousePosition.clientY,C=h-this.velocityTime,T=2-m.offsetWidth/window.innerWidth,E=2-m.offsetHeight/window.innerHeight,D=20*Math.max(f,Math.min(2,T)),O=20*Math.max(f,Math.min(2,E)),k=x/C*u*a*D,j=S/C*u*a*O,M=x*x+S*S,N=Math.sqrt(M)/C*u;if(this.velocity&&N<this.velocity.velocity&&this.throttle)return;this.velocity={velocityX:k,velocityY:j,velocity:N},this.throttle&&clearTimeout(this.throttle),this.throttle=setTimeout(function(){t.mounted&&(t.throttle=!1)},throttleTime)}var F=getClientPosition(e);this.lastMousePosition=F,this.velocityTime=h}}function getPosition(e,t,n,a,o,s,l,u,d,f,m){if(l){if(d>o&&u>s){var h=d-(d-s)*a;return h>m?m:h<s?s:h}if(d<o&&u<o){var h=d-(d-o)*a;return h<f?f:h>o?o:h}}return e?d:boundLimiter(u+t*n,o,s,l)}function makePassiveEventOption(e){return e}var propsList=`previousScale.scale.positionX.positionY.defaultPositionX.defaultPositionY.defaultScale.onWheelStart.onWheel.onWheelStop.onPanningStart.onPanning.onPanningStop.onPinchingStart.onPinching.onPinchingStop.onZoomChange.options.wheel.scalePadding.pan.pinch.zoomIn.zoomOut.doubleClick.reset`.split(`.`),getValidPropsFromObject=function(e){return Object.keys(e).reduce(function(t,n){return propsList.includes(n)&&(t[n]=e[n]),t},{})},Context=import_react$24.createContext({}),wheelStopEventTimer=null,wheelStopEventTime=180,wheelAnimationTimer=null,wheelAnimationTime=100,StateProvider=function(e){__extends$1(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.mounted=!0,t.state={wrapperComponent:void 0,contentComponent:void 0},t.stateProvider=__assign$1(__assign$1(__assign$1(__assign$1({},initialState),mergeProps(initialState,t.props.dynamicValues)),t.props.defaultValues),{previousScale:t.props.dynamicValues.scale||t.props.defaultValues.scale||initialState.scale}),t.windowToWrapperScaleX=0,t.windowToWrapperScaleY=0,t.startCoords=null,t.isDown=!1,t.pinchStartDistance=null,t.lastDistance=null,t.pinchStartScale=null,t.distance=null,t.bounds=null,t.velocityTime=null,t.lastMousePosition=null,t.velocity=null,t.offsetX=null,t.offsetY=null,t.throttle=!1,t.previousWheelEvent=null,t.lastScale=null,t.animate=null,t.animation=null,t.maxBounds=null,t.handleWheel=function(e){var n=t.stateProvider,a=n.scale,o=n.wheel,s=o.disabled,l=o.wheelEnabled,u=o.touchPadEnabled,d=t.props,f=d.onWheelStart,m=d.onWheel,h=d.onWheelStop,v=t.state,y=v.wrapperComponent,b=v.contentComponent;t.isDown||s||t.stateProvider.options.disabled||!y||!b||!l&&!e.ctrlKey||!u&&e.ctrlKey||(wheelStopEventTimer||(t.lastScale=a,handleDisableAnimation.call(t),handleCallback(f,t.getCallbackProps())),handleWheelZoom.call(t,e),handleCallback(m,t.getCallbackProps()),t.applyTransformation(null,null,null),t.previousWheelEvent=e,handleWheelStop(t.previousWheelEvent,e,t.stateProvider)&&(clearTimeout(wheelStopEventTimer),wheelStopEventTimer=setTimeout(function(){t.mounted&&(handleCallback(h,t.getCallbackProps()),wheelStopEventTimer=null)},wheelStopEventTime)),t.animate=!1,t.lastScale=t.stateProvider.scale,clearTimeout(wheelAnimationTimer),wheelAnimationTimer=setTimeout(function(){t.mounted&&handlePaddingAnimation$1.call(t,e)},wheelAnimationTime))},t.checkPanningTarget=function(e){var n=t.stateProvider.pan.disableOnTarget;return n.map(function(e){return e.toUpperCase()}).includes(e.target.tagName)||n.find(function(t){return e.target.classList.value.includes(t)})},t.checkIsPanningActive=function(e){var n=t.stateProvider.pan.disabled,a=t.state,o=a.wrapperComponent,s=a.contentComponent;return!t.isDown||n||t.stateProvider.options.disabled||e.touches&&(e.touches.length!==1||Math.abs(t.startCoords.x-e.touches[0].clientX)<1||Math.abs(t.startCoords.y-e.touches[0].clientY)<1)||!o||!s},t.handleSetUpPanning=function(e,n){var a=t.stateProvider,o=a.positionX,s=a.positionY;t.isDown=!0,t.startCoords={x:e-o,y:n-s},handleCallback(t.props.onPanningStart,t.getCallbackProps())},t.handleStartPanning=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.scale,s=n.options,l=s.minScale,u=s.maxScale,d=s.limitToWrapper,f=n.pan.disabled,m=e.target,h=e.touches;f||t.stateProvider.options.disabled||a&&!a.contains(m)||t.checkPanningTarget(e)||o<l||o>u||(handleDisableAnimation.call(t),t.bounds=handleCalculateBounds.call(t,o,d),h&&h.length===1&&t.handleSetUpPanning(h[0].clientX,h[0].clientY),h||t.handleSetUpPanning(e.clientX,e.clientY))},t.handlePanning=function(e){t.isDown&&e.preventDefault(),!t.checkIsPanningActive(e)&&(e.stopPropagation(),calculateVelocityStart.call(t,e),handlePanning.call(t,e),handleCallback(t.props.onPanning,t.getCallbackProps()))},t.handleStopPanning=function(){if(t.isDown){t.isDown=!1,t.animate=!1,t.animation=!1,handleFireVelocity.call(t),handleCallback(t.props.onPanningStop,t.getCallbackProps());var e=t.stateProvider,n=e.pan.velocity,a=e.scale;t.velocity&&n&&a>1?animateVelocity.call(t):handlePanningAnimation.call(t)}},t.handlePinchStart=function(e){var n=t.stateProvider.scale;e.preventDefault(),e.stopPropagation(),handleDisableAnimation.call(t);var a=getDistance(e.touches[0],e.touches[1]);t.pinchStartDistance=a,t.lastDistance=a,t.pinchStartScale=n,t.isDown=!1,handleCallback(t.props.onPinchingStart,t.getCallbackProps())},t.handlePinch=function(e){t.isDown=!1,handleZoomPinch.call(t,e),handleCallback(t.props.onPinching,t.getCallbackProps())},t.handlePinchStop=function(){typeof t.pinchStartScale==`number`&&(t.isDown=!1,t.velocity=null,t.lastDistance=null,t.pinchStartScale=null,t.pinchStartDistance=null,handlePaddingAnimation$1.call(t),handleCallback(t.props.onPinchingStop,t.getCallbackProps()))},t.handleTouchStart=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=n.scale,l=n.options,u=l.disabled,d=l.minScale,f=e.touches;if(!(u||!a||!o||s<d)){if(handleDisableAnimation.call(t),f&&f.length===1)return t.handleStartPanning(e);if(f&&f.length===2)return t.handlePinchStart(e)}},t.handleTouch=function(e){var n=t.stateProvider,a=n.pan,o=n.pinch;if(!n.options.disabled){if(!a.disabled&&e.touches.length===1)return t.handlePanning(e);if(!o.disabled&&e.touches.length===2)return t.handlePinch(e)}},t.handleTouchStop=function(){t.handleStopPanning(),t.handlePinchStop()},t.zoomIn=function(e){var n=t.stateProvider,a=n.zoomIn,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom in function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,1,s)},t.zoomOut=function(e){var n=t.stateProvider,a=n.zoomOut,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom out function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,-1,s)},t.handleDbClick=function(e){var n=t.stateProvider,a=n.options,o=n.doubleClick,s=o.disabled,l=o.step,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Double click function requires event prop`);s||a.disabled||!d||!f||handleDoubleClick.call(t,e,1,l)},t.setScale=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options.disabled,f=t.state,m=f.wrapperComponent,h=f.contentComponent;if(!(d||!m||!h)){var v={positionX:s,positionY:l,scale:isNaN(e)?u:e};animateComponent.call(t,{targetState:v,speed:n,type:a})}},t.setPositionX=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:isNaN(e)?s:e,positionY:l,scale:u};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setPositionY=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.scale,u=o.positionY,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:s,positionY:isNaN(e)?u:e,scale:l};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setTransform=function(e,n,a,o,s){o===void 0&&(o=200),s===void 0&&(s=`easeOut`);var l=t.stateProvider,u=l.positionX,d=l.positionY,f=l.scale,m=l.options,h=m.disabled,v=m.transformEnabled,y=t.state,b=y.wrapperComponent,x=y.contentComponent;if(!(h||!v||!b||!x)){var S={positionX:isNaN(e)?u:e,positionY:isNaN(n)?d:n,scale:isNaN(a)?f:a};animateComponent.call(t,{targetState:S,speed:o,type:s})}},t.resetTransform=function(){var e=t.stateProvider.options,n=e.disabled,a=e.transformEnabled;n||!a||resetTransformations.call(t)},t.setDefaultState=function(){t.animation=null,t.stateProvider=__assign$1(__assign$1(__assign$1({},t.stateProvider),{scale:initialState.scale,positionX:initialState.positionX,positionY:initialState.positionY}),t.props.defaultValues),t.forceUpdate()},t.setWrapperComponent=function(e){t.setState({wrapperComponent:e})},t.setContentComponent=function(e){t.setState({contentComponent:e},function(){var n=t.stateProvider,a=n.wrapperComponent,o=n.options,s=o.centerContent,l=o.limitToBounds,u=o.limitToWrapper,d=n.scale,f=t.props.defaultValues,m=f.positionX,h=f.positionY;if(l&&!u||s&&!m&&!h){var v=`translate(25%, 25%) scale(`+d+`)`;e.style.transform=v,e.style.WebkitTransform=v,t.forceUpdate();var y=new Date().getTime(),b=2e3,x=setInterval(function(){if(a.offsetWidth){var e=handleCalculateBounds.call(t,d,!1);t.stateProvider.positionX=e.minPositionX,t.stateProvider.positionY=e.minPositionY,t.applyTransformation(null,null,null),clearInterval(x),x=null}else new Date().getTime()-y>b&&(clearInterval(x),x=null)},20)}else t.applyTransformation(null,null,null)})},t.applyTransformation=function(e,n,a){if(t.mounted){var o=t.state.contentComponent,s=t.props.onZoomChange,l=t.stateProvider,u=l.previousScale,d=l.scale,f=l.positionX,m=l.positionY;if(!o)return console.error(`There is no content component`);var h=`translate(`+(n||f)+`px, `+(a||m)+`px) scale(`+(e||d)+`)`;o.style.transform=h,o.style.WebkitTransform=h,t.forceUpdate(),s&&u!==d&&handleCallback(s,t.getCallbackProps())}},t.getCallbackProps=function(){return getValidPropsFromObject(t.stateProvider)},t}return t.prototype.componentDidMount=function(){var e=makePassiveEventOption(!1);window.addEventListener(`mousedown`,this.handleStartPanning,e),window.addEventListener(`mousemove`,this.handlePanning,e),window.addEventListener(`mouseup`,this.handleStopPanning,e)},t.prototype.componentWillUnmount=function(){var e=makePassiveEventOption(!1);window.removeEventListener(`mousedown`,this.handleStartPanning,e),window.removeEventListener(`mousemove`,this.handlePanning,e),window.removeEventListener(`mouseup`,this.handleStopPanning,e),handleDisableAnimation.call(this)},t.prototype.componentDidUpdate=function(e,t){var n=this.state,a=n.wrapperComponent,o=n.contentComponent,s=this.props.dynamicValues;if(!t.contentComponent&&o&&(this.stateProvider.contentComponent=o),!t.wrapperComponent&&a&&a!==void 0){this.stateProvider.wrapperComponent=a,this.windowToWrapperScaleX=getWindowScaleX(a),this.windowToWrapperScaleY=getWindowScaleY(a);var l=makePassiveEventOption(!1);a.addEventListener(`wheel`,this.handleWheel,l),a.addEventListener(`dblclick`,this.handleDbClick,l),a.addEventListener(`touchstart`,this.handleTouchStart,l),a.addEventListener(`touchmove`,this.handleTouch,l),a.addEventListener(`touchend`,this.handleTouchStop,l)}(a&&o||e.dynamicValues!==s)&&(this.maxBounds=handleCalculateBounds.call(this,this.stateProvider.scale,this.stateProvider.options.limitToWrapper)),e.dynamicValues&&e.dynamicValues!==s&&(this.animation=null,this.stateProvider=__assign$1(__assign$1({},this.stateProvider),mergeProps(this.stateProvider,s)),this.applyTransformation(null,null,null))},t.prototype.render=function(){var e=this.state,t=e.wrapperComponent,n=e.contentComponent,a={loaded:!!(t&&n),state:this.getCallbackProps(),dispatch:{setScale:this.setScale,setPositionX:this.setPositionX,setPositionY:this.setPositionY,zoomIn:this.zoomIn,zoomOut:this.zoomOut,setTransform:this.setTransform,resetTransform:this.resetTransform,setDefaultState:this.setDefaultState},nodes:{setWrapperComponent:this.setWrapperComponent,setContentComponent:this.setContentComponent}},o=this.props.children,s=typeof o==`function`?o(__assign$1(__assign$1({},a.state),a.dispatch)):o;return import_react$24.createElement(Context.Provider,{value:a},s)},t}(import_react$24.Component),TransformWrapper=function(e){var t=e.children,n=e.defaultPositionX,a=e.defaultPositionY,o=e.defaultScale,s=e.onWheelStart,l=e.onWheel,u=e.onWheelStop,d=e.onPanningStart,f=e.onPanning,m=e.onPanningStop,h=e.onPinchingStart,v=e.onPinching,y=e.onPinchingStop,b=e.onZoomChange,x=__rest$1(e,[`children`,`defaultPositionX`,`defaultPositionY`,`defaultScale`,`onWheelStart`,`onWheel`,`onWheelStop`,`onPanningStart`,`onPanning`,`onPanningStop`,`onPinchingStart`,`onPinching`,`onPinchingStop`,`onZoomChange`]),S=__assign$1({},x);return S.options&&S.options.limitToWrapper&&(S.options.limitToBounds=!0),import_react$24.createElement(StateProvider,{defaultValues:deleteUndefinedProps({positionX:n,positionY:a,scale:o}),dynamicValues:deleteUndefinedProps(getValidPropsFromObject(S)),onWheelStart:s,onWheel:l,onWheelStop:u,onPanningStart:d,onPanning:f,onPanningStop:m,onPinchingStart:h,onPinching:v,onPinchingStop:y,onZoomChange:b},t)};function styleInject(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>`u`)){var a=document.head||document.getElementsByTagName(`head`)[0],o=document.createElement(`style`);o.type=`text/css`,n===`top`&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var css=`.TransformComponent-module_container__3NwNd {
|
|
730
730
|
position: relative;
|
|
731
731
|
width: fit-content;
|
|
732
732
|
height: fit-content;
|
|
@@ -840,5 +840,5 @@ Keg contents take time to reach maturity before they can be sold. After they rea
|
|
|
840
840
|
|
|
841
841
|
Kegs that contain fermented crops compound in value at a rate of ${KEG_INTEREST_RATE}% a day but have an increasing chance of spoiling.
|
|
842
842
|
|
|
843
|
-
Kegs that contain wine compound in value at a rate of ${WINE_INTEREST_RATE}% for up to ${integerString(100)} days and never spoil.`})})})})})]})};CellarInventoryTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};function getCropsAvailableToFerment(e){return Object.keys(e.items).reduce((e,t)=>{let n=getFinalCropItemFromSeedItem(itemsMap[t]);return n&&Number.isFinite(n.daysToFerment)&&e.push(n),e},[])}var FermentationRecipe=({item:e})=>{let{gameState:{inventory:t,cellarInventory:n,purchasedCellar:a},handlers:{handleMakeFermentationRecipeClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=getInventoryQuantityMap(t),d=FERMENTED_CROP_NAME`${e}`,{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0};(0,import_react$24.useEffect)(()=>{l(Math.min(getMaxYieldOfFermentationRecipe(e,t,n,f),Math.max(1,s)))},[n,f,t,e,s]);let m=s>0&&cellarService.doesCellarSpaceRemain(n,a),h=()=>{m&&o(e,s)},v=getMaxYieldOfFermentationRecipe(e,t,n,f),y=cellarService.getItemInstancesInCellar(n,e);return(0,import_jsx_runtime.jsxs)(Card,{className:`FermentationRecipe`,sx:{position:`relative`,"& .MuiCardHeader-avatar img":{width:`3em`,filter:`drop-shadow(1px 1px 2px rgba(255, 0, 131, 0.63))`}},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:d,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:items[e.id],alt:d}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to ferment: `,e.daysToFerment]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,itemsMap[e.id].name,` in inventory:`,` `,integerString(u[e.id]??0)]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of`,` `,itemsMap.salt.name,` `,`required: `,getSaltRequirementsForFermentationRecipe(e),` `,`(available:`,` `,(0,import_jsx_runtime.jsx)(AnimatedNumber,{number:u[itemsMap.salt.id]??0,formatter:integerString}),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(y??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{className:`make-recipe`,color:`primary`,disabled:!m||!s,onClick:h,variant:`contained`,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:h,handleUpdateNumber:l,maxQuantity:v,setQuantity:l,value:s})]})]})};FermentationRecipe.propTypes={item:import_prop_types$1.object.isRequired};var totalFermentableItems=Object.keys(fermentableItemsMap).length,FermentationRecipeList=()=>{let{gameState:{levelEntitlements:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getCropsAvailableToFerment(e),[n,a]=(0,import_react$24.useState)(``),o=n.toLowerCase().split(` `).filter(e=>e.length>0),s=t.filter(e=>{let t=e,n=`${FERMENTED_CROP_NAME}${t.name}`.toLowerCase();return o.every(e=>n.includes(e)||t.name.toLowerCase().includes(e))}),l=s.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Fermentation Recipes (`,l,` /`,` `,totalFermentableItems,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search fermentation recipes...`,onSearch:a}),s.length>0&&(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:s.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(FermentationRecipe,{item:e})},e.id))})]})};FermentationRecipeList.propTypes={};var FermentationTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(FermentationRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Some items can be fermented and become much more valuable over time.`})})})})})]});FermentationTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var getGrapesSold=e=>Object.entries(e).reduce((e,[t,n])=>{let a=itemsMap[t];return(n||0)>0&&isGrape(a)&&e.push(a),e},[]);function getWineVarietiesAvailableToMake(e){return getGrapesSold(e).map(({variety:e})=>e)}var WineRecipe=({wineVariety:e})=>{let{gameState:{cellarInventory:t,inventory:n,purchasedCellar:a},handlers:{handleMakeWineClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=grapeVarietyNameMap[e],d=grapeVarietyToGrapeItemMap[e],{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0},m=getInventoryQuantityMap(n);if((0,import_react$24.useEffect)(()=>{d&&l(Math.min(wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),Math.max(1,s)))},[t,f,d,n,s,e]),!d)return null;let h=itemsMap[d.wineId];if(!h)return null;let v=m[d.id]??0,y=m[yeast.id]??0,b=s>0&&v>=50&&cellarService.doesCellarSpaceRemain(t,a),x=!b||!s,S=cellarService.getItemInstancesInCellar(t,h),C=wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),T=()=>{b&&o(d,s)};return(0,import_jsx_runtime.jsxs)(Card,{className:`WineRecipe`,sx:{position:`relative`},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:u,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:wines[e],alt:u}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to mature:`,` `,integerString(wineService.getDaysToMature(e))]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,d.name,` required:`,` `,integerString(50),` (available:`,` `,integerString(v),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,yeast.name,` required:`,` `,integerString(getYeastRequiredForWine(e)*s),` `,`(available: `,integerString(y),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(S??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{color:`primary`,variant:`contained`,disabled:x,onClick:T,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:T,handleUpdateNumber:l,maxQuantity:C,setQuantity:l,value:s})]})]})};WineRecipe.propTypes={wineVariety:(0,import_prop_types$1.oneOf)(Object.keys(grapeVariety))};var totalGrapeVarieties=Object.keys(grapeVariety).length,WineRecipeList=()=>{let{gameState:{itemsSold:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getWineVarietiesAvailableToMake(e),[n,a]=(0,import_react$24.useState)(``),o=t.filter(e=>e.toLowerCase().includes(n.toLowerCase())),s=o.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Wine Recipes (`,s,` /`,` `,totalGrapeVarieties,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search wine varieties...`,onSearch:a}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:o.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(WineRecipe,{wineVariety:e})},e))})]})},WinemakingTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(WineRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Grapes can be made into wine. Wine becomes very valuable in time and never spoils.`})})})})})]});WinemakingTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var CELLAR_TAB_LABELS=[`Cellar Inventory`,`Fermentation`,`Winemaking`],Cellar=()=>{let[e,t]=useTabQueryParam(CELLAR_TAB_LABELS);return(0,import_jsx_runtime.jsxs)(Div,{className:`Cellar`,sx:centerTabsSx,children:[(0,import_jsx_runtime.jsx)(Tabs,{value:e,onChange:(e,n)=>t(n),"aria-label":`Cellar tabs`,children:CELLAR_TAB_LABELS.map((e,t)=>(0,import_jsx_runtime.jsx)(Tab,{label:e,...a11yProps(t)},e))}),(0,import_jsx_runtime.jsx)(CellarInventoryTabPanel,{index:0,currentTab:e}),(0,import_jsx_runtime.jsx)(FermentationTabPanel,{index:1,currentTab:e}),(0,import_jsx_runtime.jsx)(WinemakingTabPanel,{index:2,currentTab:e})]})};Cellar.propTypes={};var brown_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVRoge2UoRGAMBAECZYS8HRDw5QSnxKig88gfgaxl59befPi12wZzz22idr6dp3HPEvu5UtgJXb6gb9YgCaPQG3980B9d4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNDkFVAoT2V0hGgvQ5BFQLExkd4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNMsLvBG5ypkvoIETAAAAAElFTkSuQmCC`,floorboard_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAAXNSR0IArs4c6QAAAUxJREFUeJzt3TFuwkAQheEFjSUQoo1EKJIid8oFuFMuwEVyjYgCCrBEayEiuQgtASNBXvDMmv8rt9nR7pPG24x7X/PZT0LryqpKk/HYuwxZ37sA5I0AQWJlVXnX8LC6cPY2rL9/LeyLQTpdAy6hhUFCgCAhQJDYvhicLTatAU3OPqIRW7RHDi0MEgIECQGCpPEjGrFFujObTl68a8CRdblKOd0JLQwSAgQJAYKEAEFCgCCxdbnyrgEncroTexoVrW643dWp7T1xP7QwSAgQJAQIEgIECQGCxLa7uvVNPfbEfdjb67N3DY0Wy02KWlvu/vNsaWGQECBICBAkBAiS3ufHOwOm8GdhX2FeeP3dhhYGCQGChABBQoAgIUCQ2GK58a4hHM7kelfPB4o2lwYx0MIgIUCQECBICBAkNw2YijTYCDFYF345lKOu/O7pAEBLR2y+MLyqAAAAAElFTkSuQmCC`,jack_o_lantern_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAA4UlEQVRYR+2VMQ6DMAxFYe4R2LsxdOopuHBv0KkDW/ceoTOVK/0qhICd8K0wNBNyIv3nH5PfTrdhaiqu9vAAz9f768+5O7n4tOmAt7h0tAAIRde+mVbMACCoCTCv4wcQio+Pe9NfrjOOuMaCWACIEBYgUjU3AM1+7LsCVL0CdBjaLrV4JugOiEjVvwCdhxDoMlWzzop27vhZoHWwd//vgLsDWqK6AmjiyTjeO1S5cU51oOQhowGUxjkdIDfO6QDWGcIz7wKQE+cuAOKCNc5pAKVxTgWIISxxTgewDiHOVQf4AHx92LXFZzetAAAAAElFTkSuQmCC`,winter_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQdJREFUeJztmcERgyAUBZ9pIjVRUa5UldT0K/BITnhKZpgYXYG3Bei6oyCwxFrKPb9EEznpTI/ISZK06PEsp931YkROcweQpBstQNMcoH4zo9EUoD78iBGaAtTR+Qqzxb/xIEgL0DgALUDTTYCjZiAPgrQAjQPQAjQOcNSFe1k3eBagBWgcgBagcYBeRuujmP4NWGIt2zQ44pbXN7aDkaucDFH4E/Cf4OQ4AC1A4wC0AI0D0AI0DkAL0DgALUDjALQAze4AkVM3hyCfmP4N8H4ALUDjALQAjQPQAjQOQAvQOAAtQDNEgD3rkSECSL+fbHstQAvQOAAtQOMAtACNA9ACFWJjNXLSG2nxQbKUEorlAAAAAElFTkSuQmCC`,yellow_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAx0lEQVRoQ+2WwQ3AIAwDYRVW6dx9dg1GKf1WlEcTAUks94maBHzGIt/taqn7aj1TKUe/nDyu59EBPjt3vMADWMMhATcEPCbMnySkhdxYyHoj2vm0kFa5WXVDApESiRaaZQVtHxLQKjerDodApOR5v5FwCMzy5O4+JLBb8X4eJoFIiYRJwNrXkvkkIFFrxb84BCIlD99CK7ys7YlzB7QKWNdhEoiUSJgErH0tmU8CErVW/ItDIFLy8C20wsvanjh3QKuAdV14Ag9MlnJUFzG78wAAAABJRU5ErkJgggAA`,lavender_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAyUlEQVRoQ+2WwRGAIAwEQw0WYf/l+LQAPzaAXwd5mAyQ5OZ8MiaB2+OGcp+1SvNdh8i2t6siEddL7wDfrcdd4QG82ZBAGAIRE+ZPEtJCYSzkvRHrfFrIqtyoui6BTIlEC42ygrUPCViVG1WHQyBT8rzfSDgERnlydR8SWK14Ow+TQKZEwiTg7WvNfBLQqDXjXxwCmZKHb6EZXrb2xLkDVgW86zAJZEokTALevtbMJwGNWjP+xSGQKXn4FprhZWtPnDtgVcC7Lj2BB3XCNohEy6k2AAAAAElFTkSuQmCC`,grass_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABp0lEQVRoQ92Y63HDMAyD5RE6QMfLCp2qi2SODtARkmt7yTmuJIAEeHbiv+LrIyjZ8vJxbpe28/P91drbe66IZQ2gBMql//Ni8o5sZAAm+RqOtd/aUQCzLo4CsAXdYrP2rN2DAhkAZXQcvjSAI1lFjBIAVn4H0K4ADtASALaz7EkzO8V+ARydYItWD4ptrVMAJ5gz1roJ0xFyJnXGogGiclcVOasjvYl7xT4VgGPTOmKkFXAkd8S4AyD50fqoGNZvZjdbex0Ah5xsDFYVJp60B7KFZP16d4pdAJjOsu8gCaCXRO1uFE6+E28TPj1AtIOqinCEqjuqfpIcEiCiIgRAwaoVmt3GftZKAdxwvXjL6bNdsv8lj6BOKYB6wqAGWUaISYLmOBrDcqVUkiLfyN75t4lZZ9YOFauO2SEBItDyMcp+NTJFZVSlATLBoz6Za2UpANN11mb0zUQDsIlYu6g6o81uAcgUk/HpQewG4Hq50b9V2NHI2ClqHAIgA33zgSOkdMcxJij/6wMo8lb5rlWBCkSLQJKjeIy/BIASoHUHgHQfUAtEANH1K9JWO4Tg58LYAAAAAElFTkSuQmCC`,forest_floor_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAWRJREFUaIHlWTkSgzAMNH6AO16V/78inT+QVDREYB2rg8mWjBHs6rBkb+M1Pu2Euc823uP8uCQ69RD583OfMFsUSAJIcMXQEjUTQCms9bqZQHauqAl4xzYXagIZylOi/RCIUlbzHUq0HwJRyqK+415GD3h5NoyAl2dVBO7URCjNsXGs2ahe6ElwD6GVmlaPpfdC1twISWLPvaV7u7g57y0d7WK02it78BBCq72yF7aRecF9oJGGlHQ9SUBiBJ1D0vXuQ/0K0I0sY8qCbmR3xiQNViTYScxRKmPMLFlGJZ6En0pEtx7wUwmvMLoShl2Fss+BroRhVyGOsqWrEAfWMqzBf55KVEIZApD7gcxKA7kfoIxkl88Velv8pFaZKOK9OVWIqMbOlMQaldFtuYmARmVUW36QZBOolswHyWUSn1+oBrck1kDj5TI7cVMKyb6lfMxQb5m0rtZIiEFO5tAfk8wJ0jD6AhfOowgv6la0AAAAAElFTkSuQmCC`,Stage=({dayCount:e,field:t,isMenuOpen:n=!0,stageFocus:a,useAlternateEndDayButtonPosition:o=!1,viewTitle:s})=>{let l=(0,import_react$24.useRef)(null);(0,import_react$24.useEffect)(()=>{if(l.current){let e=l.current,{style:t}=e;e.scrollTop=0,t.overflow=`hidden`,setTimeout(()=>t.overflow=``,0)}},[a]);let u={[stageFocusType.HOME]:isOctober()?jack_o_lantern_bg_default:isDecember()?winter_bg_default:brown_dot_bg_default,[stageFocusType.SHOP]:yellow_dot_bg_default,[stageFocusType.WORKSHOP]:lavender_dot_bg_default,[stageFocusType.CELLAR]:floorboard_default,[stageFocusType.FIELD]:grass_default,[stageFocusType.COW_PEN]:grass_default,[stageFocusType.FOREST]:forest_floor_default}[a],d=[stageFocusType.FIELD,stageFocusType.COW_PEN,stageFocusType.FOREST].includes(a);return(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Stage`,{"is-october":isOctober(),"is-december":isDecember()}),"data-stage-focus":a,role:`main`,ref:l,sx:t=>({flex:2,imageRendering:`pixelated`,marginLeft:0,overflow:`auto`,padding:`1.5em 1.5em 0`,position:`relative`,zIndex:0,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),"& .stage-background":{backgroundSize:`96px`,bottom:0,left:0,pointerEvents:`none`,position:`fixed`,right:0,top:0,zIndex:-1,...u?{backgroundImage:`url(${u})`}:{},...d?{backgroundSize:`30%`,filter:seasonFilterMap[getCurrentSeason(e)],[`@media (min-width: ${breakpoints.md}px)`]:{backgroundSize:`10%`}}:{},...a===stageFocusType.CELLAR?{backgroundSize:`288px 96px`}:{}},"& h3":{textAlign:`center`},"& h2":{fontSize:`1.2em`},"& .view-title":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`}},"& section":{padding:`0.5em 0`,[`@media (max-width: ${breakpoints.sm}px)`]:{fontSize:`1em`}},...o?{paddingTop:`4em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{paddingTop:`4.5em`}}:{},...n?{transitionProperty:`padding, margin-left`,[`@media (max-width: ${breakpoints.sm}px)`]:{padding:0},"& > *":{opacity:1,transition:t.transitions.create(`opacity`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),[`@media (max-width: ${breakpoints.sm}px)`]:{opacity:0}}}:{marginLeft:`-${layout.sidebarWidth}`,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.leavingScreen,easing:t.transitions.easing.sharp}),[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`-${layout.narrowSidebarWidth}px`}}}),children:[(0,import_jsx_runtime.jsx)(`div`,{className:`stage-background`}),(0,import_jsx_runtime.jsx)(`h2`,{className:`view-title`,children:s}),a===stageFocusType.HOME&&(0,import_jsx_runtime.jsx)(Consumer$7,{}),a===stageFocusType.FIELD&&(0,import_jsx_runtime.jsx)(Consumer$10,{columns:t[0].length,rows:t.length}),a===stageFocusType.FOREST&&(0,import_jsx_runtime.jsx)(Forest,{}),a===stageFocusType.SHOP&&(0,import_jsx_runtime.jsx)(Consumer$4,{}),a===stageFocusType.COW_PEN&&(0,import_jsx_runtime.jsx)(Consumer$6,{}),a===stageFocusType.WORKSHOP&&(0,import_jsx_runtime.jsx)(Consumer$1,{}),a===stageFocusType.CELLAR&&(0,import_jsx_runtime.jsx)(Cellar,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]})};Stage.propTypes={dayCount:import_prop_types$1.number.isRequired,field:(0,import_prop_types$1.arrayOf)(import_prop_types$1.array).isRequired,isMenuOpen:import_prop_types$1.bool,stageFocus:import_prop_types$1.string.isRequired,useAlternateEndDayButtonPosition:import_prop_types$1.bool,viewTitle:import_prop_types$1.string.isRequired};function Consumer(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Stage,{...t,...n,...e})})}var scriptRel=`modulepreload`,assetsURL=function(e,t){return new URL(e,t).href},seen={},__vitePreload=function(e,t,n){let a=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=l(t.map(t=>{if(t=assetsURL(t,n),t=u(t),t in seen)return;seen[t]=!0;let a=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let o=e[n];if(o.href===t&&(!a||o.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:scriptRel,a||(o.as=`script`),o.crossOrigin=``,o.href=t,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(t=>{for(let e of t||[])e.status===`rejected`&&o(e.reason);return e().catch(o)})},autoUpdateMode=`false`,selfDestroying=`false`,auto=autoUpdateMode===`true`,autoDestroy=selfDestroying===`true`;function registerSW(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,d,f,m,h=async(e=!0)=>{await f,auto||m?.()};async function v(){if(`serviceWorker`in navigator){if(d=await __vitePreload(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e(`./service-worker.js`,{scope:`./`,type:`classic`})).catch(e=>{u?.(e)}),!d)return;if(m=()=>{d?.messageSkipWaiting()},!autoDestroy)if(auto)d.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),d.addEventListener(`installed`,e=>{e.isUpdate||o?.()});else{let e=!1,t=()=>{e=!0,d?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),a?.()};d.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&o?.():n.isExternal?t():!e&&o?.():n.isUpdate||o?.()}),d.addEventListener(`waiting`,t)}d.register({immediate:t}).then(e=>{l?l(`./service-worker.js`,e):s?.(e)}).catch(e=>{u?.(e)})}}return f=v(),h}function useRegisterSW(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,[d,f]=(0,import_react$24.useState)(!1),[m,h]=(0,import_react$24.useState)(!1),[v]=(0,import_react$24.useState)(()=>registerSW({immediate:t,onNeedReload:n,onOfflineReady(){h(!0),o?.()},onNeedRefresh(){f(!0),a?.()},onRegistered:s,onRegisteredSW:l,onRegisterError:u}));return{needRefresh:[d,f],offlineReady:[m,h],updateServiceWorker:v}}var UpdateNotifier=()=>{let{handlers:{handleGameUpdateAvailable:e}}=(0,import_react$24.useContext)(FarmhandContext),{needRefresh:[t],updateServiceWorker:n}=useRegisterSW();return(0,import_react$24.useEffect)(()=>{t&&(e(n),window.addEventListener(`beforeunload`,()=>{n(!0)}))},[t,e,n]),null},commonFetchConfig={mode:`cors`,cache:`no-cache`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},redirect:`follow`,referrerPolicy:`no-referrer`};async function getData(e=``,t={}){let n=new URLSearchParams;return Object.keys(t).forEach(e=>n.append(encodeURIComponent(e),encodeURIComponent(t[e]))),(await fetch(`${e}?${n}`,{...commonFetchConfig,method:`GET`})).json()}async function postData(e=``,t={}){return(await fetch(e,{...commonFetchConfig,method:`POST`,body:JSON.stringify(t)})).json()}var createNewField=()=>Array(10).fill(void 0).map(()=>[,,,,,,].fill(null)),createNewForest=()=>[,].fill(void 0).map(()=>[,,,,].fill(null)),doesMenuObstructStage=()=>window.innerWidth<BREAKPOINTS.MD,getAvailableShopInventory=memoize(e=>inventory.filter(({id:t})=>!(unlockableItems.hasOwnProperty(t)&&!e.items.hasOwnProperty(t)))),getPeerMetadata=e=>{let t=PEER_METADATA_STATE_KEYS.reduce((t,n)=>(t[n]=e[n],t),{});return Object.assign(t,{cowOfferedForTrade:e.cowInventory.find(({id:t})=>t===e.cowIdOfferedForTrade)}),t},getViewList=({isForestUnlocked:e,purchasedCellar:t,purchasedCowPen:n,showHomeScreen:a})=>{let{CELLAR:o,COW_PEN:s,HOME:l,WORKSHOP:u,FOREST:d}=stageFocusType,f=[...STANDARD_VIEW_LIST];return a&&f.unshift(l),e&&f.push(d),n&&f.push(s),f.push(u),t&&f.push(o),f},getValidatedStageFocusFromHash=e=>{let t=getHashQueryParams().get(VIEW_QUERY_PARAM_NAME);if(!t)return;let n=getLevelEntitlements(levelAchieved(e.experience)).stageFocusType[stageFocusType.FOREST];return getViewList({isForestUnlocked:n,purchasedCellar:e.purchasedCellar,purchasedCowPen:e.purchasedCowPen,showHomeScreen:e.showHomeScreen}).find(e=>e===t)},sleep=e=>new Promise(t=>setTimeout(t,e)),{PLANT}=fieldMode,{MULCH}=itemType,FarmhandService=class{static computePlayerInventory=memoize((e,t)=>e.map(({quantity:e,id:n})=>({quantity:e,...itemsMap[n],value:getItemCurrentValue(itemsMap[n],t)})));static getFieldToolInventory=memoize(e=>e.filter(({id:e})=>{let t=itemsMap[e];return typeof t.enablesFieldMode==`string`&&t.enablesFieldMode!==PLANT&&t.type!==MULCH}).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableCropInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e].isPlantableCrop).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getMulchInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.type===MULCH).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableTreeInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.isPlantableTree).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static applyPriceEvents=(e,t,n)=>{let a={...e};return Object.keys(t).forEach(e=>{a[e]=.5}),Object.keys(n).forEach(e=>{a[e]=1.5}),a}},itemIds=Object.keys(itemsMap),getInventoryQuantities=e=>{let t={};for(let e of itemIds)t[e]=0;for(let{id:n,quantity:a}of e)t[n]=a;return t},useFarmhandNavigation=(e,t)=>({openDialogView:(0,import_react$24.useCallback)(t=>{e(e=>({...e,currentDialogView:t,isDialogViewOpen:!0}))},[e]),closeDialogView:(0,import_react$24.useCallback)(()=>{e(e=>({...e,isDialogViewOpen:!1}))},[e]),focusNextView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus);return{...e,stageFocus:t[(n+1)%t.length]}})},[e,t]),focusPreviousView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus),a=n===0?t.length-1:(n-1)%t.length;return{...e,stageFocus:t[a]}})},[e,t])}),{floor,random,sin}=Math,libName=`Trystero`,alloc=(e,t)=>Array(e).fill(void 0).map(t),charSet=`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz`,genId=e=>alloc(e,()=>charSet[floor(random()*62)]??``).join(``),selfId=genId(20),all=Promise.all.bind(Promise),isBrowser=typeof window<`u`,{entries,fromEntries,keys,values}=Object,noOp=()=>{},candidateType=`candidate`,resetTimer=e=>(e!==null&&clearTimeout(e),null),mkErr=e=>Error(`${libName}: ${e}`),toErrorMessage=(e,t)=>e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:toJson(e??t),toError=(e,t)=>e instanceof Error?e:mkErr(toErrorMessage(e,t)),encoder=new TextEncoder,decoder=new TextDecoder,encodeBytes=e=>encoder.encode(e),decodeBytes=e=>decoder.decode(e),toHex=e=>e.reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``),topicPath=(...e)=>e.join(`@`),shuffle=(e,t)=>{let n=[...e],a=()=>{let e=sin(t++)*1e4;return e-floor(e)},o=n.length;for(;o;){let e=floor(a()*o--),t=n[o];n[o]=n[e],n[e]=t}return n},getRelays=(e,t,n,a=!1)=>e.relayConfig?.urls||(a?shuffle(t,strToNum(e.appId)):t).slice(0,e.relayConfig?.redundancy??n),toJson=JSON.stringify,fromJson=e=>{try{return JSON.parse(e)}catch{throw mkErr(`failed to parse JSON: ${e}`)}},strToNum=(e,t=2**53-1)=>e.split(``).reduce((e,t)=>e+t.charCodeAt(0),0)%t,defaultRetryMs=3333,socketRetryPeriods={},reconnectionLockingPromise=null,resolver=null,pauseRelayReconnection=()=>{reconnectionLockingPromise||=new Promise(e=>{resolver=e}).finally(()=>{resolver=null,reconnectionLockingPromise=null})},resumeRelayReconnection=()=>{resolver?.()},makeSocket=(e,t)=>{let n={},a=()=>{let o=new WebSocket(e);o.onclose=()=>{if(reconnectionLockingPromise){reconnectionLockingPromise.then(a);return}socketRetryPeriods[e]??=defaultRetryMs,setTimeout(a,socketRetryPeriods[e]),socketRetryPeriods[e]*=2},o.onmessage=e=>t(String(e.data)),n.socket=o,n.url=o.url,n.ready=new Promise(t=>o.onopen=()=>{t(n),socketRetryPeriods[e]=defaultRetryMs}),n.send=e=>{o.readyState===1&&o.send(e)}};return a(),n},createRelayManager=e=>{let t={},n=new WeakMap,a=e=>{let t=n.get(e);if(!t)throw mkErr(`relay bookkeeping missing registration for relay client`);return t};return{register:(e,a)=>(t[e]=a,n.set(a,e),a),keyOf:a,scoped:()=>{let e={},t=t=>e[t]??={};return{forKey:t,forRelay:e=>t(a(e))}},getSockets:()=>fromEntries(entries(t).flatMap(([t,n])=>{let a=e(n);return a?[[t,a]]:[]}))}},watchOnline=()=>{if(isBrowser){let e=new AbortController;return addEventListener(`online`,resumeRelayReconnection,{signal:e.signal}),addEventListener(`offline`,pauseRelayReconnection,{signal:e.signal}),()=>e.abort()}return noOp},algo=`AES-GCM`,strToSha1={},pack=e=>btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(e)))),unpack=e=>{let t=atob(e);return new Uint8Array(t.length).map((e,n)=>t.charCodeAt(n)).buffer},hashWith=async(e,t)=>new Uint8Array(await crypto.subtle.digest(e,encodeBytes(t))),sha1=async e=>strToSha1[e]??=Array.from(await hashWith(`SHA-1`,e)).map(e=>e.toString(36)).join(``),genKey=async(e,t,n)=>crypto.subtle.importKey(`raw`,await crypto.subtle.digest({name:`SHA-256`},encodeBytes(`${e}:${t}:${n}`)),{name:algo},!1,[`encrypt`,`decrypt`]),deriveRoomNamespace=async(e,t)=>toHex(await hashWith(`SHA-256`,`${libName}:${e}:${t}`)),joinChar=`$`,ivJoinChar=`,`,encrypt=async(e,t)=>{let n=crypto.getRandomValues(new Uint8Array(16));return n.join(ivJoinChar)+joinChar+pack(await crypto.subtle.encrypt({name:algo,iv:n},await e,encodeBytes(t)))},decrypt=async(e,t)=>{let[n,a]=t.split(joinChar);return decodeBytes(await crypto.subtle.decrypt({name:algo,iv:new Uint8Array(n?.split(ivJoinChar).map(Number)??[])},await e,unpack(a??``)))},offerTtl=57333,offerLeaseTtlMs=18e4,poolSize=20,OfferPool=class{pool=[];pooled=new Set;leased=new Map;recycling=new Set;cleanupTimer=null;active=!1;constructor(e){this.makeOffer=e}get isActive(){return this.active}warmup(){this.pool=[],this.pooled.clear(),alloc(poolSize,this.makeOffer).forEach(e=>this.push(e)),this.active=!0,this.cleanupTimer=setInterval(()=>{this.pool=this.pool.filter(e=>e.isDead?(this.pooled.delete(e),!1):!0)},offerTtl)}push(e){e.isDead||this.pooled.has(e)||this.leased.has(e)||(this.pool.push(e),this.pooled.add(e))}shift(e){let t=[];for(;t.length<e&&this.pool.length>0;){let e=this.pool.shift();if(!e)break;this.pooled.delete(e),t.push(e)}return t}claimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e))}recycle(e){if(!(e.isDead||this.recycling.has(e))){if(e.connection.remoteDescription){e.destroy();return}if(!this.active){e.destroy();return}this.recycling.add(e),e.setHandlers({connect:noOp,close:noOp,error:noOp}),e.getOffer(!0).then(t=>{if(!t||t.type!==`offer`||e.isDead||!this.active){e.destroy();return}this.push(e)}).catch(()=>e.destroy()).finally(()=>this.recycling.delete(e))}}reclaimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e),this.recycle(e))}lease(e){this.claimLeased(e),this.leased.set(e,setTimeout(()=>{this.leased.delete(e),this.recycle(e)},offerLeaseTtlMs))}checkout(e,t,n){let a=this.shift(e),o=Math.max(0,e-a.length);o>0&&a.push(...alloc(o,this.makeOffer));let s=async(e,a=!1)=>{try{let a=await n(e);return t?(this.lease(e),{peer:e,offer:a,claim:()=>this.claimLeased(e),reclaim:()=>this.reclaimLeased(e)}):{peer:e,offer:a}}catch(t){if(this.claimLeased(e),this.pooled.delete(e),e.destroy(),!a)return s(this.makeOffer(),!0);throw t}};return all(a.map(e=>s(e)))}getOffers(e,t){return this.checkout(e,!0,t)}destroy(){this.active=!1,this.cleanupTimer&&=(clearInterval(this.cleanupTimer),null),this.pool.forEach(e=>e.destroy()),this.pool=[],this.pooled.clear(),this.leased.forEach((e,t)=>{resetTimer(e),t.destroy()}),this.leased.clear(),this.recycling.forEach(e=>e.destroy()),this.recycling.clear()}},overlapRoomPasswordErr=mkErr(`incorrect password for overlapping room`),createPasswordHandshake=(e,t,n)=>{let a=a=>hashWith(`SHA-256`,`${a}:${e}:${t}:${n}`).then(toHex),o=async(t,n,o)=>{if(!e)return;if(o){let e=genId(36);await t({__trystero_pw:`challenge`,c:e});let{data:o}=await n();if(!o||typeof o!=`object`||o.__trystero_pw!==`response`||typeof o.h!=`string`)throw overlapRoomPasswordErr;let s=await a(e);if(o.h!==s)throw overlapRoomPasswordErr;return}let{data:s}=await n();if(!s||typeof s!=`object`||s.__trystero_pw!==`challenge`||typeof s.c!=`string`)throw overlapRoomPasswordErr;await t({__trystero_pw:`response`,h:await a(s.c)})};return{run:o,compose:t=>e||t?async(e,n,a,s)=>{await o(n,a,s),await t?.(e,n,a,s)}:void 0}},iceTimeout=15e3,disconnectedCloseDelayMs=5e3,iceStateEvent=`icegatheringstatechange`,offerType=`offer`,answerType=`answer`,outOfRangePattern=/out of range/i,rewriteMdnsCandidatesToLoopback=e=>e.replace(/ (\S+\.local) (\d+) typ host/g,` 127.0.0.1 $2 typ host`),peer_default=(e,{trickleIce:t,rtcConfig:n,rtcPolyfill:a,turnConfig:o,_test_only_mdnsHostFallbackToLoopback:s})=>{let l=new(a??RTCPeerConnection)({iceServers:defaultIceServers.concat(o??[]),...n}),u={},d=[],f=[],m=t!==!1,h=[],v=[],y=!1,b=!1,x=null,S=null,C=!1,T=()=>S=resetTimer(S),E=()=>{C||(C=!0,T(),u.close?.())},D=e=>{u.signal?u.signal(e):d.push(e)},O=e=>{let t=u.signal;u.signal=n=>{t?.(n),e(n)},d.length>0&&d.splice(0).forEach(e=>u.signal?.(e))},k=e=>s?rewriteMdnsCandidatesToLoopback(e):e,j=e=>{if(!s||typeof e.candidate!=`string`)return e;let t=rewriteMdnsCandidatesToLoopback(e.candidate);return t===e.candidate?e:{...e,candidate:t}},M=e=>({type:e.localDescription?.type??offerType,sdp:k(e.localDescription?.sdp??``)}),N=()=>{let e=l.remoteDescription?.sdp;return e?e.match(/a=ice-ufrag:([^\s]+)/)?.[1]??null:null},F=()=>(l.remoteDescription?.sdp?.match(/^m=/gm)??[]).length,I=e=>{if(!l.remoteDescription)return!1;let t=F();if(typeof e.sdpMLineIndex==`number`&&t>0&&e.sdpMLineIndex>=t)return!1;let n=N();return!(n&&e.usernameFragment&&e.usernameFragment!==n)},L=async e=>{try{return await l.addIceCandidate(e),!0}catch(t){if(t instanceof Error&&outOfRangePattern.test(t.message)&&typeof e.sdpMLineIndex==`number`)return!1;throw t}},R=async()=>{if(!l.remoteDescription||h.length===0)return;let e=h.splice(0),t=[];for(let n of e){if(!I(n)){t.push(n);continue}await L(n)||t.push(n)}t.length>0&&h.push(...t)},z=async e=>{if(I(e)){await L(e)||h.push(e);return}h.push(e)},B=e=>{e.binaryType=`arraybuffer`,e.bufferedAmountLowThreshold=65535,e.onmessage=e=>{let t=e.data;u.data?u.data(t):f.push(t)},e.onopen=()=>u.connect?.(),e.onclose=E,e.onerror=({error:e})=>u.error?.(toError(e,`data channel error`))},V=async e=>{let t=null;try{await Promise.race([new Promise(t=>{let n=()=>{e.iceGatheringState===`complete`&&(e.removeEventListener(iceStateEvent,n),t())};e.addEventListener(iceStateEvent,n),n()}),new Promise(e=>{t=setTimeout(e,iceTimeout)})])}finally{resetTimer(t)}return M(e)},H=async()=>{let e=m?M(l):await V(l);return D(e),e};e?(x=l.createDataChannel(`data`),B(x)):l.ondatachannel=({channel:e})=>{x=e,B(e)};let U=async(e=!1)=>{if(l.connectionState!==`closed`)try{return y=!0,e&&(l.signalingState!==`stable`&&l.signalingState!==`closed`&&l.localDescription?.type===offerType&&await l.setLocalDescription({type:`rollback`}),typeof l.restartIce==`function`&&l.restartIce()),await l.setLocalDescription(e?await l.createOffer({iceRestart:!0}):void 0),await H()}catch(e){u.error?.(toError(e,`failed to create local offer`))}finally{y=!1}};l.onnegotiationneeded=async()=>U(!1),l.onicecandidate=({candidate:e})=>{if(!m||!e)return;let t=j(typeof e.toJSON==`function`?e.toJSON():{candidate:e.candidate,sdpMid:e.sdpMid,sdpMLineIndex:e.sdpMLineIndex,usernameFragment:e.usernameFragment});D({type:candidateType,sdp:JSON.stringify(t)})},l.onconnectionstatechange=()=>{if(l.connectionState===`connected`||l.connectionState===`connecting`){T();return}if(l.connectionState===`disconnected`){S||=setTimeout(()=>{S=null,l.connectionState===`disconnected`&&E()},disconnectedCloseDelayMs);return}(l.connectionState===`failed`||l.connectionState===`closed`)&&E()},l.ontrack=e=>{let t=e.streams[0];if(t){if(!u.track&&!u.stream){v.push({track:e.track,stream:t});return}u.track?.(e.track,t),u.stream?.(t)}},l.onremovestream=e=>u.stream?.(e.stream);let W=e?new Promise(e=>O(t=>{t.type===offerType&&e(t)})):Promise.resolve();return e&&queueMicrotask(()=>{!y&&l.signalingState===`stable`&&!l.localDescription&&l.connectionState!==`closed`&&l.onnegotiationneeded?.(new Event(`negotiationneeded`))}),{created:Date.now(),connection:l,get channel(){return x},get isDead(){return l.connectionState===`closed`},getOffer:async(t=!1)=>{if(e)return t?U(!0):l.localDescription?.type===offerType?m?M(l):V(l):W},async signal(t){if(t.type===`candidate`){try{let e=JSON.parse(t.sdp);e&&typeof e==`object`&&await z(j(e))}catch(e){u.error?.(toError(e,`failed to parse remote candidate`))}return}if(!(x?.readyState===`open`&&!t.sdp?.includes(`a=rtpmap`)))try{let n={...t,sdp:k(t.sdp)};if(t.type===offerType){if(y||l.signalingState!==`stable`&&!b){if(e)return;await all([l.setLocalDescription({type:`rollback`}),l.setRemoteDescription(n)])}else await l.setRemoteDescription(n);return await R(),await l.setLocalDescription(),await H()}if(t.type===answerType){b=!0;try{await l.setRemoteDescription(n),await R()}finally{b=!1}}}catch(e){u.error?.(toError(e,`failed to apply remote signal`))}},sendData:e=>x?.send(e),destroy:()=>{T(),x?.close(),l.close(),y=!1,b=!1,E()},setHandlers:e=>{let{signal:t,...n}=e;Object.assign(u,n),u.data&&f.length>0&&f.splice(0).forEach(e=>u.data?.(e)),t&&O(t),(u.track||u.stream)&&v.length>0&&v.splice(0).forEach(({track:e,stream:t})=>{u.track?.(e,t),u.stream?.(t)})},offerPromise:W,addStream:e=>e.getTracks().forEach(t=>l.addTrack(t,e)),removeStream:e=>l.getSenders().filter(t=>t.track&&e.getTracks().includes(t.track)).forEach(e=>l.removeTrack(e)),addTrack:(e,t)=>l.addTrack(e,t),removeTrack:e=>{let t=l.getSenders().find(t=>t.track===e);t&&l.removeTrack(t)},replaceTrack:(e,t)=>{let n=l.getSenders().find(t=>t.track===e);if(n)return n.replaceTrack(t)}}},defaultIceServers=[...alloc(3,(e,t)=>`stun:stun${t||``}.l.google.com:19302`),`stun:stun.cloudflare.com:3478`].map(e=>({urls:e})),TypedArray=Object.getPrototypeOf(Uint8Array),typeByteLimit=32,typeIndex=0,nonceIndex=32,tagIndex=34,progressIndex=35,payloadIndex=36,chunkSize=16*2**10-payloadIndex,oneByteMax=255,twoByteMax=65535,buffLowEvent=`bufferedamountlow`,channelCloseEvent=`close`,channelErrorEvent=`error`,unloadEvent=`beforeunload`,defaultHandshakeTimeoutMs=1e4,backpressureWaitTimeoutMs=1e4,internalNs=e=>`@_`+e,beforeUnloadRoomCleanups=new Set,cleanupActiveRoomsOnBeforeUnload=()=>beforeUnloadRoomCleanups.forEach(e=>e()),registerBeforeUnloadCleanup=e=>(beforeUnloadRoomCleanups.add(e),beforeUnloadRoomCleanups.size===1&&addEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload),()=>{beforeUnloadRoomCleanups.delete(e),beforeUnloadRoomCleanups.size||removeEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload)}),toByteArray=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),toHandshakeErrorMessage=e=>{let t=toErrorMessage(e,`unknown error`);return t.startsWith(`handshake `)?t:`handshake failed: ${t}`},waitForBufferedAmountLow=(e,t=backpressureWaitTimeoutMs)=>e.readyState!==`open`||e.bufferedAmount<=e.bufferedAmountLowThreshold?Promise.resolve(e.readyState===`open`):new Promise(n=>{let a=!1,o=null,s=t=>{a||(a=!0,e.removeEventListener(buffLowEvent,l),e.removeEventListener(channelCloseEvent,u),e.removeEventListener(channelErrorEvent,u),resetTimer(o),n(t))},l=()=>s(!0),u=()=>s(!1);if(e.addEventListener(buffLowEvent,l),e.addEventListener(channelCloseEvent,u),e.addEventListener(channelErrorEvent,u),o=setTimeout(()=>s(!1),t),e.readyState!==`open`){s(!1);return}e.bufferedAmount<=e.bufferedAmountLowThreshold&&s(!0)}),room_default=(e,t,n,{onPeerHandshake:a,onHandshakeError:o,handshakeTimeoutMs:s=defaultHandshakeTimeoutMs}={})=>{let l={},u={},d={},f={},m={},h={},v={},y={},b={},x={},S=new WeakMap,C=new WeakMap,T={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},E=noOp,D=(e,t,{includePending:n=!1}={})=>(e?Array.isArray(e)?e:[e]:keys(n?l:u)).flatMap(e=>{let a=n?l[e]:u[e];return a?[Promise.resolve(t(e,a))]:(console.warn(`${libName}: no peer with id ${e} found`),[])}),O=(e,t,n,a,o,s={})=>{let l={k:t,...s,...n===void 0?{}:{m:n}};return D(e,async(e,t)=>{await a(l,e),o(t)})},k=e=>t=>{let n=e.get(t);return n||(n=genId(20),e.set(t,n)),n},j=k(S),M=k(C),N=e=>l[e]??null,F=(e,t,n,a)=>{u[e]&&(N(e)?.__trysteroSetRemoteStreamByKey?.(t,n),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(n.id,n),T.onPeerStream(n,e,a))},I=(e,t,n,a,o)=>{u[e]&&(N(e)?.__trysteroSetRemoteTrackByKey?.(t,n,a),typeof a.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(a.id,a),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteTrackById?.(n.id,n,a),T.onPeerTrack(n,a,e,o))},L=(e,t=mkErr(`peer disconnected`))=>{let n=d[e],a=toError(t,`peer disconnected`);n&&(resetTimer(n.handshakeTimer),n.pendingHandshakePayloads.length=0,n.handshakeWaiters.splice(0).forEach(e=>e.reject(a)),delete d[e]),delete l[e],delete u[e],delete h[e],y[e]?.splice(0).forEach(e=>e.reject(a)),delete y[e],delete b[e],delete x[e]},R=(e,n,a)=>{let o=l[e];if(!o||n&&o!==n)return;let s=!!u[e];L(e,a),o.destroy(),s&&T.onPeerLeave(e),t(e)},z=(e,t={})=>{let n=m[e];if(f[e]&&n){let a=f[e].options;if(a.sendToPending!==!!t.sendToPending||a.receiveWhilePending!==!!t.receiveWhilePending)throw mkErr(`action type "${e}" cannot be redefined`);return n}if(!e)throw mkErr(`action type argument is required`);let a=encodeBytes(e);if(a.byteLength>typeByteLimit)throw mkErr(`action type string "${e}" (${a.byteLength}b) exceeds byte limit (${typeByteLimit}). Hint: choose a shorter name.`);let o={sendToPending:!!t.sendToPending,receiveWhilePending:!!t.receiveWhilePending},s=new Uint8Array(typeByteLimit);s.set(a);let d=0;return f[e]={onComplete:noOp,onProgress:noOp,setOnComplete:t=>{f[e].onComplete=t;let n=v[e];n?.length&&(delete v[e],n.forEach(({payload:e,peerId:n,metadata:a})=>t(e,n,a)))},setOnProgress:t=>{f[e].onProgress=t},send:async(e,t,n,a)=>{let f=typeof e;if(f===`undefined`)throw mkErr(`action data cannot be undefined`);let m=f!==`string`,h=e instanceof Blob,v=h||e instanceof ArrayBuffer||e instanceof TypedArray,y=n!==void 0,b=v?toByteArray(h?await e.arrayBuffer():e):encodeBytes(m?toJson(e):e),x=y?encodeBytes(toJson(n)):null,S=Math.ceil(b.byteLength/chunkSize)+ +!!y||1,C=alloc(S,(e,t)=>{let n=t===S-1,a=!!(y&&t===0),o=new Uint8Array(payloadIndex+(a?x?.byteLength??0:n?b.byteLength-chunkSize*(S-(y?2:1)):chunkSize));return o.set(s),o.set([d>>8,d&oneByteMax],nonceIndex),o.set([Number(n)|Number(a)<<1|Number(v)<<2|Number(m)<<3],tagIndex),o.set([Math.round((t+1)/S*oneByteMax)],progressIndex),o.set(y?a?x??new Uint8Array:b.subarray((t-1)*chunkSize,t*chunkSize):b.subarray(t*chunkSize,(t+1)*chunkSize),payloadIndex),o});return d=d+1&twoByteMax,await all(D(t,async(e,t)=>{let{channel:s}=t,d=0;for(;d<S;){let f=C[d];if(!f||s&&s.bufferedAmount>s.bufferedAmountLowThreshold&&!await waitForBufferedAmountLow(s))break;let m=o.sendToPending?l[e]:u[e];if(!m||m!==t)break;t.sendData(f),d++;let h=f[progressIndex]??oneByteMax;a?.(h/oneByteMax,e,n)}},{includePending:o.sendToPending})),[]},options:o},m[e]=[f[e].send,f[e].setOnComplete,f[e].setOnProgress]},B=e=>z(e),V=(e,t)=>{let n=d[e];if(!n)return;let a=new Uint8Array(t),o=decodeBytes(a.subarray(typeIndex,nonceIndex)).replaceAll(`\0`,``),s=f[o];if(!n.isActive&&!s?.options.receiveWhilePending)return;let l=(a[nonceIndex]??0)<<8|(a[33]??0),u=a[tagIndex]??0,m=a[progressIndex]??0,y=a.subarray(payloadIndex),b=!!(u&1),x=!!(u&2),S=!!(u&4),C=!!(u&8);h[e]??={},h[e][o]??={};let T=h[e][o][l]??={chunks:[]};if(x?T.meta=fromJson(decodeBytes(y)):T.chunks.push(y),s?.onProgress(m/oneByteMax,e,T.meta),!b)return;let E=new Uint8Array(T.chunks.reduce((e,t)=>e+t.byteLength,0));if(T.chunks.reduce((e,t)=>(E.set(t,e),e+t.byteLength),0),delete h[e][o][l],S)s?s.onComplete(E,e,T.meta):(v[o]??=[]).push({payload:E,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}});else{let t=decodeBytes(E),n=C?fromJson(t):t;s?s.onComplete(n,e,T.meta):(v[o]??=[]).push({payload:n,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}})}},H=async()=>{await ie(``),await new Promise(e=>setTimeout(e,99)),entries(l).forEach(([e,t])=>{t.destroy(),L(e,mkErr(`room left`))}),E(),n()},[U,W]=z(internalNs(`ping`)),[G,ee]=z(internalNs(`pong`)),[te,K]=z(internalNs(`signal`)),[q,ne]=z(internalNs(`stream`)),[re,J]=z(internalNs(`track`)),[ie,ae]=z(internalNs(`leave`),{sendToPending:!0,receiveWhilePending:!0}),[oe,se]=z(internalNs(`hsdata`),{sendToPending:!0,receiveWhilePending:!0}),[ce,Y]=z(internalNs(`hsready`),{sendToPending:!0,receiveWhilePending:!0}),le=(e,t)=>{let n=d[e];!n||t&&n.peer!==t||n.isActive||!n.didLocalHandshakePass||!n.didReceiveRemoteReady||(n.isActive=!0,u[e]=n.peer,n.handshakeTimer=resetTimer(n.handshakeTimer),T.onPeerJoin(e))},ue=(e,t,n)=>{let a=d[e];if(!a||a.peer!==t)return;let s=toHandshakeErrorMessage(n);o?.(e,s),R(e,t,mkErr(s))},de=(e,t)=>{let n=d[e];!n||n.peer!==t||n.isActive||(n.didLocalHandshakePass=!0,ce(``,e).catch(n=>ue(e,t,mkErr(`failed sending handshake readiness: ${toErrorMessage(n,`unknown send failure`)}`))),le(e,t))},X=(e,t)=>{let n=d[e];if(!n||n.peer!==t)return;n.handshakeTimer=setTimeout(()=>ue(e,t,mkErr(`handshake timed out after ${s}ms`)),s);let o=async(t,n)=>{await oe(t,e,n)},l=()=>new Promise((n,a)=>{let o=d[e];if(!o||o.peer!==t){a(mkErr(`peer disconnected during handshake`));return}let s=o.pendingHandshakePayloads.shift();if(s){n(s);return}o.handshakeWaiters.push({resolve:n,reject:e=>a(e)})}),u=selfId<e;Promise.resolve(a?.(e,o,l,u)).then(()=>de(e,t)).catch(n=>ue(e,t,toError(n,`handshake failed`)))},fe=e=>e&&typeof e==`object`&&!Array.isArray(e)&&typeof e.k==`string`?{key:e.k,...typeof e.s==`string`?{streamId:e.s}:{},...typeof e.t==`string`?{trackId:e.t}:{},...Object.hasOwn(e,`m`)?{metadata:e.m}:{}}:null;return W((e,t)=>G(``,t)),ee((e,t)=>{let n=y[t];(n?.shift())?.resolve(),n&&!n.length&&delete y[t]}),K((e,t)=>{u[t]&&l[t]?.signal(e)}),ne((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteStreamByKey?.(n.key)??(n.streamId?a?.__trysteroGetRemoteStreamById?.(n.streamId):void 0);if(o){F(t,n.key,o,n.metadata);return}(b[t]??=[]).push(n)}),J((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteTrackByKey?.(n.key)??(n.trackId?a?.__trysteroGetRemoteTrackById?.(n.trackId):void 0);if(o){I(t,n.key,o.track,o.stream,n.metadata);return}(x[t]??=[]).push(n)}),ae((e,t)=>R(t,void 0,mkErr(`peer left room`))),se((e,t,n)=>{let a=d[t];if(!a||a.isActive)return;let o=n===void 0?{data:e}:{data:e,metadata:n},s=a.handshakeWaiters.shift();if(s){s.resolve(o);return}a.pendingHandshakePayloads.push(o)}),Y((e,t)=>{let n=d[t];!n||n.isActive||(n.didReceiveRemoteReady=!0,le(t))}),e((e,t)=>{let n=l[t];if(n){if(n===e)return;n.destroy(),L(t,mkErr(`peer replaced`))}l[t]=e,d[t]={peer:e,isActive:!1,didLocalHandshakePass:!1,didReceiveRemoteReady:!1,handshakeTimer:null,pendingHandshakePayloads:[],handshakeWaiters:[]},e.setHandlers({data:e=>V(t,e),stream:e=>{if(!u[t])return;let n=b[t]?.shift();n&&F(t,n.key,e,n.metadata)},track:(e,n)=>{if(!u[t])return;let a=x[t]?.shift();a&&I(t,a.key,e,n,a.metadata)},signal:e=>{u[t]&&te(e,t)},close:()=>R(t,e,mkErr(`peer disconnected`)),error:n=>{console.error(`${libName} peer error:`,n),R(t,e,n)}}),X(t,e)}),isBrowser&&(E=registerBeforeUnloadCleanup(()=>H().catch(noOp))),{makeAction:B,leave:H,ping:async e=>{if(!u[e])throw mkErr(`no active peer with id ${e}`);let t=Date.now();return await new Promise((t,n)=>{let a=y[e]??=[],o=()=>{let t=y[e];if(!t)return;let n=t.indexOf(s);n>-1&&t.splice(n,1),t.length||delete y[e]},s={resolve:()=>{o(),t()},reject:e=>{o(),n(e)}};a.push(s),U(``,e).catch(e=>s.reject(toError(e,`peer disconnected`)))}),Date.now()-t},getPeers:()=>fromEntries(entries(u).map(([e,t])=>[e,t.connection])),addStream:(e,t,n)=>O(t,j(e),n,q,t=>t.addStream(e),{s:e.id}),removeStream:(e,t)=>{D(t,(t,n)=>n.removeStream(e))},addTrack:(e,t,n,a)=>O(n,M(e),a,re,n=>n.addTrack(e,t),{s:t.id,t:e.id}),removeTrack:(e,t)=>{D(t,(t,n)=>n.removeTrack(e))},replaceTrack:(e,t,n,a)=>O(n,M(t),a,re,n=>n.replaceTrack(e,t),{t:e.id}),onPeerJoin:e=>{T.onPeerJoin=e,keys(u).forEach(t=>e(t))},onPeerLeave:e=>T.onPeerLeave=e,onPeerStream:e=>T.onPeerStream=e,onPeerTrack:e=>T.onPeerTrack=e}},roomFrameVersion=1,roomPresenceFrameVersion=2,wrapRoomFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(3+n.byteLength+t.byteLength);return a[0]=roomFrameVersion,a[1]=n.byteLength>>>8&255,a[2]=n.byteLength&255,a.set(n,3),a.set(t,3+n.byteLength),a},wrapRoomPresenceFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(4+n.byteLength);return a[0]=roomPresenceFrameVersion,a[1]=Number(t),a[2]=n.byteLength>>>8&255,a[3]=n.byteLength&255,a.set(n,4),a},unwrapFrame=e=>{let t=new Uint8Array(e);if(t.byteLength<3)return null;if(t[0]===roomFrameVersion){let e=(t[1]??0)<<8|(t[2]??0),n=3+e;return e<=0||t.byteLength<n?null:{type:`room`,roomToken:decodeBytes(t.subarray(3,n)),payload:t.subarray(n).slice().buffer}}if(t[0]!==roomPresenceFrameVersion||t.byteLength<4)return null;let n=(t[2]??0)<<8|(t[3]??0),a=4+n;return n<=0||t.byteLength<a?null:{type:`presence`,roomToken:decodeBytes(t.subarray(4,a)),isPresent:t[1]===1}},isPeerUnderlyingStale=e=>{let{connection:t,channel:n}=e;return e.isDead||t.connectionState===`closed`||t.connectionState===`failed`||t.iceConnectionState===`closed`||t.iceConnectionState===`failed`||n?.readyState===`closing`||n?.readyState===`closed`},getConnectedPeerHealth=e=>{if(isPeerUnderlyingStale(e))return`stale`;let{channel:t}=e;return!t||t.readyState!==`open`?`transient`:`live`},SharedPeerManager=class{byApp={};roomPresenceHandlers={};getMap(e){return this.byApp[e]??={}}get(e,t){return this.byApp[e]?.[t]}isPeerStale(e){return isPeerUnderlyingStale(e)}getHealth(e){return this.isPeerStale(e)?`stale`:`live`}setRoomPresenceHandler(e,t){return this.roomPresenceHandlers[e]=t,()=>{this.roomPresenceHandlers[e]===t&&delete this.roomPresenceHandlers[e]}}sendRoomPresence(e,t,n){e.isClosing||e.peer.isDead||e.peer.sendData(wrapRoomPresenceFrame(t,n))}clear(e,t,{destroyPeer:n}){let a=this.byApp[e],o=a?.[t];if(!o||o.isClosing)return;o.idleTimer=resetTimer(o.idleTimer),o.isClosing=!0,n&&!o.peer.isDead&&o.peer.destroy();let s=values(o.bindings);o.bindings={},o.bindingsByToken={},o.controlRoomId=null,delete a[t],s.forEach(e=>{e.handlers.close?.(),e.pendingData.length=0,e.pendingSendData.length=0,e.pendingTracks.length=0}),o.remoteStreamsByKey.clear(),o.remoteStreamsById.clear(),o.remoteTracksByKey.clear(),o.remoteTracksById.clear(),o.pendingDataByToken.clear(),o.remoteRoomTokens.clear(),keys(a).length===0&&delete this.byApp[e]}register(e,t,n,a){let o=this.getMap(e),s=o[t];if(s){if(s.idleTimer=resetTimer(s.idleTimer),s.peer===n)return s;this.clear(e,t,{destroyPeer:!0})}let l={appId:e,peerId:t,peer:n,bindings:{},bindingsByToken:{},pendingDataByToken:new Map,remoteRoomTokens:new Set,idleTimer:null,controlRoomId:null,streamOwners:new Map,trackOwners:new Map,remoteStreamsByKey:new Map,remoteStreamsById:new Map,remoteTracksByKey:new Map,remoteTracksById:new Map,idleMs:a,isClosing:!1};return n.setHandlers({data:e=>this.dispatchData(l,e),signal:e=>this.dispatchSignal(l,e),close:()=>this.clear(e,t,{destroyPeer:!1}),error:n=>{console.error(`${libName} peer error:`,n),this.clear(e,t,{destroyPeer:!1})},track:(e,t)=>this.dispatchTrack(l,e,t)}),o[t]=l,l}bind(e,t,n,{onDetach:a}){let o=n.bindings[e];if(o)return n.idleTimer=resetTimer(n.idleTimer),{proxy:o.proxy,isNew:!1};let s={roomId:e,roomToken:null,roomTokenPromise:t,handlers:{},pendingData:[],pendingSendData:[],pendingTracks:[],detach:noOp,proxy:{}},l=()=>{n.bindings[e]&&(this.pruneRoomOwnership(n,e),delete n.bindings[e],s.roomToken&&n.bindingsByToken[s.roomToken]===s&&delete n.bindingsByToken[s.roomToken],n.controlRoomId===e&&(n.controlRoomId=keys(n.bindings)[0]??null),a(),this.scheduleIdleTimer(n))},u={created:n.peer.created,get connection(){return n.peer.connection},get channel(){return n.peer.channel},get isDead(){return n.peer.isDead},getOffer:e=>n.peer.getOffer(e),signal:e=>n.peer.signal(e),sendData:e=>{if(!s.roomToken){s.pendingSendData.push(e);return}n.peer.sendData(wrapRoomFrame(s.roomToken,e))},destroy:()=>l(),setHandlers:e=>{let{signal:t,...n}=e;Object.assign(s.handlers,n),t&&(s.handlers.signal=t),this.flushBindingQueues(s)},offerPromise:n.peer.offerPromise,addStream:t=>{let a=n.streamOwners.get(t)??new Set,o=a.size===0;a.add(e),n.streamOwners.set(t,a),o&&n.peer.addStream(t)},removeStream:t=>{let a=n.streamOwners.get(t);a&&(a.delete(e),a.size===0&&(n.streamOwners.delete(t),n.peer.removeStream(t)))},addTrack:(t,a)=>{let o=n.trackOwners.get(t)??{stream:a,rooms:new Set},s=o.rooms.size===0;return o.stream=a,o.rooms.add(e),n.trackOwners.set(t,o),s?n.peer.addTrack(t,a):n.peer.connection.getSenders().find(e=>e.track===t)??n.peer.addTrack(t,a)},removeTrack:t=>{let a=n.trackOwners.get(t);a&&(a.rooms.delete(e),a.rooms.size===0&&(n.trackOwners.delete(t),n.peer.removeTrack(t)))},replaceTrack:(e,t)=>{let a=n.trackOwners.get(e);if(a){n.trackOwners.delete(e);let o=n.trackOwners.get(t)??{stream:a.stream,rooms:new Set};a.rooms.forEach(e=>o.rooms.add(e)),n.trackOwners.set(t,o)}return n.peer.replaceTrack(e,t)},__trysteroGetRemoteStreamByKey:e=>n.remoteStreamsByKey.get(e),__trysteroSetRemoteStreamByKey:(e,t)=>void n.remoteStreamsByKey.set(e,t),__trysteroGetRemoteStreamById:e=>n.remoteStreamsById.get(e),__trysteroSetRemoteStreamById:(e,t)=>void n.remoteStreamsById.set(e,t),__trysteroGetRemoteTrackByKey:e=>n.remoteTracksByKey.get(e),__trysteroSetRemoteTrackByKey:(e,t,a)=>void n.remoteTracksByKey.set(e,{track:t,stream:a}),__trysteroGetRemoteTrackById:e=>n.remoteTracksById.get(e),__trysteroSetRemoteTrackById:(e,t,a)=>void n.remoteTracksById.set(e,{track:t,stream:a})};return s.proxy=u,s.detach=l,n.bindings[e]=s,n.controlRoomId??=e,n.idleTimer=resetTimer(n.idleTimer),t.then(t=>{if(n.isClosing||n.bindings[e]!==s)return;s.roomToken=t,n.bindingsByToken[t]=s;let a=n.pendingDataByToken.get(t);a?.length&&(s.pendingData.push(...a),n.pendingDataByToken.delete(t)),s.pendingSendData.splice(0).forEach(e=>n.peer.sendData(wrapRoomFrame(t,e))),this.flushBindingQueues(s)}),{proxy:u,isNew:!0}}pruneRoomOwnership(e,t){e.streamOwners.forEach((n,a)=>{n.delete(t),n.size===0&&(e.streamOwners.delete(a),e.peer.removeStream(a))}),e.trackOwners.forEach((n,a)=>{n.rooms.delete(t),n.rooms.size===0&&(e.trackOwners.delete(a),e.peer.removeTrack(a))})}scheduleIdleTimer(e){e.isClosing||keys(e.bindings).length>0||(e.idleTimer=resetTimer(e.idleTimer),e.idleTimer=setTimeout(()=>{let t=this.byApp[e.appId]?.[e.peerId];!t||keys(t.bindings).length>0||this.clear(e.appId,e.peerId,{destroyPeer:!0})},e.idleMs))}getSignalBinding(e){if(e.controlRoomId){let t=e.bindings[e.controlRoomId];if(t?.handlers.signal)return t}let t=values(e.bindings).find(e=>!!e.handlers.signal);return t?(e.controlRoomId=t.roomId,t):null}flushBindingQueues(e){let{handlers:t}=e;t.data&&e.pendingData.length>0&&e.pendingData.splice(0).forEach(e=>t.data?.(e)),(t.track||t.stream)&&e.pendingTracks.length&&e.pendingTracks.splice(0).forEach(({track:e,stream:n})=>{t.track?.(e,n),t.stream?.(n)})}dispatchData(e,t){let n=unwrapFrame(t);if(!n)return;if(n.type===`presence`){n.isPresent?e.remoteRoomTokens.add(n.roomToken):e.remoteRoomTokens.delete(n.roomToken),this.roomPresenceHandlers[e.appId]?.(e.peerId,n.roomToken,n.isPresent);return}let a=e.bindingsByToken[n.roomToken];if(!a){let t=e.pendingDataByToken.get(n.roomToken)??[];t.push(n.payload),e.pendingDataByToken.set(n.roomToken,t);return}a.handlers.data?a.handlers.data(n.payload):a.pendingData.push(n.payload)}dispatchSignal(e,t){this.getSignalBinding(e)?.handlers.signal?.(t)}dispatchTrack(e,t,n){values(e.bindings).forEach(e=>{if(e.handlers.track||e.handlers.stream){e.handlers.track?.(t,n),e.handlers.stream?.(n);return}e.pendingTracks.push({track:t,stream:n})})}},offerPostAnswerTtlMs=23333,offerIdSize=12,disconnectedPeerGraceMs=7533,answeringTtlMs=23333,legacyCandidateKey=`__legacy__`,offerRelayPlaceholder=`offer-placeholder`,publishCipheredSignalingMessage=(e,t,n,a,o,s)=>{e.toCipher(t).then(t=>{e.isLeaving()||!s()||a(n,toJson(o(t.sdp)))})},makeState=()=>({status:`idle`,offerPeer:null,offerId:null,offerSdp:null,offerInitPromise:null,offerAnswered:!1,offerRelays:[],offerSignalRelays:[],offerSignalBacklog:[],offerRelayTimers:[],offerExpiryTimer:null,connectedPeer:null,connectedPeerUnhealthySinceMs:null,answeringExpiryTimer:null,answeringPeer:null,pendingCandidates:{}}),getState=(e,t)=>e[t]??=makeState(),updateStatus=e=>{e.connectedPeer?e.status=`connected`:e.answeringPeer?e.status=`answering`:e.offerPeer||e.offerRelays.some(Boolean)?e.status=`offering`:e.status=`idle`},clearAnswering=(e,t)=>{e.answeringPeer===t&&(e.answeringExpiryTimer=resetTimer(e.answeringExpiryTimer),e.answeringPeer=null,updateStatus(e))},clearConnectedPeer=(e,t,n)=>{e.connectedPeer&&(e.connectedPeer.isDead||e.connectedPeer.destroy(),e.connectedPeer=null,e.connectedPeerUnhealthySinceMs=null,updateStatus(e))},clearOfferRelay=(e,t)=>{e.offerRelayTimers[t]=resetTimer(e.offerRelayTimers[t]),e.offerRelays[t]&&(e.offerRelays[t]=void 0,updateStatus(e))},clearOfferRelayIfPlaceholder=(e,t)=>{e?.offerRelays[t]===offerRelayPlaceholder&&clearOfferRelay(e,t)},hasRemoteDescription=e=>{if(e.isDead||e.connection.connectionState===`closed`)return!0;try{return!!e.connection.remoteDescription}catch{return!0}},resetOfferState=(e,t)=>{let n=e.offerAnswered;e.offerExpiryTimer=resetTimer(e.offerExpiryTimer),e.offerInitPromise=null,e.offerRelays.forEach((t,n)=>clearOfferRelay(e,n)),e.offerRelays=[],e.offerSignalRelays=[],e.offerRelayTimers=[],e.offerSignalBacklog=[],e.offerPeer&&e.offerPeer!==e.connectedPeer&&(n||hasRemoteDescription(e.offerPeer)?e.offerPeer.isDead||e.offerPeer.destroy():t.recycle(e.offerPeer)),e.offerPeer=null,e.offerId=null,e.offerSdp=null,e.offerAnswered=!1,updateStatus(e)},scheduleAnsweringExpiry=(e,t,n,a)=>{resetTimer(t.answeringExpiryTimer),t.answeringExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.answeringPeer!==a||(a.destroy(),clearAnswering(t,a))},answeringTtlMs)},flushBufferedCandidates=async(e,t,n)=>{let a=n?[n,legacyCandidateKey]:[legacyCandidateKey];for(let n of a){let a=e.pendingCandidates[n];if(a?.length){delete e.pendingCandidates[n];for(let e of a)await t.signal(e)}}},scheduleOfferExpiry=(e,t,n,a=offerTtl)=>{resetTimer(t.offerExpiryTimer);let o=t.offerId;t.offerExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.offerId!==o||resetOfferState(t,e.offerPool)},a)},ensureOffer=(e,t,n,a)=>t.offerPeer&&t.offerId&&t.offerSdp?Promise.resolve({peer:t.offerPeer,offer:t.offerSdp,offerId:t.offerId}):(t.offerInitPromise||=(async()=>{let o=(await e.offerPool.checkout(1,!1,e.encryptOffer))[0];if(!o)throw mkErr(`failed to allocate offer peer`);let{peer:s,offer:l}=o;t.offerPeer=s,t.offerId=genId(offerIdSize),t.offerSdp=l,t.offerAnswered=!1,t.offerSignalBacklog=[],updateStatus(t);let u=()=>{t.offerPeer===s&&!t.connectedPeer&&resetOfferState(t,e.offerPool),e.disconnectPeer(s,n)};return s.setHandlers({connect:()=>e.connectPeer(s,n,a),signal:e=>{t.offerPeer===s&&(t.offerSignalBacklog.push(e),t.offerSignalRelays.forEach(t=>t?.(e)))},close:u,error:u}),scheduleOfferExpiry(e,t,n),{peer:s,offer:l,offerId:t.offerId}})().finally(()=>t.offerInitPromise=null),t.offerInitPromise),handleAnnouncement=async(e,t,n,a,o)=>{if(a){e.attachSharedPeerToRoom(n,a);return}let s=e.peerStates[n];if(!s||s.connectedPeer||s.answeringPeer||s.offerAnswered){clearOfferRelayIfPlaceholder(s,t);return}if(s.offerRelays[t]!==offerRelayPlaceholder)return;let[l,u]=await all([sha1(topicPath(e.rootTopicPlaintext,n)),ensureOffer(e,s,n,t)]);if(e.isLeaving())return;if(s.connectedPeer||s.answeringPeer||s.offerAnswered||s.offerRelays[t]!==offerRelayPlaceholder){clearOfferRelayIfPlaceholder(s,t);return}s.offerRelayTimers[t]=resetTimer(s.offerRelayTimers[t]),s.offerRelays[t]=!0,updateStatus(s),s.offerRelayTimers[t]=setTimeout(()=>prunePendingOffer(e,n,t),(e.announceIntervals[t]??e.announceIntervalMs)*.9);let d=!1;s.offerSignalRelays[t]=t=>{d&&(e.isLeaving()||s.connectedPeer||s.offerPeer!==u.peer||s.offerId!==u.offerId||t.type!==`candidate`||publishCipheredSignalingMessage(e,t,l,o,e=>({peerId:selfId,offerId:u.offerId,candidate:e}),()=>!s.connectedPeer&&s.offerPeer===u.peer&&s.offerId===u.offerId))},o(l,toJson({peerId:selfId,offerId:u.offerId,offer:u.offer})),d=!0,s.offerSignalBacklog.forEach(e=>s.offerSignalRelays[t]?.(e))},handleOffer=async(e,t,n,a,o,s,l)=>{let u=getState(e.peerStates,n);if(u.answeringPeer||u.offerAnswered)return;let d=!!(u.offerPeer||u.offerRelays.some(Boolean));if((d||s)&&selfId<n)return;d&&resetOfferState(u,e.offerPool);let f=e.initPeer(!1,e.config);u.answeringPeer=f,scheduleAnsweringExpiry(e,u,n,f),updateStatus(u);let m=()=>{clearAnswering(u,f),e.disconnectPeer(f,n)};f.setHandlers({connect:()=>e.connectPeer(f,n,t),close:m,error:m});let h;try{h=await e.toPlain({type:`offer`,sdp:a})}catch{clearAnswering(u,f),e.onJoinError?.({error:`incorrect room password when decrypting offer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(f.isDead){clearAnswering(u,f);return}let v=await sha1(topicPath(e.rootTopicPlaintext,n));e.isLeaving()||(f.setHandlers({signal:t=>{e.isLeaving()||u.answeringPeer!==f||f.isDead||t.type!==`answer`&&t.type!==`candidate`||publishCipheredSignalingMessage(e,t,v,l,e=>{let n={peerId:selfId};return t.type===`answer`?n.answer=e:n.candidate=e,o&&(n.offerId=o),n},()=>u.answeringPeer===f&&!f.isDead)}}),await f.signal(h),await flushBufferedCandidates(u,f,o))},handleCandidate=async(e,t,n,a,o)=>{let s;try{s=await e.toPlain({type:candidateType,sdp:n})}catch{return}let l=getState(e.peerStates,t),u=a&&l?.offerPeer&&l.offerId===a?l.offerPeer:null,d=l?.answeringPeer??null,f=!a&&l?.offerPeer?l.offerPeer:null,m=o&&!o.isDead?o:u??d??f;if(!m||m.isDead){let e=a??legacyCandidateKey;(l.pendingCandidates[e]??=[]).push(s);return}m.signal(s)},handleAnswer=async(e,t,n,a,o,s)=>{let l;try{l=await e.toPlain({type:`answer`,sdp:a})}catch{e.onJoinError?.({error:`incorrect room password when decrypting answer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(s)e.offerPool.claimLeased(s),s.setHandlers({connect:()=>e.connectPeer(s,n,t),close:()=>e.disconnectPeer(s,n)}),s.signal(l);else{let t=e.peerStates[n];if(!t||!t.offerPeer||t.offerAnswered||o&&t.offerId&&o!==t.offerId||t.offerPeer.isDead)return;t.offerAnswered=!0,scheduleOfferExpiry(e,t,n,offerPostAnswerTtlMs),t.offerPeer.signal(l)}},prunePendingOffer=(e,t,n)=>{let a=e.peerStates[t];!a||a.connectedPeer||a.offerRelays[n]&&clearOfferRelay(a,n)},createSignalHandler=e=>t=>async(n,a,o)=>{if(e.isLeaving())return;let s=typeof a==`string`?fromJson(a):a,l=typeof s.peerId==`string`?s.peerId:``,u=s.offer,d=s.answer,f=s.candidate,m=s.offerId,h=s.peer,v=s.hasOutgoingOffer===!0;if(l===selfId)return;let y=e.peerStates[l],b=y?.connectedPeer;if(b&&y){let e=getConnectedPeerHealth(b);if(e===`live`){y.connectedPeerUnhealthySinceMs=null;return}if(e===`stale`)clearConnectedPeer(y,l,`message-from-stale-peer`);else{let e=Date.now(),t=y.connectedPeerUnhealthySinceMs??e;if(y.connectedPeerUnhealthySinceMs=t,e-t<disconnectedPeerGraceMs)return;clearConnectedPeer(y,l,`message-from-prolonged-disconnect`)}}let x=e.sharedPeers.get(e.appId,l);x&&e.sharedPeers.getHealth(x.peer)===`stale`&&(e.sharedPeers.clear(e.appId,l,{destroyPeer:!0}),x=void 0);let S=!!(l&&!u&&!d&&!f),[C,T]=await all([e.rootTopicP,e.selfTopicP]);if(!e.isLeaving()&&!(n!==C&&n!==T)){if(S&&!x){let n=getState(e.peerStates,l),a=selfId<l;if(n.answeringPeer||n.connectedPeer||n.offerAnswered)return;if(!a&&!n.offerPeer){let t=await sha1(topicPath(e.rootTopicPlaintext,l));!e.isLeaving()&&!n.connectedPeer&&o(t,toJson({peerId:selfId}));return}if(n.offerRelays[t])return;n.offerRelays[t]=offerRelayPlaceholder,updateStatus(n)}if(x&&(u||d||f)){if(x.bindings[e.roomId])return;e.attachSharedPeerToRoom(l,x);return}if(S)return handleAnnouncement(e,t,l,x,o);if(u)return handleOffer(e,t,l,u,m,v,o);if(f)return handleCandidate(e,l,f,m,h);if(d)return handleAnswer(e,t,l,d,m,h)}},announceIntervalMs=5333,announceWarmupIntervalsMs=[233,533,1333],sharedPeerIdleMsDefault=123333,strategy_default=({init:e,subscribe:t,announce:n})=>{let a={},o={},s={},l={},u=new SharedPeerManager,d=()=>values(a).some(e=>keys(e).length>0),f=e=>o[e]??={},m=e=>s[e]??={},h=(e,t,n)=>{u.getHealth(e.peer)===`live`&&u.sendRoomPresence(e,t,n)},v=(e,t)=>{entries(o[e]??{}).forEach(([n,a])=>{let{roomToken:s,roomTokenPromise:l}=a;if(s){h(t,s,!0);return}l.then(s=>{o[e]?.[n]===a&&a.roomToken===s&&(u.get(e,t.peerId)!==t||t.isClosing||h(t,s,!0))})})},y=(e,t,n)=>values(u.getMap(e)).forEach(e=>h(e,t,n)),b=e=>{l[e]||(l[e]=u.setRoomPresenceHandler(e,(t,n,a)=>{if(!a)return;let l=u.get(e,t),d=s[e]?.[n];!l||!d||o[e]?.[d]?.attachSharedPeerToRoom(t,l)}))},x=e=>{a[e]&&keys(a[e]).length>0||(l[e]?.(),delete l[e],delete o[e],delete s[e])},S=!1,C=[],T=null,E=noOp;return(l,h,D)=>{if(!l)throw mkErr(`requires a config map as the first argument`);if(D&&typeof D!=`object`)throw mkErr(`third argument must be a callbacks object`);let{appId:O}=l,k=D?.onJoinError,j=D?.onPeerHandshake,M=D?.handshakeTimeoutMs;if(!O)throw mkErr(`config map is missing appId field`);if(!h)throw mkErr(`roomId argument required`);if(M!==void 0&&(!Number.isFinite(M)||M<=0))throw mkErr(`handshakeTimeoutMs must be a positive number`);if(a[O]?.[h])return a[O][h];b(O);let N=topicPath(libName,O,h),F=sha1(N),I=sha1(topicPath(N,selfId)),L=genKey(l.password??``,O,h),R=deriveRoomNamespace(O,h),z=l._test_only_sharedPeerIdleMs??sharedPeerIdleMsDefault,B=!1,V=e=>async t=>({type:t.type,sdp:await e(L,t.sdp)}),H=V(decrypt),U=V(encrypt),W=u.getMap(O);T||=new OfferPool(()=>peer_default(!0,l));let G=T,ee=async e=>{let t=await e.getOffer(Date.now()-e.created>offerTtl);if(!t||t.type!==`offer`)throw mkErr(`failed to get offer for peer`);return(await U(t)).sdp},te=(e,t)=>{let n=getState(K.peerStates,e);n.answeringExpiryTimer=resetTimer(n.answeringExpiryTimer),n.answeringPeer=null;let{proxy:a,isNew:o}=u.bind(h,R,t,{onDetach:()=>{let n=K.peerStates[e];n?.connectedPeer===t.peer&&(n.connectedPeer=null,n.connectedPeerUnhealthySinceMs=null,updateStatus(n))}});n.connectedPeer=t.peer,n.connectedPeerUnhealthySinceMs=null,updateStatus(n),o&&ie(a,e),resetOfferState(n,G)},K={appId:O,roomId:h,config:l,peerStates:{},rootTopicPlaintext:N,rootTopicP:F,selfTopicP:I,toPlain:H,toCipher:U,isLeaving:()=>B,onJoinError:k,sharedPeers:u,offerPool:G,encryptOffer:ee,initPeer:peer_default,connectPeer:(e,t,n)=>{if(B){e.destroy();return}let a=getState(K.peerStates,t);if(a.connectedPeer){let n=W[t];if(n&&a.connectedPeer===n.peer&&n.bindings[h])return;a.connectedPeer!==e&&!e.isDead&&e.destroy();return}let o=W[t];if(o&&u.getHealth(o.peer)===`stale`&&(u.clear(O,t,{destroyPeer:!0}),o=void 0),o&&o.peer!==e){e.isDead||e.destroy(),te(t,o);return}let s=!o;o||=u.register(O,t,e,z),te(t,o),s&&v(O,o)},disconnectPeer:(e,t)=>{if(B)return;let n=K.peerStates[t];n?.connectedPeer===e&&clearConnectedPeer(n,t,`close-event`)},attachSharedPeerToRoom:te,announceIntervals:[],announceIntervalMs},q=createSignalHandler(K);if(!S){let t=e(l);G.warmup(),C=(Array.isArray(t)?t:[t]).map(e=>Promise.resolve(e)),S=!0,E=l.relayConfig?.manualReconnection?noOp:watchOnline()}K.announceIntervals=C.map(()=>announceIntervalMs);let ne=C.map(()=>0),re=[],J=C.map(async(e,n)=>t(await e,await F,await I,q(n),e=>G.getOffers(e,ee)));all([F,I]).then(([e,t])=>{if(B)return;let a=async(o,s)=>{if(B)return;let l=await n(o,e,t);if(B)return;typeof l==`number`&&(K.announceIntervals[s]=l);let u=ne[s]??0;ne[s]=u+1;let d=K.announceIntervals[s]??announceIntervalMs,f=announceWarmupIntervalsMs[u];re[s]=setTimeout(()=>{a(o,s)},typeof f==`number`?Math.min(d,f):d)};J.forEach(async(e,t)=>{if(await e,B)return;let n=await C[t];n&&!B&&a(n,t)})});let ie=noOp,{compose:ae}=createPasswordHandshake(l.password??``,O,h),oe=ae(j),se={...oe?{onPeerHandshake:oe}:{},...M===void 0?{}:{handshakeTimeoutMs:M},onHandshakeError:(e,t)=>k?.({error:t.replace(/^handshake failed: /,``),appId:O,peerId:e,roomId:h})};a[O]??={};let ce=f(O),Y=room_default(e=>ie=e,e=>{if(B)return;let t=K.peerStates[e];t?.connectedPeer&&(t.connectedPeer=null,updateStatus(t))},()=>{B=!0,ie=noOp;let e=o[O]?.[h];e?.roomToken&&(y(O,e.roomToken,!1),delete s[O]?.[e.roomToken],s[O]&&!keys(s[O]).length&&delete s[O]),o[O]&&(delete o[O][h],keys(o[O]).length||delete o[O]),entries(K.peerStates).forEach(([e,t])=>{if(t.answeringExpiryTimer=resetTimer(t.answeringExpiryTimer),t.connectedPeer&&!t.connectedPeer.isDead){let n=W[e];(!n||n.peer!==t.connectedPeer)&&t.connectedPeer.destroy()}t.answeringPeer&&!t.answeringPeer.isDead&&t.answeringPeer.destroy(),resetOfferState(t,G),t.connectedPeer=null,t.answeringPeer=null,updateStatus(t)}),a[O]&&(delete a[O][h],keys(a[O]).length===0&&delete a[O]),re.forEach(resetTimer),J.forEach(async e=>{(await e)()}),!d()&&(S=!1,G.destroy(),T=null,E(),x(O))},se),le={roomToken:null,roomTokenPromise:R,attachSharedPeerToRoom:te};return ce[h]=le,R.then(e=>{B||o[O]?.[h]!==le||(le.roomToken=e,m(O)[e]=h,values(W).forEach(t=>{t.remoteRoomTokens.has(e)&&te(t.peerId,t)}),y(O,e,!0))}),a[O][h]=Y}},relayManager=createRelayManager(e=>e.socket),topicToInfoHash={},infoHashToTopic={},announceIntervals=relayManager.scoped(),announceFns=relayManager.scoped(),subscriptionTokens=relayManager.scoped(),trackerAnnounceMs={},handledSignals={},msgHandlers=relayManager.scoped(),roomOutstandingOffers={},roomOfferGenerationPromises={},roomSubscriberCounts={},trackerAction=`announce`,hashLimit=20,offerPoolSize=3,defaultAnnounceMs=1e4,maxAnnounceMs=2e4,offerRetentionMs=12e4,signalDedupeWindowMs=4e3,defaultRedundancy=3,getInfoHash=async e=>{if(topicToInfoHash[e])return topicToInfoHash[e];let t=(await sha1(e)).slice(0,hashLimit);return topicToInfoHash[e]=t,infoHashToTopic[t]=e,t},send=async(e,t,n)=>e.send(toJson({action:trackerAction,info_hash:await getInfoHash(t),peer_id:selfId,...n})),warn=(e,t,n=!1)=>console.warn(`${libName}: torrent tracker ${n?`failure`:`warning`} from ${e} - ${t}`),getRoomOutstandingOffers=e=>roomOutstandingOffers[e]??={},deleteRoomOfferBookkeeping=e=>{delete roomOutstandingOffers[e],delete roomOfferGenerationPromises[e]},claimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];if(a)return delete n[t],a.claim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e),a},reclaimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];a&&(delete n[t],a.reclaim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e))},reclaimAllOutstandingOffers=e=>{keys(getRoomOutstandingOffers(e)).forEach(t=>reclaimOutstandingOffer(e,t)),deleteRoomOfferBookkeeping(e)},pruneOutstandingOffers=e=>{let t=Date.now();entries(getRoomOutstandingOffers(e)).forEach(([n,a])=>{t-a.createdAt>offerRetentionMs&&reclaimOutstandingOffer(e,n)})},ensureOutstandingOffers=async(e,t)=>{for(;roomOfferGenerationPromises[e];)await roomOfferGenerationPromises[e];let n=(async()=>{pruneOutstandingOffers(e);let n=getRoomOutstandingOffers(e),a=keys(n).length,o=Math.max(0,offerPoolSize-a);o>0&&(await t(o)).forEach(e=>{n[genId(hashLimit)]={...e,createdAt:Date.now()}})})().finally(()=>{roomOfferGenerationPromises[e]===n&&delete roomOfferGenerationPromises[e]});return roomOfferGenerationPromises[e]=n,await n,getRoomOutstandingOffers(e)},joinRoomStrategy=strategy_default({init:e=>getRelays(e,defaultRelayUrls,defaultRedundancy).map(e=>{let t=relayManager.register(e,makeSocket(e,n=>{let a=fromJson(n),o=a[`failure reason`],s=a[`warning message`],{interval:l}=a,u=a.info_hash?infoHashToTopic[a.info_hash]:void 0;if(o){warn(t.url,o,!0);return}if(s&&warn(t.url,s),l&&l*1e3>(trackerAnnounceMs[t.url]??defaultAnnounceMs)&&u&&announceFns.forKey(e)[u]){let n=Math.min(l*1e3,maxAnnounceMs),a=announceIntervals.forKey(e),o=announceFns.forKey(e);a[u]&&clearInterval(a[u]),trackerAnnounceMs[t.url]=n;let s=o[u];s&&(a[u]=setInterval(()=>{s()},n))}if((a.offer||a.answer)&&u&&a.offer_id){if(a.peer_id===selfId)return;let t=`${u}:${a.offer?`offer`:`answer`}:${a.offer_id}:${a.peer_id??``}`,n=Date.now(),o=handledSignals[t];if(typeof o==`number`&&n-o<signalDedupeWindowMs)return;handledSignals[t]=n,entries(handledSignals).forEach(([e,t])=>{n-t>signalDedupeWindowMs*6&&delete handledSignals[e]}),msgHandlers.forKey(e)[u]?.(a)}}));return t.ready}),subscribe:(e,t,n,a,o)=>{let s=msgHandlers.forRelay(e),l=announceFns.forRelay(e),u=announceIntervals.forRelay(e),d=subscriptionTokens.forRelay(e),f=Symbol(t);d[t]=f,roomSubscriberCounts[t]=(roomSubscriberCounts[t]??0)+1;let m=n=>{if(n.offer&&n.peer_id&&n.offer_id)a(t,{offer:n.offer.sdp,peerId:n.peer_id,hasOutgoingOffer:keys(getRoomOutstandingOffers(t)).length>0},(a,o)=>void send(e,t,{answer:{type:`answer`,sdp:fromJson(o).answer},offer_id:n.offer_id,to_peer_id:n.peer_id}));else if(n.answer&&n.offer_id&&n.peer_id){let e=claimOutstandingOffer(t,n.offer_id);e&&a(t,{answer:n.answer.sdp,peerId:n.peer_id,peer:e.peer},()=>{})}};s[t]=m;let h=async()=>{d[t]===f&&send(e,t,{numwant:offerPoolSize,offers:entries(await ensureOutstandingOffers(t,o)).map(([e,{offer:t}])=>({offer_id:e,offer:{type:`offer`,sdp:t}}))})};return trackerAnnounceMs[e.url]=defaultAnnounceMs,l[t]=h,u[t]=setInterval(h,trackerAnnounceMs[e.url]),h(),()=>{if(roomSubscriberCounts[t]=Math.max(0,(roomSubscriberCounts[t]??1)-1),roomSubscriberCounts[t]||delete roomSubscriberCounts[t],d[t]!==f){roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t);return}let e=u[t];e&&(clearInterval(e),delete u[t]),s[t]===m&&delete s[t],l[t]===h&&delete l[t],delete d[t],roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t)}},announce:e=>trackerAnnounceMs[e.url]}),joinRoom=(e,t,n)=>joinRoomStrategy({...e,trickleIce:e.trickleIce??!1},t,n),getRelaySockets=relayManager.getSockets,defaultRelayUrls=[`tracker.webtorrent.dev`,`tracker.openwebtorrent.com`,`tracker.btorrent.xyz`,`tracker.files.fm:7073/announce`].map(e=>`wss://`+e),require_lodash_throttle=__commonJSMin(((e,t)=>{var n=`Expected a function`,a=NaN,o=`[object Symbol]`,s=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,f=parseInt,m={}.Object===Object&&{},h=typeof self==`object`&&self&&self.Object===Object&&self,v=m||h||Function(`return this`)(),y=Object.prototype.toString,b=Math.max,x=Math.min,S=function(){return v.Date.now()};function C(e,t,a){var o,s,l,u,d,f,m=0,h=!1,v=!1,y=!0;if(typeof e!=`function`)throw TypeError(n);t=k(t)||0,E(a)&&(h=!!a.leading,v=`maxWait`in a,l=v?b(k(a.maxWait)||0,t):l,y=`trailing`in a?!!a.trailing:y);function C(t){var n=o,a=s;return o=s=void 0,m=t,u=e.apply(a,n),u}function T(e){return m=e,d=setTimeout(j,t),h?C(e):u}function D(e){var n=e-f,a=e-m,o=t-n;return v?x(o,l-a):o}function O(e){var n=e-f,a=e-m;return f===void 0||n>=t||n<0||v&&a>=l}function j(){var e=S();if(O(e))return M(e);d=setTimeout(j,D(e))}function M(e){return d=void 0,y&&o?C(e):(o=s=void 0,u)}function N(){d!==void 0&&clearTimeout(d),m=0,o=f=s=d=void 0}function F(){return d===void 0?u:M(S())}function I(){var e=S(),n=O(e);if(o=arguments,s=this,f=e,n){if(d===void 0)return T(f);if(v)return d=setTimeout(j,t),C(f)}return d===void 0&&(d=setTimeout(j,t)),u}return I.cancel=N,I.flush=F,I}function T(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(n);return E(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),C(e,t,{leading:o,maxWait:t,trailing:s})}function E(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function D(e){return!!e&&typeof e==`object`}function O(e){return typeof e==`symbol`||D(e)&&y.call(e)==`[object Symbol]`}function k(e){if(typeof e==`number`)return e;if(O(e))return a;if(E(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=E(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(s,``);var n=u.test(e);return n||d.test(e)?f(e.slice(2),n?2:8):l.test(e)?a:+e}t.exports=T})),import_lodash_throttle=__toESM(require_lodash_throttle()),endpoints={getMarketData:`https://farmhand.vercel.app/api/get-market-data`,postDayResults:`https://farmhand.vercel.app/api/post-day-results`},features=Object.keys({BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_API_ROOT:`https://farmhand.vercel.app/`,VITE_FARMHAND_PACKAGE_VERSION:`1.22.2`,VITE_NAME:`@jeremyckahn/farmhand`,VITE_TURN_CREDENTIAL:``,VITE_TURN_USERNAME:``}).reduce((e,t)=>{let n=t.match(/VITE_ENABLE_(.*)/);return n&&(e[n[1]]=!0),e},{}),searchParams=new URLSearchParams(import_window.default.location?.search);for(let e of searchParams.keys()){let t=e.match(/enable_(.*)/);t&&(features[t[1]]=!0)}var rtcConfig={iceServers:[{urls:`stun:stun.relay.metered.ca:80`}]},handlePeerMetadataRequest=(e,t,n)=>{e.updatePeer(e,t,n)},handleCowTradeRequest=async(e,{cowOffered:t,cowRequested:n},a)=>{let o=!1;e.setState(e=>{let{allowCustomPeerCowNames:s,cowIdOfferedForTrade:l,cowsTraded:u,cowInventory:d,playerId:f,isAwaitingCowTradeRequest:m,peers:h,sendCowAccept:v,sendCowReject:y}=e;if(!v||!y)return console.error(`Peer connection not set up correctly`),null;let b=d.find(({id:e})=>e===l);if(m||n.id!==l||!b)return y({reason:cowTradeRejectionReason.REQUESTED_COW_UNAVAILABLE},a),null;let x={...t,timesTraded:t.originalOwnerId===f?t.timesTraded:t.timesTraded+1},[,S]=Object.entries(h).find(([,e])=>e?.playerId===x.ownerId)??[];return S?(e=changeCowAutomaticHugState(e,b,!1),e=removeCowFromInventory(e,b),e=addCowToInventory(e,{...x,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,b,t,f,s),`success`),v({...b,isUsingHuggingMachine:!1},a),o=!0,{...e,cowIdOfferedForTrade:x.id,cowsTraded:x.originalOwnerId===f?u:u+1,isAwaitingCowTradeRequest:!0,selectedCowId:x.id,peers:{...h,[a]:{...S,cowOfferedForTrade:{...b,ownerId:S.playerId}}}}):(console.error(`No data for peer ${x.ownerId}`),null)},async()=>{o&&(await sleep(750),await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`),e.setState(()=>({isAwaitingCowTradeRequest:!1})))})},handleCowTradeRequestAccept=(e,t,n)=>{let a=!1;e.setState(e=>{let{allowCustomPeerCowNames:o,cowIdOfferedForTrade:s,cowInventory:l,cowsTraded:u,cowTradeTimeoutId:d,playerId:f,peers:m}=e,h=l.find(({id:e})=>e===s);if(!h)return console.error(`handleCowTradeRequestAccept: cow with ID ${s} is no longer available`),e=showNotification(e,UNKNOWN_COW_TRADE_FAILURE,`error`),{...e,isAwaitingCowTradeRequest:!1};let[,v]=Object.entries(m).find(([,e])=>{let{playerId:n}=e;return n===t.ownerId})||[],y=t.originalOwnerId===f,b={...t,timesTraded:y?t.timesTraded:t.timesTraded+1};return e=removeCowFromInventory(e,h),e=addCowToInventory(e,{...b,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,h,b,f,o),`success`),y||(e=addExperience(e,EXPERIENCE_VALUES.COW_TRADED)),d&&clearTimeout(d),a=!0,{...e,cowsTraded:b.originalOwnerId===f?u:u+1,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1,cowIdOfferedForTrade:b.id,selectedCowId:b.id,peers:{...m,[n]:{...v,cowOfferedForTrade:{...h,ownerId:v.playerId}}}}},async()=>{a&&(await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`))})},handleCowTradeRequestReject=(e,{reason:t})=>{let{cowTradeTimeoutId:n}=e.state;typeof n==`number`&&clearTimeout(n),e.setState({cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1}),e.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`)},relayRedundancy=4,useFarmhandNetwork=(e,t,n,a,o,s,l,u)=>{let{hasBooted:d,isOnline:f,room:m,redirect:h,heartbeatTimeoutId:v,peerRoom:y,sendPeerMetadata:b}=e,x=(0,import_react$24.useCallback)(e=>(0,import_lodash_throttle.default)((...n)=>{e(...n),t(e=>({...e,pendingPeerMessages:[]}))},5e3,{trailing:!0}),[t]),S=(0,import_react$24.useCallback)(()=>{typeof a.current?.state?.cowTradeTimeoutId==`number`&&(n.current.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`),console.error(`Cow trade request timed out`),t(e=>({...e,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1})))},[t,n,a]),C=(0,import_react$24.useCallback)(o=>{let{cowIdOfferedForTrade:s,cowInventory:l,peers:u,sendCowTradeRequest:d}=a.current?.state??e;if(!d)return;let{ownerId:f}=o,[m]=Object.entries(u).find(([,e])=>e?.playerId===f)??[];if(!m){console.error(`Owner not found for cow ${JSON.stringify(o)}`);return}if(l.find(({id:e})=>e===o.id)){console.error(`Cow ID ${o.id} is already in inventory`),n.current.showNotification(COW_ALREADY_OWNED,`error`);return}let h=l.find(({id:e})=>e===s);if(!h){console.error(`Cow ID ${s} not found`);return}let v=setTimeout(S,COW_TRADE_TIMEOUT);d({cowOffered:{...h,isUsingHuggingMachine:!1},cowRequested:o},m),t(e=>({...e,cowTradeTimeoutId:v,isAwaitingCowTradeRequest:!0}))},[t,S,n,a]),T=(0,import_react$24.useCallback)(()=>{t(e=>(clearTimeout(e.heartbeatTimeoutId??-1),e));let e=import_window.default.setTimeout(()=>{t(e=>({...e,money:moneyTotal(e.money,e.activePlayers??0)})),T()},HEARTBEAT_INTERVAL_PERIOD);t(t=>({...t,heartbeatTimeoutId:e}))},[t]),E=(0,import_react$24.useCallback)(async()=>{let{isOnline:e,priceCrashes:o,priceSurges:s,room:l,playerId:u,peerRoom:d}=a.current.state;if(e){n.current.showNotification(CONNECTING_TO_SERVER,`info`);try{t(e=>({...e,isAwaitingNetworkRequest:!0,peers:{}})),d?.leave();let{valueAdjustments:e}=await getData(endpoints.getMarketData,{farmId:u,room:l});T(),t(t=>({...t,activePlayers:1,peerRoom:joinRoom({appId:`@jeremyckahn/farmhand`,rtcConfig},l),valueAdjustments:FarmhandService.applyPriceEvents(e,o,s)})),n.current.showNotification(CONNECTED_TO_ROOM(``,l),`success`)}catch(e){n.current.showNotification(SERVER_ERROR,`error`),console.error(e),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``}))}t(e=>({...e,isAwaitingNetworkRequest:!1,isAwaitingCowTradeRequest:!1}))}},[T,n,a,t]),D=(0,import_react$24.useCallback)((e,t)=>{n.current.prependPendingPeerMessage(e,t)},[n]);return(0,import_react$24.useEffect)(()=>{if(!d||!o)return;let e=decodeURIComponent(s),S=l.startsWith(`/online`),C=!!h&&h!==o.redirect;if(!C&&(S!==f||e!==m)?t(t=>({...t,isOnline:S,redirect:``,room:e})):h&&!C&&S===f&&e===m&&t(e=>({...e,redirect:``})),(f!==o.isOnline||m!==o.room)&&(f&&E(),!f&&typeof v==`number`&&(clearTimeout(v),t(e=>({...e,activePlayers:null,heartbeatTimeoutId:null,peerRoom:null})))),f===!1&&o.isOnline===!0&&n.current.showNotification(DISCONNECTED_FROM_SERVER,`info`),y!==o.peerRoom)if(y){y.onPeerJoin(e=>n.current.addPeer(e)),y.onPeerLeave(e=>n.current.removePeer(e));let[e,o]=y.makeAction(`peerMetadata`);o((...e)=>handlePeerMetadataRequest(a.current,e[0],e[1]));let[s,l]=y.makeAction(`cowTrade`);l((...e)=>handleCowTradeRequest(a.current,e[0],e[1]));let[d,f]=y.makeAction(`cowAccept`);f((...e)=>handleCowTradeRequestAccept(a.current,e[0],e[1]));let[m,h]=y.makeAction(`cowReject`);h((...e)=>handleCowTradeRequestReject(a.current,e[0])),t(t=>({...t,getCowAccept:f,getCowReject:h,getCowTradeRequest:l,getPeerMetadata:o,pendingPeerMessages:[],sendCowAccept:d,sendCowReject:m,sendCowTradeRequest:s,sendPeerMetadata:x(e)})),e(u)}else o.peerRoom?.leave(),t(e=>({...e,peers:{},sendPeerMetadata:null}));b?.(u)},[d,f,m,h,v,y,b,o,s,l,E,x,u,n,a,t]),{syncToRoom:E,scheduleHeartbeat:T,wrapSendPeerMetadata:x,tradeForPeerCow:C,handleCowTradeTimeout:S,messagePeers:D}},computeMarketPositions=(e,t,n)=>n.reduce((n,{id:a,quantity:o})=>{let s=e[a]||0,l=t[a]||0;return itemsMap[a].doesPriceFluctuate&&s!==o&&(o<s||o<l?n[a]=-1:(o>s||o>l)&&(n[a]=1)),n},{}),useFarmhandDayAdvancement=(e,t,n,a,o)=>{let s=(0,import_react$24.useCallback)(async()=>{await n.localforage?.clear(),a.current.showNotification(DATA_DELETED)},[n.localforage,a]),l=(0,import_react$24.useCallback)((e,t={})=>n.localforage?.setItem(`state`,reduceByPersistedKeys({...e,...t})),[n.localforage]),u=(0,import_react$24.useCallback)(async()=>{let n=[],a=null;t(e=>({...e,isAwaitingNetworkRequest:!0}));let o;if(e.current.isOnline){let{inventory:s,room:l,todaysPurchases:u,todaysStartingInventory:d}=e.current,f=computeMarketPositions(d,u,s);try{o=(await postData(endpoints.postDayResults,{positions:f,room:l})).valueAdjustments,Object.keys(f).length&&(n.push({message:POSITIONS_POSTED_NOTIFICATION(``,`You`,f),severity:`info`}),a=POSITIONS_POSTED_NOTIFICATION(``,``,f))}catch(e){n.push({message:SERVER_ERROR,severity:`error`}),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``,isAwaitingNetworkRequest:!1})),console.error(e)}}return{broadcastedPositionMessage:a,serverMessages:n,serverValueAdjustments:o}},[e,t]);return{clearPersistedData:s,persistState:l,updateServerForNextDay:u,incrementDay:(0,import_react$24.useCallback)(async(n=!1)=>{if(e.current.isWaitingForDayToCompleteIncrementing&&!n)return;n||t(e=>({...e,isWaitingForDayToCompleteIncrementing:!0}));let{broadcastedPositionMessage:a,serverMessages:s,serverValueAdjustments:l}=await u();t(e=>{let t=computeStateForNextDay(e,n),u=[...s,...t.newDayNotifications];return t.valueAdjustments=FarmhandService.applyPriceEvents(l??t.valueAdjustments,t.priceCrashes,t.priceSurges),t.isAwaitingNetworkRequest=!1,t.isWaitingForDayToCompleteIncrementing=!0,t.newDayNotifications=[],t.todaysNotifications=[],o.current={state:t,pendingNotifications:u,broadcastedPositionMessage:a,isFirstDay:n},t})},[e,u,t,o])}},useFarmhandNotifications=(e,t)=>({showInventoryFullNotifications:(0,import_react$24.useCallback)((e,n)=>{inventorySpaceRemaining(e)>0&&inventorySpaceRemaining(n)<=0&&t.current.showNotification(INVENTORY_FULL_NOTIFICATION,`warning`)},[t]),showRecipeLearnedNotifications:(0,import_react$24.useCallback)(({learnedRecipes:n})=>{let a=[];Object.keys(e.learnedRecipes).forEach(e=>{n.hasOwnProperty(e)||a.push(recipesMap[e])}),a.length>1?t.current.showNotification(RECIPES_LEARNED(``,a)):a.length===1&&t.current.showNotification(RECIPE_LEARNED(``,a[0]))},[e.learnedRecipes,t])}),FarmhandReducers=class e extends import_react$24.Component{addCowToInventory(...e){throw Error(`Unimplemented`)}addPeer(...e){throw Error(`Unimplemented`)}adjustLoan(...e){throw Error(`Unimplemented`)}changeCowAutomaticHugState(...e){throw Error(`Unimplemented`)}changeCowBreedingPenResident(...e){throw Error(`Unimplemented`)}changeCowName(...e){throw Error(`Unimplemented`)}clearPlot(...e){throw Error(`Unimplemented`)}chopForestPlot(...e){throw Error(`Unimplemented`)}computeStateForNextDay(...e){throw Error(`Unimplemented`)}fertilizePlot(...e){throw Error(`Unimplemented`)}forRange(...e){throw Error(`Unimplemented`)}harvestForestPlot(...e){throw Error(`Unimplemented`)}harvestPlot(...e){throw Error(`Unimplemented`)}hugCow(...e){throw Error(`Unimplemented`)}makeRecipe(...e){throw Error(`Unimplemented`)}makeFermentationRecipe(...e){throw Error(`Unimplemented`)}makeWine(...e){throw Error(`Unimplemented`)}modifyCow(...e){throw Error(`Unimplemented`)}mulchForestPlot(...e){throw Error(`Unimplemented`)}offerCow(...e){throw Error(`Unimplemented`)}plantInPlot(...e){throw Error(`Unimplemented`)}plantTreeInPlot(...e){throw Error(`Unimplemented`)}prependPendingPeerMessage(...e){throw Error(`Unimplemented`)}purchaseCombine(...e){throw Error(`Unimplemented`)}purchaseComposter(...e){throw Error(`Unimplemented`)}purchaseCow(...e){throw Error(`Unimplemented`)}purchaseCowPen(...e){throw Error(`Unimplemented`)}purchaseCellar(...e){throw Error(`Unimplemented`)}purchaseField(...e){throw Error(`Unimplemented`)}purchaseForest(...e){throw Error(`Unimplemented`)}purchaseItem(...e){throw Error(`Unimplemented`)}purchaseSmelter(...e){throw Error(`Unimplemented`)}purchaseStorageExpansion(...e){throw Error(`Unimplemented`)}purchaseWoodChipper(...e){throw Error(`Unimplemented`)}removeCowFromInventory(...e){throw Error(`Unimplemented`)}removeKegFromCellar(...e){throw Error(`Unimplemented`)}removePeer(...e){throw Error(`Unimplemented`)}selectCow(...e){throw Error(`Unimplemented`)}sellCow(...e){throw Error(`Unimplemented`)}sellItem(...e){throw Error(`Unimplemented`)}sellKeg(...e){throw Error(`Unimplemented`)}setLightningRod(...e){throw Error(`Unimplemented`)}setScarecrow(...e){throw Error(`Unimplemented`)}setSprinkler(...e){throw Error(`Unimplemented`)}showNotification(...e){throw Error(`Unimplemented`)}updatePeer(...e){throw Error(`Unimplemented`)}upgradeTool(...e){throw Error(`Unimplemented`)}waterAllPlots(...e){throw Error(`Unimplemented`)}waterField(...e){throw Error(`Unimplemented`)}waterPlot(...e){throw Error(`Unimplemented`)}withdrawCow(...e){throw Error(`Unimplemented`)}constructor(t){super(t);let n=Object.getOwnPropertyNames(e.prototype).filter(e=>e!==`constructor`);for(let e of n){let t=reducers_exports[e];t&&(this[e]=(...e)=>{this.setState(n=>t(n,...e))})}}},useFarmhandReducers=e=>(0,import_react$24.useMemo)(()=>{let t={};Object.assign(t,reducers_exports);let n=Object.getOwnPropertyNames(FarmhandReducers.prototype).filter(e=>e!==`constructor`);for(let a of n){let n=reducers_exports[a];typeof n==`function`&&(t[a]=(...t)=>{e(e=>{let a=n(e,...t);return!a||a===e?e:{...a}})})}return t},[e]),usePrevious=e=>{let t=(0,import_react$24.useRef)();return(0,import_react$24.useEffect)(()=>{t.current=e},[e]),t.current},{CLEANUP,HARVEST,MINE,WATER}=fieldMode,useFarmhand=e=>{let{features:t,match:{path:n=``,params:{room:a}={}}={}}=e,o=(0,import_react$24.useCallback)(()=>({activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:dialogView.NONE,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:-1},cowColorsPurchased:{},cowIdOfferedForTrade:``,cowInventory:[],cowsSold:{},cowsTraded:0,cowTradeTimeoutId:-1,cropsHarvested:{},dayCount:0,experience:0,farmName:`Unnamed`,field:createNewField(),fieldMode:fieldMode.OBSERVE,forest:createNewForest(),treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},getCowAccept:noop$3,getCowReject:noop$3,getCowTradeRequest:noop$3,getPeerMetadata:noop$3,hasBooted:!1,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:null,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:v4(),inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:100,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!1,isMenuOpen:!doesMenuObstructStage(),itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:n.startsWith(`/online`)??!1,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:500,loansTakenOut:1,money:500,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendPeerMetadata:null,selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:decodeURIComponent(e.match?.params?.room||`global`),sendCowAccept:noop$3,sendCowReject:noop$3,purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,sendCowTradeRequest:noop$3,showHomeScreen:!0,showNotifications:!0,stageFocus:stageFocusType.HOME,todaysNotifications:[],todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{[toolType.AXE]:toolLevel.UNAVAILABLE,[toolType.HOE]:toolLevel.DEFAULT,[toolType.PICKER_POLE]:toolLevel.UNAVAILABLE,[toolType.SCYTHE]:toolLevel.DEFAULT,[toolType.SHOVEL]:toolLevel.UNAVAILABLE,[toolType.WATERING_CAN]:toolLevel.DEFAULT},useAlternateEndDayButtonPosition:!1,valueAdjustments:{},version:`1.22.2`}),[n,e.match?.params?.room]),[s,l]=(0,import_react$24.useState)(o),u=(0,import_react$24.useRef)(s);u.current=s;let d=a===void 0?s.room:a,f=(0,import_react$24.useRef)(null),m=(0,import_react$24.useRef)(!1),h=useFarmhandReducers(l),v=(0,import_react$24.useRef)(h);v.current=h;let y=usePrevious(s),b=STAGE_TITLE_MAP[s.stageFocus],x=FarmhandService.getFieldToolInventory(s.inventory),S=FarmhandService.computePlayerInventory(s.inventory,s.valueAdjustments),C=FarmhandService.getPlantableCropInventory(s.inventory),T=FarmhandService.getPlantableTreeInventory(s.inventory),E=FarmhandService.getMulchInventory(s.inventory),D=(0,import_react$24.useMemo)(()=>getLevelEntitlements(levelAchieved(s.experience)),[s.experience]),O=(0,import_react$24.useMemo)(()=>getAvailableShopInventory(D),[D]),k=D.stageFocusType[stageFocusType.FOREST],j=s.isOnline&&s.room!==`global`,M=(0,import_react$24.useMemo)(()=>getViewList({isForestUnlocked:k,purchasedCellar:s.purchasedCellar,purchasedCowPen:s.purchasedCowPen,showHomeScreen:s.showHomeScreen}),[s.showHomeScreen,k,s.purchasedCowPen,s.purchasedCellar]),N=(0,import_react$24.useMemo)(()=>getPeerMetadata(s),[s]),F=s.isAwaitingNetworkRequest||s.isAwaitingCowTradeRequest||s.isWaitingForDayToCompleteIncrementing,I=(0,import_react$24.useRef)(null),{openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B}=useFarmhandNavigation(l,M),V=(0,import_react$24.useRef)(!0),H=(0,import_react$24.useRef)(!1);(0,import_react$24.useEffect)(()=>{if(s.hasBooted){if(H.current){H.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}if(V.current){V.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus,`push`),removeHashQueryParam(`tab`)}},[s.stageFocus,s.hasBooted]),(0,import_react$24.useEffect)(()=>{let e=()=>{let e=getValidatedStageFocusFromHash(u.current)??stageFocusType.HOME;e!==u.current.stageFocus&&(H.current=!0,l(t=>({...t,stageFocus:e})))};return import_window.default.addEventListener(`popstate`,e),()=>import_window.default.removeEventListener(`popstate`,e)},[]);let{syncToRoom:U,scheduleHeartbeat:W,tradeForPeerCow:G,handleCowTradeTimeout:ee,messagePeers:te}=useFarmhandNetwork(s,l,v,I,y,d,n,N),{clearPersistedData:K,persistState:q,updateServerForNextDay:ne,incrementDay:re}=useFarmhandDayAdvancement(u,l,e,v,f),{showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie}=useFarmhandNotifications(s,v);I.current=(0,import_react$24.useMemo)(()=>({state:s,props:e,viewTitle:b,fieldToolInventory:x,mulchInventory:E,playerInventory:S,plantableCropInventory:C,plantableTreeInventory:T,viewList:M,levelEntitlements:D,shopInventory:O,peerMetadata:N,isInputBlocked:F,isChatAvailable:j,isForestUnlocked:k,setState:(e,t)=>{l(n=>{let a=typeof e==`function`?e(n):e;if(a==null)return n;let o={...n,...a};return t&&setTimeout(t,0),o})},...v.current,purchaseItem:(e,t)=>v.current.purchaseItem(e,t),sellItem:(e,t)=>v.current.sellItem(e,t),showNotification:(e,t,n)=>v.current.showNotification(e,t,n),prependPendingPeerMessage:(e,t)=>v.current.prependPendingPeerMessage(e,t),forRange:(e,t,n,a,o)=>v.current.forRange(e,t,n,a,o),createInitialState:o,getData,postData,tradeForPeerCow:G,handleCowTradeTimeout:ee,clearPersistedData:K,syncToRoom:U,scheduleHeartbeat:W,showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie,persistState:(e={})=>q(I.current?.state??s,e),updateServerForNextDay:ne,incrementDay:re,openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B,messagePeers:te}),[s,e,b,x,E,S,C,T,M,D,O,N,F,j,k,G,ee,K,U,W,J,ie,q,ne,re,L,R,z,B,te,o]);let ae=(0,import_react$24.useMemo)(()=>{let e={debounced:{}};return Object.keys(ui_events_default).forEach(t=>{let n=t;e[n]=(...e)=>ui_events_default[n].apply(I.current,e),e.debounced[n]=(0,import_lodash_debounce.default)(e[n],50)}),e},[]),oe=(0,import_react$24.useMemo)(()=>{let e={incrementDay:`shift+c`,nextView:`right`,openAccounting:`b`,openAchievements:`a`,openLog:`l`,openPriceEvents:`e`,openStats:`s`,openSettings:`,`,openKeybindings:`shift+?`,previousView:`left`,toggleMenu:`m`};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=String(n+1)}),e},[]),se=(0,import_react$24.useMemo)(()=>{let e={incrementDay:()=>re(),nextView:z,openAccounting:()=>L(dialogView.ACCOUNTING),openAchievements:()=>L(dialogView.ACHIEVEMENTS),openLog:()=>L(dialogView.FARMERS_LOG),openPriceEvents:()=>L(dialogView.PRICE_EVENTS),openStats:()=>L(dialogView.STATS),openSettings:()=>L(dialogView.SETTINGS),openKeybindings:()=>L(dialogView.KEYBINDINGS),previousView:B,selectHoe:()=>ae.handleFieldModeSelect(CLEANUP),selectScythe:()=>ae.handleFieldModeSelect(HARVEST),selectWateringCan:()=>ae.handleFieldModeSelect(WATER),selectShovel:()=>{s.toolLevels[toolType.SHOVEL]!==toolLevel.UNAVAILABLE&&ae.handleFieldModeSelect(MINE)},toggleMenu:()=>ae.handleMenuToggle()};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=()=>{let e=M[n];typeof e==`string`&&l(t=>({...t,stageFocus:stageFocusType[e]}))}}),e},[re,z,L,B,ae,s.toolLevels,M,K]);(0,import_react$24.useEffect)(()=>{if(m.current)return;m.current=!0,Object.defineProperty(import_window.default,"farmhand",{get:()=>I.current,configurable:!0});let t=!0;return(async()=>{let n=await e.localforage?.getItem(`state`);if(t){if(n){let e=transformStateDataForImport({...o(),...n}),{isCombineEnabled:t,newDayNotifications:a}=e,s=getValidatedStageFocusFromHash(e);l(t=>({...t,...e,...s&&{stageFocus:s},newDayNotifications:[],hasBooted:!0})),a.forEach(({message:e,severity:t})=>{setTimeout(()=>v.current.showNotification(e,t),0)}),t&&v.current.forRange(harvestPlot,1/0,0,0)}else{await re(!0),l(e=>({...e,historicalValueAdjustments:[]})),v.current.showNotification(LOAN_INCREASED(``,500),`info`);let e=getValidatedStageFocusFromHash(u.current);l(t=>({...t,...e&&{stageFocus:e},hasBooted:!0}))}U()}})(),()=>{t=!1}},[o,re,e.localforage,U]);let ce=(0,import_react$24.useRef)(import_window.default.innerWidth);(0,import_react$24.useEffect)(()=>{let e=()=>{let{innerWidth:e}=import_window.default,t=e!==ce.current;ce.current=e,t&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}})};return import_window.default.addEventListener(`resize`,e),()=>import_window.default.removeEventListener(`resize`,e)},[]),(0,import_react$24.useEffect)(()=>{if(!s.hasBooted||!f.current)return;let t=!0,{state:n,pendingNotifications:a,broadcastedPositionMessage:o,isFirstDay:u}=f.current;return f.current=null,(async()=>{try{if(await e.localforage?.setItem(`state`,reduceByPersistedKeys({...n,...u&&{historicalValueAdjustments:[]},newDayNotifications:a})),!t)return;if([...a].concat(u?[]:[{message:PROGRESS_SAVED_MESSAGE,severity:`info`}]).forEach(({message:e,severity:t})=>v.current.showNotification(e,t)),n.isCombineEnabled){if(n.stageFocus===stageFocusType.FIELD&&await sleep(1e3),!t)return;v.current.forRange(harvestPlot,1/0,0,0)}}catch(e){console.error(e),t&&v.current.showNotification(JSON.stringify(e),`error`)}finally{t&&(l(e=>({...e,isWaitingForDayToCompleteIncrementing:!1})),o&&v.current.prependPendingPeerMessage(o))}})(),()=>{t=!1}},[s.dayCount,s.hasBooted,e.localforage,l]),(0,import_react$24.useEffect)(()=>()=>{u.current.heartbeatTimeoutId&&clearTimeout(u.current.heartbeatTimeoutId),u.current.peerRoom?.leave()},[]),(0,import_react$24.useEffect)(()=>{!s.hasBooted||!y||(updateAchievements(s,y)!==s&&l(e=>{let t=updateAchievements(e,y);return t===e?e:t}),s.stageFocus===stageFocusType.COW_PEN&&y.stageFocus!==stageFocusType.COW_PEN&&l(e=>({...e,selectedCowId:``})),s.stageFocus!==y.stageFocus&&s.isMenuOpen&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}}),s.money<y.money&&l(e=>({...e,todaysLosses:moneyTotal(e.todaysLosses,s.money-y.money)})),J(y,s),ie(y))},[s,y,J,ie]);let Y=s.redirect;return{gameState:{...s,blockInput:F,features:t??{},fieldToolInventory:x,mulchInventory:E,isChatAvailable:j,levelEntitlements:D,plantableCropInventory:C,plantableTreeInventory:T,playerInventory:S,playerInventoryQuantities:getInventoryQuantities(s.inventory),shopInventory:O,viewList:M,viewTitle:b},handlers:ae,isInputBlocked:F,keyMap:oe,keyHandlers:se,redirect:Y,state:s,viewList:M,focusPreviousView:B,focusNextView:z,isChatAvailable:j}},emptyObject=Object.freeze({}),Farmhand=e=>{let{gameState:t,handlers:n,isInputBlocked:a,keyMap:o,keyHandlers:s,redirect:l,state:u,viewList:d,focusPreviousView:f,focusNextView:m,isChatAvailable:h}=useFarmhand(e);return(0,import_jsx_runtime.jsx)(import_index_es.GlobalHotKeys,{allowChanges:!0,keyMap:a?emptyObject:o,handlers:a?emptyObject:s,children:(0,import_jsx_runtime.jsxs)(ThemeProvider,{theme:mui_theme_default,children:[(0,import_jsx_runtime.jsx)(CssBaseline,{}),(0,import_jsx_runtime.jsxs)(SnackbarProvider,{anchorOrigin:{vertical:`top`,horizontal:`right`},classes:{containerRoot:`Farmhand notification-container`},content:snackbarProviderContentCallback,maxSnack:4,children:[l&&(0,import_jsx_runtime.jsx)(Redirect,{to:l}),(0,import_jsx_runtime.jsxs)(FarmhandContext.Provider,{value:{gameState:t,handlers:n},children:[(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Farmhand farmhand-root fill`,u.isMenuOpen?`menu-open`:`menu-closed`,{"use-alternate-end-day-button-position":u.useAlternateEndDayButtonPosition,"block-input":a,"has-booted":u.hasBooted}),sx:e=>({...fillSx,display:`flex`,paddingTop:`3.5em`,position:`fixed`,touchAction:`manipulation`,opacity:+!!u.hasBooted,transform:u.hasBooted?`scale(1)`:`scale(0)`,transition:`opacity, transform 200ms`,...a&&{"& button, & input":{filter:`contrast(65%)`,pointerEvents:`none`}},[`@media (min-width: ${breakpoints.smallPhone}px) and (orientation: landscape)`]:{paddingTop:`3em`},[`@media (min-width: ${breakpoints.sm}px)`]:{paddingTop:`4em`},"& .sidebar-wrapper":{display:`flex`},"& .bottom-controls":{alignItems:`center`,bottom:`1em`,display:`flex`,flexFlow:`column`,justifyContent:`center`,left:`50%`,opacity:.85,position:`fixed`,transition:e.transitions.create(`left`,{duration:e.transitions.duration.enteringScreen,easing:e.transitions.easing.easeOut}),width:0,zIndex:20,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{bottom:`0.5em`},"& .MuiMobileStepper-root":{background:`none`},"& .fab-buttons":{display:`flex`,flexFlow:`row`,"& button":{margin:`0.5em`,position:`relative`,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{margin:`0.25em 0.5em`},"@media (max-width: 320px)":{margin:`0.25em 0.1em`}}},...u.isMenuOpen&&{"@media (orientation: landscape)":{left:`calc(50vw + ${layout.sidebarWidth} / 2)`}}},"& .end-day":{position:`fixed`,top:`5em`,right:`1em`,[`@media (min-width: ${breakpoints.sm}px)`]:{right:`1.25em`,top:`5.5em`},...u.useAlternateEndDayButtonPosition&&{right:`auto`,left:`1em`}},"& .menu-button":{transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shorter}),transform:u.isMenuOpen?`rotate(-90deg)`:`rotate(0deg)`}}),children:[(0,import_jsx_runtime.jsx)(UpdateNotifier,{}),(0,import_jsx_runtime.jsx)(Consumer$29,{}),(0,import_jsx_runtime.jsxs)(Drawer,{className:`sidebar-wrapper`,open:t.isMenuOpen,variant:`persistent`,role:`complementary`,PaperProps:{className:`sidebar`,sx:{backgroundImage:`url(${blue_stripe_bg_default})`,boxSizing:`border-box`,overflow:`auto`,padding:`1em 1em 0`,position:`relative`,width:layout.sidebarWidth,zIndex:20,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{width:layout.narrowSidebarWidth},"& .button-array":{display:`flex`,flexWrap:`wrap`,margin:`0.5em 0`}}},children:[(0,import_jsx_runtime.jsx)(Consumer$14,{}),(0,import_jsx_runtime.jsx)(Consumer$24,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]}),(0,import_jsx_runtime.jsx)(Consumer,{}),(0,import_jsx_runtime.jsxs)(`div`,{className:`bottom-controls`,children:[(0,import_jsx_runtime.jsx)(MobileStepper,{variant:`dots`,steps:d.length,position:`static`,activeStep:d.indexOf(u.stageFocus),className:``,backButton:null,nextButton:null}),(0,import_jsx_runtime.jsxs)(`div`,{className:`fab-buttons buttons`,children:[(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Previous view`,color:`primary`,onClick:f,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowLeft.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{className:(0,import_classnames.default)(`menu-button`,{"is-open":u.isMenuOpen}),color:`primary`,"aria-label":`Open drawer`,onClick:()=>n.handleMenuToggle(),children:(0,import_jsx_runtime.jsx)(import_Menu.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Next view`,color:`primary`,onClick:m,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowRight.default,{})})]})]}),(0,import_jsx_runtime.jsx)(Tooltip,{placement:`left`,title:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`p`,{children:`End the day to save your progress and advance the game.`}),(0,import_jsx_runtime.jsx)(`p`,{children:`(shift + c)`})]}),children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`End the day to save your progress and advance the game.`,className:`end-day`,color:`error`,onClick:n.handleClickEndDayButton,sx:{zIndex:Z_INDEX.END_DAY_BUTTON},children:(0,import_jsx_runtime.jsx)(import_Hotel.default,{})})})]}),h?(0,import_jsx_runtime.jsx)(ChatRoom,{}):null,(0,import_jsx_runtime.jsx)(NotificationSystem_default,{})]})]})]})})};Farmhand.defaultProps={features:{},localforage:import_localforage.default.createInstance({name:`farmhand`,description:`Persisted game data for Farmhand`}),match:{path:``,params:{}}},Farmhand.propTypes={features:import_prop_types$1.object,history:import_prop_types$1.object,location:import_prop_types$1.object,match:import_prop_types$1.object.isRequired};var FarmhandRoute=e=>(0,import_jsx_runtime.jsx)(Farmhand,{...e,features});import_react_dom.render((0,import_jsx_runtime.jsx)(HashRouter,{hashType:`noslash`,children:(0,import_jsx_runtime.jsx)(Route,{path:[`/online/:room`,`/online`,`/`],component:FarmhandRoute})}),document.getElementById(`root`));
|
|
844
|
-
//# sourceMappingURL=index-
|
|
843
|
+
Kegs that contain wine compound in value at a rate of ${WINE_INTEREST_RATE}% for up to ${integerString(100)} days and never spoil.`})})})})})]})};CellarInventoryTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};function getCropsAvailableToFerment(e){return Object.keys(e.items).reduce((e,t)=>{let n=getFinalCropItemFromSeedItem(itemsMap[t]);return n&&Number.isFinite(n.daysToFerment)&&e.push(n),e},[])}var FermentationRecipe=({item:e})=>{let{gameState:{inventory:t,cellarInventory:n,purchasedCellar:a},handlers:{handleMakeFermentationRecipeClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=getInventoryQuantityMap(t),d=FERMENTED_CROP_NAME`${e}`,{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0};(0,import_react$24.useEffect)(()=>{l(Math.min(getMaxYieldOfFermentationRecipe(e,t,n,f),Math.max(1,s)))},[n,f,t,e,s]);let m=s>0&&cellarService.doesCellarSpaceRemain(n,a),h=()=>{m&&o(e,s)},v=getMaxYieldOfFermentationRecipe(e,t,n,f),y=cellarService.getItemInstancesInCellar(n,e);return(0,import_jsx_runtime.jsxs)(Card,{className:`FermentationRecipe`,sx:{position:`relative`,"& .MuiCardHeader-avatar img":{width:`3em`,filter:`drop-shadow(1px 1px 2px rgba(255, 0, 131, 0.63))`}},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:d,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:items[e.id],alt:d}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to ferment: `,e.daysToFerment]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,itemsMap[e.id].name,` in inventory:`,` `,integerString(u[e.id]??0)]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of`,` `,itemsMap.salt.name,` `,`required: `,getSaltRequirementsForFermentationRecipe(e),` `,`(available:`,` `,(0,import_jsx_runtime.jsx)(AnimatedNumber,{number:u[itemsMap.salt.id]??0,formatter:integerString}),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(y??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{className:`make-recipe`,color:`primary`,disabled:!m||!s,onClick:h,variant:`contained`,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:h,handleUpdateNumber:l,maxQuantity:v,setQuantity:l,value:s})]})]})};FermentationRecipe.propTypes={item:import_prop_types$1.object.isRequired};var totalFermentableItems=Object.keys(fermentableItemsMap).length,FermentationRecipeList=()=>{let{gameState:{levelEntitlements:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getCropsAvailableToFerment(e),[n,a]=(0,import_react$24.useState)(``),o=n.toLowerCase().split(` `).filter(e=>e.length>0),s=t.filter(e=>{let t=e,n=`${FERMENTED_CROP_NAME}${t.name}`.toLowerCase();return o.every(e=>n.includes(e)||t.name.toLowerCase().includes(e))}),l=s.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Fermentation Recipes (`,l,` /`,` `,totalFermentableItems,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search fermentation recipes...`,onSearch:a}),s.length>0&&(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:s.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(FermentationRecipe,{item:e})},e.id))})]})};FermentationRecipeList.propTypes={};var FermentationTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(FermentationRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Some items can be fermented and become much more valuable over time.`})})})})})]});FermentationTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var getGrapesSold=e=>Object.entries(e).reduce((e,[t,n])=>{let a=itemsMap[t];return(n||0)>0&&isGrape(a)&&e.push(a),e},[]);function getWineVarietiesAvailableToMake(e){return getGrapesSold(e).map(({variety:e})=>e)}var WineRecipe=({wineVariety:e})=>{let{gameState:{cellarInventory:t,inventory:n,purchasedCellar:a},handlers:{handleMakeWineClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=grapeVarietyNameMap[e],d=grapeVarietyToGrapeItemMap[e],{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0},m=getInventoryQuantityMap(n);if((0,import_react$24.useEffect)(()=>{d&&l(Math.min(wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),Math.max(1,s)))},[t,f,d,n,s,e]),!d)return null;let h=itemsMap[d.wineId];if(!h)return null;let v=m[d.id]??0,y=m[yeast.id]??0,b=s>0&&v>=50&&cellarService.doesCellarSpaceRemain(t,a),x=!b||!s,S=cellarService.getItemInstancesInCellar(t,h),C=wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),T=()=>{b&&o(d,s)};return(0,import_jsx_runtime.jsxs)(Card,{className:`WineRecipe`,sx:{position:`relative`},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:u,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:wines[e],alt:u}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to mature:`,` `,integerString(wineService.getDaysToMature(e))]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,d.name,` required:`,` `,integerString(50),` (available:`,` `,integerString(v),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,yeast.name,` required:`,` `,integerString(getYeastRequiredForWine(e)*s),` `,`(available: `,integerString(y),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(S??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{color:`primary`,variant:`contained`,disabled:x,onClick:T,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:T,handleUpdateNumber:l,maxQuantity:C,setQuantity:l,value:s})]})]})};WineRecipe.propTypes={wineVariety:(0,import_prop_types$1.oneOf)(Object.keys(grapeVariety))};var totalGrapeVarieties=Object.keys(grapeVariety).length,WineRecipeList=()=>{let{gameState:{itemsSold:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getWineVarietiesAvailableToMake(e),[n,a]=(0,import_react$24.useState)(``),o=t.filter(e=>e.toLowerCase().includes(n.toLowerCase())),s=o.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Wine Recipes (`,s,` /`,` `,totalGrapeVarieties,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search wine varieties...`,onSearch:a}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:o.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(WineRecipe,{wineVariety:e})},e))})]})},WinemakingTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(WineRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Grapes can be made into wine. Wine becomes very valuable in time and never spoils.`})})})})})]});WinemakingTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var CELLAR_TAB_LABELS=[`Cellar Inventory`,`Fermentation`,`Winemaking`],Cellar=()=>{let[e,t]=useTabQueryParam(CELLAR_TAB_LABELS);return(0,import_jsx_runtime.jsxs)(Div,{className:`Cellar`,sx:centerTabsSx,children:[(0,import_jsx_runtime.jsx)(Tabs,{value:e,onChange:(e,n)=>t(n),"aria-label":`Cellar tabs`,children:CELLAR_TAB_LABELS.map((e,t)=>(0,import_jsx_runtime.jsx)(Tab,{label:e,...a11yProps(t)},e))}),(0,import_jsx_runtime.jsx)(CellarInventoryTabPanel,{index:0,currentTab:e}),(0,import_jsx_runtime.jsx)(FermentationTabPanel,{index:1,currentTab:e}),(0,import_jsx_runtime.jsx)(WinemakingTabPanel,{index:2,currentTab:e})]})};Cellar.propTypes={};var brown_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVRoge2UoRGAMBAECZYS8HRDw5QSnxKig88gfgaxl59befPi12wZzz22idr6dp3HPEvu5UtgJXb6gb9YgCaPQG3980B9d4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNDkFVAoT2V0hGgvQ5BFQLExkd4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNMsLvBG5ypkvoIETAAAAAElFTkSuQmCC`,floorboard_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAAXNSR0IArs4c6QAAAUxJREFUeJzt3TFuwkAQheEFjSUQoo1EKJIid8oFuFMuwEVyjYgCCrBEayEiuQgtASNBXvDMmv8rt9nR7pPG24x7X/PZT0LryqpKk/HYuwxZ37sA5I0AQWJlVXnX8LC6cPY2rL9/LeyLQTpdAy6hhUFCgCAhQJDYvhicLTatAU3OPqIRW7RHDi0MEgIECQGCpPEjGrFFujObTl68a8CRdblKOd0JLQwSAgQJAYKEAEFCgCCxdbnyrgEncroTexoVrW643dWp7T1xP7QwSAgQJAQIEgIECQGCxLa7uvVNPfbEfdjb67N3DY0Wy02KWlvu/vNsaWGQECBICBAkBAiS3ufHOwOm8GdhX2FeeP3dhhYGCQGChABBQoAgIUCQ2GK58a4hHM7kelfPB4o2lwYx0MIgIUCQECBICBAkNw2YijTYCDFYF345lKOu/O7pAEBLR2y+MLyqAAAAAElFTkSuQmCC`,jack_o_lantern_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAA4UlEQVRYR+2VMQ6DMAxFYe4R2LsxdOopuHBv0KkDW/ceoTOVK/0qhICd8K0wNBNyIv3nH5PfTrdhaiqu9vAAz9f768+5O7n4tOmAt7h0tAAIRde+mVbMACCoCTCv4wcQio+Pe9NfrjOOuMaCWACIEBYgUjU3AM1+7LsCVL0CdBjaLrV4JugOiEjVvwCdhxDoMlWzzop27vhZoHWwd//vgLsDWqK6AmjiyTjeO1S5cU51oOQhowGUxjkdIDfO6QDWGcIz7wKQE+cuAOKCNc5pAKVxTgWIISxxTgewDiHOVQf4AHx92LXFZzetAAAAAElFTkSuQmCC`,winter_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQdJREFUeJztmcERgyAUBZ9pIjVRUa5UldT0K/BITnhKZpgYXYG3Bei6oyCwxFrKPb9EEznpTI/ISZK06PEsp931YkROcweQpBstQNMcoH4zo9EUoD78iBGaAtTR+Qqzxb/xIEgL0DgALUDTTYCjZiAPgrQAjQPQAjQOcNSFe1k3eBagBWgcgBagcYBeRuujmP4NWGIt2zQ44pbXN7aDkaucDFH4E/Cf4OQ4AC1A4wC0AI0D0AI0DkAL0DgALUDjALQAze4AkVM3hyCfmP4N8H4ALUDjALQAjQPQAjQOQAvQOAAtQDNEgD3rkSECSL+fbHstQAvQOAAtQOMAtACNA9ACFWJjNXLSG2nxQbKUEorlAAAAAElFTkSuQmCC`,yellow_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAx0lEQVRoQ+2WwQ3AIAwDYRVW6dx9dg1GKf1WlEcTAUks94maBHzGIt/taqn7aj1TKUe/nDyu59EBPjt3vMADWMMhATcEPCbMnySkhdxYyHoj2vm0kFa5WXVDApESiRaaZQVtHxLQKjerDodApOR5v5FwCMzy5O4+JLBb8X4eJoFIiYRJwNrXkvkkIFFrxb84BCIlD99CK7ys7YlzB7QKWNdhEoiUSJgErH0tmU8CErVW/ItDIFLy8C20wsvanjh3QKuAdV14Ag9MlnJUFzG78wAAAABJRU5ErkJgggAA`,lavender_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAyUlEQVRoQ+2WwRGAIAwEQw0WYf/l+LQAPzaAXwd5mAyQ5OZ8MiaB2+OGcp+1SvNdh8i2t6siEddL7wDfrcdd4QG82ZBAGAIRE+ZPEtJCYSzkvRHrfFrIqtyoui6BTIlEC42ygrUPCViVG1WHQyBT8rzfSDgERnlydR8SWK14Ow+TQKZEwiTg7WvNfBLQqDXjXxwCmZKHb6EZXrb2xLkDVgW86zAJZEokTALevtbMJwGNWjP+xSGQKXn4FprhZWtPnDtgVcC7Lj2BB3XCNohEy6k2AAAAAElFTkSuQmCC`,grass_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABp0lEQVRoQ92Y63HDMAyD5RE6QMfLCp2qi2SODtARkmt7yTmuJIAEeHbiv+LrIyjZ8vJxbpe28/P91drbe66IZQ2gBMql//Ni8o5sZAAm+RqOtd/aUQCzLo4CsAXdYrP2rN2DAhkAZXQcvjSAI1lFjBIAVn4H0K4ADtASALaz7EkzO8V+ARydYItWD4ptrVMAJ5gz1roJ0xFyJnXGogGiclcVOasjvYl7xT4VgGPTOmKkFXAkd8S4AyD50fqoGNZvZjdbex0Ah5xsDFYVJp60B7KFZP16d4pdAJjOsu8gCaCXRO1uFE6+E28TPj1AtIOqinCEqjuqfpIcEiCiIgRAwaoVmt3GftZKAdxwvXjL6bNdsv8lj6BOKYB6wqAGWUaISYLmOBrDcqVUkiLfyN75t4lZZ9YOFauO2SEBItDyMcp+NTJFZVSlATLBoz6Za2UpANN11mb0zUQDsIlYu6g6o81uAcgUk/HpQewG4Hq50b9V2NHI2ClqHAIgA33zgSOkdMcxJij/6wMo8lb5rlWBCkSLQJKjeIy/BIASoHUHgHQfUAtEANH1K9JWO4Tg58LYAAAAAElFTkSuQmCC`,forest_floor_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAWRJREFUaIHlWTkSgzAMNH6AO16V/78inT+QVDREYB2rg8mWjBHs6rBkb+M1Pu2Euc823uP8uCQ69RD583OfMFsUSAJIcMXQEjUTQCms9bqZQHauqAl4xzYXagIZylOi/RCIUlbzHUq0HwJRyqK+415GD3h5NoyAl2dVBO7URCjNsXGs2ahe6ElwD6GVmlaPpfdC1twISWLPvaV7u7g57y0d7WK02it78BBCq72yF7aRecF9oJGGlHQ9SUBiBJ1D0vXuQ/0K0I0sY8qCbmR3xiQNViTYScxRKmPMLFlGJZ6En0pEtx7wUwmvMLoShl2Fss+BroRhVyGOsqWrEAfWMqzBf55KVEIZApD7gcxKA7kfoIxkl88Velv8pFaZKOK9OVWIqMbOlMQaldFtuYmARmVUW36QZBOolswHyWUSn1+oBrck1kDj5TI7cVMKyb6lfMxQb5m0rtZIiEFO5tAfk8wJ0jD6AhfOowgv6la0AAAAAElFTkSuQmCC`,Stage=({dayCount:e,field:t,isMenuOpen:n=!0,stageFocus:a,useAlternateEndDayButtonPosition:o=!1,viewTitle:s})=>{let l=(0,import_react$24.useRef)(null);(0,import_react$24.useEffect)(()=>{if(l.current){let e=l.current,{style:t}=e;e.scrollTop=0,t.overflow=`hidden`,setTimeout(()=>t.overflow=``,0)}},[a]);let u={[stageFocusType.HOME]:isOctober()?jack_o_lantern_bg_default:isDecember()?winter_bg_default:brown_dot_bg_default,[stageFocusType.SHOP]:yellow_dot_bg_default,[stageFocusType.WORKSHOP]:lavender_dot_bg_default,[stageFocusType.CELLAR]:floorboard_default,[stageFocusType.FIELD]:grass_default,[stageFocusType.COW_PEN]:grass_default,[stageFocusType.FOREST]:forest_floor_default}[a],d=[stageFocusType.FIELD,stageFocusType.COW_PEN,stageFocusType.FOREST].includes(a);return(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Stage`,{"is-october":isOctober(),"is-december":isDecember()}),"data-stage-focus":a,role:`main`,ref:l,sx:t=>({flex:2,imageRendering:`pixelated`,marginLeft:0,overflow:`auto`,padding:`1.5em 1.5em 0`,position:`relative`,zIndex:0,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),"& .stage-background":{backgroundSize:`96px`,bottom:0,left:0,pointerEvents:`none`,position:`fixed`,right:0,top:0,zIndex:-1,...u?{backgroundImage:`url(${u})`}:{},...d?{backgroundSize:`30%`,filter:seasonFilterMap[getCurrentSeason(e)],[`@media (min-width: ${breakpoints.md}px)`]:{backgroundSize:`10%`}}:{},...a===stageFocusType.CELLAR?{backgroundSize:`288px 96px`}:{}},"& h3":{textAlign:`center`},"& h2":{fontSize:`1.2em`},"& .view-title":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`}},"& section":{padding:`0.5em 0`,[`@media (max-width: ${breakpoints.sm}px)`]:{fontSize:`1em`}},...o?{paddingTop:`4em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{paddingTop:`4.5em`}}:{},...n?{transitionProperty:`padding, margin-left`,[`@media (max-width: ${breakpoints.sm}px)`]:{padding:0},"& > *":{opacity:1,transition:t.transitions.create(`opacity`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),[`@media (max-width: ${breakpoints.sm}px)`]:{opacity:0}}}:{marginLeft:`-${layout.sidebarWidth}`,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.leavingScreen,easing:t.transitions.easing.sharp}),[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`-${layout.narrowSidebarWidth}px`}}}),children:[(0,import_jsx_runtime.jsx)(`div`,{className:`stage-background`}),(0,import_jsx_runtime.jsx)(`h2`,{className:`view-title`,children:s}),a===stageFocusType.HOME&&(0,import_jsx_runtime.jsx)(Consumer$7,{}),a===stageFocusType.FIELD&&(0,import_jsx_runtime.jsx)(Consumer$10,{columns:t[0].length,rows:t.length}),a===stageFocusType.FOREST&&(0,import_jsx_runtime.jsx)(Forest,{}),a===stageFocusType.SHOP&&(0,import_jsx_runtime.jsx)(Consumer$4,{}),a===stageFocusType.COW_PEN&&(0,import_jsx_runtime.jsx)(Consumer$6,{}),a===stageFocusType.WORKSHOP&&(0,import_jsx_runtime.jsx)(Consumer$1,{}),a===stageFocusType.CELLAR&&(0,import_jsx_runtime.jsx)(Cellar,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]})};Stage.propTypes={dayCount:import_prop_types$1.number.isRequired,field:(0,import_prop_types$1.arrayOf)(import_prop_types$1.array).isRequired,isMenuOpen:import_prop_types$1.bool,stageFocus:import_prop_types$1.string.isRequired,useAlternateEndDayButtonPosition:import_prop_types$1.bool,viewTitle:import_prop_types$1.string.isRequired};function Consumer(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Stage,{...t,...n,...e})})}var scriptRel=`modulepreload`,assetsURL=function(e,t){return new URL(e,t).href},seen={},__vitePreload=function(e,t,n){let a=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=l(t.map(t=>{if(t=assetsURL(t,n),t=u(t),t in seen)return;seen[t]=!0;let a=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let o=e[n];if(o.href===t&&(!a||o.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:scriptRel,a||(o.as=`script`),o.crossOrigin=``,o.href=t,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(t=>{for(let e of t||[])e.status===`rejected`&&o(e.reason);return e().catch(o)})},autoUpdateMode=`false`,selfDestroying=`false`,auto=autoUpdateMode===`true`,autoDestroy=selfDestroying===`true`;function registerSW(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,d,f,m,h=async(e=!0)=>{await f,auto||m?.()};async function v(){if(`serviceWorker`in navigator){if(d=await __vitePreload(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e(`./service-worker.js`,{scope:`./`,type:`classic`})).catch(e=>{u?.(e)}),!d)return;if(m=()=>{d?.messageSkipWaiting()},!autoDestroy)if(auto)d.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),d.addEventListener(`installed`,e=>{e.isUpdate||o?.()});else{let e=!1,t=()=>{e=!0,d?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),a?.()};d.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&o?.():n.isExternal?t():!e&&o?.():n.isUpdate||o?.()}),d.addEventListener(`waiting`,t)}d.register({immediate:t}).then(e=>{l?l(`./service-worker.js`,e):s?.(e)}).catch(e=>{u?.(e)})}}return f=v(),h}function useRegisterSW(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,[d,f]=(0,import_react$24.useState)(!1),[m,h]=(0,import_react$24.useState)(!1),[v]=(0,import_react$24.useState)(()=>registerSW({immediate:t,onNeedReload:n,onOfflineReady(){h(!0),o?.()},onNeedRefresh(){f(!0),a?.()},onRegistered:s,onRegisteredSW:l,onRegisterError:u}));return{needRefresh:[d,f],offlineReady:[m,h],updateServiceWorker:v}}var UpdateNotifier=()=>{let{handlers:{handleGameUpdateAvailable:e}}=(0,import_react$24.useContext)(FarmhandContext),{needRefresh:[t],updateServiceWorker:n}=useRegisterSW();return(0,import_react$24.useEffect)(()=>{t&&(e(n),window.addEventListener(`beforeunload`,()=>{n(!0)}))},[t,e,n]),null},commonFetchConfig={mode:`cors`,cache:`no-cache`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},redirect:`follow`,referrerPolicy:`no-referrer`};async function getData(e=``,t={}){let n=new URLSearchParams;return Object.keys(t).forEach(e=>n.append(encodeURIComponent(e),encodeURIComponent(t[e]))),(await fetch(`${e}?${n}`,{...commonFetchConfig,method:`GET`})).json()}async function postData(e=``,t={}){return(await fetch(e,{...commonFetchConfig,method:`POST`,body:JSON.stringify(t)})).json()}var createNewField=()=>Array(10).fill(void 0).map(()=>[,,,,,,].fill(null)),createNewForest=()=>[,].fill(void 0).map(()=>[,,,,].fill(null)),doesMenuObstructStage=()=>window.innerWidth<BREAKPOINTS.MD,getAvailableShopInventory=memoize(e=>inventory.filter(({id:t})=>!(unlockableItems.hasOwnProperty(t)&&!e.items.hasOwnProperty(t)))),getPeerMetadata=e=>{let t=PEER_METADATA_STATE_KEYS.reduce((t,n)=>(t[n]=e[n],t),{});return Object.assign(t,{cowOfferedForTrade:e.cowInventory.find(({id:t})=>t===e.cowIdOfferedForTrade)}),t},getViewList=({isForestUnlocked:e,purchasedCellar:t,purchasedCowPen:n,showHomeScreen:a})=>{let{CELLAR:o,COW_PEN:s,HOME:l,WORKSHOP:u,FOREST:d}=stageFocusType,f=[...STANDARD_VIEW_LIST];return a&&f.unshift(l),e&&f.push(d),n&&f.push(s),f.push(u),t&&f.push(o),f},getValidatedStageFocusFromHash=e=>{let t=getHashQueryParams().get(VIEW_QUERY_PARAM_NAME);if(!t)return;let n=getLevelEntitlements(levelAchieved(e.experience)).stageFocusType[stageFocusType.FOREST];return getViewList({isForestUnlocked:n,purchasedCellar:e.purchasedCellar,purchasedCowPen:e.purchasedCowPen,showHomeScreen:e.showHomeScreen}).find(e=>e===t)},sleep=e=>new Promise(t=>setTimeout(t,e)),{PLANT}=fieldMode,{MULCH}=itemType,FarmhandService=class{static computePlayerInventory=memoize((e,t)=>e.map(({quantity:e,id:n})=>({quantity:e,...itemsMap[n],value:getItemCurrentValue(itemsMap[n],t)})));static getFieldToolInventory=memoize(e=>e.filter(({id:e})=>{let t=itemsMap[e];return typeof t.enablesFieldMode==`string`&&t.enablesFieldMode!==PLANT&&t.type!==MULCH}).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableCropInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e].isPlantableCrop).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getMulchInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.type===MULCH).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableTreeInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.isPlantableTree).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static applyPriceEvents=(e,t,n)=>{let a={...e};return Object.keys(t).forEach(e=>{a[e]=.5}),Object.keys(n).forEach(e=>{a[e]=1.5}),a}},itemIds=Object.keys(itemsMap),getInventoryQuantities=e=>{let t={};for(let e of itemIds)t[e]=0;for(let{id:n,quantity:a}of e)t[n]=a;return t},useFarmhandNavigation=(e,t)=>({openDialogView:(0,import_react$24.useCallback)(t=>{e(e=>({...e,currentDialogView:t,isDialogViewOpen:!0}))},[e]),closeDialogView:(0,import_react$24.useCallback)(()=>{e(e=>({...e,isDialogViewOpen:!1}))},[e]),focusNextView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus);return{...e,stageFocus:t[(n+1)%t.length]}})},[e,t]),focusPreviousView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus),a=n===0?t.length-1:(n-1)%t.length;return{...e,stageFocus:t[a]}})},[e,t])}),{floor,random,sin}=Math,libName=`Trystero`,alloc=(e,t)=>Array(e).fill(void 0).map(t),charSet=`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz`,genId=e=>alloc(e,()=>charSet[floor(random()*62)]??``).join(``),selfId=genId(20),all=Promise.all.bind(Promise),isBrowser=typeof window<`u`,{entries,fromEntries,keys,values}=Object,noOp=()=>{},candidateType=`candidate`,resetTimer=e=>(e!==null&&clearTimeout(e),null),mkErr=e=>Error(`${libName}: ${e}`),toErrorMessage=(e,t)=>e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:toJson(e??t),toError=(e,t)=>e instanceof Error?e:mkErr(toErrorMessage(e,t)),encoder=new TextEncoder,decoder=new TextDecoder,encodeBytes=e=>encoder.encode(e),decodeBytes=e=>decoder.decode(e),toHex=e=>e.reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``),topicPath=(...e)=>e.join(`@`),shuffle=(e,t)=>{let n=[...e],a=()=>{let e=sin(t++)*1e4;return e-floor(e)},o=n.length;for(;o;){let e=floor(a()*o--),t=n[o];n[o]=n[e],n[e]=t}return n},getRelays=(e,t,n,a=!1)=>e.relayConfig?.urls||(a?shuffle(t,strToNum(e.appId)):t).slice(0,e.relayConfig?.redundancy??n),toJson=JSON.stringify,fromJson=e=>{try{return JSON.parse(e)}catch{throw mkErr(`failed to parse JSON: ${e}`)}},strToNum=(e,t=2**53-1)=>e.split(``).reduce((e,t)=>e+t.charCodeAt(0),0)%t,defaultRetryMs=3333,socketRetryPeriods={},reconnectionLockingPromise=null,resolver=null,pauseRelayReconnection=()=>{reconnectionLockingPromise||=new Promise(e=>{resolver=e}).finally(()=>{resolver=null,reconnectionLockingPromise=null})},resumeRelayReconnection=()=>{resolver?.()},makeSocket=(e,t)=>{let n={},a=()=>{let o=new WebSocket(e);o.onclose=()=>{if(reconnectionLockingPromise){reconnectionLockingPromise.then(a);return}socketRetryPeriods[e]??=defaultRetryMs,setTimeout(a,socketRetryPeriods[e]),socketRetryPeriods[e]*=2},o.onmessage=e=>t(String(e.data)),n.socket=o,n.url=o.url,n.ready=new Promise(t=>o.onopen=()=>{t(n),socketRetryPeriods[e]=defaultRetryMs}),n.send=e=>{o.readyState===1&&o.send(e)}};return a(),n},createRelayManager=e=>{let t={},n=new WeakMap,a=e=>{let t=n.get(e);if(!t)throw mkErr(`relay bookkeeping missing registration for relay client`);return t};return{register:(e,a)=>(t[e]=a,n.set(a,e),a),keyOf:a,scoped:()=>{let e={},t=t=>e[t]??={};return{forKey:t,forRelay:e=>t(a(e))}},getSockets:()=>fromEntries(entries(t).flatMap(([t,n])=>{let a=e(n);return a?[[t,a]]:[]}))}},watchOnline=()=>{if(isBrowser){let e=new AbortController;return addEventListener(`online`,resumeRelayReconnection,{signal:e.signal}),addEventListener(`offline`,pauseRelayReconnection,{signal:e.signal}),()=>e.abort()}return noOp},algo=`AES-GCM`,strToSha1={},pack=e=>btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(e)))),unpack=e=>{let t=atob(e);return new Uint8Array(t.length).map((e,n)=>t.charCodeAt(n)).buffer},hashWith=async(e,t)=>new Uint8Array(await crypto.subtle.digest(e,encodeBytes(t))),sha1=async e=>strToSha1[e]??=Array.from(await hashWith(`SHA-1`,e)).map(e=>e.toString(36)).join(``),genKey=async(e,t,n)=>crypto.subtle.importKey(`raw`,await crypto.subtle.digest({name:`SHA-256`},encodeBytes(`${e}:${t}:${n}`)),{name:algo},!1,[`encrypt`,`decrypt`]),deriveRoomNamespace=async(e,t)=>toHex(await hashWith(`SHA-256`,`${libName}:${e}:${t}`)),joinChar=`$`,ivJoinChar=`,`,encrypt=async(e,t)=>{let n=crypto.getRandomValues(new Uint8Array(16));return n.join(ivJoinChar)+joinChar+pack(await crypto.subtle.encrypt({name:algo,iv:n},await e,encodeBytes(t)))},decrypt=async(e,t)=>{let[n,a]=t.split(joinChar);return decodeBytes(await crypto.subtle.decrypt({name:algo,iv:new Uint8Array(n?.split(ivJoinChar).map(Number)??[])},await e,unpack(a??``)))},offerTtl=57333,offerLeaseTtlMs=18e4,poolSize=20,OfferPool=class{pool=[];pooled=new Set;leased=new Map;recycling=new Set;cleanupTimer=null;active=!1;constructor(e){this.makeOffer=e}get isActive(){return this.active}warmup(){this.pool=[],this.pooled.clear(),alloc(poolSize,this.makeOffer).forEach(e=>this.push(e)),this.active=!0,this.cleanupTimer=setInterval(()=>{this.pool=this.pool.filter(e=>e.isDead?(this.pooled.delete(e),!1):!0)},offerTtl)}push(e){e.isDead||this.pooled.has(e)||this.leased.has(e)||(this.pool.push(e),this.pooled.add(e))}shift(e){let t=[];for(;t.length<e&&this.pool.length>0;){let e=this.pool.shift();if(!e)break;this.pooled.delete(e),t.push(e)}return t}claimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e))}recycle(e){if(!(e.isDead||this.recycling.has(e))){if(e.connection.remoteDescription){e.destroy();return}if(!this.active){e.destroy();return}this.recycling.add(e),e.setHandlers({connect:noOp,close:noOp,error:noOp}),e.getOffer(!0).then(t=>{if(!t||t.type!==`offer`||e.isDead||!this.active){e.destroy();return}this.push(e)}).catch(()=>e.destroy()).finally(()=>this.recycling.delete(e))}}reclaimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e),this.recycle(e))}lease(e){this.claimLeased(e),this.leased.set(e,setTimeout(()=>{this.leased.delete(e),this.recycle(e)},offerLeaseTtlMs))}checkout(e,t,n){let a=this.shift(e),o=Math.max(0,e-a.length);o>0&&a.push(...alloc(o,this.makeOffer));let s=async(e,a=!1)=>{try{let a=await n(e);return t?(this.lease(e),{peer:e,offer:a,claim:()=>this.claimLeased(e),reclaim:()=>this.reclaimLeased(e)}):{peer:e,offer:a}}catch(t){if(this.claimLeased(e),this.pooled.delete(e),e.destroy(),!a)return s(this.makeOffer(),!0);throw t}};return all(a.map(e=>s(e)))}getOffers(e,t){return this.checkout(e,!0,t)}destroy(){this.active=!1,this.cleanupTimer&&=(clearInterval(this.cleanupTimer),null),this.pool.forEach(e=>e.destroy()),this.pool=[],this.pooled.clear(),this.leased.forEach((e,t)=>{resetTimer(e),t.destroy()}),this.leased.clear(),this.recycling.forEach(e=>e.destroy()),this.recycling.clear()}},overlapRoomPasswordErr=mkErr(`incorrect password for overlapping room`),createPasswordHandshake=(e,t,n)=>{let a=a=>hashWith(`SHA-256`,`${a}:${e}:${t}:${n}`).then(toHex),o=async(t,n,o)=>{if(!e)return;if(o){let e=genId(36);await t({__trystero_pw:`challenge`,c:e});let{data:o}=await n();if(!o||typeof o!=`object`||o.__trystero_pw!==`response`||typeof o.h!=`string`)throw overlapRoomPasswordErr;let s=await a(e);if(o.h!==s)throw overlapRoomPasswordErr;return}let{data:s}=await n();if(!s||typeof s!=`object`||s.__trystero_pw!==`challenge`||typeof s.c!=`string`)throw overlapRoomPasswordErr;await t({__trystero_pw:`response`,h:await a(s.c)})};return{run:o,compose:t=>e||t?async(e,n,a,s)=>{await o(n,a,s),await t?.(e,n,a,s)}:void 0}},iceTimeout=15e3,disconnectedCloseDelayMs=5e3,iceStateEvent=`icegatheringstatechange`,offerType=`offer`,answerType=`answer`,outOfRangePattern=/out of range/i,rewriteMdnsCandidatesToLoopback=e=>e.replace(/ (\S+\.local) (\d+) typ host/g,` 127.0.0.1 $2 typ host`),peer_default=(e,{trickleIce:t,rtcConfig:n,rtcPolyfill:a,turnConfig:o,_test_only_mdnsHostFallbackToLoopback:s})=>{let l=new(a??RTCPeerConnection)({iceServers:defaultIceServers.concat(o??[]),...n}),u={},d=[],f=[],m=t!==!1,h=[],v=[],y=!1,b=!1,x=null,S=null,C=!1,T=()=>S=resetTimer(S),E=()=>{C||(C=!0,T(),u.close?.())},D=e=>{u.signal?u.signal(e):d.push(e)},O=e=>{let t=u.signal;u.signal=n=>{t?.(n),e(n)},d.length>0&&d.splice(0).forEach(e=>u.signal?.(e))},k=e=>s?rewriteMdnsCandidatesToLoopback(e):e,j=e=>{if(!s||typeof e.candidate!=`string`)return e;let t=rewriteMdnsCandidatesToLoopback(e.candidate);return t===e.candidate?e:{...e,candidate:t}},M=e=>({type:e.localDescription?.type??offerType,sdp:k(e.localDescription?.sdp??``)}),N=()=>{let e=l.remoteDescription?.sdp;return e?e.match(/a=ice-ufrag:([^\s]+)/)?.[1]??null:null},F=()=>(l.remoteDescription?.sdp?.match(/^m=/gm)??[]).length,I=e=>{if(!l.remoteDescription)return!1;let t=F();if(typeof e.sdpMLineIndex==`number`&&t>0&&e.sdpMLineIndex>=t)return!1;let n=N();return!(n&&e.usernameFragment&&e.usernameFragment!==n)},L=async e=>{try{return await l.addIceCandidate(e),!0}catch(t){if(t instanceof Error&&outOfRangePattern.test(t.message)&&typeof e.sdpMLineIndex==`number`)return!1;throw t}},R=async()=>{if(!l.remoteDescription||h.length===0)return;let e=h.splice(0),t=[];for(let n of e){if(!I(n)){t.push(n);continue}await L(n)||t.push(n)}t.length>0&&h.push(...t)},z=async e=>{if(I(e)){await L(e)||h.push(e);return}h.push(e)},B=e=>{e.binaryType=`arraybuffer`,e.bufferedAmountLowThreshold=65535,e.onmessage=e=>{let t=e.data;u.data?u.data(t):f.push(t)},e.onopen=()=>u.connect?.(),e.onclose=E,e.onerror=({error:e})=>u.error?.(toError(e,`data channel error`))},V=async e=>{let t=null;try{await Promise.race([new Promise(t=>{let n=()=>{e.iceGatheringState===`complete`&&(e.removeEventListener(iceStateEvent,n),t())};e.addEventListener(iceStateEvent,n),n()}),new Promise(e=>{t=setTimeout(e,iceTimeout)})])}finally{resetTimer(t)}return M(e)},H=async()=>{let e=m?M(l):await V(l);return D(e),e};e?(x=l.createDataChannel(`data`),B(x)):l.ondatachannel=({channel:e})=>{x=e,B(e)};let U=async(e=!1)=>{if(l.connectionState!==`closed`)try{return y=!0,e&&(l.signalingState!==`stable`&&l.signalingState!==`closed`&&l.localDescription?.type===offerType&&await l.setLocalDescription({type:`rollback`}),typeof l.restartIce==`function`&&l.restartIce()),await l.setLocalDescription(e?await l.createOffer({iceRestart:!0}):void 0),await H()}catch(e){u.error?.(toError(e,`failed to create local offer`))}finally{y=!1}};l.onnegotiationneeded=async()=>U(!1),l.onicecandidate=({candidate:e})=>{if(!m||!e)return;let t=j(typeof e.toJSON==`function`?e.toJSON():{candidate:e.candidate,sdpMid:e.sdpMid,sdpMLineIndex:e.sdpMLineIndex,usernameFragment:e.usernameFragment});D({type:candidateType,sdp:JSON.stringify(t)})},l.onconnectionstatechange=()=>{if(l.connectionState===`connected`||l.connectionState===`connecting`){T();return}if(l.connectionState===`disconnected`){S||=setTimeout(()=>{S=null,l.connectionState===`disconnected`&&E()},disconnectedCloseDelayMs);return}(l.connectionState===`failed`||l.connectionState===`closed`)&&E()},l.ontrack=e=>{let t=e.streams[0];if(t){if(!u.track&&!u.stream){v.push({track:e.track,stream:t});return}u.track?.(e.track,t),u.stream?.(t)}},l.onremovestream=e=>u.stream?.(e.stream);let W=e?new Promise(e=>O(t=>{t.type===offerType&&e(t)})):Promise.resolve();return e&&queueMicrotask(()=>{!y&&l.signalingState===`stable`&&!l.localDescription&&l.connectionState!==`closed`&&l.onnegotiationneeded?.(new Event(`negotiationneeded`))}),{created:Date.now(),connection:l,get channel(){return x},get isDead(){return l.connectionState===`closed`},getOffer:async(t=!1)=>{if(e)return t?U(!0):l.localDescription?.type===offerType?m?M(l):V(l):W},async signal(t){if(t.type===`candidate`){try{let e=JSON.parse(t.sdp);e&&typeof e==`object`&&await z(j(e))}catch(e){u.error?.(toError(e,`failed to parse remote candidate`))}return}if(!(x?.readyState===`open`&&!t.sdp?.includes(`a=rtpmap`)))try{let n={...t,sdp:k(t.sdp)};if(t.type===offerType){if(y||l.signalingState!==`stable`&&!b){if(e)return;await all([l.setLocalDescription({type:`rollback`}),l.setRemoteDescription(n)])}else await l.setRemoteDescription(n);return await R(),await l.setLocalDescription(),await H()}if(t.type===answerType){b=!0;try{await l.setRemoteDescription(n),await R()}finally{b=!1}}}catch(e){u.error?.(toError(e,`failed to apply remote signal`))}},sendData:e=>x?.send(e),destroy:()=>{T(),x?.close(),l.close(),y=!1,b=!1,E()},setHandlers:e=>{let{signal:t,...n}=e;Object.assign(u,n),u.data&&f.length>0&&f.splice(0).forEach(e=>u.data?.(e)),t&&O(t),(u.track||u.stream)&&v.length>0&&v.splice(0).forEach(({track:e,stream:t})=>{u.track?.(e,t),u.stream?.(t)})},offerPromise:W,addStream:e=>e.getTracks().forEach(t=>l.addTrack(t,e)),removeStream:e=>l.getSenders().filter(t=>t.track&&e.getTracks().includes(t.track)).forEach(e=>l.removeTrack(e)),addTrack:(e,t)=>l.addTrack(e,t),removeTrack:e=>{let t=l.getSenders().find(t=>t.track===e);t&&l.removeTrack(t)},replaceTrack:(e,t)=>{let n=l.getSenders().find(t=>t.track===e);if(n)return n.replaceTrack(t)}}},defaultIceServers=[...alloc(3,(e,t)=>`stun:stun${t||``}.l.google.com:19302`),`stun:stun.cloudflare.com:3478`].map(e=>({urls:e})),TypedArray=Object.getPrototypeOf(Uint8Array),typeByteLimit=32,typeIndex=0,nonceIndex=32,tagIndex=34,progressIndex=35,payloadIndex=36,chunkSize=16*2**10-payloadIndex,oneByteMax=255,twoByteMax=65535,buffLowEvent=`bufferedamountlow`,channelCloseEvent=`close`,channelErrorEvent=`error`,unloadEvent=`beforeunload`,defaultHandshakeTimeoutMs=1e4,backpressureWaitTimeoutMs=1e4,internalNs=e=>`@_`+e,beforeUnloadRoomCleanups=new Set,cleanupActiveRoomsOnBeforeUnload=()=>beforeUnloadRoomCleanups.forEach(e=>e()),registerBeforeUnloadCleanup=e=>(beforeUnloadRoomCleanups.add(e),beforeUnloadRoomCleanups.size===1&&addEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload),()=>{beforeUnloadRoomCleanups.delete(e),beforeUnloadRoomCleanups.size||removeEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload)}),toByteArray=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),toHandshakeErrorMessage=e=>{let t=toErrorMessage(e,`unknown error`);return t.startsWith(`handshake `)?t:`handshake failed: ${t}`},waitForBufferedAmountLow=(e,t=backpressureWaitTimeoutMs)=>e.readyState!==`open`||e.bufferedAmount<=e.bufferedAmountLowThreshold?Promise.resolve(e.readyState===`open`):new Promise(n=>{let a=!1,o=null,s=t=>{a||(a=!0,e.removeEventListener(buffLowEvent,l),e.removeEventListener(channelCloseEvent,u),e.removeEventListener(channelErrorEvent,u),resetTimer(o),n(t))},l=()=>s(!0),u=()=>s(!1);if(e.addEventListener(buffLowEvent,l),e.addEventListener(channelCloseEvent,u),e.addEventListener(channelErrorEvent,u),o=setTimeout(()=>s(!1),t),e.readyState!==`open`){s(!1);return}e.bufferedAmount<=e.bufferedAmountLowThreshold&&s(!0)}),room_default=(e,t,n,{onPeerHandshake:a,onHandshakeError:o,handshakeTimeoutMs:s=defaultHandshakeTimeoutMs}={})=>{let l={},u={},d={},f={},m={},h={},v={},y={},b={},x={},S=new WeakMap,C=new WeakMap,T={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},E=noOp,D=(e,t,{includePending:n=!1}={})=>(e?Array.isArray(e)?e:[e]:keys(n?l:u)).flatMap(e=>{let a=n?l[e]:u[e];return a?[Promise.resolve(t(e,a))]:(console.warn(`${libName}: no peer with id ${e} found`),[])}),O=(e,t,n,a,o,s={})=>{let l={k:t,...s,...n===void 0?{}:{m:n}};return D(e,async(e,t)=>{await a(l,e),o(t)})},k=e=>t=>{let n=e.get(t);return n||(n=genId(20),e.set(t,n)),n},j=k(S),M=k(C),N=e=>l[e]??null,F=(e,t,n,a)=>{u[e]&&(N(e)?.__trysteroSetRemoteStreamByKey?.(t,n),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(n.id,n),T.onPeerStream(n,e,a))},I=(e,t,n,a,o)=>{u[e]&&(N(e)?.__trysteroSetRemoteTrackByKey?.(t,n,a),typeof a.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(a.id,a),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteTrackById?.(n.id,n,a),T.onPeerTrack(n,a,e,o))},L=(e,t=mkErr(`peer disconnected`))=>{let n=d[e],a=toError(t,`peer disconnected`);n&&(resetTimer(n.handshakeTimer),n.pendingHandshakePayloads.length=0,n.handshakeWaiters.splice(0).forEach(e=>e.reject(a)),delete d[e]),delete l[e],delete u[e],delete h[e],y[e]?.splice(0).forEach(e=>e.reject(a)),delete y[e],delete b[e],delete x[e]},R=(e,n,a)=>{let o=l[e];if(!o||n&&o!==n)return;let s=!!u[e];L(e,a),o.destroy(),s&&T.onPeerLeave(e),t(e)},z=(e,t={})=>{let n=m[e];if(f[e]&&n){let a=f[e].options;if(a.sendToPending!==!!t.sendToPending||a.receiveWhilePending!==!!t.receiveWhilePending)throw mkErr(`action type "${e}" cannot be redefined`);return n}if(!e)throw mkErr(`action type argument is required`);let a=encodeBytes(e);if(a.byteLength>typeByteLimit)throw mkErr(`action type string "${e}" (${a.byteLength}b) exceeds byte limit (${typeByteLimit}). Hint: choose a shorter name.`);let o={sendToPending:!!t.sendToPending,receiveWhilePending:!!t.receiveWhilePending},s=new Uint8Array(typeByteLimit);s.set(a);let d=0;return f[e]={onComplete:noOp,onProgress:noOp,setOnComplete:t=>{f[e].onComplete=t;let n=v[e];n?.length&&(delete v[e],n.forEach(({payload:e,peerId:n,metadata:a})=>t(e,n,a)))},setOnProgress:t=>{f[e].onProgress=t},send:async(e,t,n,a)=>{let f=typeof e;if(f===`undefined`)throw mkErr(`action data cannot be undefined`);let m=f!==`string`,h=e instanceof Blob,v=h||e instanceof ArrayBuffer||e instanceof TypedArray,y=n!==void 0,b=v?toByteArray(h?await e.arrayBuffer():e):encodeBytes(m?toJson(e):e),x=y?encodeBytes(toJson(n)):null,S=Math.ceil(b.byteLength/chunkSize)+ +!!y||1,C=alloc(S,(e,t)=>{let n=t===S-1,a=!!(y&&t===0),o=new Uint8Array(payloadIndex+(a?x?.byteLength??0:n?b.byteLength-chunkSize*(S-(y?2:1)):chunkSize));return o.set(s),o.set([d>>8,d&oneByteMax],nonceIndex),o.set([Number(n)|Number(a)<<1|Number(v)<<2|Number(m)<<3],tagIndex),o.set([Math.round((t+1)/S*oneByteMax)],progressIndex),o.set(y?a?x??new Uint8Array:b.subarray((t-1)*chunkSize,t*chunkSize):b.subarray(t*chunkSize,(t+1)*chunkSize),payloadIndex),o});return d=d+1&twoByteMax,await all(D(t,async(e,t)=>{let{channel:s}=t,d=0;for(;d<S;){let f=C[d];if(!f||s&&s.bufferedAmount>s.bufferedAmountLowThreshold&&!await waitForBufferedAmountLow(s))break;let m=o.sendToPending?l[e]:u[e];if(!m||m!==t)break;t.sendData(f),d++;let h=f[progressIndex]??oneByteMax;a?.(h/oneByteMax,e,n)}},{includePending:o.sendToPending})),[]},options:o},m[e]=[f[e].send,f[e].setOnComplete,f[e].setOnProgress]},B=e=>z(e),V=(e,t)=>{let n=d[e];if(!n)return;let a=new Uint8Array(t),o=decodeBytes(a.subarray(typeIndex,nonceIndex)).replaceAll(`\0`,``),s=f[o];if(!n.isActive&&!s?.options.receiveWhilePending)return;let l=(a[nonceIndex]??0)<<8|(a[33]??0),u=a[tagIndex]??0,m=a[progressIndex]??0,y=a.subarray(payloadIndex),b=!!(u&1),x=!!(u&2),S=!!(u&4),C=!!(u&8);h[e]??={},h[e][o]??={};let T=h[e][o][l]??={chunks:[]};if(x?T.meta=fromJson(decodeBytes(y)):T.chunks.push(y),s?.onProgress(m/oneByteMax,e,T.meta),!b)return;let E=new Uint8Array(T.chunks.reduce((e,t)=>e+t.byteLength,0));if(T.chunks.reduce((e,t)=>(E.set(t,e),e+t.byteLength),0),delete h[e][o][l],S)s?s.onComplete(E,e,T.meta):(v[o]??=[]).push({payload:E,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}});else{let t=decodeBytes(E),n=C?fromJson(t):t;s?s.onComplete(n,e,T.meta):(v[o]??=[]).push({payload:n,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}})}},H=async()=>{await ie(``),await new Promise(e=>setTimeout(e,99)),entries(l).forEach(([e,t])=>{t.destroy(),L(e,mkErr(`room left`))}),E(),n()},[U,W]=z(internalNs(`ping`)),[G,ee]=z(internalNs(`pong`)),[te,K]=z(internalNs(`signal`)),[q,ne]=z(internalNs(`stream`)),[re,J]=z(internalNs(`track`)),[ie,ae]=z(internalNs(`leave`),{sendToPending:!0,receiveWhilePending:!0}),[oe,se]=z(internalNs(`hsdata`),{sendToPending:!0,receiveWhilePending:!0}),[ce,Y]=z(internalNs(`hsready`),{sendToPending:!0,receiveWhilePending:!0}),le=(e,t)=>{let n=d[e];!n||t&&n.peer!==t||n.isActive||!n.didLocalHandshakePass||!n.didReceiveRemoteReady||(n.isActive=!0,u[e]=n.peer,n.handshakeTimer=resetTimer(n.handshakeTimer),T.onPeerJoin(e))},ue=(e,t,n)=>{let a=d[e];if(!a||a.peer!==t)return;let s=toHandshakeErrorMessage(n);o?.(e,s),R(e,t,mkErr(s))},de=(e,t)=>{let n=d[e];!n||n.peer!==t||n.isActive||(n.didLocalHandshakePass=!0,ce(``,e).catch(n=>ue(e,t,mkErr(`failed sending handshake readiness: ${toErrorMessage(n,`unknown send failure`)}`))),le(e,t))},X=(e,t)=>{let n=d[e];if(!n||n.peer!==t)return;n.handshakeTimer=setTimeout(()=>ue(e,t,mkErr(`handshake timed out after ${s}ms`)),s);let o=async(t,n)=>{await oe(t,e,n)},l=()=>new Promise((n,a)=>{let o=d[e];if(!o||o.peer!==t){a(mkErr(`peer disconnected during handshake`));return}let s=o.pendingHandshakePayloads.shift();if(s){n(s);return}o.handshakeWaiters.push({resolve:n,reject:e=>a(e)})}),u=selfId<e;Promise.resolve(a?.(e,o,l,u)).then(()=>de(e,t)).catch(n=>ue(e,t,toError(n,`handshake failed`)))},fe=e=>e&&typeof e==`object`&&!Array.isArray(e)&&typeof e.k==`string`?{key:e.k,...typeof e.s==`string`?{streamId:e.s}:{},...typeof e.t==`string`?{trackId:e.t}:{},...Object.hasOwn(e,`m`)?{metadata:e.m}:{}}:null;return W((e,t)=>G(``,t)),ee((e,t)=>{let n=y[t];(n?.shift())?.resolve(),n&&!n.length&&delete y[t]}),K((e,t)=>{u[t]&&l[t]?.signal(e)}),ne((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteStreamByKey?.(n.key)??(n.streamId?a?.__trysteroGetRemoteStreamById?.(n.streamId):void 0);if(o){F(t,n.key,o,n.metadata);return}(b[t]??=[]).push(n)}),J((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteTrackByKey?.(n.key)??(n.trackId?a?.__trysteroGetRemoteTrackById?.(n.trackId):void 0);if(o){I(t,n.key,o.track,o.stream,n.metadata);return}(x[t]??=[]).push(n)}),ae((e,t)=>R(t,void 0,mkErr(`peer left room`))),se((e,t,n)=>{let a=d[t];if(!a||a.isActive)return;let o=n===void 0?{data:e}:{data:e,metadata:n},s=a.handshakeWaiters.shift();if(s){s.resolve(o);return}a.pendingHandshakePayloads.push(o)}),Y((e,t)=>{let n=d[t];!n||n.isActive||(n.didReceiveRemoteReady=!0,le(t))}),e((e,t)=>{let n=l[t];if(n){if(n===e)return;n.destroy(),L(t,mkErr(`peer replaced`))}l[t]=e,d[t]={peer:e,isActive:!1,didLocalHandshakePass:!1,didReceiveRemoteReady:!1,handshakeTimer:null,pendingHandshakePayloads:[],handshakeWaiters:[]},e.setHandlers({data:e=>V(t,e),stream:e=>{if(!u[t])return;let n=b[t]?.shift();n&&F(t,n.key,e,n.metadata)},track:(e,n)=>{if(!u[t])return;let a=x[t]?.shift();a&&I(t,a.key,e,n,a.metadata)},signal:e=>{u[t]&&te(e,t)},close:()=>R(t,e,mkErr(`peer disconnected`)),error:n=>{console.error(`${libName} peer error:`,n),R(t,e,n)}}),X(t,e)}),isBrowser&&(E=registerBeforeUnloadCleanup(()=>H().catch(noOp))),{makeAction:B,leave:H,ping:async e=>{if(!u[e])throw mkErr(`no active peer with id ${e}`);let t=Date.now();return await new Promise((t,n)=>{let a=y[e]??=[],o=()=>{let t=y[e];if(!t)return;let n=t.indexOf(s);n>-1&&t.splice(n,1),t.length||delete y[e]},s={resolve:()=>{o(),t()},reject:e=>{o(),n(e)}};a.push(s),U(``,e).catch(e=>s.reject(toError(e,`peer disconnected`)))}),Date.now()-t},getPeers:()=>fromEntries(entries(u).map(([e,t])=>[e,t.connection])),addStream:(e,t,n)=>O(t,j(e),n,q,t=>t.addStream(e),{s:e.id}),removeStream:(e,t)=>{D(t,(t,n)=>n.removeStream(e))},addTrack:(e,t,n,a)=>O(n,M(e),a,re,n=>n.addTrack(e,t),{s:t.id,t:e.id}),removeTrack:(e,t)=>{D(t,(t,n)=>n.removeTrack(e))},replaceTrack:(e,t,n,a)=>O(n,M(t),a,re,n=>n.replaceTrack(e,t),{t:e.id}),onPeerJoin:e=>{T.onPeerJoin=e,keys(u).forEach(t=>e(t))},onPeerLeave:e=>T.onPeerLeave=e,onPeerStream:e=>T.onPeerStream=e,onPeerTrack:e=>T.onPeerTrack=e}},roomFrameVersion=1,roomPresenceFrameVersion=2,wrapRoomFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(3+n.byteLength+t.byteLength);return a[0]=roomFrameVersion,a[1]=n.byteLength>>>8&255,a[2]=n.byteLength&255,a.set(n,3),a.set(t,3+n.byteLength),a},wrapRoomPresenceFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(4+n.byteLength);return a[0]=roomPresenceFrameVersion,a[1]=Number(t),a[2]=n.byteLength>>>8&255,a[3]=n.byteLength&255,a.set(n,4),a},unwrapFrame=e=>{let t=new Uint8Array(e);if(t.byteLength<3)return null;if(t[0]===roomFrameVersion){let e=(t[1]??0)<<8|(t[2]??0),n=3+e;return e<=0||t.byteLength<n?null:{type:`room`,roomToken:decodeBytes(t.subarray(3,n)),payload:t.subarray(n).slice().buffer}}if(t[0]!==roomPresenceFrameVersion||t.byteLength<4)return null;let n=(t[2]??0)<<8|(t[3]??0),a=4+n;return n<=0||t.byteLength<a?null:{type:`presence`,roomToken:decodeBytes(t.subarray(4,a)),isPresent:t[1]===1}},isPeerUnderlyingStale=e=>{let{connection:t,channel:n}=e;return e.isDead||t.connectionState===`closed`||t.connectionState===`failed`||t.iceConnectionState===`closed`||t.iceConnectionState===`failed`||n?.readyState===`closing`||n?.readyState===`closed`},getConnectedPeerHealth=e=>{if(isPeerUnderlyingStale(e))return`stale`;let{channel:t}=e;return!t||t.readyState!==`open`?`transient`:`live`},SharedPeerManager=class{byApp={};roomPresenceHandlers={};getMap(e){return this.byApp[e]??={}}get(e,t){return this.byApp[e]?.[t]}isPeerStale(e){return isPeerUnderlyingStale(e)}getHealth(e){return this.isPeerStale(e)?`stale`:`live`}setRoomPresenceHandler(e,t){return this.roomPresenceHandlers[e]=t,()=>{this.roomPresenceHandlers[e]===t&&delete this.roomPresenceHandlers[e]}}sendRoomPresence(e,t,n){e.isClosing||e.peer.isDead||e.peer.sendData(wrapRoomPresenceFrame(t,n))}clear(e,t,{destroyPeer:n}){let a=this.byApp[e],o=a?.[t];if(!o||o.isClosing)return;o.idleTimer=resetTimer(o.idleTimer),o.isClosing=!0,n&&!o.peer.isDead&&o.peer.destroy();let s=values(o.bindings);o.bindings={},o.bindingsByToken={},o.controlRoomId=null,delete a[t],s.forEach(e=>{e.handlers.close?.(),e.pendingData.length=0,e.pendingSendData.length=0,e.pendingTracks.length=0}),o.remoteStreamsByKey.clear(),o.remoteStreamsById.clear(),o.remoteTracksByKey.clear(),o.remoteTracksById.clear(),o.pendingDataByToken.clear(),o.remoteRoomTokens.clear(),keys(a).length===0&&delete this.byApp[e]}register(e,t,n,a){let o=this.getMap(e),s=o[t];if(s){if(s.idleTimer=resetTimer(s.idleTimer),s.peer===n)return s;this.clear(e,t,{destroyPeer:!0})}let l={appId:e,peerId:t,peer:n,bindings:{},bindingsByToken:{},pendingDataByToken:new Map,remoteRoomTokens:new Set,idleTimer:null,controlRoomId:null,streamOwners:new Map,trackOwners:new Map,remoteStreamsByKey:new Map,remoteStreamsById:new Map,remoteTracksByKey:new Map,remoteTracksById:new Map,idleMs:a,isClosing:!1};return n.setHandlers({data:e=>this.dispatchData(l,e),signal:e=>this.dispatchSignal(l,e),close:()=>this.clear(e,t,{destroyPeer:!1}),error:n=>{console.error(`${libName} peer error:`,n),this.clear(e,t,{destroyPeer:!1})},track:(e,t)=>this.dispatchTrack(l,e,t)}),o[t]=l,l}bind(e,t,n,{onDetach:a}){let o=n.bindings[e];if(o)return n.idleTimer=resetTimer(n.idleTimer),{proxy:o.proxy,isNew:!1};let s={roomId:e,roomToken:null,roomTokenPromise:t,handlers:{},pendingData:[],pendingSendData:[],pendingTracks:[],detach:noOp,proxy:{}},l=()=>{n.bindings[e]&&(this.pruneRoomOwnership(n,e),delete n.bindings[e],s.roomToken&&n.bindingsByToken[s.roomToken]===s&&delete n.bindingsByToken[s.roomToken],n.controlRoomId===e&&(n.controlRoomId=keys(n.bindings)[0]??null),a(),this.scheduleIdleTimer(n))},u={created:n.peer.created,get connection(){return n.peer.connection},get channel(){return n.peer.channel},get isDead(){return n.peer.isDead},getOffer:e=>n.peer.getOffer(e),signal:e=>n.peer.signal(e),sendData:e=>{if(!s.roomToken){s.pendingSendData.push(e);return}n.peer.sendData(wrapRoomFrame(s.roomToken,e))},destroy:()=>l(),setHandlers:e=>{let{signal:t,...n}=e;Object.assign(s.handlers,n),t&&(s.handlers.signal=t),this.flushBindingQueues(s)},offerPromise:n.peer.offerPromise,addStream:t=>{let a=n.streamOwners.get(t)??new Set,o=a.size===0;a.add(e),n.streamOwners.set(t,a),o&&n.peer.addStream(t)},removeStream:t=>{let a=n.streamOwners.get(t);a&&(a.delete(e),a.size===0&&(n.streamOwners.delete(t),n.peer.removeStream(t)))},addTrack:(t,a)=>{let o=n.trackOwners.get(t)??{stream:a,rooms:new Set},s=o.rooms.size===0;return o.stream=a,o.rooms.add(e),n.trackOwners.set(t,o),s?n.peer.addTrack(t,a):n.peer.connection.getSenders().find(e=>e.track===t)??n.peer.addTrack(t,a)},removeTrack:t=>{let a=n.trackOwners.get(t);a&&(a.rooms.delete(e),a.rooms.size===0&&(n.trackOwners.delete(t),n.peer.removeTrack(t)))},replaceTrack:(e,t)=>{let a=n.trackOwners.get(e);if(a){n.trackOwners.delete(e);let o=n.trackOwners.get(t)??{stream:a.stream,rooms:new Set};a.rooms.forEach(e=>o.rooms.add(e)),n.trackOwners.set(t,o)}return n.peer.replaceTrack(e,t)},__trysteroGetRemoteStreamByKey:e=>n.remoteStreamsByKey.get(e),__trysteroSetRemoteStreamByKey:(e,t)=>void n.remoteStreamsByKey.set(e,t),__trysteroGetRemoteStreamById:e=>n.remoteStreamsById.get(e),__trysteroSetRemoteStreamById:(e,t)=>void n.remoteStreamsById.set(e,t),__trysteroGetRemoteTrackByKey:e=>n.remoteTracksByKey.get(e),__trysteroSetRemoteTrackByKey:(e,t,a)=>void n.remoteTracksByKey.set(e,{track:t,stream:a}),__trysteroGetRemoteTrackById:e=>n.remoteTracksById.get(e),__trysteroSetRemoteTrackById:(e,t,a)=>void n.remoteTracksById.set(e,{track:t,stream:a})};return s.proxy=u,s.detach=l,n.bindings[e]=s,n.controlRoomId??=e,n.idleTimer=resetTimer(n.idleTimer),t.then(t=>{if(n.isClosing||n.bindings[e]!==s)return;s.roomToken=t,n.bindingsByToken[t]=s;let a=n.pendingDataByToken.get(t);a?.length&&(s.pendingData.push(...a),n.pendingDataByToken.delete(t)),s.pendingSendData.splice(0).forEach(e=>n.peer.sendData(wrapRoomFrame(t,e))),this.flushBindingQueues(s)}),{proxy:u,isNew:!0}}pruneRoomOwnership(e,t){e.streamOwners.forEach((n,a)=>{n.delete(t),n.size===0&&(e.streamOwners.delete(a),e.peer.removeStream(a))}),e.trackOwners.forEach((n,a)=>{n.rooms.delete(t),n.rooms.size===0&&(e.trackOwners.delete(a),e.peer.removeTrack(a))})}scheduleIdleTimer(e){e.isClosing||keys(e.bindings).length>0||(e.idleTimer=resetTimer(e.idleTimer),e.idleTimer=setTimeout(()=>{let t=this.byApp[e.appId]?.[e.peerId];!t||keys(t.bindings).length>0||this.clear(e.appId,e.peerId,{destroyPeer:!0})},e.idleMs))}getSignalBinding(e){if(e.controlRoomId){let t=e.bindings[e.controlRoomId];if(t?.handlers.signal)return t}let t=values(e.bindings).find(e=>!!e.handlers.signal);return t?(e.controlRoomId=t.roomId,t):null}flushBindingQueues(e){let{handlers:t}=e;t.data&&e.pendingData.length>0&&e.pendingData.splice(0).forEach(e=>t.data?.(e)),(t.track||t.stream)&&e.pendingTracks.length&&e.pendingTracks.splice(0).forEach(({track:e,stream:n})=>{t.track?.(e,n),t.stream?.(n)})}dispatchData(e,t){let n=unwrapFrame(t);if(!n)return;if(n.type===`presence`){n.isPresent?e.remoteRoomTokens.add(n.roomToken):e.remoteRoomTokens.delete(n.roomToken),this.roomPresenceHandlers[e.appId]?.(e.peerId,n.roomToken,n.isPresent);return}let a=e.bindingsByToken[n.roomToken];if(!a){let t=e.pendingDataByToken.get(n.roomToken)??[];t.push(n.payload),e.pendingDataByToken.set(n.roomToken,t);return}a.handlers.data?a.handlers.data(n.payload):a.pendingData.push(n.payload)}dispatchSignal(e,t){this.getSignalBinding(e)?.handlers.signal?.(t)}dispatchTrack(e,t,n){values(e.bindings).forEach(e=>{if(e.handlers.track||e.handlers.stream){e.handlers.track?.(t,n),e.handlers.stream?.(n);return}e.pendingTracks.push({track:t,stream:n})})}},offerPostAnswerTtlMs=23333,offerIdSize=12,disconnectedPeerGraceMs=7533,answeringTtlMs=23333,legacyCandidateKey=`__legacy__`,offerRelayPlaceholder=`offer-placeholder`,publishCipheredSignalingMessage=(e,t,n,a,o,s)=>{e.toCipher(t).then(t=>{e.isLeaving()||!s()||a(n,toJson(o(t.sdp)))})},makeState=()=>({status:`idle`,offerPeer:null,offerId:null,offerSdp:null,offerInitPromise:null,offerAnswered:!1,offerRelays:[],offerSignalRelays:[],offerSignalBacklog:[],offerRelayTimers:[],offerExpiryTimer:null,connectedPeer:null,connectedPeerUnhealthySinceMs:null,answeringExpiryTimer:null,answeringPeer:null,pendingCandidates:{}}),getState=(e,t)=>e[t]??=makeState(),updateStatus=e=>{e.connectedPeer?e.status=`connected`:e.answeringPeer?e.status=`answering`:e.offerPeer||e.offerRelays.some(Boolean)?e.status=`offering`:e.status=`idle`},clearAnswering=(e,t)=>{e.answeringPeer===t&&(e.answeringExpiryTimer=resetTimer(e.answeringExpiryTimer),e.answeringPeer=null,updateStatus(e))},clearConnectedPeer=(e,t,n)=>{e.connectedPeer&&(e.connectedPeer.isDead||e.connectedPeer.destroy(),e.connectedPeer=null,e.connectedPeerUnhealthySinceMs=null,updateStatus(e))},clearOfferRelay=(e,t)=>{e.offerRelayTimers[t]=resetTimer(e.offerRelayTimers[t]),e.offerRelays[t]&&(e.offerRelays[t]=void 0,updateStatus(e))},clearOfferRelayIfPlaceholder=(e,t)=>{e?.offerRelays[t]===offerRelayPlaceholder&&clearOfferRelay(e,t)},hasRemoteDescription=e=>{if(e.isDead||e.connection.connectionState===`closed`)return!0;try{return!!e.connection.remoteDescription}catch{return!0}},resetOfferState=(e,t)=>{let n=e.offerAnswered;e.offerExpiryTimer=resetTimer(e.offerExpiryTimer),e.offerInitPromise=null,e.offerRelays.forEach((t,n)=>clearOfferRelay(e,n)),e.offerRelays=[],e.offerSignalRelays=[],e.offerRelayTimers=[],e.offerSignalBacklog=[],e.offerPeer&&e.offerPeer!==e.connectedPeer&&(n||hasRemoteDescription(e.offerPeer)?e.offerPeer.isDead||e.offerPeer.destroy():t.recycle(e.offerPeer)),e.offerPeer=null,e.offerId=null,e.offerSdp=null,e.offerAnswered=!1,updateStatus(e)},scheduleAnsweringExpiry=(e,t,n,a)=>{resetTimer(t.answeringExpiryTimer),t.answeringExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.answeringPeer!==a||(a.destroy(),clearAnswering(t,a))},answeringTtlMs)},flushBufferedCandidates=async(e,t,n)=>{let a=n?[n,legacyCandidateKey]:[legacyCandidateKey];for(let n of a){let a=e.pendingCandidates[n];if(a?.length){delete e.pendingCandidates[n];for(let e of a)await t.signal(e)}}},scheduleOfferExpiry=(e,t,n,a=offerTtl)=>{resetTimer(t.offerExpiryTimer);let o=t.offerId;t.offerExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.offerId!==o||resetOfferState(t,e.offerPool)},a)},ensureOffer=(e,t,n,a)=>t.offerPeer&&t.offerId&&t.offerSdp?Promise.resolve({peer:t.offerPeer,offer:t.offerSdp,offerId:t.offerId}):(t.offerInitPromise||=(async()=>{let o=(await e.offerPool.checkout(1,!1,e.encryptOffer))[0];if(!o)throw mkErr(`failed to allocate offer peer`);let{peer:s,offer:l}=o;t.offerPeer=s,t.offerId=genId(offerIdSize),t.offerSdp=l,t.offerAnswered=!1,t.offerSignalBacklog=[],updateStatus(t);let u=()=>{t.offerPeer===s&&!t.connectedPeer&&resetOfferState(t,e.offerPool),e.disconnectPeer(s,n)};return s.setHandlers({connect:()=>e.connectPeer(s,n,a),signal:e=>{t.offerPeer===s&&(t.offerSignalBacklog.push(e),t.offerSignalRelays.forEach(t=>t?.(e)))},close:u,error:u}),scheduleOfferExpiry(e,t,n),{peer:s,offer:l,offerId:t.offerId}})().finally(()=>t.offerInitPromise=null),t.offerInitPromise),handleAnnouncement=async(e,t,n,a,o)=>{if(a){e.attachSharedPeerToRoom(n,a);return}let s=e.peerStates[n];if(!s||s.connectedPeer||s.answeringPeer||s.offerAnswered){clearOfferRelayIfPlaceholder(s,t);return}if(s.offerRelays[t]!==offerRelayPlaceholder)return;let[l,u]=await all([sha1(topicPath(e.rootTopicPlaintext,n)),ensureOffer(e,s,n,t)]);if(e.isLeaving())return;if(s.connectedPeer||s.answeringPeer||s.offerAnswered||s.offerRelays[t]!==offerRelayPlaceholder){clearOfferRelayIfPlaceholder(s,t);return}s.offerRelayTimers[t]=resetTimer(s.offerRelayTimers[t]),s.offerRelays[t]=!0,updateStatus(s),s.offerRelayTimers[t]=setTimeout(()=>prunePendingOffer(e,n,t),(e.announceIntervals[t]??e.announceIntervalMs)*.9);let d=!1;s.offerSignalRelays[t]=t=>{d&&(e.isLeaving()||s.connectedPeer||s.offerPeer!==u.peer||s.offerId!==u.offerId||t.type!==`candidate`||publishCipheredSignalingMessage(e,t,l,o,e=>({peerId:selfId,offerId:u.offerId,candidate:e}),()=>!s.connectedPeer&&s.offerPeer===u.peer&&s.offerId===u.offerId))},o(l,toJson({peerId:selfId,offerId:u.offerId,offer:u.offer})),d=!0,s.offerSignalBacklog.forEach(e=>s.offerSignalRelays[t]?.(e))},handleOffer=async(e,t,n,a,o,s,l)=>{let u=getState(e.peerStates,n);if(u.answeringPeer||u.offerAnswered)return;let d=!!(u.offerPeer||u.offerRelays.some(Boolean));if((d||s)&&selfId<n)return;d&&resetOfferState(u,e.offerPool);let f=e.initPeer(!1,e.config);u.answeringPeer=f,scheduleAnsweringExpiry(e,u,n,f),updateStatus(u);let m=()=>{clearAnswering(u,f),e.disconnectPeer(f,n)};f.setHandlers({connect:()=>e.connectPeer(f,n,t),close:m,error:m});let h;try{h=await e.toPlain({type:`offer`,sdp:a})}catch{clearAnswering(u,f),e.onJoinError?.({error:`incorrect room password when decrypting offer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(f.isDead){clearAnswering(u,f);return}let v=await sha1(topicPath(e.rootTopicPlaintext,n));e.isLeaving()||(f.setHandlers({signal:t=>{e.isLeaving()||u.answeringPeer!==f||f.isDead||t.type!==`answer`&&t.type!==`candidate`||publishCipheredSignalingMessage(e,t,v,l,e=>{let n={peerId:selfId};return t.type===`answer`?n.answer=e:n.candidate=e,o&&(n.offerId=o),n},()=>u.answeringPeer===f&&!f.isDead)}}),await f.signal(h),await flushBufferedCandidates(u,f,o))},handleCandidate=async(e,t,n,a,o)=>{let s;try{s=await e.toPlain({type:candidateType,sdp:n})}catch{return}let l=getState(e.peerStates,t),u=a&&l?.offerPeer&&l.offerId===a?l.offerPeer:null,d=l?.answeringPeer??null,f=!a&&l?.offerPeer?l.offerPeer:null,m=o&&!o.isDead?o:u??d??f;if(!m||m.isDead){let e=a??legacyCandidateKey;(l.pendingCandidates[e]??=[]).push(s);return}m.signal(s)},handleAnswer=async(e,t,n,a,o,s)=>{let l;try{l=await e.toPlain({type:`answer`,sdp:a})}catch{e.onJoinError?.({error:`incorrect room password when decrypting answer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(s)e.offerPool.claimLeased(s),s.setHandlers({connect:()=>e.connectPeer(s,n,t),close:()=>e.disconnectPeer(s,n)}),s.signal(l);else{let t=e.peerStates[n];if(!t||!t.offerPeer||t.offerAnswered||o&&t.offerId&&o!==t.offerId||t.offerPeer.isDead)return;t.offerAnswered=!0,scheduleOfferExpiry(e,t,n,offerPostAnswerTtlMs),t.offerPeer.signal(l)}},prunePendingOffer=(e,t,n)=>{let a=e.peerStates[t];!a||a.connectedPeer||a.offerRelays[n]&&clearOfferRelay(a,n)},createSignalHandler=e=>t=>async(n,a,o)=>{if(e.isLeaving())return;let s=typeof a==`string`?fromJson(a):a,l=typeof s.peerId==`string`?s.peerId:``,u=s.offer,d=s.answer,f=s.candidate,m=s.offerId,h=s.peer,v=s.hasOutgoingOffer===!0;if(l===selfId)return;let y=e.peerStates[l],b=y?.connectedPeer;if(b&&y){let e=getConnectedPeerHealth(b);if(e===`live`){y.connectedPeerUnhealthySinceMs=null;return}if(e===`stale`)clearConnectedPeer(y,l,`message-from-stale-peer`);else{let e=Date.now(),t=y.connectedPeerUnhealthySinceMs??e;if(y.connectedPeerUnhealthySinceMs=t,e-t<disconnectedPeerGraceMs)return;clearConnectedPeer(y,l,`message-from-prolonged-disconnect`)}}let x=e.sharedPeers.get(e.appId,l);x&&e.sharedPeers.getHealth(x.peer)===`stale`&&(e.sharedPeers.clear(e.appId,l,{destroyPeer:!0}),x=void 0);let S=!!(l&&!u&&!d&&!f),[C,T]=await all([e.rootTopicP,e.selfTopicP]);if(!e.isLeaving()&&!(n!==C&&n!==T)){if(S&&!x){let n=getState(e.peerStates,l),a=selfId<l;if(n.answeringPeer||n.connectedPeer||n.offerAnswered)return;if(!a&&!n.offerPeer){let t=await sha1(topicPath(e.rootTopicPlaintext,l));!e.isLeaving()&&!n.connectedPeer&&o(t,toJson({peerId:selfId}));return}if(n.offerRelays[t])return;n.offerRelays[t]=offerRelayPlaceholder,updateStatus(n)}if(x&&(u||d||f)){if(x.bindings[e.roomId])return;e.attachSharedPeerToRoom(l,x);return}if(S)return handleAnnouncement(e,t,l,x,o);if(u)return handleOffer(e,t,l,u,m,v,o);if(f)return handleCandidate(e,l,f,m,h);if(d)return handleAnswer(e,t,l,d,m,h)}},announceIntervalMs=5333,announceWarmupIntervalsMs=[233,533,1333],sharedPeerIdleMsDefault=123333,strategy_default=({init:e,subscribe:t,announce:n})=>{let a={},o={},s={},l={},u=new SharedPeerManager,d=()=>values(a).some(e=>keys(e).length>0),f=e=>o[e]??={},m=e=>s[e]??={},h=(e,t,n)=>{u.getHealth(e.peer)===`live`&&u.sendRoomPresence(e,t,n)},v=(e,t)=>{entries(o[e]??{}).forEach(([n,a])=>{let{roomToken:s,roomTokenPromise:l}=a;if(s){h(t,s,!0);return}l.then(s=>{o[e]?.[n]===a&&a.roomToken===s&&(u.get(e,t.peerId)!==t||t.isClosing||h(t,s,!0))})})},y=(e,t,n)=>values(u.getMap(e)).forEach(e=>h(e,t,n)),b=e=>{l[e]||(l[e]=u.setRoomPresenceHandler(e,(t,n,a)=>{if(!a)return;let l=u.get(e,t),d=s[e]?.[n];!l||!d||o[e]?.[d]?.attachSharedPeerToRoom(t,l)}))},x=e=>{a[e]&&keys(a[e]).length>0||(l[e]?.(),delete l[e],delete o[e],delete s[e])},S=!1,C=[],T=null,E=noOp;return(l,h,D)=>{if(!l)throw mkErr(`requires a config map as the first argument`);if(D&&typeof D!=`object`)throw mkErr(`third argument must be a callbacks object`);let{appId:O}=l,k=D?.onJoinError,j=D?.onPeerHandshake,M=D?.handshakeTimeoutMs;if(!O)throw mkErr(`config map is missing appId field`);if(!h)throw mkErr(`roomId argument required`);if(M!==void 0&&(!Number.isFinite(M)||M<=0))throw mkErr(`handshakeTimeoutMs must be a positive number`);if(a[O]?.[h])return a[O][h];b(O);let N=topicPath(libName,O,h),F=sha1(N),I=sha1(topicPath(N,selfId)),L=genKey(l.password??``,O,h),R=deriveRoomNamespace(O,h),z=l._test_only_sharedPeerIdleMs??sharedPeerIdleMsDefault,B=!1,V=e=>async t=>({type:t.type,sdp:await e(L,t.sdp)}),H=V(decrypt),U=V(encrypt),W=u.getMap(O);T||=new OfferPool(()=>peer_default(!0,l));let G=T,ee=async e=>{let t=await e.getOffer(Date.now()-e.created>offerTtl);if(!t||t.type!==`offer`)throw mkErr(`failed to get offer for peer`);return(await U(t)).sdp},te=(e,t)=>{let n=getState(K.peerStates,e);n.answeringExpiryTimer=resetTimer(n.answeringExpiryTimer),n.answeringPeer=null;let{proxy:a,isNew:o}=u.bind(h,R,t,{onDetach:()=>{let n=K.peerStates[e];n?.connectedPeer===t.peer&&(n.connectedPeer=null,n.connectedPeerUnhealthySinceMs=null,updateStatus(n))}});n.connectedPeer=t.peer,n.connectedPeerUnhealthySinceMs=null,updateStatus(n),o&&ie(a,e),resetOfferState(n,G)},K={appId:O,roomId:h,config:l,peerStates:{},rootTopicPlaintext:N,rootTopicP:F,selfTopicP:I,toPlain:H,toCipher:U,isLeaving:()=>B,onJoinError:k,sharedPeers:u,offerPool:G,encryptOffer:ee,initPeer:peer_default,connectPeer:(e,t,n)=>{if(B){e.destroy();return}let a=getState(K.peerStates,t);if(a.connectedPeer){let n=W[t];if(n&&a.connectedPeer===n.peer&&n.bindings[h])return;a.connectedPeer!==e&&!e.isDead&&e.destroy();return}let o=W[t];if(o&&u.getHealth(o.peer)===`stale`&&(u.clear(O,t,{destroyPeer:!0}),o=void 0),o&&o.peer!==e){e.isDead||e.destroy(),te(t,o);return}let s=!o;o||=u.register(O,t,e,z),te(t,o),s&&v(O,o)},disconnectPeer:(e,t)=>{if(B)return;let n=K.peerStates[t];n?.connectedPeer===e&&clearConnectedPeer(n,t,`close-event`)},attachSharedPeerToRoom:te,announceIntervals:[],announceIntervalMs},q=createSignalHandler(K);if(!S){let t=e(l);G.warmup(),C=(Array.isArray(t)?t:[t]).map(e=>Promise.resolve(e)),S=!0,E=l.relayConfig?.manualReconnection?noOp:watchOnline()}K.announceIntervals=C.map(()=>announceIntervalMs);let ne=C.map(()=>0),re=[],J=C.map(async(e,n)=>t(await e,await F,await I,q(n),e=>G.getOffers(e,ee)));all([F,I]).then(([e,t])=>{if(B)return;let a=async(o,s)=>{if(B)return;let l=await n(o,e,t);if(B)return;typeof l==`number`&&(K.announceIntervals[s]=l);let u=ne[s]??0;ne[s]=u+1;let d=K.announceIntervals[s]??announceIntervalMs,f=announceWarmupIntervalsMs[u];re[s]=setTimeout(()=>{a(o,s)},typeof f==`number`?Math.min(d,f):d)};J.forEach(async(e,t)=>{if(await e,B)return;let n=await C[t];n&&!B&&a(n,t)})});let ie=noOp,{compose:ae}=createPasswordHandshake(l.password??``,O,h),oe=ae(j),se={...oe?{onPeerHandshake:oe}:{},...M===void 0?{}:{handshakeTimeoutMs:M},onHandshakeError:(e,t)=>k?.({error:t.replace(/^handshake failed: /,``),appId:O,peerId:e,roomId:h})};a[O]??={};let ce=f(O),Y=room_default(e=>ie=e,e=>{if(B)return;let t=K.peerStates[e];t?.connectedPeer&&(t.connectedPeer=null,updateStatus(t))},()=>{B=!0,ie=noOp;let e=o[O]?.[h];e?.roomToken&&(y(O,e.roomToken,!1),delete s[O]?.[e.roomToken],s[O]&&!keys(s[O]).length&&delete s[O]),o[O]&&(delete o[O][h],keys(o[O]).length||delete o[O]),entries(K.peerStates).forEach(([e,t])=>{if(t.answeringExpiryTimer=resetTimer(t.answeringExpiryTimer),t.connectedPeer&&!t.connectedPeer.isDead){let n=W[e];(!n||n.peer!==t.connectedPeer)&&t.connectedPeer.destroy()}t.answeringPeer&&!t.answeringPeer.isDead&&t.answeringPeer.destroy(),resetOfferState(t,G),t.connectedPeer=null,t.answeringPeer=null,updateStatus(t)}),a[O]&&(delete a[O][h],keys(a[O]).length===0&&delete a[O]),re.forEach(resetTimer),J.forEach(async e=>{(await e)()}),!d()&&(S=!1,G.destroy(),T=null,E(),x(O))},se),le={roomToken:null,roomTokenPromise:R,attachSharedPeerToRoom:te};return ce[h]=le,R.then(e=>{B||o[O]?.[h]!==le||(le.roomToken=e,m(O)[e]=h,values(W).forEach(t=>{t.remoteRoomTokens.has(e)&&te(t.peerId,t)}),y(O,e,!0))}),a[O][h]=Y}},relayManager=createRelayManager(e=>e.socket),topicToInfoHash={},infoHashToTopic={},announceIntervals=relayManager.scoped(),announceFns=relayManager.scoped(),subscriptionTokens=relayManager.scoped(),trackerAnnounceMs={},handledSignals={},msgHandlers=relayManager.scoped(),roomOutstandingOffers={},roomOfferGenerationPromises={},roomSubscriberCounts={},trackerAction=`announce`,hashLimit=20,offerPoolSize=3,defaultAnnounceMs=1e4,maxAnnounceMs=2e4,offerRetentionMs=12e4,signalDedupeWindowMs=4e3,defaultRedundancy=3,getInfoHash=async e=>{if(topicToInfoHash[e])return topicToInfoHash[e];let t=(await sha1(e)).slice(0,hashLimit);return topicToInfoHash[e]=t,infoHashToTopic[t]=e,t},send=async(e,t,n)=>e.send(toJson({action:trackerAction,info_hash:await getInfoHash(t),peer_id:selfId,...n})),warn=(e,t,n=!1)=>console.warn(`${libName}: torrent tracker ${n?`failure`:`warning`} from ${e} - ${t}`),getRoomOutstandingOffers=e=>roomOutstandingOffers[e]??={},deleteRoomOfferBookkeeping=e=>{delete roomOutstandingOffers[e],delete roomOfferGenerationPromises[e]},claimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];if(a)return delete n[t],a.claim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e),a},reclaimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];a&&(delete n[t],a.reclaim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e))},reclaimAllOutstandingOffers=e=>{keys(getRoomOutstandingOffers(e)).forEach(t=>reclaimOutstandingOffer(e,t)),deleteRoomOfferBookkeeping(e)},pruneOutstandingOffers=e=>{let t=Date.now();entries(getRoomOutstandingOffers(e)).forEach(([n,a])=>{t-a.createdAt>offerRetentionMs&&reclaimOutstandingOffer(e,n)})},ensureOutstandingOffers=async(e,t)=>{for(;roomOfferGenerationPromises[e];)await roomOfferGenerationPromises[e];let n=(async()=>{pruneOutstandingOffers(e);let n=getRoomOutstandingOffers(e),a=keys(n).length,o=Math.max(0,offerPoolSize-a);o>0&&(await t(o)).forEach(e=>{n[genId(hashLimit)]={...e,createdAt:Date.now()}})})().finally(()=>{roomOfferGenerationPromises[e]===n&&delete roomOfferGenerationPromises[e]});return roomOfferGenerationPromises[e]=n,await n,getRoomOutstandingOffers(e)},joinRoomStrategy=strategy_default({init:e=>getRelays(e,defaultRelayUrls,defaultRedundancy).map(e=>{let t=relayManager.register(e,makeSocket(e,n=>{let a=fromJson(n),o=a[`failure reason`],s=a[`warning message`],{interval:l}=a,u=a.info_hash?infoHashToTopic[a.info_hash]:void 0;if(o){warn(t.url,o,!0);return}if(s&&warn(t.url,s),l&&l*1e3>(trackerAnnounceMs[t.url]??defaultAnnounceMs)&&u&&announceFns.forKey(e)[u]){let n=Math.min(l*1e3,maxAnnounceMs),a=announceIntervals.forKey(e),o=announceFns.forKey(e);a[u]&&clearInterval(a[u]),trackerAnnounceMs[t.url]=n;let s=o[u];s&&(a[u]=setInterval(()=>{s()},n))}if((a.offer||a.answer)&&u&&a.offer_id){if(a.peer_id===selfId)return;let t=`${u}:${a.offer?`offer`:`answer`}:${a.offer_id}:${a.peer_id??``}`,n=Date.now(),o=handledSignals[t];if(typeof o==`number`&&n-o<signalDedupeWindowMs)return;handledSignals[t]=n,entries(handledSignals).forEach(([e,t])=>{n-t>signalDedupeWindowMs*6&&delete handledSignals[e]}),msgHandlers.forKey(e)[u]?.(a)}}));return t.ready}),subscribe:(e,t,n,a,o)=>{let s=msgHandlers.forRelay(e),l=announceFns.forRelay(e),u=announceIntervals.forRelay(e),d=subscriptionTokens.forRelay(e),f=Symbol(t);d[t]=f,roomSubscriberCounts[t]=(roomSubscriberCounts[t]??0)+1;let m=n=>{if(n.offer&&n.peer_id&&n.offer_id)a(t,{offer:n.offer.sdp,peerId:n.peer_id,hasOutgoingOffer:keys(getRoomOutstandingOffers(t)).length>0},(a,o)=>void send(e,t,{answer:{type:`answer`,sdp:fromJson(o).answer},offer_id:n.offer_id,to_peer_id:n.peer_id}));else if(n.answer&&n.offer_id&&n.peer_id){let e=claimOutstandingOffer(t,n.offer_id);e&&a(t,{answer:n.answer.sdp,peerId:n.peer_id,peer:e.peer},()=>{})}};s[t]=m;let h=async()=>{d[t]===f&&send(e,t,{numwant:offerPoolSize,offers:entries(await ensureOutstandingOffers(t,o)).map(([e,{offer:t}])=>({offer_id:e,offer:{type:`offer`,sdp:t}}))})};return trackerAnnounceMs[e.url]=defaultAnnounceMs,l[t]=h,u[t]=setInterval(h,trackerAnnounceMs[e.url]),h(),()=>{if(roomSubscriberCounts[t]=Math.max(0,(roomSubscriberCounts[t]??1)-1),roomSubscriberCounts[t]||delete roomSubscriberCounts[t],d[t]!==f){roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t);return}let e=u[t];e&&(clearInterval(e),delete u[t]),s[t]===m&&delete s[t],l[t]===h&&delete l[t],delete d[t],roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t)}},announce:e=>trackerAnnounceMs[e.url]}),joinRoom=(e,t,n)=>joinRoomStrategy({...e,trickleIce:e.trickleIce??!1},t,n),getRelaySockets=relayManager.getSockets,defaultRelayUrls=[`tracker.webtorrent.dev`,`tracker.openwebtorrent.com`,`tracker.btorrent.xyz`,`tracker.files.fm:7073/announce`].map(e=>`wss://`+e),require_lodash_throttle=__commonJSMin(((e,t)=>{var n=`Expected a function`,a=NaN,o=`[object Symbol]`,s=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,f=parseInt,m={}.Object===Object&&{},h=typeof self==`object`&&self&&self.Object===Object&&self,v=m||h||Function(`return this`)(),y=Object.prototype.toString,b=Math.max,x=Math.min,S=function(){return v.Date.now()};function C(e,t,a){var o,s,l,u,d,f,m=0,h=!1,v=!1,y=!0;if(typeof e!=`function`)throw TypeError(n);t=k(t)||0,E(a)&&(h=!!a.leading,v=`maxWait`in a,l=v?b(k(a.maxWait)||0,t):l,y=`trailing`in a?!!a.trailing:y);function C(t){var n=o,a=s;return o=s=void 0,m=t,u=e.apply(a,n),u}function T(e){return m=e,d=setTimeout(j,t),h?C(e):u}function D(e){var n=e-f,a=e-m,o=t-n;return v?x(o,l-a):o}function O(e){var n=e-f,a=e-m;return f===void 0||n>=t||n<0||v&&a>=l}function j(){var e=S();if(O(e))return M(e);d=setTimeout(j,D(e))}function M(e){return d=void 0,y&&o?C(e):(o=s=void 0,u)}function N(){d!==void 0&&clearTimeout(d),m=0,o=f=s=d=void 0}function F(){return d===void 0?u:M(S())}function I(){var e=S(),n=O(e);if(o=arguments,s=this,f=e,n){if(d===void 0)return T(f);if(v)return d=setTimeout(j,t),C(f)}return d===void 0&&(d=setTimeout(j,t)),u}return I.cancel=N,I.flush=F,I}function T(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(n);return E(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),C(e,t,{leading:o,maxWait:t,trailing:s})}function E(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function D(e){return!!e&&typeof e==`object`}function O(e){return typeof e==`symbol`||D(e)&&y.call(e)==`[object Symbol]`}function k(e){if(typeof e==`number`)return e;if(O(e))return a;if(E(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=E(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(s,``);var n=u.test(e);return n||d.test(e)?f(e.slice(2),n?2:8):l.test(e)?a:+e}t.exports=T})),import_lodash_throttle=__toESM(require_lodash_throttle()),endpoints={getMarketData:`https://farmhand.vercel.app/api/get-market-data`,postDayResults:`https://farmhand.vercel.app/api/post-day-results`},features=Object.keys({BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_API_ROOT:`https://farmhand.vercel.app/`,VITE_FARMHAND_PACKAGE_VERSION:`1.23.0`,VITE_NAME:`@jeremyckahn/farmhand`,VITE_TURN_CREDENTIAL:``,VITE_TURN_USERNAME:``}).reduce((e,t)=>{let n=t.match(/VITE_ENABLE_(.*)/);return n&&(e[n[1]]=!0),e},{}),searchParams=new URLSearchParams(import_window.default.location?.search);for(let e of searchParams.keys()){let t=e.match(/enable_(.*)/);t&&(features[t[1]]=!0)}var rtcConfig={iceServers:[{urls:`stun:stun.relay.metered.ca:80`}]},handlePeerMetadataRequest=(e,t,n)=>{e.updatePeer(e,t,n)},handleCowTradeRequest=async(e,{cowOffered:t,cowRequested:n},a)=>{let o=!1;e.setState(e=>{let{allowCustomPeerCowNames:s,cowIdOfferedForTrade:l,cowsTraded:u,cowInventory:d,playerId:f,isAwaitingCowTradeRequest:m,peers:h,sendCowAccept:v,sendCowReject:y}=e;if(!v||!y)return console.error(`Peer connection not set up correctly`),null;let b=d.find(({id:e})=>e===l);if(m||n.id!==l||!b)return y({reason:cowTradeRejectionReason.REQUESTED_COW_UNAVAILABLE},a),null;let x={...t,timesTraded:t.originalOwnerId===f?t.timesTraded:t.timesTraded+1},[,S]=Object.entries(h).find(([,e])=>e?.playerId===x.ownerId)??[];return S?(e=changeCowAutomaticHugState(e,b,!1),e=removeCowFromInventory(e,b),e=addCowToInventory(e,{...x,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,b,t,f,s),`success`),v({...b,isUsingHuggingMachine:!1},a),o=!0,{...e,cowIdOfferedForTrade:x.id,cowsTraded:x.originalOwnerId===f?u:u+1,isAwaitingCowTradeRequest:!0,selectedCowId:x.id,peers:{...h,[a]:{...S,cowOfferedForTrade:{...b,ownerId:S.playerId}}}}):(console.error(`No data for peer ${x.ownerId}`),null)},async()=>{o&&(await sleep(750),await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`),e.setState(()=>({isAwaitingCowTradeRequest:!1})))})},handleCowTradeRequestAccept=(e,t,n)=>{let a=!1;e.setState(e=>{let{allowCustomPeerCowNames:o,cowIdOfferedForTrade:s,cowInventory:l,cowsTraded:u,cowTradeTimeoutId:d,playerId:f,peers:m}=e,h=l.find(({id:e})=>e===s);if(!h)return console.error(`handleCowTradeRequestAccept: cow with ID ${s} is no longer available`),e=showNotification(e,UNKNOWN_COW_TRADE_FAILURE,`error`),{...e,isAwaitingCowTradeRequest:!1};let[,v]=Object.entries(m).find(([,e])=>{let{playerId:n}=e;return n===t.ownerId})||[],y=t.originalOwnerId===f,b={...t,timesTraded:y?t.timesTraded:t.timesTraded+1};return e=removeCowFromInventory(e,h),e=addCowToInventory(e,{...b,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,h,b,f,o),`success`),y||(e=addExperience(e,EXPERIENCE_VALUES.COW_TRADED)),d&&clearTimeout(d),a=!0,{...e,cowsTraded:b.originalOwnerId===f?u:u+1,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1,cowIdOfferedForTrade:b.id,selectedCowId:b.id,peers:{...m,[n]:{...v,cowOfferedForTrade:{...h,ownerId:v.playerId}}}}},async()=>{a&&(await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`))})},handleCowTradeRequestReject=(e,{reason:t})=>{let{cowTradeTimeoutId:n}=e.state;typeof n==`number`&&clearTimeout(n),e.setState({cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1}),e.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`)},relayRedundancy=4,useFarmhandNetwork=(e,t,n,a,o,s,l,u)=>{let{hasBooted:d,isOnline:f,room:m,redirect:h,heartbeatTimeoutId:v,peerRoom:y,sendPeerMetadata:b}=e,x=(0,import_react$24.useCallback)(e=>(0,import_lodash_throttle.default)((...n)=>{e(...n),t(e=>({...e,pendingPeerMessages:[]}))},5e3,{trailing:!0}),[t]),S=(0,import_react$24.useCallback)(()=>{typeof a.current?.state?.cowTradeTimeoutId==`number`&&(n.current.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`),console.error(`Cow trade request timed out`),t(e=>({...e,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1})))},[t,n,a]),C=(0,import_react$24.useCallback)(o=>{let{cowIdOfferedForTrade:s,cowInventory:l,peers:u,sendCowTradeRequest:d}=a.current?.state??e;if(!d)return;let{ownerId:f}=o,[m]=Object.entries(u).find(([,e])=>e?.playerId===f)??[];if(!m){console.error(`Owner not found for cow ${JSON.stringify(o)}`);return}if(l.find(({id:e})=>e===o.id)){console.error(`Cow ID ${o.id} is already in inventory`),n.current.showNotification(COW_ALREADY_OWNED,`error`);return}let h=l.find(({id:e})=>e===s);if(!h){console.error(`Cow ID ${s} not found`);return}let v=setTimeout(S,COW_TRADE_TIMEOUT);d({cowOffered:{...h,isUsingHuggingMachine:!1},cowRequested:o},m),t(e=>({...e,cowTradeTimeoutId:v,isAwaitingCowTradeRequest:!0}))},[t,S,n,a]),T=(0,import_react$24.useCallback)(()=>{t(e=>(clearTimeout(e.heartbeatTimeoutId??-1),e));let e=import_window.default.setTimeout(()=>{t(e=>({...e,money:moneyTotal(e.money,e.activePlayers??0)})),T()},HEARTBEAT_INTERVAL_PERIOD);t(t=>({...t,heartbeatTimeoutId:e}))},[t]),E=(0,import_react$24.useCallback)(async()=>{let{isOnline:e,priceCrashes:o,priceSurges:s,room:l,playerId:u,peerRoom:d}=a.current.state;if(e){n.current.showNotification(CONNECTING_TO_SERVER,`info`);try{t(e=>({...e,isAwaitingNetworkRequest:!0,peers:{}})),d?.leave();let{valueAdjustments:e}=await getData(endpoints.getMarketData,{farmId:u,room:l});T(),t(t=>({...t,activePlayers:1,peerRoom:joinRoom({appId:`@jeremyckahn/farmhand`,rtcConfig},l),valueAdjustments:FarmhandService.applyPriceEvents(e,o,s)})),n.current.showNotification(CONNECTED_TO_ROOM(``,l),`success`)}catch(e){n.current.showNotification(SERVER_ERROR,`error`),console.error(e),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``}))}t(e=>({...e,isAwaitingNetworkRequest:!1,isAwaitingCowTradeRequest:!1}))}},[T,n,a,t]),D=(0,import_react$24.useCallback)((e,t)=>{n.current.prependPendingPeerMessage(e,t)},[n]);return(0,import_react$24.useEffect)(()=>{if(!d||!o)return;let e=decodeURIComponent(s),S=l.startsWith(`/online`),C=!!h&&h!==o.redirect;if(!C&&(S!==f||e!==m)?t(t=>({...t,isOnline:S,redirect:``,room:e})):h&&!C&&S===f&&e===m&&t(e=>({...e,redirect:``})),(f!==o.isOnline||m!==o.room)&&(f&&E(),!f&&typeof v==`number`&&(clearTimeout(v),t(e=>({...e,activePlayers:null,heartbeatTimeoutId:null,peerRoom:null})))),f===!1&&o.isOnline===!0&&n.current.showNotification(DISCONNECTED_FROM_SERVER,`info`),y!==o.peerRoom)if(y){y.onPeerJoin(e=>n.current.addPeer(e)),y.onPeerLeave(e=>n.current.removePeer(e));let[e,o]=y.makeAction(`peerMetadata`);o((...e)=>handlePeerMetadataRequest(a.current,e[0],e[1]));let[s,l]=y.makeAction(`cowTrade`);l((...e)=>handleCowTradeRequest(a.current,e[0],e[1]));let[d,f]=y.makeAction(`cowAccept`);f((...e)=>handleCowTradeRequestAccept(a.current,e[0],e[1]));let[m,h]=y.makeAction(`cowReject`);h((...e)=>handleCowTradeRequestReject(a.current,e[0])),t(t=>({...t,getCowAccept:f,getCowReject:h,getCowTradeRequest:l,getPeerMetadata:o,pendingPeerMessages:[],sendCowAccept:d,sendCowReject:m,sendCowTradeRequest:s,sendPeerMetadata:x(e)})),e(u)}else o.peerRoom?.leave(),t(e=>({...e,peers:{},sendPeerMetadata:null}));b?.(u)},[d,f,m,h,v,y,b,o,s,l,E,x,u,n,a,t]),{syncToRoom:E,scheduleHeartbeat:T,wrapSendPeerMetadata:x,tradeForPeerCow:C,handleCowTradeTimeout:S,messagePeers:D}},computeMarketPositions=(e,t,n)=>n.reduce((n,{id:a,quantity:o})=>{let s=e[a]||0,l=t[a]||0;return itemsMap[a].doesPriceFluctuate&&s!==o&&(o<s||o<l?n[a]=-1:(o>s||o>l)&&(n[a]=1)),n},{}),useFarmhandDayAdvancement=(e,t,n,a,o)=>{let s=(0,import_react$24.useCallback)(async()=>{await n.localforage?.clear(),a.current.showNotification(DATA_DELETED)},[n.localforage,a]),l=(0,import_react$24.useCallback)((e,t={})=>n.localforage?.setItem(`state`,reduceByPersistedKeys({...e,...t})),[n.localforage]),u=(0,import_react$24.useCallback)(async()=>{let n=[],a=null;t(e=>({...e,isAwaitingNetworkRequest:!0}));let o;if(e.current.isOnline){let{inventory:s,room:l,todaysPurchases:u,todaysStartingInventory:d}=e.current,f=computeMarketPositions(d,u,s);try{o=(await postData(endpoints.postDayResults,{positions:f,room:l})).valueAdjustments,Object.keys(f).length&&(n.push({message:POSITIONS_POSTED_NOTIFICATION(``,`You`,f),severity:`info`}),a=POSITIONS_POSTED_NOTIFICATION(``,``,f))}catch(e){n.push({message:SERVER_ERROR,severity:`error`}),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``,isAwaitingNetworkRequest:!1})),console.error(e)}}return{broadcastedPositionMessage:a,serverMessages:n,serverValueAdjustments:o}},[e,t]);return{clearPersistedData:s,persistState:l,updateServerForNextDay:u,incrementDay:(0,import_react$24.useCallback)(async(n=!1)=>{if(e.current.isWaitingForDayToCompleteIncrementing&&!n)return;n||t(e=>({...e,isWaitingForDayToCompleteIncrementing:!0}));let{broadcastedPositionMessage:a,serverMessages:s,serverValueAdjustments:l}=await u();t(e=>{let t=computeStateForNextDay(e,n),u=[...s,...t.newDayNotifications];return t.valueAdjustments=FarmhandService.applyPriceEvents(l??t.valueAdjustments,t.priceCrashes,t.priceSurges),t.isAwaitingNetworkRequest=!1,t.isWaitingForDayToCompleteIncrementing=!0,t.newDayNotifications=[],t.todaysNotifications=[],o.current={state:t,pendingNotifications:u,broadcastedPositionMessage:a,isFirstDay:n},t})},[e,u,t,o])}},useFarmhandNotifications=(e,t)=>({showInventoryFullNotifications:(0,import_react$24.useCallback)((e,n)=>{inventorySpaceRemaining(e)>0&&inventorySpaceRemaining(n)<=0&&t.current.showNotification(INVENTORY_FULL_NOTIFICATION,`warning`)},[t]),showRecipeLearnedNotifications:(0,import_react$24.useCallback)(({learnedRecipes:n})=>{let a=[];Object.keys(e.learnedRecipes).forEach(e=>{n.hasOwnProperty(e)||a.push(recipesMap[e])}),a.length>1?t.current.showNotification(RECIPES_LEARNED(``,a)):a.length===1&&t.current.showNotification(RECIPE_LEARNED(``,a[0]))},[e.learnedRecipes,t])}),FarmhandReducers=class e extends import_react$24.Component{addCowToInventory(...e){throw Error(`Unimplemented`)}addPeer(...e){throw Error(`Unimplemented`)}adjustLoan(...e){throw Error(`Unimplemented`)}changeCowAutomaticHugState(...e){throw Error(`Unimplemented`)}changeCowBreedingPenResident(...e){throw Error(`Unimplemented`)}changeCowName(...e){throw Error(`Unimplemented`)}clearPlot(...e){throw Error(`Unimplemented`)}chopForestPlot(...e){throw Error(`Unimplemented`)}computeStateForNextDay(...e){throw Error(`Unimplemented`)}fertilizePlot(...e){throw Error(`Unimplemented`)}forRange(...e){throw Error(`Unimplemented`)}harvestForestPlot(...e){throw Error(`Unimplemented`)}harvestPlot(...e){throw Error(`Unimplemented`)}hugCow(...e){throw Error(`Unimplemented`)}makeRecipe(...e){throw Error(`Unimplemented`)}makeFermentationRecipe(...e){throw Error(`Unimplemented`)}makeWine(...e){throw Error(`Unimplemented`)}modifyCow(...e){throw Error(`Unimplemented`)}mulchForestPlot(...e){throw Error(`Unimplemented`)}offerCow(...e){throw Error(`Unimplemented`)}plantInPlot(...e){throw Error(`Unimplemented`)}plantTreeInPlot(...e){throw Error(`Unimplemented`)}prependPendingPeerMessage(...e){throw Error(`Unimplemented`)}purchaseCombine(...e){throw Error(`Unimplemented`)}purchaseComposter(...e){throw Error(`Unimplemented`)}purchaseCow(...e){throw Error(`Unimplemented`)}purchaseCowPen(...e){throw Error(`Unimplemented`)}purchaseCellar(...e){throw Error(`Unimplemented`)}purchaseField(...e){throw Error(`Unimplemented`)}purchaseForest(...e){throw Error(`Unimplemented`)}purchaseItem(...e){throw Error(`Unimplemented`)}purchaseSmelter(...e){throw Error(`Unimplemented`)}purchaseStorageExpansion(...e){throw Error(`Unimplemented`)}purchaseWoodChipper(...e){throw Error(`Unimplemented`)}removeCowFromInventory(...e){throw Error(`Unimplemented`)}removeKegFromCellar(...e){throw Error(`Unimplemented`)}removePeer(...e){throw Error(`Unimplemented`)}selectCow(...e){throw Error(`Unimplemented`)}sellCow(...e){throw Error(`Unimplemented`)}sellItem(...e){throw Error(`Unimplemented`)}sellKeg(...e){throw Error(`Unimplemented`)}setLightningRod(...e){throw Error(`Unimplemented`)}setScarecrow(...e){throw Error(`Unimplemented`)}setSprinkler(...e){throw Error(`Unimplemented`)}showNotification(...e){throw Error(`Unimplemented`)}updatePeer(...e){throw Error(`Unimplemented`)}upgradeTool(...e){throw Error(`Unimplemented`)}waterAllPlots(...e){throw Error(`Unimplemented`)}waterField(...e){throw Error(`Unimplemented`)}waterPlot(...e){throw Error(`Unimplemented`)}withdrawCow(...e){throw Error(`Unimplemented`)}constructor(t){super(t);let n=Object.getOwnPropertyNames(e.prototype).filter(e=>e!==`constructor`);for(let e of n){let t=reducers_exports[e];t&&(this[e]=(...e)=>{this.setState(n=>t(n,...e))})}}},useFarmhandReducers=e=>(0,import_react$24.useMemo)(()=>{let t={};Object.assign(t,reducers_exports);let n=Object.getOwnPropertyNames(FarmhandReducers.prototype).filter(e=>e!==`constructor`);for(let a of n){let n=reducers_exports[a];typeof n==`function`&&(t[a]=(...t)=>{e(e=>{let a=n(e,...t);return!a||a===e?e:{...a}})})}return t},[e]),usePrevious=e=>{let t=(0,import_react$24.useRef)();return(0,import_react$24.useEffect)(()=>{t.current=e},[e]),t.current},{CLEANUP,HARVEST,MINE,WATER}=fieldMode,useFarmhand=e=>{let{features:t,match:{path:n=``,params:{room:a}={}}={}}=e,o=(0,import_react$24.useCallback)(()=>({activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:dialogView.NONE,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:-1},cowColorsPurchased:{},cowIdOfferedForTrade:``,cowInventory:[],cowsSold:{},cowsTraded:0,cowTradeTimeoutId:-1,cropsHarvested:{},dayCount:0,experience:0,farmName:`Unnamed`,field:createNewField(),fieldMode:fieldMode.OBSERVE,forest:createNewForest(),treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},getCowAccept:noop$3,getCowReject:noop$3,getCowTradeRequest:noop$3,getPeerMetadata:noop$3,hasBooted:!1,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:null,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:v4(),inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:100,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!1,isMenuOpen:!doesMenuObstructStage(),itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:n.startsWith(`/online`)??!1,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:500,loansTakenOut:1,money:500,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendPeerMetadata:null,selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:decodeURIComponent(e.match?.params?.room||`global`),sendCowAccept:noop$3,sendCowReject:noop$3,purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,sendCowTradeRequest:noop$3,showHomeScreen:!0,showNotifications:!0,stageFocus:stageFocusType.HOME,todaysNotifications:[],todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{[toolType.AXE]:toolLevel.UNAVAILABLE,[toolType.HOE]:toolLevel.DEFAULT,[toolType.PICKER_POLE]:toolLevel.UNAVAILABLE,[toolType.SCYTHE]:toolLevel.DEFAULT,[toolType.SHOVEL]:toolLevel.UNAVAILABLE,[toolType.WATERING_CAN]:toolLevel.DEFAULT},useAlternateEndDayButtonPosition:!1,valueAdjustments:{},version:`1.23.0`}),[n,e.match?.params?.room]),[s,l]=(0,import_react$24.useState)(o),u=(0,import_react$24.useRef)(s);u.current=s;let d=a===void 0?s.room:a,f=(0,import_react$24.useRef)(null),m=(0,import_react$24.useRef)(!1),h=useFarmhandReducers(l),v=(0,import_react$24.useRef)(h);v.current=h;let y=usePrevious(s),b=STAGE_TITLE_MAP[s.stageFocus],x=FarmhandService.getFieldToolInventory(s.inventory),S=FarmhandService.computePlayerInventory(s.inventory,s.valueAdjustments),C=FarmhandService.getPlantableCropInventory(s.inventory),T=FarmhandService.getPlantableTreeInventory(s.inventory),E=FarmhandService.getMulchInventory(s.inventory),D=(0,import_react$24.useMemo)(()=>getLevelEntitlements(levelAchieved(s.experience)),[s.experience]),O=(0,import_react$24.useMemo)(()=>getAvailableShopInventory(D),[D]),k=D.stageFocusType[stageFocusType.FOREST],j=s.isOnline&&s.room!==`global`,M=(0,import_react$24.useMemo)(()=>getViewList({isForestUnlocked:k,purchasedCellar:s.purchasedCellar,purchasedCowPen:s.purchasedCowPen,showHomeScreen:s.showHomeScreen}),[s.showHomeScreen,k,s.purchasedCowPen,s.purchasedCellar]),N=(0,import_react$24.useMemo)(()=>getPeerMetadata(s),[s]),F=s.isAwaitingNetworkRequest||s.isAwaitingCowTradeRequest||s.isWaitingForDayToCompleteIncrementing,I=(0,import_react$24.useRef)(null),{openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B}=useFarmhandNavigation(l,M),V=(0,import_react$24.useRef)(!0),H=(0,import_react$24.useRef)(!1);(0,import_react$24.useEffect)(()=>{if(s.hasBooted){if(H.current){H.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}if(V.current){V.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus,`push`),removeHashQueryParam(`tab`)}},[s.stageFocus,s.hasBooted]),(0,import_react$24.useEffect)(()=>{let e=()=>{let e=getValidatedStageFocusFromHash(u.current)??stageFocusType.HOME;e!==u.current.stageFocus&&(H.current=!0,l(t=>({...t,stageFocus:e})))};return import_window.default.addEventListener(`popstate`,e),()=>import_window.default.removeEventListener(`popstate`,e)},[]);let{syncToRoom:U,scheduleHeartbeat:W,tradeForPeerCow:G,handleCowTradeTimeout:ee,messagePeers:te}=useFarmhandNetwork(s,l,v,I,y,d,n,N),{clearPersistedData:K,persistState:q,updateServerForNextDay:ne,incrementDay:re}=useFarmhandDayAdvancement(u,l,e,v,f),{showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie}=useFarmhandNotifications(s,v);I.current=(0,import_react$24.useMemo)(()=>({state:s,props:e,viewTitle:b,fieldToolInventory:x,mulchInventory:E,playerInventory:S,plantableCropInventory:C,plantableTreeInventory:T,viewList:M,levelEntitlements:D,shopInventory:O,peerMetadata:N,isInputBlocked:F,isChatAvailable:j,isForestUnlocked:k,setState:(e,t)=>{l(n=>{let a=typeof e==`function`?e(n):e;if(a==null)return n;let o={...n,...a};return t&&setTimeout(t,0),o})},...v.current,purchaseItem:(e,t)=>v.current.purchaseItem(e,t),sellItem:(e,t)=>v.current.sellItem(e,t),showNotification:(e,t,n)=>v.current.showNotification(e,t,n),prependPendingPeerMessage:(e,t)=>v.current.prependPendingPeerMessage(e,t),forRange:(e,t,n,a,o)=>v.current.forRange(e,t,n,a,o),createInitialState:o,getData,postData,tradeForPeerCow:G,handleCowTradeTimeout:ee,clearPersistedData:K,syncToRoom:U,scheduleHeartbeat:W,showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie,persistState:(e={})=>q(I.current?.state??s,e),updateServerForNextDay:ne,incrementDay:re,openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B,messagePeers:te}),[s,e,b,x,E,S,C,T,M,D,O,N,F,j,k,G,ee,K,U,W,J,ie,q,ne,re,L,R,z,B,te,o]);let ae=(0,import_react$24.useMemo)(()=>{let e={debounced:{}};return Object.keys(ui_events_default).forEach(t=>{let n=t;e[n]=(...e)=>ui_events_default[n].apply(I.current,e),e.debounced[n]=(0,import_lodash_debounce.default)(e[n],50)}),e},[]),oe=(0,import_react$24.useMemo)(()=>{let e={incrementDay:`shift+c`,nextView:`right`,openAccounting:`b`,openAchievements:`a`,openLog:`l`,openPriceEvents:`e`,openStats:`s`,openSettings:`,`,openKeybindings:`shift+?`,previousView:`left`,toggleMenu:`m`};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=String(n+1)}),e},[]),se=(0,import_react$24.useMemo)(()=>{let e={incrementDay:()=>re(),nextView:z,openAccounting:()=>L(dialogView.ACCOUNTING),openAchievements:()=>L(dialogView.ACHIEVEMENTS),openLog:()=>L(dialogView.FARMERS_LOG),openPriceEvents:()=>L(dialogView.PRICE_EVENTS),openStats:()=>L(dialogView.STATS),openSettings:()=>L(dialogView.SETTINGS),openKeybindings:()=>L(dialogView.KEYBINDINGS),previousView:B,selectHoe:()=>ae.handleFieldModeSelect(CLEANUP),selectScythe:()=>ae.handleFieldModeSelect(HARVEST),selectWateringCan:()=>ae.handleFieldModeSelect(WATER),selectShovel:()=>{s.toolLevels[toolType.SHOVEL]!==toolLevel.UNAVAILABLE&&ae.handleFieldModeSelect(MINE)},toggleMenu:()=>ae.handleMenuToggle()};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=()=>{let e=M[n];typeof e==`string`&&l(t=>({...t,stageFocus:stageFocusType[e]}))}}),e},[re,z,L,B,ae,s.toolLevels,M,K]);(0,import_react$24.useEffect)(()=>{if(m.current)return;m.current=!0,Object.defineProperty(import_window.default,"farmhand",{get:()=>I.current,configurable:!0});let t=!0;return(async()=>{let n=await e.localforage?.getItem(`state`);if(t){if(n){let e=transformStateDataForImport({...o(),...n}),{isCombineEnabled:t,newDayNotifications:a}=e,s=getValidatedStageFocusFromHash(e);l(t=>({...t,...e,...s&&{stageFocus:s},newDayNotifications:[],hasBooted:!0})),a.forEach(({message:e,severity:t})=>{setTimeout(()=>v.current.showNotification(e,t),0)}),t&&v.current.forRange(harvestPlot,1/0,0,0)}else{await re(!0),l(e=>({...e,historicalValueAdjustments:[]})),v.current.showNotification(LOAN_INCREASED(``,500),`info`);let e=getValidatedStageFocusFromHash(u.current);l(t=>({...t,...e&&{stageFocus:e},hasBooted:!0}))}U()}})(),()=>{t=!1}},[o,re,e.localforage,U]);let ce=(0,import_react$24.useRef)(import_window.default.innerWidth);(0,import_react$24.useEffect)(()=>{let e=()=>{let{innerWidth:e}=import_window.default,t=e!==ce.current;ce.current=e,t&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}})};return import_window.default.addEventListener(`resize`,e),()=>import_window.default.removeEventListener(`resize`,e)},[]),(0,import_react$24.useEffect)(()=>{if(!s.hasBooted||!f.current)return;let t=!0,{state:n,pendingNotifications:a,broadcastedPositionMessage:o,isFirstDay:u}=f.current;return f.current=null,(async()=>{try{if(await e.localforage?.setItem(`state`,reduceByPersistedKeys({...n,...u&&{historicalValueAdjustments:[]},newDayNotifications:a})),!t)return;if([...a].concat(u?[]:[{message:PROGRESS_SAVED_MESSAGE,severity:`info`}]).forEach(({message:e,severity:t})=>v.current.showNotification(e,t)),n.isCombineEnabled){if(n.stageFocus===stageFocusType.FIELD&&await sleep(1e3),!t)return;v.current.forRange(harvestPlot,1/0,0,0)}}catch(e){console.error(e),t&&v.current.showNotification(JSON.stringify(e),`error`)}finally{t&&(l(e=>({...e,isWaitingForDayToCompleteIncrementing:!1})),o&&v.current.prependPendingPeerMessage(o))}})(),()=>{t=!1}},[s.dayCount,s.hasBooted,e.localforage,l]),(0,import_react$24.useEffect)(()=>()=>{u.current.heartbeatTimeoutId&&clearTimeout(u.current.heartbeatTimeoutId),u.current.peerRoom?.leave()},[]),(0,import_react$24.useEffect)(()=>{!s.hasBooted||!y||(updateAchievements(s,y)!==s&&l(e=>{let t=updateAchievements(e,y);return t===e?e:t}),s.stageFocus===stageFocusType.COW_PEN&&y.stageFocus!==stageFocusType.COW_PEN&&l(e=>({...e,selectedCowId:``})),s.stageFocus!==y.stageFocus&&s.isMenuOpen&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}}),s.money<y.money&&l(e=>({...e,todaysLosses:moneyTotal(e.todaysLosses,s.money-y.money)})),J(y,s),ie(y))},[s,y,J,ie]);let Y=s.redirect;return{gameState:{...s,blockInput:F,features:t??{},fieldToolInventory:x,mulchInventory:E,isChatAvailable:j,levelEntitlements:D,plantableCropInventory:C,plantableTreeInventory:T,playerInventory:S,playerInventoryQuantities:getInventoryQuantities(s.inventory),shopInventory:O,viewList:M,viewTitle:b},handlers:ae,isInputBlocked:F,keyMap:oe,keyHandlers:se,redirect:Y,state:s,viewList:M,focusPreviousView:B,focusNextView:z,isChatAvailable:j}},emptyObject=Object.freeze({}),Farmhand=e=>{let{gameState:t,handlers:n,isInputBlocked:a,keyMap:o,keyHandlers:s,redirect:l,state:u,viewList:d,focusPreviousView:f,focusNextView:m,isChatAvailable:h}=useFarmhand(e);return(0,import_jsx_runtime.jsx)(import_index_es.GlobalHotKeys,{allowChanges:!0,keyMap:a?emptyObject:o,handlers:a?emptyObject:s,children:(0,import_jsx_runtime.jsxs)(ThemeProvider,{theme:mui_theme_default,children:[(0,import_jsx_runtime.jsx)(CssBaseline,{}),(0,import_jsx_runtime.jsxs)(SnackbarProvider,{anchorOrigin:{vertical:`top`,horizontal:`right`},classes:{containerRoot:`Farmhand notification-container`},content:snackbarProviderContentCallback,maxSnack:4,children:[l&&(0,import_jsx_runtime.jsx)(Redirect,{to:l}),(0,import_jsx_runtime.jsxs)(FarmhandContext.Provider,{value:{gameState:t,handlers:n},children:[(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Farmhand farmhand-root fill`,u.isMenuOpen?`menu-open`:`menu-closed`,{"use-alternate-end-day-button-position":u.useAlternateEndDayButtonPosition,"block-input":a,"has-booted":u.hasBooted}),sx:e=>({...fillSx,display:`flex`,paddingTop:`3.5em`,position:`fixed`,touchAction:`manipulation`,opacity:+!!u.hasBooted,transform:u.hasBooted?`scale(1)`:`scale(0)`,transition:`opacity, transform 200ms`,...a&&{"& button, & input":{filter:`contrast(65%)`,pointerEvents:`none`}},[`@media (min-width: ${breakpoints.smallPhone}px) and (orientation: landscape)`]:{paddingTop:`3em`},[`@media (min-width: ${breakpoints.sm}px)`]:{paddingTop:`4em`},"& .sidebar-wrapper":{display:`flex`},"& .bottom-controls":{alignItems:`center`,bottom:`1em`,display:`flex`,flexFlow:`column`,justifyContent:`center`,left:`50%`,opacity:.85,position:`fixed`,transition:e.transitions.create(`left`,{duration:e.transitions.duration.enteringScreen,easing:e.transitions.easing.easeOut}),width:0,zIndex:20,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{bottom:`0.5em`},"& .MuiMobileStepper-root":{background:`none`},"& .fab-buttons":{display:`flex`,flexFlow:`row`,"& button":{margin:`0.5em`,position:`relative`,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{margin:`0.25em 0.5em`},"@media (max-width: 320px)":{margin:`0.25em 0.1em`}}},...u.isMenuOpen&&{"@media (orientation: landscape)":{left:`calc(50vw + ${layout.sidebarWidth} / 2)`}}},"& .end-day":{position:`fixed`,top:`5em`,right:`1em`,[`@media (min-width: ${breakpoints.sm}px)`]:{right:`1.25em`,top:`5.5em`},...u.useAlternateEndDayButtonPosition&&{right:`auto`,left:`1em`}},"& .menu-button":{transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shorter}),transform:u.isMenuOpen?`rotate(-90deg)`:`rotate(0deg)`}}),children:[(0,import_jsx_runtime.jsx)(UpdateNotifier,{}),(0,import_jsx_runtime.jsx)(Consumer$29,{}),(0,import_jsx_runtime.jsxs)(Drawer,{className:`sidebar-wrapper`,open:t.isMenuOpen,variant:`persistent`,role:`complementary`,PaperProps:{className:`sidebar`,sx:{backgroundImage:`url(${blue_stripe_bg_default})`,boxSizing:`border-box`,overflow:`auto`,padding:`1em 1em 0`,position:`relative`,width:layout.sidebarWidth,zIndex:20,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{width:layout.narrowSidebarWidth},"& .button-array":{display:`flex`,flexWrap:`wrap`,margin:`0.5em 0`}}},children:[(0,import_jsx_runtime.jsx)(Consumer$14,{}),(0,import_jsx_runtime.jsx)(Consumer$24,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]}),(0,import_jsx_runtime.jsx)(Consumer,{}),(0,import_jsx_runtime.jsxs)(`div`,{className:`bottom-controls`,children:[(0,import_jsx_runtime.jsx)(MobileStepper,{variant:`dots`,steps:d.length,position:`static`,activeStep:d.indexOf(u.stageFocus),className:``,backButton:null,nextButton:null}),(0,import_jsx_runtime.jsxs)(`div`,{className:`fab-buttons buttons`,children:[(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Previous view`,color:`primary`,onClick:f,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowLeft.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{className:(0,import_classnames.default)(`menu-button`,{"is-open":u.isMenuOpen}),color:`primary`,"aria-label":`Open drawer`,onClick:()=>n.handleMenuToggle(),children:(0,import_jsx_runtime.jsx)(import_Menu.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Next view`,color:`primary`,onClick:m,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowRight.default,{})})]})]}),(0,import_jsx_runtime.jsx)(Tooltip,{placement:`left`,title:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`p`,{children:`End the day to save your progress and advance the game.`}),(0,import_jsx_runtime.jsx)(`p`,{children:`(shift + c)`})]}),children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`End the day to save your progress and advance the game.`,className:`end-day`,color:`error`,onClick:n.handleClickEndDayButton,sx:{zIndex:Z_INDEX.END_DAY_BUTTON},children:(0,import_jsx_runtime.jsx)(import_Hotel.default,{})})})]}),h?(0,import_jsx_runtime.jsx)(ChatRoom,{}):null,(0,import_jsx_runtime.jsx)(NotificationSystem_default,{})]})]})]})})};Farmhand.defaultProps={features:{},localforage:import_localforage.default.createInstance({name:`farmhand`,description:`Persisted game data for Farmhand`}),match:{path:``,params:{}}},Farmhand.propTypes={features:import_prop_types$1.object,history:import_prop_types$1.object,location:import_prop_types$1.object,match:import_prop_types$1.object.isRequired};var FarmhandRoute=e=>(0,import_jsx_runtime.jsx)(Farmhand,{...e,features});import_react_dom.render((0,import_jsx_runtime.jsx)(HashRouter,{hashType:`noslash`,children:(0,import_jsx_runtime.jsx)(Route,{path:[`/online/:room`,`/online`,`/`],component:FarmhandRoute})}),document.getElementById(`root`));
|
|
844
|
+
//# sourceMappingURL=index-wJ4_E2CN.js.map
|