{"version":3,"file":"static/chunks/92139.705fa6f61f3ad6ec.js","sources":["webpack://_N_E/./src/LegacyApp/client/modules/app/getSessionData.ts","webpack://_N_E/./src/LegacyApp/client/selectors/activePackageSelector.selector.js","webpack://_N_E/./src/modules/games/Game/methods/checkIsSingleValue.ts","webpack://_N_E/./src/modules/games/Game/methods/checkIsWinChanceDisabled.ts","webpack://_N_E/./src/modules/games/Game/methods/getSwitchedRollDirection.ts","webpack://_N_E/./src/modules/games/Game/methods/validateBetValue.ts","webpack://_N_E/./src/modules/games/Game/store/dice/dice.actions.ts","webpack://_N_E/./src/modules/games/Game/store/dice/diceInitialState.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/betValue.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/isResultVisible.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/result.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/rule.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/thunks/switchDirection.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/dice/thunks/updateBetValue.thunk.ts","webpack://_N_E/./src/modules/games/Game/constants/gameFieldTypes.ts","webpack://_N_E/./src/modules/games/Game/store/gameValidation/thunks/disableGameValidationErrorThunk.ts","webpack://_N_E/./src/modules/games/Game/store/dice/thunks/updateRuleThunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/parseResponseBet.ts","webpack://_N_E/./src/modules/games/Game/store/game/slices/betSummary.slice.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/updatePayout.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/updateWinChance.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/checkBetsInAnimation.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/autobetStopped.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/sendAutoBetPlay.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/autobetPlay.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/gameAutobet.epic.js","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/applyAutobetStrategyThunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/handleAutobetPlayResponse.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/openAutobetSummary.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/keno/keno.actions.ts","webpack://_N_E/./src/modules/games/Game/store/keno/slices/drawnNumbers.slice.ts","webpack://_N_E/./src/modules/games/Game/store/keno/slices/paytables.slice.ts","webpack://_N_E/./src/modules/games/Game/store/keno/kenoInitialState.ts","webpack://_N_E/./src/modules/games/Game/store/keno/slices/selectedNumbers.slice.ts","webpack://_N_E/./node_modules/reselect/es/defaultMemoize.js","webpack://_N_E/./node_modules/reselect/es/index.js"],"sourceRoot":"","sourcesContent":["import { GameType } from '@modules/games/Game/constants/availableGames';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { RootState } from '../../store/configure.store';\nimport { getTimestamp } from './timeService';\n\nexport const getSessionData = (\n\tgame: GameType,\n\tstate: RootState,\n\tnoStats?: boolean,\n) => {\n\tconst profit_chart = state.gameSession?.profitHistoryAuto[game].data.map(\n\t\t(el) => el.y,\n\t);\n\tprofit_chart.shift();\n\treturn {\n\t\tpublished_at: roundNumber(getTimestamp() / 1000, 0, 'floor'),\n\t\tgame: {\n\t\t\tname: game,\n\t\t},\n\t\tuser: {\n\t\t\tlogin: state.user.name,\n\t\t\tuuid: state.user.id,\n\t\t},\n\t\twagered: noStats ? undefined : state.gameSession?.wageredAuto[game],\n\t\tprofit: noStats ? undefined : state.gameSession?.stopProfit[game],\n\t\tprofit_chart,\n\t\tcurrency: state.gameAutobet?.currency[game] || state.user.activeCurrency,\n\t\tlost: noStats ? undefined : state.gameSession?.lostAuto[game],\n\t\twon: noStats ? undefined : state.gameSession?.wonAuto[game],\n\t};\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nexport const isPackageActive = (state, type) => {\n\tconst packageData = state.registry.packages[type] || {};\n\tconst packageDataModules = Object.keys(packageData);\n\tif (!packageDataModules.length) {\n\t\treturn false;\n\t}\n\treturn (\n\t\tpackageDataModules.filter((module) => packageData[module]).length ===\n\t\tpackageDataModules.length\n\t);\n};\n\nexport const packageStateSelector = (type) => (state) => {\n\treturn isPackageActive(state, type);\n};\n\nexport const activePackageSelector = (param) =>\n\tcreateSelector(packageStateSelector(param), (a) => a);\n","import { RollRule } from '../types/RollRule';\n\nexport const checkIsSingleValue = (rule: RollRule): boolean => {\n\tif (!rule) {\n\t\treturn true;\n\t}\n\treturn [RollRule.UNDER, RollRule.OVER, RollRule.DIRECT].indexOf(rule) > -1;\n};\n","import { RollRule } from '../types/RollRule';\nimport { GameType } from '../constants/availableGames';\nimport { checkIsSingleValue } from './checkIsSingleValue';\n\nexport const checkIsWinChanceDisabled = (rule: RollRule, game: GameType) => {\n\tif (game !== GameType.DICE) {\n\t\treturn false;\n\t}\n\treturn !checkIsSingleValue(rule) || rule === RollRule.DIRECT;\n};\n","import { RollRule } from '../types/RollRule';\n\nexport const getSwitchedRollDirection = (direction: RollRule) => {\n\tif (direction === RollRule.OVER) {\n\t\treturn RollRule.UNDER;\n\t}\n\treturn RollRule.OVER;\n};\n","import { RollRule } from '../types/RollRule';\nimport { getBetValueMaxMin } from './getBetValueMaxMin';\n\nexport const validateBetValues = (\n\tbetValues: ReadonlyArray<number>,\n\trule: RollRule,\n): ReadonlyArray<number> => {\n\tconst validated = [...betValues];\n\tbetValues.forEach((betValue, index) => {\n\t\tvalidated[index] = validateBetValue(validated, rule, betValue, index);\n\t});\n\treturn validated;\n};\n\nexport const validateBetValue = (\n\tbetValues: ReadonlyArray<number>,\n\trule: RollRule,\n\tvalue: number,\n\tindex: number,\n): number => {\n\tconst { min, max } = getBetValueMaxMin({ betValues, rule, index });\n\t// console.log('validateBetValue', rule, betValues, { value, index, min, max });\n\tif (!Array.isArray(betValues)) {\n\t\treturn min;\n\t}\n\tif (value > max) {\n\t\treturn max;\n\t}\n\tif (value < min) {\n\t\treturn min;\n\t}\n\treturn value;\n};\n","import { betValueSlice } from './slices/betValue.slice';\nimport { resultSlice } from './slices/result.slice';\nimport { ruleDefaultSlice, ruleSlice } from './slices/rule.slice';\nimport { isResultVisibleSlice } from './slices/isResultVisible.slice';\n\nexport const diceActions = {\n\t...betValueSlice.actions,\n\t...resultSlice.actions,\n\t...ruleDefaultSlice.actions,\n\t...ruleSlice.actions,\n\t...isResultVisibleSlice.actions,\n};\n","import { reducerInitialStateMethods } from '@common/methods/reducerInitialStateMethods';\n\nexport const diceInitialState = reducerInitialStateMethods('dice');\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\nimport { config } from '@legacyApp/client/config';\nimport { diceInitialState } from '../diceInitialState';\n\nconst defaultBetValue = config.games.dice.betValue;\n\nconst NAME = 'betValue';\n\nexport type ValueType = {\n\tsingleUnder: number; // source of truth for default rule \"under\"\n\tdouble: [number, number];\n\tquadruple: [number, number, number, number];\n};\n\nconst initialState: ValueType = diceInitialState.getInitialState(NAME) || {\n\tsingleUnder: defaultBetValue,\n\tdouble: [25, 75],\n\tquadruple: [15, 40, 60, 85],\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\tdiceInitialState.setInitialState(NAME, action.payload);\n\treturn action.payload;\n};\n\nconst singleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['singleUnder']>\n> = (state, action) => {\n\tstate.singleUnder = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst doubleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['double']>\n> = (state, action) => {\n\tstate.double = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst quadrupleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['quadruple']>\n> = (state, action) => {\n\tstate.quadruple = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst betValueIndexUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<{\n\t\tindex: number;\n\t\tvalue: number;\n\t}>\n> = (state, action) => {\n\tstate[action.payload.index] = action.payload.value;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nexport const betValueSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tsingleValueUpdate,\n\t\tdoubleValueUpdate,\n\t\tquadrupleValueUpdate,\n\t\tbetValueUpdate: setAction,\n\t\tbetValueIndexUpdate,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nexport type ValueType = number;\n\nconst NAME = 'isResultVisible';\n\nconst initialState = 0;\n\nconst resultShow: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state) => {\n\treturn (state += 1);\n};\n\nconst resultHide: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state) => {\n\treturn (state -= 1);\n};\n\nexport const isResultVisibleSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tresultShow,\n\t\tresultHide,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nconst NAME = 'result';\n\nexport interface ResultType {\n\tresult: boolean | number;\n\tresultValue: boolean | number;\n}\n\nconst initialState: ResultType = {\n\tresult: false,\n\tresultValue: false,\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tResultType,\n\tReduxToolkit.PayloadAction<ResultType>\n> = (state, action) => {\n\treturn action.payload;\n};\n\nexport const resultSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tresultUpdate: setAction,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\nimport { RollRule } from '../../../types/RollRule';\nimport { diceInitialState } from '../diceInitialState';\n\nconst NAME = 'rule';\nconst NAME_DEFAULT = `${NAME}Default`;\n\nexport type ValueType = RollRule;\n\nconst initialState = diceInitialState.getInitialState(NAME) || RollRule.UNDER;\n\nconst initialDefaultState =\n\tdiceInitialState.getInitialState(NAME_DEFAULT) || RollRule.UNDER;\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\tdiceInitialState.setInitialState(NAME, action.payload);\n\treturn action.payload;\n};\n\nexport const ruleSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\truleUpdate: setAction,\n\t},\n});\n\nexport const ruleDefaultSlice = createSlice({\n\tname: NAME_DEFAULT,\n\tinitialState: initialDefaultState,\n\treducers: {\n\t\tdefaultRuleUpdate: setAction,\n\t},\n});\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getSwitchedRollDirection } from '../../../methods/getSwitchedRollDirection';\nimport { updateRuleThunk } from './updateRuleThunk';\n\nexport const switchDirectionThunk = (): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst direction = getSwitchedRollDirection(getState().dice.rollDirection);\n\t\tdispatch(updateRuleThunk(direction));\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { RollRule } from '../../../types/RollRule';\nimport { checkIsSingleValue } from '../../../methods/checkIsSingleValue';\nimport { diceActions } from '../dice.actions';\nimport { checkIsDoubleValue } from '../../../methods/checkIsDoubleValue';\nimport { checkIsQuadrupleValue } from '../../../methods/checkIsQuadrupleValue';\nimport transactionService from '../../../../../transactions/transactionsService';\nimport { parseSingleBetValue } from '../../../methods/getWinChanceFromBetValues';\n\nexport const updateBetValueThunk = (\n\tbetValues: ReadonlyArray<number>,\n\trule: RollRule,\n): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (checkIsSingleValue(rule)) {\n\t\t\tconst parsedBetValue = betValues[0];\n\t\t\tconst betValueUnder = parseSingleBetValue(parsedBetValue, rule);\n\t\t\tif (state.dice.betValue.singleUnder !== betValueUnder) {\n\t\t\t\tdispatch(diceActions.singleValueUpdate(betValueUnder));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(betValues) && betValues.length > 1) {\n\t\t\tif (checkIsDoubleValue(rule) && betValues.length === 2) {\n\t\t\t\tif (\n\t\t\t\t\ttransactionService.isListDifferent(\n\t\t\t\t\t\tbetValues,\n\t\t\t\t\t\tstate.dice.betValue.double,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// @ts-expect-error invalid type def\n\t\t\t\t\tdispatch(diceActions.doubleValueUpdate(betValues));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (checkIsQuadrupleValue(rule) && betValues.length === 4) {\n\t\t\t\tif (\n\t\t\t\t\ttransactionService.isListDifferent(\n\t\t\t\t\t\tbetValues,\n\t\t\t\t\t\tstate.dice.betValue.quadruple,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// @ts-expect-error invalid type def\n\t\t\t\t\tdispatch(diceActions.quadrupleValueUpdate(betValues));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n};\n","export enum GameFieldType {\n\tBET_AMOUNT = 'betAmount',\n\tFORM = 'form',\n\tPAYOUT = 'payout',\n\tPROFIT = 'profit',\n\tWIN_CHANCE = 'winChance',\n}\n\nexport type GameFieldErrorType = `${GameFieldType}Error`;\n","import { AppThunk } from 'src/LegacyApp/types/store/ThunkAction';\nimport { getGameFromUrl } from 'src/LegacyApp/client/modules/app/gameService';\nimport { GameType } from 'src/modules/games/Game/constants/availableGames';\nimport { GameFieldType } from 'src/modules/games/Game/constants/gameFieldTypes';\nimport {\n\tgameUpdateAmountError,\n\tgameUpdateFormError,\n\tgameUpdatePayoutError,\n\tgameUpdateProfitError,\n\tgameUpdateWinChanceError,\n} from '../gameValidation.actions';\n\ntype DisableGameValidationErrorThunk = {\n\t(game: GameType, type?: GameFieldType): AppThunk;\n};\n\nconst typesToActions = {\n\t[GameFieldType.BET_AMOUNT]: gameUpdateAmountError,\n\t[GameFieldType.FORM]: gameUpdateFormError,\n\t[GameFieldType.PAYOUT]: gameUpdatePayoutError,\n\t[GameFieldType.PROFIT]: gameUpdateProfitError,\n\t[GameFieldType.WIN_CHANCE]: gameUpdateWinChanceError,\n};\n\nconst disableGameValidationErrorThunk: DisableGameValidationErrorThunk = (\n\tgame,\n\ttype,\n) => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (\n\t\t\t(type && !typesToActions[type]) ||\n\t\t\t(type && !state.gameValidation[`${type}Error`][GameType.DICE])\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!game) {\n\t\t\tgame = state.game?.activeGame || getGameFromUrl();\n\t\t}\n\n\t\tconst actionPayload = {\n\t\t\tvalue: true,\n\t\t\tgame,\n\t\t};\n\n\t\tif (type) {\n\t\t\tconst action = typesToActions[type];\n\n\t\t\tdispatch(action(actionPayload));\n\t\t} else {\n\t\t\tconst allActions = Object.values(typesToActions);\n\n\t\t\tallActions.forEach((action) => dispatch(action(actionPayload)));\n\t\t}\n\t};\n};\n\nexport default disableGameValidationErrorThunk;\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getPayout } from '@legacyApp/client/modules/app/gameService';\nimport disableGameValidationErrorThunk from 'src/modules/games/Game/store/gameValidation/thunks/disableGameValidationErrorThunk';\nimport { GameFieldType } from 'src/modules/games/Game/constants/gameFieldTypes';\nimport { diceActions } from '../dice.actions';\nimport {\n\tgetWinChanceFromMultipleBetValues,\n\tgetWinChangeFromSingleBetValue,\n\tparseSingleBetValue,\n} from '../../../methods/getWinChanceFromBetValues';\nimport { GameType } from '../../../constants/availableGames';\nimport { RollRule } from '../../../types/RollRule';\nimport { checkIsSingleValue } from '../../../methods/checkIsSingleValue';\nimport { checkIsDoubleValue } from '../../../methods/checkIsDoubleValue';\nimport { validateBetValues } from '../../../methods/validateBetValue';\nimport transactionService from '../../../../../transactions/transactionsService';\nimport { updatePayoutThunk } from '../../game/thunks/updatePayout.thunk';\nimport { updateWinChanceThunk } from '../../game/thunks/updateWinChance.thunk';\nimport { updateBetValueThunk } from './updateBetValue.thunk';\n\nexport const updateRuleThunk = (rule: RollRule): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (rule === state.dice.rollDirection) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch(diceActions.ruleUpdate(rule));\n\n\t\tconst isSingleValue = checkIsSingleValue(rule);\n\t\tconst isDoubleValue = checkIsDoubleValue(rule);\n\n\t\tlet winChanceValue: number;\n\n\t\tif (isSingleValue) {\n\t\t\tconst validated = validateBetValues(\n\t\t\t\t[getWinChangeFromSingleBetValue(state.dice.betValue.singleUnder, rule)],\n\t\t\t\trule,\n\t\t\t);\n\t\t\tif (\n\t\t\t\ttransactionService.isListDifferent(validated, [\n\t\t\t\t\tstate.dice.betValue.singleUnder,\n\t\t\t\t])\n\t\t\t) {\n\t\t\t\tdispatch(updateBetValueThunk(validated, rule));\n\t\t\t}\n\t\t\twinChanceValue = parseSingleBetValue(validated[0], rule);\n\t\t} else if (isDoubleValue) {\n\t\t\tconst validated = validateBetValues(state.dice.betValue.double, rule);\n\t\t\t// console.log('updateRuleThunk', validated, state.dice.betValue.double, { rule });\n\t\t\tif (\n\t\t\t\ttransactionService.isListDifferent(\n\t\t\t\t\tvalidated,\n\t\t\t\t\tstate.dice.betValue.double,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tdispatch(updateBetValueThunk(validated, rule));\n\t\t\t}\n\t\t\twinChanceValue = getWinChanceFromMultipleBetValues(validated, rule);\n\t\t} else {\n\t\t\twinChanceValue = getWinChanceFromMultipleBetValues(\n\t\t\t\tstate.dice.betValue.quadruple,\n\t\t\t\trule,\n\t\t\t);\n\t\t}\n\n\t\tif (state.game.winChanceValue[GameType.DICE] !== winChanceValue) {\n\t\t\tdispatch(updateWinChanceThunk(winChanceValue, GameType.DICE));\n\t\t}\n\n\t\tconst payoutValue = getPayout(winChanceValue, GameType.DICE);\n\n\t\tif (state.game.winChanceValue[GameType.DICE] !== payoutValue) {\n\t\t\tdispatch(updatePayoutThunk(payoutValue, GameType.DICE));\n\t\t}\n\n\t\tdispatch(\n\t\t\tdisableGameValidationErrorThunk(GameType.DICE, GameFieldType.BET_AMOUNT),\n\t\t);\n\t};\n};\n","import { GameType } from '@modules/games/Game/constants/availableGames';\nimport { Bet } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport sortService, {\n\tDIRECTION,\n} from '@legacyApp/client/modules/app/sortService';\n\nexport const parseResponseBet = (game: GameType, bet: Bet): Bet => {\n\tif (game === GameType.KENO && Array.isArray(bet?.result_value)) {\n\t\treturn {\n\t\t\t...bet,\n\t\t\thits: bet.result_value\n\t\t\t\t.map(Number)\n\t\t\t\t.sort((a, b) => sortService.sort(DIRECTION.ASC, a, b)),\n\t\t\tresult_value: Number(bet.multiplier),\n\t\t};\n\t}\n\n\treturn bet;\n};\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nimport { CurrencyType } from '@legacyApp/types/wallet/CurrencyType';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\nimport { capitalize } from '@legacyApp/client/modules/app/appService';\nimport { Bet } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\n\nconst NAME = (game: GameType) => `betSummary${capitalize(game)}`;\n\nexport type ValueType = {\n\tcurrency: CurrencyType;\n\tprofit: number;\n\tpayout: number;\n\thash: string;\n\tbet: Bet;\n};\n\nconst initialState: ValueType = {\n\tcurrency: null,\n\tprofit: null,\n\tpayout: null,\n\thash: null,\n\tbet: null,\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\treturn !action?.payload ? initialState : action.payload;\n};\n\nexport const betSummarySlice = (game: GameType) =>\n\tcreateSlice({\n\t\tname: NAME(game),\n\t\tinitialState,\n\t\treducers: {\n\t\t\tbetSummaryUpdate: setAction,\n\t\t},\n\t});\n","import { mathService } from '@legacyApp/client/modules/math/mathService';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { gameUpdatePayout } from '../game.actions';\nimport { GameType } from '../../../constants/availableGames';\n\nexport const updatePayoutThunk = (\n\tpayout: number | string,\n\tgame: GameType,\n\tisPayoutInput?: boolean,\n): AppThunk<number | string | boolean> => {\n\treturn (dispatch, getState) => {\n\t\tlet payoutValue = mathService.parseValue(payout);\n\t\tif (!isPayoutInput && !isTrueOrZero(payoutValue)) {\n\t\t\tpayoutValue = 1;\n\t\t}\n\t\t// console.log('updatePayout', {\n\t\t// payout, roundedPayout: round(payout), payoutValue, state: getState().game.payoutValue, isPayoutInput,\n\t\t// });\n\t\tif (\n\t\t\t!mathService.isNumberDiff(getState().game.payoutValue[game], payoutValue)\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\tdispatch(\n\t\t\tgameUpdatePayout({\n\t\t\t\tvalue: payoutValue,\n\t\t\t\tgame,\n\t\t\t}),\n\t\t);\n\t\treturn payoutValue;\n\t};\n};\n","import { getWinChanceDecimal } from '@legacyApp/client/modules/app/gameService';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { gameUpdateWinChance } from '../game.actions';\nimport { GameType } from '../../../constants/availableGames';\n\nexport const updateWinChanceThunk = (\n\twinChance: number | string,\n\tgame: GameType,\n): AppThunk<number> => {\n\treturn (dispatch, getState) => {\n\t\tconst decimal = getWinChanceDecimal(game);\n\t\tconst winChance_ = roundNumber(winChance, decimal);\n\t\tif (\n\t\t\troundNumber(getState().game.winChanceValue[game], decimal) === winChance_\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\tdispatch(\n\t\t\tgameUpdateWinChance({\n\t\t\t\tvalue: winChance_,\n\t\t\t\tgame,\n\t\t\t}),\n\t\t);\n\t\treturn winChance_;\n\t};\n};\n","import { GameType } from '../../../constants/availableGames';\n\nexport const checkBetsInAnimationThunk = (game: GameType) => {\n\treturn (dispatch, getState) => {\n\t\tconst { game: gameState } = getState();\n\t\treturn Object.keys(gameState.betsInAnimation[game]).length > 0;\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { autobetStopped } from '../gameAutobet.actions';\nimport { GameType } from '../../../constants/availableGames';\nimport { checkBetsInAnimationThunk } from '../../game/thunks/checkBetsInAnimation.thunk';\n\nexport const autobetStoppedThunk = (props: {\n\tgame: GameType;\n\tmessage: any;\n\tid?: string;\n\ttype?: string;\n}): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tif (game_config[props.game].resultAnimation) {\n\t\t\tconst animationEnabled = getState().options[OPTIONS.ANIMATION];\n\t\t\tif (animationEnabled) {\n\t\t\t\tif (!dispatch(checkBetsInAnimationThunk(props.game))) {\n\t\t\t\t\tdispatch(autobetStopped(props));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tdispatch(autobetStoppedThunk(props));\n\t\t\t\t}, 500);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tdispatch(autobetStopped(props));\n\t};\n};\n","import { fetchApi } from '@legacyApp/client/store/fetch/fetch.thunk';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { checkIsWinChanceDisabled } from '@modules/games/Game/methods/checkIsWinChanceDisabled';\nimport { AutobetPlayProps } from '@modules/games/Game/store/gameAutobet/gameAutobet.actions';\nimport { apiConfig } from '@server/config/api.config';\n\nexport const sendAutoBetPlayThunk = (\n\tpayload: AutobetPlayProps,\n): AppThunk<Promise<any>> => {\n\treturn async (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tconst gameLabel =\n\t\t\tpayload.rule && checkIsWinChanceDisabled(payload.rule, payload.game)\n\t\t\t\t? `range-${payload.game}`\n\t\t\t\t: payload.game;\n\n\t\tconst props = {\n\t\t\turl: {\n\t\t\t\tapiUrl: apiConfig.autobetUrl,\n\t\t\t\turi: `/v2/${gameLabel}/auto/play`,\n\t\t\t},\n\t\t\tparameters: {\n\t\t\t\tAuthorization: true,\n\t\t\t\tbody: {\n\t\t\t\t\tuuid: state.gameAutobet.id[payload.game],\n\t\t\t\t},\n\t\t\t},\n\t\t\tmethod: 'POST',\n\t\t\tloaderId: 'autoBetPlay',\n\t\t\tdisableErrorHandler: true,\n\t\t};\n\n\t\treturn dispatch(fetchApi(props));\n\t};\n};\n","import { game_config } from '@legacyApp/client/game_config';\nimport { getTimestamp } from '@legacyApp/client/modules/app/timeService';\nimport { trans } from '@legacyApp/client/modules/translation/translate';\nimport { setConfirm } from '@legacyApp/client/store/confirm/confirm.actions';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { betResponseAnimation } from '@modules/games/Game/store/game/game.actions';\nimport { parseResponseBet } from '@modules/games/Game/store/game/methods/parseResponseBet';\nimport {\n\tautobetPlay,\n\tAutobetPlayProps,\n\tautobetSetActive,\n\tautobetSetPauseData,\n\tautobetStop,\n\tautobetSummaryConnectionError,\n} from '@modules/games/Game/store/gameAutobet/gameAutobet.actions';\nimport { autobetStoppedThunk } from '@modules/games/Game/store/gameAutobet/thunks/autobetStopped.thunk';\nimport { handleAutobetPlayResponseThunk } from '@modules/games/Game/store/gameAutobet/thunks/handleAutobetPlayResponse.thunk';\nimport { sendAutoBetPlayThunk } from '@modules/games/Game/store/gameAutobet/thunks/sendAutoBetPlay.thunk';\n\nexport const autobetPlayThunk = (payload: AutobetPlayProps): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tif (\n\t\t\t!(\n\t\t\t\tgetState().gameAutobet.active[payload.game] &&\n\t\t\t\tgetState().gameAutobet.autoBetRolling[payload.game]\n\t\t\t) ||\n\t\t\t!getState().gameAutobet.id[payload.game]\n\t\t) {\n\t\t\t// autobet stopped on client\n\t\t\treturn dispatch(\n\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\tgame: payload.game,\n\t\t\t\t\tmessage: payload.stopped,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (getState().gameAutobet.pause) {\n\t\t\treturn dispatch(\n\t\t\t\tautobetSetPauseData({\n\t\t\t\t\tvalue: payload,\n\t\t\t\t\tgame: payload.game,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tconst lastBetTimestamp = getTimestamp();\n\t\t// console.timeEnd('autobetPlay-reaction');\n\t\t// console.timeEnd('autoBetPlay');\n\t\t// console.log('============');\n\t\t// console.time('autoBetPlay');\n\t\t// console.time('autobet-request');\n\t\t// console.time('autobet-request-1');\n\n\t\tif (getState().gameAutobet.manual && !payload.manualConfirmed) {\n\t\t\treturn dispatch(\n\t\t\t\tsetConfirm({\n\t\t\t\t\tcallbackAction: (dispatch) => {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tautobetPlay({\n\t\t\t\t\t\t\t\t...payload,\n\t\t\t\t\t\t\t\tmanualConfirmed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tcallbackCancelAction: (dispatch) => {\n\t\t\t\t\t\tdispatch([\n\t\t\t\t\t\t\tautobetSetActive({\n\t\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t\t\tgame: payload.game,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tautobetStop({\n\t\t\t\t\t\t\t\tgame: payload.game,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tautobetPlay(payload),\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t\tquestion: `Play next bet - game: ${payload.game} / betAmount: ${\n\t\t\t\t\t\tgetState().game.betAmount[payload.game]\n\t\t\t\t\t} / payout: ${\n\t\t\t\t\t\tgetState().game.payoutValue[payload.game]\n\t\t\t\t\t} / winChance: ${\n\t\t\t\t\t\tgetState().game.winChanceValue[payload.game]\n\t\t\t\t\t} / profit: ${getState().game.profitValue[payload.game]}`,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst data = await dispatch(sendAutoBetPlayThunk(payload)).catch(() => {\n\t\t\treturn null;\n\t\t});\n\n\t\tif (data?.bet && payload?.game) {\n\t\t\tdata.bet = parseResponseBet(payload.game, data.bet);\n\t\t}\n\n\t\tif (data?.error) {\n\t\t\t// console.log('placeBet - error', {data});\n\t\t\treturn dispatch(\n\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\tgame: payload.game,\n\t\t\t\t\tmessage: trans({ label: data.error }),\n\t\t\t\t\ttype: 'error',\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (!data?.bet) {\n\t\t\treturn dispatch(autobetSummaryConnectionError(payload));\n\t\t}\n\n\t\tif (\n\t\t\tgetState().app.visible &&\n\t\t\tdata.bet &&\n\t\t\tgame_config[payload.game].resultAnimation &&\n\t\t\tgetState().game.activeGame === payload.game &&\n\t\t\t!(\n\t\t\t\tgetState().gameAutobet.active[payload.game] &&\n\t\t\t\t!getState().options[OPTIONS.ANIMATION]\n\t\t\t)\n\t\t) {\n\t\t\t// !! This flow is used by Autobet with animation On and Autobet with animation Off\n\t\t\t//\n\t\t\t// BUGFIX: WOL-4510\n\t\t\t// Given Autobet with animation Off and unlimited bets\n\t\t\t// When user clicks STOP manually\n\t\t\t// Then 'autobetStoppedThunk' has to be called as it is not a mode with animation\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\tgetState().gameAutobet.active[payload.game] &&\n\t\t\t\t\tgetState().gameAutobet.autoBetRolling[payload.game]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// Flow: Autobet with animation Off\n\t\t\t\treturn dispatch(\n\t\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\t\tgame: payload.game,\n\t\t\t\t\t\tmessage: payload.stopped,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Flow: Autobet with animation On\n\t\t\treturn dispatch(\n\t\t\t\tbetResponseAnimation({ payload, data, lastBetTimestamp }),\n\t\t\t);\n\t\t}\n\n\t\tdispatch(\n\t\t\thandleAutobetPlayResponseThunk({ payload, data, lastBetTimestamp }),\n\t\t);\n\t};\n};\n","import { combineEpics } from 'redux-observable';\nimport { delay } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport {\n\tgetPayout,\n\tgetProfit,\n\tgetWinChanceFromPayout,\n\tisEveryGame,\n\tvalidateBetAmount,\n} from '@legacyApp/client/modules/app/gameService';\nimport { mathService } from '@legacyApp/client/modules/math/mathService';\nimport {\n\tcloseModal,\n\tmodalSetPreviousProps,\n} from '@modules/modals/store/modal.actions';\nimport { config } from '@legacyApp/client/config';\nimport {\n\tSET_CURRENCY,\n\tUSER_LOGGED,\n\tUSER_LOGOUT,\n} from '@legacyApp/client/store/user/user.constants';\nimport { showAlert } from '@legacyApp/client/store/alerts/alerts.actions';\nimport {\n\tgetActiveStrategy,\n\tgetStrategyLocalStorage,\n\tparseFetchedStrategy,\n\tupdateStrategyLocalStorage,\n} from '@legacyApp/client/modules/app/strategyService';\nimport { trans } from '@legacyApp/client/modules/translation/translate';\nimport { epic } from '@legacyApp/client/modules/app/epicService';\nimport { parseApiInfo } from '@legacyApp/client/modules/app/errorsService';\nimport {\n\tvalidatePayout,\n\tvalidateWinChance,\n} from '@legacyApp/client/modules/app/validateService';\nimport { APP_CLOSES } from '@legacyApp/client/store/app/app.constants';\nimport { sentryError } from '@legacyApp/client/modules/app/sentryService';\nimport { fetchApiAction } from '@legacyApp/client/store/fetch/fetch.thunk';\nimport {\n\tPackageType,\n\tREGISTRY_EPIC_REJECT,\n\tREGISTRY_GAME_PACKAGE,\n} from '@legacyApp/client/store/registry/registry.constants';\nimport { isPackageActive } from '@legacyApp/client/selectors/activePackageSelector.selector';\nimport { getLimits } from '@legacyApp/methods/currency/getLimits';\nimport { apiConfig } from '@server/config/api.config';\nimport { lsGet } from '@modules/localStorage/methods/lsGet';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { getSessionData } from '@legacyApp/client/modules/app/getSessionData';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { setNewMyBets } from '@legacyApp/client/store/transactions/transactions.actions';\nimport { lsSet } from '@modules/localStorage/methods/lsSet';\nimport { lsClear } from '@modules/localStorage/methods/lsClear';\nimport { LocalStorageKeys } from '@modules/localStorage/types/localStorageKeys.type';\nimport { stringToJson } from '@common/methods/stringToJson';\nimport { jsonToString } from '@common/methods/jsonToString';\nimport { diceActions } from '../dice/dice.actions';\nimport { parseSingleBetValue } from '../../methods/getWinChanceFromBetValues';\nimport { getStrategyFromState } from '../../methods/getStrategyFromState';\nimport { diceInitialState } from '../dice/diceInitialState';\nimport { getGamesList } from '../../methods/getGamesList';\nimport { updatePayoutThunk } from '../game/thunks/updatePayout.thunk';\nimport { updateWinChanceThunk } from '../game/thunks/updateWinChance.thunk';\nimport { checkGameForm } from '../gameValidation/gameValidation.actions';\nimport { switchDirectionThunk } from '../dice/thunks/switchDirection.thunk';\nimport {\n\tbetThrottled,\n\tgameSetAmountDefault,\n\tgameSetWinChanceDefault,\n\tgameUpdateAmount,\n\tgameUpdateProfit,\n} from '../game/game.actions';\nimport {\n\tBET_THROTTLED,\n\tGAME_UPDATE_AMOUNT,\n\tGAME_UPDATE_PAYOUT,\n\tSET_GAME,\n} from '../game/game.constants';\nimport {\n\tAUTOBET,\n\tAUTOBET_CLEAR,\n\tAUTOBET_PAUSE,\n\tAUTOBET_PLAY,\n\tAUTOBET_RESET_TO_DEFAULT,\n\tAUTOBET_SET_CONFIG,\n\tAUTOBET_SET_CONFIG_EASY,\n\tAUTOBET_SET_DEFAULTS,\n\tAUTOBET_SET_EDIT_MODAL,\n\tAUTOBET_SET_ROLLS,\n\tAUTOBET_STOP,\n\tAUTOBET_STOPPED,\n\tAUTOBET_SUMMARY_CONNECTION_ERROR,\n\tAUTOBET_UPDATE_CONFIG_EASY,\n\tDELETE_AUTOBET_STRATEGY,\n\tEDIT_AUTOBET_STRATEGY,\n\tGET_AUTOBET_STRATEGIES,\n\tSAVE_AUTOBET_STRATEGY,\n\tSET_AUTOBET_STRATEGIES,\n} from './gameAutobet.constants';\nimport {\n\tautobetClear,\n\tautobetPlay,\n\tautobetResetToDefault,\n\tautoBetRolling,\n\tautobetSetActive,\n\tautobetSetConfig,\n\tautobetSetConfigEasy,\n\tautobetSetCurrency,\n\tautobetSetId,\n\tautobetSetMode,\n\tautobetSetPause,\n\tautobetSetPauseData,\n\tautobetSetRollsCounter,\n\tautobetStop,\n\tgetAutobetStrategies,\n\tsetActiveAutobetStrategy,\n\tsetAutobetStrategies,\n} from './gameAutobet.actions';\nimport { applyAutoBetStrategyThunk } from './thunks/applyAutobetStrategyThunk';\nimport { autobetPlayThunk } from './thunks/autobetPlay.thunk';\nimport { autobetStoppedThunk } from './thunks/autobetStopped.thunk';\nimport { openAutobetSummaryThunk } from './thunks/openAutobetSummary.thunk';\n\nconst playEpic = epic('playEpic', {\n\tactions: (ofType) => ofType(AUTOBET_PLAY),\n\tcallback: ({ action }) => {\n\t\treturn of(autobetPlayThunk(action.payload));\n\t},\n});\n\nconst betThrottledEpic = epic('betThrottledEpic', {\n\tactions: (ofType) => ofType(BET_THROTTLED),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!store$.value.gameAutobet.autoBetThrottle[action.payload.game]) {\n\t\t\treturn of(autobetPlay(action.payload));\n\t\t}\n\t\tconst timeout =\n\t\t\taction.payload.lastBetTimestamp +\n\t\t\tstore$.value.gameAutobet.autoBetThrottle[action.payload.game] -\n\t\t\tnew Date().getTime();\n\t\tif (timeout <= 0) {\n\t\t\treturn of(autobetPlay(action.payload));\n\t\t}\n\t\treturn of(autobetPlay(action.payload)).pipe(delay(timeout));\n\t},\n});\n\nconst autobetEpic = epic('autobetEpic', {\n\tactions: (ofType) => ofType(AUTOBET),\n\tcallback: ({ action, store$ }) => {\n\t\tconst result = [];\n\t\tconst game = action.payload.game;\n\t\tif (action.payload.stopped) {\n\t\t\t// autobet stopped in API\n\t\t\treturn of([\n\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\tgame,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\taction.payload.stopped === true\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: action.payload.stopped,\n\t\t\t\t\tid: store$.value.gameAutobet.id[game],\n\t\t\t\t}),\n\t\t\t\tautobetSetId(game, false),\n\t\t\t]).pipe(delay(config.autobetStoppedFromApiDelay)); // delay allows betResult to resolve all statistics to save proper data in session modal\n\t\t}\n\t\tif (!action.payload.bet) {\n\t\t\t// response error\n\t\t\tresult.push(\n\t\t\t\tautoBetRolling({\n\t\t\t\t\tgame,\n\t\t\t\t\tvalue: false,\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn result;\n\t\t}\n\n\t\tif (\n\t\t\tgame === 'dice' &&\n\t\t\taction.payload.nextBet.rule &&\n\t\t\taction.payload.nextBet.rule !== store$.value.dice.rollDirection\n\t\t) {\n\t\t\t// switch direction\n\t\t\tresult.push(switchDirectionThunk());\n\t\t}\n\n\t\t// console.log('updateWinChanceAction', {\n\t\t// new: action.payload.nextBet.win_chance,\n\t\t// old: store$.value.game.winChanceValue[game],\n\t\t// game,\n\t\t// });\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.win_chance,\n\t\t\t\tstore$.value.game.winChanceValue[game],\n\t\t\t)\n\t\t) {\n\t\t\t// switch direction\n\t\t\tif (!validateWinChance(action.payload.nextBet.win_chance, game).error) {\n\t\t\t\t// TODO: NEW GAME FLAG\n\t\t\t\tif (game === 'dice') {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\t// TODO: range_dice\n\t\t\t\t\t\tdiceActions.singleValueUpdate(\n\t\t\t\t\t\t\tparseSingleBetValue(\n\t\t\t\t\t\t\t\tparseFloat(action.payload.nextBet.win_chance),\n\t\t\t\t\t\t\t\t'under',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\tupdateWinChanceThunk(action.payload.nextBet.win_chance, game),\n\t\t\t\t\tupdatePayoutThunk(\n\t\t\t\t\t\tgetPayout(action.payload.nextBet.win_chance, game),\n\t\t\t\t\t\tgame,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.multiplier,\n\t\t\t\tstore$.value.game.payoutValue[game],\n\t\t\t)\n\t\t) {\n\t\t\t// switch direction\n\t\t\tif (!validatePayout(action.payload.nextBet.multiplier, game).error) {\n\t\t\t\t// TODO: NEW GAME FLAG\n\t\t\t\tconst winChance = getWinChanceFromPayout(\n\t\t\t\t\taction.payload.nextBet.multiplier,\n\t\t\t\t\tgame,\n\t\t\t\t);\n\t\t\t\tif (game === 'dice') {\n\t\t\t\t\t// TODO: range_dice\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\tdiceActions.singleValueUpdate(\n\t\t\t\t\t\t\tparseSingleBetValue(parseFloat(winChance), 'under'),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\tupdateWinChanceThunk(winChance, game),\n\t\t\t\t\tupdatePayoutThunk(action.payload.nextBet.multiplier, game),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tisTrueOrZero(action.payload.nextBet.counter) &&\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.counter,\n\t\t\t\tstore$.value.gameAutobet.rollsCounter[game],\n\t\t\t)\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tautobetSetRollsCounter({\n\t\t\t\t\tvalue: action.payload.nextBet.counter,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\t// console.log('gameUpdateAmount', {\n\t\t// new: action.payload.nextBet.amount,\n\t\t// old: store$.value.game.betAmount[game],\n\t\t// game,\n\t\t// bool: mathService.isNumberDiff(action.payload.nextBet.amount, store$.value.game.betAmount[game]),\n\t\t// valid: validateBetAmount(action.payload.nextBet.amount, store$.value.balances, true, action.payload.bet.wallet, true),\n\t\t// });\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.amount,\n\t\t\t\tstore$.value.game.betAmount[game],\n\t\t\t)\n\t\t) {\n\t\t\tconst maxProfit = getLimits({\n\t\t\t\tcurrency: action.payload.bet.currency,\n\t\t\t\tgame,\n\t\t\t})?.profit_maximum;\n\t\t\tconst isProfitExceeded =\n\t\t\t\tmaxProfit &&\n\t\t\t\tgetProfit(\n\t\t\t\t\tparseFloat(action.payload.nextBet.amount),\n\t\t\t\t\tgetPayout(\n\t\t\t\t\t\tparseFloat(action.payload.nextBet.win_chance) ||\n\t\t\t\t\t\t\tstore$.value.game.winChanceValue[game],\n\t\t\t\t\t\tgame,\n\t\t\t\t\t),\n\t\t\t\t) > maxProfit;\n\t\t\tconst validateResult = validateBetAmount({\n\t\t\t\tvalue: action.payload.nextBet.amount,\n\t\t\t\tbalances: store$.value.balance.balancesArray,\n\t\t\t\tisLogged: true,\n\t\t\t\tcurrency: action.payload.bet.currency,\n\t\t\t\tcheckBalance: true,\n\t\t\t\tgame,\n\t\t\t});\n\t\t\tif (!validateResult.error && !isProfitExceeded) {\n\t\t\t\tresult.push(\n\t\t\t\t\tgameUpdateAmount({\n\t\t\t\t\t\tgame,\n\t\t\t\t\t\tvalue: action.payload.nextBet.amount,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst data = {\n\t\t\tgame,\n\t\t\tcurrency: action.payload.currency,\n\t\t\trule: action.payload.rule,\n\t\t\tlastBetTimestamp: action.payload.lastBetTimestamp,\n\t\t};\n\n\t\t// console.log('autobet_check', {\n\t\t// data,\n\t\t// payload: action.payload,\n\t\t// });\n\n\t\tstore$.value.gameAutobet.autoBetThrottle[game]\n\t\t\t? result.push(betThrottled(data))\n\t\t\t: result.push(autobetPlay(data));\n\n\t\treturn of(result);\n\t},\n});\n\nconst autobetStoppedEpic = epic('autobetStoppedEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOPPED),\n\tcallback: ({ action, store$ }) => {\n\t\tconst myBets = lsGet(LocalStorageKeys.NEW_MY_BETS);\n\t\tconst result = [\n\t\t\tautobetClear({\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t];\n\t\tif (myBets?.length > 0) {\n\t\t\tresult.push(setNewMyBets(lsGet(LocalStorageKeys.NEW_MY_BETS)));\n\t\t\tlsClear(LocalStorageKeys.NEW_MY_BETS);\n\t\t}\n\t\tif (store$.value.options[OPTIONS.AUTOBET_SUMMARY]) {\n\t\t\tresult.push(\n\t\t\t\topenAutobetSummaryThunk({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...getSessionData(action.payload.game, store$.value),\n\t\t\t\t\t\tstrategy: getStrategyFromState(\n\t\t\t\t\t\t\tstore$.value,\n\t\t\t\t\t\t\taction.payload.game,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tstop_reason: action.payload.message,\n\t\t\t\t\t},\n\t\t\t\t\tid:\n\t\t\t\t\t\taction.payload.id ||\n\t\t\t\t\t\tstore$.value.gameAutobet.id[action.payload.game],\n\t\t\t\t\tgame: action.payload.game,\n\t\t\t\t\ttype: action.payload.type,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst autobetClearEpic = epic('autobetClearEpic', {\n\tactions: (ofType) => ofType(AUTOBET_CLEAR),\n\tcallback: ({ action }) => {\n\t\treturn of([\n\t\t\tautobetSetActive({\n\t\t\t\tvalue: false,\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t\tautobetSetRollsCounter({\n\t\t\t\tvalue: 0,\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t\tautobetStop({\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t]);\n\t},\n});\n\nconst resetDefaultsEpic = epic('resetDefaultsEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOPPED),\n\tcallback: ({ action }) => {\n\t\treturn of(autobetResetToDefault(action.payload.game));\n\t},\n});\n\nconst getStrategiesEpic = epic('getStrategiesEpic', {\n\tactions: (ofType) => ofType(GET_AUTOBET_STRATEGIES),\n\tcallback: () => {\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: '/user/strategies',\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t},\n\t\t\t\t\tloaderId: 'getAutobetStrategies',\n\t\t\t\t\tdisableErrorHandler: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\tif (!data?.strategies) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tsetAutobetStrategies(\n\t\t\t\t\t\t\tdata.strategies.map((el) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...parseFetchedStrategy(stringToJson(el.body, {})),\n\t\t\t\t\t\t\t\t\tname: el.name,\n\t\t\t\t\t\t\t\t\tid: el.uuid,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst saveStrategyEpic = epic('saveStrategyEpic', {\n\tactions: (ofType) => ofType(SAVE_AUTOBET_STRATEGY),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!action.payload.name) {\n\t\t\treturn of(showAlert('error', 'Please, type strategy name'));\n\t\t}\n\t\tconst name = action.payload.name;\n\t\tconst body = action.payload;\n\t\tdelete body.name;\n\t\tconst duplicate = getActiveStrategy({\n\t\t\tstate: store$.value,\n\t\t\tstrategy: body,\n\t\t});\n\t\t// console.log({duplicate, name, body});\n\t\tif (duplicate) {\n\t\t\treturn of(\n\t\t\t\tshowAlert(\n\t\t\t\t\t'error',\n\t\t\t\t\ttrans({\n\t\t\t\t\t\tlabel: 'You have already saved this strategy as {{strategyName}}',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tstrategyName: duplicate.name,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tcloseModal(),\n\t\t\t\tautobetSetMode('strategies'),\n\t\t\t);\n\t\t}\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: '/user/strategy',\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tloaderId: 'saveAutobetStrategy',\n\t\t\t\t\tlockByModal: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\t// data = {\n\t\t\t\t\t// strategy: {\n\t\t\t\t\t// ...action.payload,\n\t\t\t\t\t// id: `32ok5n${new Date().getTime()}23o5n2o`,\n\t\t\t\t\t// }\n\t\t\t\t\t// };\n\t\t\t\t\tif (!data || !data.strategy) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\tconst result = [\n\t\t\t\t\t\tsetAutobetStrategies([\n\t\t\t\t\t\t\t...store$.value.gameAutobet.strategies,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...parseFetchedStrategy(stringToJson(data.strategy.body, {})),\n\t\t\t\t\t\t\t\tname: data.strategy.name,\n\t\t\t\t\t\t\t\tid: data.strategy.uuid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tcloseModal(),\n\t\t\t\t\t\tautobetSetMode('strategies'),\n\t\t\t\t\t];\n\t\t\t\t\tif (action.setActive) {\n\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\t\t\t\tvalue: data.strategy.uuid,\n\t\t\t\t\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst editStrategyEpic = epic('editStrategyEpic', {\n\tactions: (ofType) => ofType(EDIT_AUTOBET_STRATEGY),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!store$.value.user.isLogged || !action.payload.name) {\n\t\t\treturn of();\n\t\t}\n\t\tconst { name, id, ...body } = action.payload;\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: '/user/strategy',\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tbody: jsonToString(body),\n\t\t\t\t\t\t\tuuid: id,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'PATCH',\n\t\t\t\t\tloaderId: 'editAutobetStrategy',\n\t\t\t\t\tlockByModal: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\tif (!data || !data.strategy) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\tconst result = [\n\t\t\t\t\t\tsetAutobetStrategies(\n\t\t\t\t\t\t\tstore$.value.gameAutobet.strategies.map((el) => {\n\t\t\t\t\t\t\t\treturn el.id === data.strategy.uuid\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...parseFetchedStrategy(\n\t\t\t\t\t\t\t\t\t\t\t\tstringToJson(data.strategy.body, {}),\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tname: data.strategy.name,\n\t\t\t\t\t\t\t\t\t\t\tid: data.strategy.uuid,\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t: el;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcloseModal(),\n\t\t\t\t\t\tautobetSetMode('strategies'),\n\t\t\t\t\t];\n\t\t\t\t\tif (action.setActive) {\n\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\t\t\t\tvalue: data.strategy.uuid,\n\t\t\t\t\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst deleteStrategyEpic = epic('deleteStrategyEpic', {\n\tactions: (ofType) => ofType(DELETE_AUTOBET_STRATEGY),\n\tcallback: ({ action, store$ }) => {\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: `/user/strategy/${action.payload}`,\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\tloaderId: `deleteAutobetStrategy_${action.payload}`,\n\t\t\t\t\tlockByModal: true,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tsetAutobetStrategies(\n\t\t\t\t\t\t\tstore$.value.gameAutobet.strategies\n\t\t\t\t\t\t\t\t.filter((el) => el.id !== action.payload)\n\t\t\t\t\t\t\t\t.map((el) => parseFetchedStrategy(el)),\n\t\t\t\t\t\t),\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst checkIsStrategyToSaveEpic = epic('checkIsStrategyToSaveEpic', {\n\tactions: (ofType) =>\n\t\tofType(\n\t\t\tGAME_UPDATE_AMOUNT,\n\t\t\tSET_CURRENCY,\n\t\t\tGAME_UPDATE_PAYOUT,\n\t\t\tAUTOBET_SET_CONFIG,\n\t\t\tAUTOBET_SET_CONFIG_EASY,\n\t\t\tSET_AUTOBET_STRATEGIES,\n\t\t\tdiceActions.ruleUpdate().type,\n\t\t),\n\tcallback: ({ action, store$ }) => {\n\t\tif (\n\t\t\taction.type === AUTOBET_SET_CONFIG &&\n\t\t\t(action.betType === 'all' || action.dataType === 'all')\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tif (\n\t\t\tstore$.value.gameAutobet.autoBetRolling[store$.value.game.activeGame] ||\n\t\t\tstore$.value.gameAutobet.checkStrategyDisabled\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst currentStrategy = getActiveStrategy({\n\t\t\tstate: store$.value,\n\t\t});\n\t\t// console.log({\n\t\t// type: action.type,\n\t\t// currentStrategy,\n\t\t// activeStrategy: store$.value.gameAutobet.activeStrategy\n\t\t// });\n\t\tif (\n\t\t\tcurrentStrategy &&\n\t\t\tcurrentStrategy.id !==\n\t\t\t\tstore$.value.gameAutobet.activeStrategy[store$.value.game.activeGame]\n\t\t) {\n\t\t\treturn of(\n\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\tvalue: currentStrategy.id,\n\t\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn of(\n\t\t\tsetActiveAutobetStrategy({\n\t\t\t\tvalue: false,\n\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst betConnectionErrorEpic = epic('betConnectionErrorEpic', {\n\tactions: (ofType) => ofType(AUTOBET_SUMMARY_CONNECTION_ERROR),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!store$.value.gameAutobet.active[action.bet.game]) {\n\t\t\treturn of();\n\t\t}\n\t\tconst type = action.data && action.data.message ? 'info' : 'error';\n\t\tif (\n\t\t\t(store$.value.gameAutobet.active[action.bet.game] !== 'auto' &&\n\t\t\t\taction.bet.game) ||\n\t\t\t!store$.value.gameAutobet.id[action.bet.game]\n\t\t) {\n\t\t\tconst parsed = parseApiInfo(action.data);\n\t\t\tconst message =\n\t\t\t\taction.data?.text || !parsed\n\t\t\t\t\t? trans({\n\t\t\t\t\t\t\tlabel: 'Connection error, placing {{gameName}} bet failed',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tgameName: action.bet.game,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t })\n\t\t\t\t\t: parsed;\n\t\t\tconst actions = [\n\t\t\t\tautobetClear({\n\t\t\t\t\tgame: action.bet.game,\n\t\t\t\t}),\n\t\t\t];\n\t\t\tif (message) {\n\t\t\t\tactions.push(showAlert(type, message));\n\t\t\t} else {\n\t\t\t\tsentryError(\n\t\t\t\t\tnew Error('AUTOBET_SUMMARY_CONNECTION_ERROR'),\n\t\t\t\t\t{ action },\n\t\t\t\t\tstore$.value,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tstore$.value.gameAutobet.active[action.bet.game] &&\n\t\t\t\t!store$.value.modal?.id\n\t\t\t) {\n\t\t\t\tactions.push(\n\t\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\t\tgame: action?.bet?.game || store$.value.game?.activeGame,\n\t\t\t\t\t\tmessage: trans({\n\t\t\t\t\t\t\tlabel: 'Connection error - unknown session',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn of(actions);\n\t\t}\n\t\t// sentryError(jsonToString(action.data.message) || 'Connection error, autobet session stopped', {\n\t\t// action,\n\t\t// message: action.data.message,\n\t\t// sessions: store$.value.gameAutobet.id,\n\t\t// strategy: getStrategyFromState(store$.value, action.bet.game, true),\n\t\t// });\n\t\treturn of(\n\t\t\topenAutobetSummaryThunk({\n\t\t\t\tdata: {\n\t\t\t\t\t...action.bet,\n\t\t\t\t\t...(action.bet.lastBetTimestamp\n\t\t\t\t\t\t? getSessionData(action.bet.game, store$.value)\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tstop_reason: parseApiInfo(\n\t\t\t\t\t\taction.data?.message || 'Connection error, autobet session stopped',\n\t\t\t\t\t),\n\t\t\t\t\tstrategy: getStrategyFromState(store$.value, action.bet.game, true),\n\t\t\t\t},\n\t\t\t\tgame: action.bet.game,\n\t\t\t\tid: action.bet.lastBetTimestamp\n\t\t\t\t\t? store$.value.gameAutobet.id[action.bet.game]\n\t\t\t\t\t: undefined,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst pauseEpic = epic('pauseEpic', {\n\tactions: (ofType) => ofType(AUTOBET_PAUSE),\n\tcallback: ({ action, store$ }) => {\n\t\tif (\n\t\t\tisEveryGame(store$.value.gameAutobet.autoBetRolling, (value) => !value)\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tif (\n\t\t\tisEveryGame(\n\t\t\t\tstore$.value.gameAutobet.active,\n\t\t\t\t(value) => !value || value === 'flash',\n\t\t\t)\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst result = [];\n\t\tif (action.payload === !store$.value.gameAutobet.pause) {\n\t\t\tconst message = action.payload ? 'paused' : 'restarted';\n\t\t\tresult.push(\n\t\t\t\tautobetSetPause(action.payload),\n\t\t\t\tshowAlert('info', `Autobet ${message}`),\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\t!action.payload &&\n\t\t\t!isEveryGame(store$.value.gameAutobet.pauseData, (value) => !value)\n\t\t) {\n\t\t\tObject.keys(store$.value.gameAutobet.pauseData).map((game) => {\n\t\t\t\tconst data = store$.value.gameAutobet.pauseData[game];\n\t\t\t\tif (data) {\n\t\t\t\t\tresult.push(autobetPlay(data));\n\t\t\t\t}\n\t\t\t});\n\t\t\tresult.push(autobetSetPauseData(false));\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst updateConfigEasyEpic = epic('updateConfigEasyEpic', {\n\tactions: (ofType) => ofType(AUTOBET_UPDATE_CONFIG_EASY),\n\tcallback: ({ action, store$ }) => {\n\t\tconst newConfig = [\n\t\t\t...store$.value.gameAutobet.configEasy[store$.value.game.activeGame],\n\t\t];\n\t\tnewConfig[action.payload.index] = action.payload.data;\n\t\treturn of(\n\t\t\tautobetSetConfigEasy({\n\t\t\t\tvalue: newConfig,\n\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst stopEpic = epic('stopEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOP),\n\tcallback: ({ store$, action }) => {\n\t\tif (\n\t\t\t!store$.value.gameAutobet.id[action.payload.game] &&\n\t\t\t!action.payload.id\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: {\n\t\t\t\t\t\tapiUrl: apiConfig.autobetUrl,\n\t\t\t\t\t\turi: `/v2/${action.payload.game}/auto/stop`,\n\t\t\t\t\t},\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tuuid:\n\t\t\t\t\t\t\t\taction.payload.id ||\n\t\t\t\t\t\t\t\tstore$.value.gameAutobet.id[action.payload.game],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tloaderId: 'autoBetStop',\n\t\t\t\t\tdisableErrorHandler: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdata.status &&\n\t\t\t\t\t\tdata.status >= 400 &&\n\t\t\t\t\t\tdata.status < 500 &&\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t403, // Game in progress\n\t\t\t\t\t\t\t429, // Rate exceeded\n\t\t\t\t\t\t].indexOf(data.status) === -1\n\t\t\t\t\t) {\n\t\t\t\t\t\tsentryError(\n\t\t\t\t\t\t\tnew Error(`${data.status} - Unnecessary AUTOBET_STOP`),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\tsessions: store$.value.gameAutobet.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstore$.value,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst actions = [];\n\t\t\t\t\tif (data && data.status < 400) {\n\t\t\t\t\t\tactions.push(autobetSetId(action.payload.game, false));\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...actions,\n\t\t\t\t\t\t...(action.payload.actions && action.payload.actions.length\n\t\t\t\t\t\t\t? action.payload.actions\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst stopRollingEpic = epic('stopRollingEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOP),\n\tcallback: ({ action }) => {\n\t\treturn of(\n\t\t\tautoBetRolling({\n\t\t\t\tvalue: false,\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst resetToDefaultEpic = epic('resetToDefaultEpic', {\n\tactions: (ofType) => ofType(AUTOBET_RESET_TO_DEFAULT),\n\tcallback: ({ action, store$ }) => {\n\t\tconst game = action.payload;\n\t\tconst payout =\n\t\t\tgame === 'limbo'\n\t\t\t\t? store$.value.limbo.defaultPayout\n\t\t\t\t: getPayout(store$.value.game.defaultWinChanceValue[game], game);\n\t\tconst result = [\n\t\t\tgameUpdateAmount({\n\t\t\t\tvalue: store$.value.game.defaultBetAmount[game],\n\t\t\t\tgame,\n\t\t\t}),\n\t\t\tupdateWinChanceThunk(store$.value.game.defaultWinChanceValue[game], game),\n\t\t\tupdatePayoutThunk(payout, game),\n\t\t\tgameUpdateProfit({\n\t\t\t\tvalue: getProfit(\n\t\t\t\t\tstore$.value.game.defaultBetAmount[game],\n\t\t\t\t\tstore$.value.game.payoutValue[game],\n\t\t\t\t),\n\t\t\t\tgame,\n\t\t\t}),\n\t\t];\n\t\t// TODO: NEW GAME FLAG\n\t\tif (game === 'dice') {\n\t\t\tconst betValue = lsGet(LocalStorageKeys.DICE_BET_VALUE_DEFAULT);\n\t\t\tlsClear(LocalStorageKeys.DICE_BET_VALUE_DEFAULT);\n\t\t\tif (betValue?.singleUnder) {\n\t\t\t\tresult.push(\n\t\t\t\t\tdiceActions.singleValueUpdate(betValue.singleUnder),\n\t\t\t\t\tdiceActions.doubleValueUpdate(betValue.double),\n\t\t\t\t\tdiceActions.quadrupleValueUpdate(betValue.quadruple),\n\t\t\t\t);\n\t\t\t}\n\t\t\tresult.push(\n\t\t\t\tdiceActions.ruleUpdate(store$.value.dice.rollDefaultDirection),\n\t\t\t);\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst setDefaultsEpic = epic('setDefaultsEpic', {\n\tactions: (ofType) => ofType(AUTOBET_SET_DEFAULTS),\n\tcallback: ({ action, store$ }) => {\n\t\tconst game = action.payload;\n\t\tconst result = [];\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\tstore$.value.game.defaultBetAmount[game],\n\t\t\t\tstore$.value.game.betAmount[game],\n\t\t\t)\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tgameSetAmountDefault({\n\t\t\t\t\tvalue: store$.value.game.betAmount[game].toString(),\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\tstore$.value.game.defaultWinChanceValue[game],\n\t\t\t\tstore$.value.game.winChanceValue[game],\n\t\t\t)\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tgameSetWinChanceDefault({\n\t\t\t\t\tvalue: store$.value.game.winChanceValue[game].toString(),\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tstore$.value.gameAutobet.currency[game] !==\n\t\t\tstore$.value.user.activeCurrency\n\t\t) {\n\t\t\tresult.push(autobetSetCurrency(game, store$.value.user.activeCurrency));\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst editStrategyModalEpic = epic('editStrategyModalEpic', {\n\tactions: (ofType) => ofType(AUTOBET_SET_EDIT_MODAL),\n\tcallback: ({ action, store$ }) => {\n\t\treturn of(\n\t\t\tmodalSetPreviousProps({\n\t\t\t\t...store$.value.modal?.previous?.props,\n\t\t\t\tstrategy: {\n\t\t\t\t\t...store$.value.modal.previous?.props?.strategy,\n\t\t\t\t\t[action.payload.key]: action.payload.value,\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst closesEpic = epic('closesEpic', {\n\tactions: (ofType) => ofType(APP_CLOSES, REGISTRY_EPIC_REJECT),\n\tcallback: ({ action, store$ }) => {\n\t\t// console.log('closesEpic', action);\n\t\tif (action.payload && action.payload !== 'gameAutobet') {\n\t\t\treturn of();\n\t\t}\n\t\tif (!store$.value.user.isLogged) {\n\t\t\treturn of();\n\t\t}\n\t\tlsSet(LocalStorageKeys.AUTO_SESSIONS, store$.value.gameAutobet.id);\n\t\treturn of();\n\t},\n});\n\nconst localStrategyEpic = epic('localStrategyEpic', {\n\tactions: (ofType) =>\n\t\tofType(\n\t\t\tSET_CURRENCY,\n\t\t\tGAME_UPDATE_AMOUNT,\n\t\t\tGAME_UPDATE_PAYOUT,\n\t\t\tAUTOBET_SET_CONFIG,\n\t\t\tAUTOBET_SET_CONFIG_EASY,\n\t\t\tAUTOBET_SET_ROLLS,\n\t\t),\n\tcallback: ({ store$ }) => {\n\t\tif (!store$.value.user.isLogged) {\n\t\t\treturn of();\n\t\t}\n\t\tupdateStrategyLocalStorage(store$.value);\n\t\treturn of();\n\t},\n});\n\nconst initStrategyEpic = epic('initStrategyEpic', {\n\tactions: (ofType) => ofType(REGISTRY_GAME_PACKAGE, USER_LOGGED),\n\tcallback: ({ store$ }) => {\n\t\tif (\n\t\t\t!store$.value.user.isLogged ||\n\t\t\t!isPackageActive(store$.value, PackageType.GAME)\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst result = [getAutobetStrategies()];\n\t\tgetGamesList().forEach((game) => {\n\t\t\tconst strategy = getStrategyLocalStorage(game);\n\t\t\tif (strategy && !game_config[game].noAutobet) {\n\t\t\t\tif (strategy.configExpert) {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\tautobetSetConfig({\n\t\t\t\t\t\t\tvalue: [...(strategy.configExpert || [])],\n\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (strategy.configEasy) {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\tautobetSetConfigEasy({\n\t\t\t\t\t\t\tvalue: [...(strategy.configEasy || [])],\n\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdelete strategy.configExpert;\n\t\t\t\tdelete strategy.configEasy;\n\t\t\t\tdelete strategy.config;\n\t\t\t\tresult.push(\n\t\t\t\t\tapplyAutoBetStrategyThunk({\n\t\t\t\t\t\t...strategy,\n\t\t\t\t\t\tgame,\n\t\t\t\t\t\tnoConfig: true,\n\t\t\t\t\t\tnoGameRelated: true,\n\t\t\t\t\t}),\n\t\t\t\t\tcheckGameForm(game, true),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\tObject.keys(store$.value.gameAutobet.id).forEach((key) => {\n\t\t\tif (store$.value.gameAutobet.id[key]) {\n\t\t\t\tresult.push(\n\t\t\t\t\tautobetStop({\n\t\t\t\t\t\tgame: key,\n\t\t\t\t\t\tid: store$.value.gameAutobet.id[key],\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\treturn of(result);\n\t},\n});\n\nconst logoutEpic = epic('logoutEpic', {\n\tactions: (ofType) => ofType(USER_LOGOUT),\n\tcallback: () => {\n\t\tupdateStrategyLocalStorage();\n\t\tdiceInitialState.clearState();\n\t\treturn of();\n\t},\n});\n\nconst disableModeEpic = epic('disableModeEpic', {\n\tactions: (ofType) => ofType(SET_GAME),\n\tcallback: ({ store$, action }) => {\n\t\tif (action.payload) {\n\t\t\treturn of();\n\t\t}\n\t\treturn of(\n\t\t\tObject.keys(store$.value.gameAutobet.active)\n\t\t\t\t.filter(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tstore$.value.gameAutobet.active[key] &&\n\t\t\t\t\t\t!store$.value.gameAutobet.autoBetRolling[key],\n\t\t\t\t)\n\t\t\t\t.map((key) =>\n\t\t\t\t\tautobetClear({\n\t\t\t\t\t\tgame: key,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t);\n\t},\n});\n\nconst gameAutobetEpic = combineEpics(\n\tautobetEpic,\n\tpauseEpic,\n\tresetDefaultsEpic,\n\tgetStrategiesEpic,\n\tcheckIsStrategyToSaveEpic,\n\tsaveStrategyEpic,\n\tdeleteStrategyEpic,\n\tbetConnectionErrorEpic,\n\teditStrategyEpic,\n\tplayEpic,\n\tbetThrottledEpic,\n\tautobetStoppedEpic,\n\tupdateConfigEasyEpic,\n\tstopEpic,\n\tresetToDefaultEpic,\n\tsetDefaultsEpic,\n\teditStrategyModalEpic,\n\tstopRollingEpic,\n\tclosesEpic,\n\tinitStrategyEpic,\n\tlogoutEpic,\n\tautobetClearEpic,\n\tdisableModeEpic,\n\tlocalStrategyEpic,\n);\n\nexport default gameAutobetEpic;\n","import Redux from 'redux';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport {\n\tgetStrategyGame,\n\tupdateStrategyWithValidation,\n} from '@legacyApp/client/modules/app/strategyV3Service';\nimport { validatePayout } from '@legacyApp/client/modules/app/validateService';\nimport {\n\tgetMinBetAmount,\n\tgetProfit,\n\tgetWinChanceFromPayout,\n} from '@legacyApp/client/modules/app/gameService';\nimport { setCurrency } from '@legacyApp/client/store/user/user.actions';\nimport { mathService } from '@legacyApp/client/modules/math/mathService';\nimport { kenoActions } from '@modules/games/Game/store/keno/keno.actions';\nimport { parseSingleBetValue } from '../../../methods/getWinChanceFromBetValues';\nimport { diceActions } from '../../dice/dice.actions';\nimport {\n\tautobetSetConfig,\n\tautobetSetConfigEasy,\n\tautobetSetMode,\n\tautobetSetRolls,\n\tdisableCheckAutobetStrategy,\n\tsetActiveAutobetStrategy,\n} from '../gameAutobet.actions';\nimport {\n\tgameUpdateAmount,\n\tgameUpdatePayout,\n\tgameUpdateProfit,\n\tgameUpdateWinChance,\n} from '../../game/game.actions';\nimport { GameStrategy } from '../../../types/GameStrategy';\nimport { RollRule } from '../../../types/RollRule';\nimport { GameType } from '../../../constants/availableGames';\nimport { mapBetValuesDTO } from '../../../methods/mapBetValuesDTO';\nimport { updateBetValueThunk } from '../../dice/thunks/updateBetValue.thunk';\nimport { plinkoActions } from '../../plinko/plinko.actions';\nimport { checkExpertConfig } from '../../../methods/checkExpertConfig';\n\ninterface ApplyGameStrategy extends GameStrategy {\n\tnoConfig?: boolean;\n\tnoGameRelated?: boolean;\n}\n\nexport const applyAutoBetStrategyThunk = (\n\tdata: string | ApplyGameStrategy,\n): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst strategy: ApplyGameStrategy =\n\t\t\ttypeof data === 'string'\n\t\t\t\t? state.gameAutobet.strategies.find((el) => el.id === data)\n\t\t\t\t: data;\n\t\tconst game =\n\t\t\tstrategy && strategy.game\n\t\t\t\t? strategy.game\n\t\t\t\t: state.game.activeGame || getStrategyGame(strategy);\n\t\tconst result: Array<Redux.AnyAction | AppThunk> = [\n\t\t\tdisableCheckAutobetStrategy(true),\n\t\t];\n\n\t\tconst expert = checkExpertConfig(strategy.config);\n\t\tif (!strategy.noConfig) {\n\t\t\tresult.push(\n\t\t\t\t...[\n\t\t\t\t\texpert\n\t\t\t\t\t\t? autobetSetConfig({\n\t\t\t\t\t\t\t\tvalue: updateStrategyWithValidation(\n\t\t\t\t\t\t\t\t\tstrategy.config,\n\t\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t\t\t\tstrategy.rollDirection,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: autobetSetConfigEasy({\n\t\t\t\t\t\t\t\tvalue: strategy.config,\n\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t }),\n\t\t\t\t\tautobetSetMode(expert ? 'expert' : 'easy'),\n\t\t\t\t],\n\t\t\t);\n\t\t}\n\n\t\tconst payout = validatePayout(\n\t\t\tstrategy.payoutValue || state.game.payoutValue[game],\n\t\t\tgame,\n\t\t).amount;\n\t\tconst betAmount =\n\t\t\tstrategy.betAmount ||\n\t\t\tgetMinBetAmount({\n\t\t\t\tgame,\n\t\t\t\tcurrency: strategy.currency || state.user.activeCurrency,\n\t\t\t});\n\t\tconst winChance = getWinChanceFromPayout(payout, game);\n\t\tconst profit = getProfit(betAmount, payout);\n\t\tconst rule = strategy.rollDirection || RollRule.OVER;\n\n\t\tif (strategy.currency && state.user.activeCurrency !== strategy.currency) {\n\t\t\tresult.push(setCurrency(strategy.currency));\n\t\t}\n\n\t\tif (strategy.id && state.gameAutobet.activeStrategy[game] !== strategy.id) {\n\t\t\tresult.push(\n\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\tvalue: strategy.id,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.betAmount[game], betAmount)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdateAmount({\n\t\t\t\t\tvalue: betAmount,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.payoutValue[game], payout)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdatePayout({\n\t\t\t\t\tvalue: payout,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.winChanceValue[game], winChance)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdateWinChance({\n\t\t\t\t\tvalue: winChance,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\t// TODO: NEW GAME FLAG\n\t\tif (game === GameType.DICE && !strategy.noGameRelated) {\n\t\t\tif (strategy.betValues) {\n\t\t\t\tconst betValues = mapBetValuesDTO(strategy.betValues);\n\t\t\t\tresult.push(updateBetValueThunk(betValues, rule));\n\t\t\t} else {\n\t\t\t\tconst betValue = parseSingleBetValue(winChance, rule);\n\t\t\t\tif (state.dice.betValue.singleUnder !== betValue) {\n\t\t\t\t\tresult.push(updateBetValueThunk([betValue], rule));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (game === GameType.PLINKO && !strategy.noGameRelated) {\n\t\t\tif (strategy.risk) {\n\t\t\t\tresult.push(plinkoActions.riskUpdate(strategy.risk));\n\t\t\t}\n\t\t\tif (strategy.rows) {\n\t\t\t\tresult.push(plinkoActions.linesUpdate(strategy.rows));\n\t\t\t}\n\t\t}\n\n\t\tif (game === GameType.KENO && !strategy.noGameRelated) {\n\t\t\tif (strategy.risk) {\n\t\t\t\tresult.push(kenoActions.riskUpdate(strategy.risk));\n\t\t\t}\n\t\t\tif (strategy.selected) {\n\t\t\t\tresult.push(kenoActions.selectedNumbersUpdate(strategy.selected));\n\t\t\t}\n\t\t}\n\n\t\tif (!strategy.noGameRelated && rule && state.dice.rollDirection !== rule) {\n\t\t\tresult.push(diceActions.ruleUpdate(rule));\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.profitValue[game], profit)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdateProfit({\n\t\t\t\t\tvalue: profit,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tresult.push(\n\t\t\t...[\n\t\t\t\tautobetSetRolls(strategy.rolls || 0),\n\t\t\t\tdisableCheckAutobetStrategy(false),\n\t\t\t],\n\t\t);\n\n\t\tresult.forEach((action) => {\n\t\t\tdispatch(action);\n\t\t});\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { betResult } from '../../game/game.actions';\nimport { autobet } from '../gameAutobet.actions';\nimport { AutobetResponseProps } from '../@types/AutobetResponseProps';\n\nexport const handleAutobetPlayResponseThunk = (\n\tprops: AutobetResponseProps,\n): AppThunk => {\n\treturn (dispatch) => {\n\t\tconst { data, payload, lastBetTimestamp } = props;\n\t\tdispatch(\n\t\t\tbetResult({\n\t\t\t\tdata: {\n\t\t\t\t\tbet: data.bet,\n\t\t\t\t\tuserBalance: data.userBalance,\n\t\t\t\t},\n\t\t\t\tlastBet: data.bet,\n\t\t\t\tauto: true,\n\t\t\t}),\n\t\t);\n\t\tdispatch(\n\t\t\tautobet({\n\t\t\t\t...payload,\n\t\t\t\tbet: data.bet,\n\t\t\t\tuserBalance: data.userBalance,\n\t\t\t\tnextBet: data.nextBet\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...data.nextBet,\n\t\t\t\t\t\t\tcounter: data.nextBet.rolls,\n\t\t\t\t\t }\n\t\t\t\t\t: {},\n\t\t\t\tstopped: data.stopReason, // stopped with reason\n\t\t\t\tlastBetTimestamp,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { openModal } from '@modules/modals/store/modal.actions';\nimport { MODAL_ID } from '@common/constants/modal/ids.modal.constants';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { CurrencyType } from '@legacyApp/types/wallet/CurrencyType';\nimport { UserType } from '@legacyApp/types/user/UserType';\nimport { GameType } from '../../../constants/availableGames';\nimport { GameStrategy } from '../../../types/GameStrategy';\n\nexport const openAutobetSummaryThunk = ({\n\tgame,\n\ttype,\n\tdata,\n\tid,\n}: {\n\tgame: GameType;\n\ttype: string;\n\tid?: string;\n\tdata: {\n\t\tstop_reason: any;\n\t\tstrategy: GameStrategy;\n\t\tcurrency?: CurrencyType;\n\t\tgame?: {\n\t\t\tname: GameType;\n\t\t};\n\t\tlost?: number;\n\t\tprofit?: number;\n\t\tprofit_chart?: Array<number>;\n\t\tpublished_at?: number;\n\t\tuser?: UserType;\n\t\twagered?: number;\n\t\twon?: number;\n\t};\n}): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst { balances } = getState().balance;\n\t\tconst startAgain =\n\t\t\tNumber(balances[data.currency]) >= Number(data.strategy.betAmount);\n\t\tdispatch(\n\t\t\topenModal(MODAL_ID.SESSION, 'openAutobetSummaryThunk', {\n\t\t\t\tdata,\n\t\t\t\ttype,\n\t\t\t\tstartAgain,\n\t\t\t\tgame,\n\t\t\t\tid,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { drawnNumbersSlice } from '@modules/games/Game/store/keno/slices/drawnNumbers.slice';\nimport { paytablesSlice } from '@modules/games/Game/store/keno/slices/paytables.slice';\nimport { selectedNumbersSlice } from '@modules/games/Game/store/keno/slices/selectedNumbers.slice';\nimport { betSummarySlice } from '@modules/games/Game/store/game/slices/betSummary.slice';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\nimport { riskSlice } from '@modules/games/Game/store/game/slices/risk.slice';\n\nexport const kenoActions = {\n\t...riskSlice(GameType.KENO).actions,\n\t...selectedNumbersSlice.actions,\n\t...drawnNumbersSlice.actions,\n\t...paytablesSlice.actions,\n\t...betSummarySlice(GameType.KENO).actions,\n};\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nconst NAME = 'drawnNumbers';\n\nexport type ValueType = number[];\n\nconst initialState: ValueType = [];\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\treturn action.payload;\n};\n\nexport const drawnNumbersSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tdrawnNumbersUpdate: setAction,\n\t},\n});\n","import { RiskLevels } from '@modules/games/KenoGame/api/useKenoPaytable';\nimport ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nconst NAME = 'paytables';\n\nexport type ValueType = RiskLevels;\n\nconst initialState: ValueType = {};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\treturn action.payload;\n};\n\nexport const paytablesSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tpaytablesUpdate: setAction,\n\t},\n});\n","import { reducerInitialStateMethods } from '@common/methods/reducerInitialStateMethods';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\n\nexport const kenoInitialState = reducerInitialStateMethods(GameType.KENO);\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nimport { kenoInitialState } from '@modules/games/Game/store/keno/kenoInitialState';\n\nconst NAME = 'selectedNumbers';\n\nexport type ValueType = number[];\n\nconst initialState: ValueType =\n kenoInitialState.getInitialState(NAME) || [];\n\nconst setAction: ReduxToolkit.CaseReducer<\n ValueType,\n ReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n kenoInitialState.setInitialState(NAME, action.payload);\n\n return action.payload;\n};\n\nexport const selectedNumbersSlice = createSlice({\n name: NAME,\n initialState,\n reducers: {\n selectedNumbersUpdate: setAction,\n },\n});\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};"],"names":["getSessionData","game","state","noStats","profit_chart","gameSession","profitHistoryAuto","data","map","el","y","shift","published_at","roundNumber","getTimestamp","name","user","login","uuid","id","wagered","undefined","wageredAuto","profit","stopProfit","currency","gameAutobet","activeCurrency","lost","lostAuto","won","wonAuto","isPackageActive","type","packageData","registry","packages","packageDataModules","Object","keys","length","filter","module","activePackageSelector","param","createSelector","a","checkIsSingleValue","rule","RollRule","indexOf","checkIsWinChanceDisabled","GameType","getSwitchedRollDirection","direction","validateBetValues","betValues","validated","forEach","betValue","index","validateBetValue","value","getBetValueMaxMin","min","max","Array","isArray","diceActions","betValueSlice","resultSlice","ruleDefaultSlice","ruleSlice","isResultVisibleSlice","diceInitialState","reducerInitialStateMethods","defaultBetValue","config","NAME","initialState","singleUnder","double","quadruple","createSlice","reducers","singleValueUpdate","action","payload","doubleValueUpdate","quadrupleValueUpdate","betValueUpdate","betValueIndexUpdate","resultShow","resultHide","result","resultValue","resultUpdate","NAME_DEFAULT","initialDefaultState","setAction","ruleUpdate","defaultRuleUpdate","switchDirectionThunk","dispatch","getState","dice","rollDirection","updateRuleThunk","updateBetValueThunk","parsedBetValue","betValueUnder","parseSingleBetValue","checkIsDoubleValue","transactionService","checkIsQuadrupleValue","GameFieldType","typesToActions","BET_AMOUNT","gameUpdateAmountError","FORM","gameUpdateFormError","PAYOUT","gameUpdatePayoutError","PROFIT","gameUpdateProfitError","WIN_CHANCE","gameUpdateWinChanceError","gameValidation","activeGame","getGameFromUrl","actionPayload","values","winChanceValue","isSingleValue","isDoubleValue","getWinChangeFromSingleBetValue","getWinChanceFromMultipleBetValues","updateWinChanceThunk","payoutValue","getPayout","updatePayoutThunk","disableGameValidationErrorThunk","parseResponseBet","bet","result_value","hits","Number","sort","b","sortService","DIRECTION","multiplier","capitalize","payout","hash","betSummarySlice","betSummaryUpdate","isPayoutInput","mathService","isTrueOrZero","gameUpdatePayout","winChance","decimal","getWinChanceDecimal","winChance_","gameUpdateWinChance","checkBetsInAnimationThunk","gameState","betsInAnimation","autobetStoppedThunk","props","game_config","resultAnimation","options","OPTIONS","autobetStopped","setTimeout","sendAutoBetPlayThunk","gameLabel","url","apiUrl","apiConfig","uri","parameters","Authorization","body","method","loaderId","disableErrorHandler","fetchApi","playEpic","epic","actions","ofType","AUTOBET_PLAY","callback","of","active","autoBetRolling","message","stopped","pause","autobetSetPauseData","lastBetTimestamp","manual","manualConfirmed","setConfirm","callbackAction","autobetPlay","callbackCancelAction","autobetSetActive","autobetStop","question","betAmount","profitValue","error","trans","label","autobetSummaryConnectionError","app","visible","betResponseAnimation","handleAutobetPlayResponseThunk","betThrottledEpic","BET_THROTTLED","store$","autoBetThrottle","timeout","Date","getTime","pipe","delay","autobetEpic","AUTOBET","autobetSetId","push","nextBet","win_chance","validateWinChance","parseFloat","validatePayout","getWinChanceFromPayout","counter","rollsCounter","autobetSetRollsCounter","amount","maxProfit","getLimits","profit_maximum","isProfitExceeded","getProfit","validateBetAmount","balances","balance","balancesArray","isLogged","checkBalance","gameUpdateAmount","betThrottled","autobetStoppedEpic","AUTOBET_STOPPED","myBets","lsGet","LocalStorageKeys","autobetClear","setNewMyBets","lsClear","openAutobetSummaryThunk","strategy","getStrategyFromState","stop_reason","autobetClearEpic","AUTOBET_CLEAR","resetDefaultsEpic","autobetResetToDefault","getStrategiesEpic","GET_AUTOBET_STRATEGIES","fetchApiAction","strategies","setAutobetStrategies","parseFetchedStrategy","stringToJson","saveStrategyEpic","SAVE_AUTOBET_STRATEGY","showAlert","duplicate","getActiveStrategy","strategyName","closeModal","autobetSetMode","lockByModal","setActive","setActiveAutobetStrategy","editStrategyEpic","EDIT_AUTOBET_STRATEGY","jsonToString","deleteStrategyEpic","DELETE_AUTOBET_STRATEGY","checkIsStrategyToSaveEpic","GAME_UPDATE_AMOUNT","SET_CURRENCY","GAME_UPDATE_PAYOUT","AUTOBET_SET_CONFIG","AUTOBET_SET_CONFIG_EASY","SET_AUTOBET_STRATEGIES","betType","dataType","checkStrategyDisabled","currentStrategy","activeStrategy","betConnectionErrorEpic","AUTOBET_SUMMARY_CONNECTION_ERROR","parsed","parseApiInfo","text","gameName","sentryError","Error","modal","pauseEpic","AUTOBET_PAUSE","isEveryGame","autobetSetPause","pauseData","updateConfigEasyEpic","AUTOBET_UPDATE_CONFIG_EASY","newConfig","configEasy","autobetSetConfigEasy","stopEpic","AUTOBET_STOP","status","sessions","stopRollingEpic","resetToDefaultEpic","AUTOBET_RESET_TO_DEFAULT","limbo","defaultPayout","defaultWinChanceValue","defaultBetAmount","gameUpdateProfit","rollDefaultDirection","setDefaultsEpic","AUTOBET_SET_DEFAULTS","gameSetAmountDefault","toString","gameSetWinChanceDefault","autobetSetCurrency","editStrategyModalEpic","AUTOBET_SET_EDIT_MODAL","modalSetPreviousProps","previous","key","closesEpic","APP_CLOSES","REGISTRY_EPIC_REJECT","lsSet","localStrategyEpic","AUTOBET_SET_ROLLS","updateStrategyLocalStorage","initStrategyEpic","REGISTRY_GAME_PACKAGE","USER_LOGGED","PackageType","getAutobetStrategies","getGamesList","getStrategyLocalStorage","noAutobet","configExpert","autobetSetConfig","applyAutoBetStrategyThunk","noConfig","noGameRelated","checkGameForm","logoutEpic","USER_LOGOUT","disableModeEpic","SET_GAME","combineEpics","find","getStrategyGame","disableCheckAutobetStrategy","expert","checkExpertConfig","updateStrategyWithValidation","getMinBetAmount","setCurrency","mapBetValuesDTO","risk","plinkoActions","rows","kenoActions","selected","autobetSetRolls","rolls","betResult","userBalance","lastBet","auto","autobet","stopReason","startAgain","openModal","MODAL_ID","riskSlice","selectedNumbersSlice","drawnNumbersSlice","paytablesSlice","drawnNumbersUpdate","paytablesUpdate","kenoInitialState","getInitialState","selectedNumbersUpdate","setInitialState","NOT_FOUND","defaultEqualityCheck","defaultMemoize","func","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","comparator","prev","next","i","createCacheKeyComparator","cache","equals","entry","get","put","getEntries","clear","createSingletonCache","entries","cacheIndex","findIndex","splice","unshift","pop","createLruCache","memoized","arguments","apply","matchingEntry","clearCache","getDependencies","funcs","dependencies","every","dep","dependencyTypes","join","createSelectorCreator","memoize","_len","memoizeOptionsFromArgs","_key","_len2","_key2","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption","_directlyPassedOption2","finalMemoizeOptions","memoizedResultFunc","concat","selector","params","assign","lastResult","recomputations","resetRecomputations"],"mappings":"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","debug_id":"3abbc0bc-7373-5c0c-83a3-1fce13ec7cee"}