/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "../node_modules/@babel/runtime/helpers/esm/defineProperty.js": /*!********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/defineProperty.js ***! \********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _defineProperty) /* harmony export */ }); /* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js"); function _defineProperty(e, r, t) { return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__["default"])(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/extends.js": /*!*************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/extends.js ***! \*************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _extends) /* harmony export */ }); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/objectSpread2.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _objectSpread2) /* harmony export */ }); /* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime/helpers/esm/defineProperty.js"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": /*!**********************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***! \**********************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _objectWithoutPropertiesLoose) /* harmony export */ }); function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***! \*****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ toPrimitive) /* harmony export */ }); /* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/esm/typeof.js"); function toPrimitive(t, r) { if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ toPropertyKey) /* harmony export */ }); /* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/esm/typeof.js"); /* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js"); function toPropertyKey(t) { var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__["default"])(t, "string"); return "symbol" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i) ? i : i + ""; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/typeof.js": /*!************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/typeof.js ***! \************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _typeof) /* harmony export */ }); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/typeof.js": /*!********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! \********************************************************/ /***/ ((module) => { function _typeof(o) { "@babel/helpers - typeof"; return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js": /*!******************************************************************!*\ !*** ../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ EnhancerArray: () => (/* binding */ EnhancerArray), /* harmony export */ MiddlewareArray: () => (/* binding */ MiddlewareArray), /* harmony export */ SHOULD_AUTOBATCH: () => (/* binding */ SHOULD_AUTOBATCH), /* harmony export */ TaskAbortError: () => (/* binding */ TaskAbortError), /* harmony export */ __DO_NOT_USE__ActionTypes: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.__DO_NOT_USE__ActionTypes), /* harmony export */ addListener: () => (/* binding */ addListener), /* harmony export */ applyMiddleware: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.applyMiddleware), /* harmony export */ autoBatchEnhancer: () => (/* binding */ autoBatchEnhancer), /* harmony export */ bindActionCreators: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.bindActionCreators), /* harmony export */ clearAllListeners: () => (/* binding */ clearAllListeners), /* harmony export */ combineReducers: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.combineReducers), /* harmony export */ compose: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.compose), /* harmony export */ configureStore: () => (/* binding */ configureStore), /* harmony export */ createAction: () => (/* binding */ createAction), /* harmony export */ createActionCreatorInvariantMiddleware: () => (/* binding */ createActionCreatorInvariantMiddleware), /* harmony export */ createAsyncThunk: () => (/* binding */ createAsyncThunk), /* harmony export */ createDraftSafeSelector: () => (/* binding */ createDraftSafeSelector), /* harmony export */ createEntityAdapter: () => (/* binding */ createEntityAdapter), /* harmony export */ createImmutableStateInvariantMiddleware: () => (/* binding */ createImmutableStateInvariantMiddleware), /* harmony export */ createListenerMiddleware: () => (/* binding */ createListenerMiddleware), /* harmony export */ createNextState: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__["default"]), /* harmony export */ createReducer: () => (/* binding */ createReducer), /* harmony export */ createSelector: () => (/* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_2__.createSelector), /* harmony export */ createSerializableStateInvariantMiddleware: () => (/* binding */ createSerializableStateInvariantMiddleware), /* harmony export */ createSlice: () => (/* binding */ createSlice), /* harmony export */ createStore: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.createStore), /* harmony export */ current: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.current), /* harmony export */ findNonSerializableValue: () => (/* binding */ findNonSerializableValue), /* harmony export */ freeze: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.freeze), /* harmony export */ getDefaultMiddleware: () => (/* binding */ getDefaultMiddleware), /* harmony export */ getType: () => (/* binding */ getType), /* harmony export */ isAction: () => (/* binding */ isAction), /* harmony export */ isActionCreator: () => (/* binding */ isActionCreator), /* harmony export */ isAllOf: () => (/* binding */ isAllOf), /* harmony export */ isAnyOf: () => (/* binding */ isAnyOf), /* harmony export */ isAsyncThunkAction: () => (/* binding */ isAsyncThunkAction), /* harmony export */ isDraft: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.isDraft), /* harmony export */ isFluxStandardAction: () => (/* binding */ isFSA), /* harmony export */ isFulfilled: () => (/* binding */ isFulfilled), /* harmony export */ isImmutableDefault: () => (/* binding */ isImmutableDefault), /* harmony export */ isPending: () => (/* binding */ isPending), /* harmony export */ isPlain: () => (/* binding */ isPlain), /* harmony export */ isPlainObject: () => (/* binding */ isPlainObject), /* harmony export */ isRejected: () => (/* binding */ isRejected), /* harmony export */ isRejectedWithValue: () => (/* binding */ isRejectedWithValue), /* harmony export */ legacy_createStore: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.legacy_createStore), /* harmony export */ miniSerializeError: () => (/* binding */ miniSerializeError), /* harmony export */ nanoid: () => (/* binding */ nanoid), /* harmony export */ original: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.original), /* harmony export */ prepareAutoBatched: () => (/* binding */ prepareAutoBatched), /* harmony export */ removeListener: () => (/* binding */ removeListener), /* harmony export */ unwrapResult: () => (/* binding */ unwrapResult) /* harmony export */ }); /* harmony import */ var immer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! immer */ "../node_modules/immer/dist/immer.esm.mjs"); /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux */ "../node_modules/redux/es/redux.js"); /* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! reselect */ "../node_modules/reselect/es/index.js"); /* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-thunk */ "../node_modules/redux-thunk/es/index.js"); var __extends = (undefined && undefined.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __generator = (undefined && undefined.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; }; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; }; var __spreadValues = function (a, b) { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) { var prop = _c[_i]; if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); }; var __async = function (__this, __arguments, generator) { return new Promise(function (resolve, reject) { var fulfilled = function (value) { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = function (value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); }; step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.ts // src/createDraftSafeSelector.ts var createDraftSafeSelector = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var selector = reselect__WEBPACK_IMPORTED_MODULE_2__.createSelector.apply(void 0, args); var wrappedSelector = function (value) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { rest[_i - 1] = arguments[_i]; } return selector.apply(void 0, __spreadArray([(0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraft)(value) ? (0,immer__WEBPACK_IMPORTED_MODULE_0__.current)(value) : value], rest)); }; return wrappedSelector; }; // src/configureStore.ts // src/devtoolsExtension.ts var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () { if (arguments.length === 0) return void 0; if (typeof arguments[0] === "object") return redux__WEBPACK_IMPORTED_MODULE_1__.compose; return redux__WEBPACK_IMPORTED_MODULE_1__.compose.apply(null, arguments); }; var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () { return function (noop2) { return noop2; }; }; // src/isPlainObject.ts function isPlainObject(value) { if (typeof value !== "object" || value === null) return false; var proto = Object.getPrototypeOf(value); if (proto === null) return true; var baseProto = proto; while (Object.getPrototypeOf(baseProto) !== null) { baseProto = Object.getPrototypeOf(baseProto); } return proto === baseProto; } // src/getDefaultMiddleware.ts // src/tsHelpers.ts var hasMatchFunction = function (v) { return v && typeof v.match === "function"; }; // src/createAction.ts function createAction(type, prepareAction) { function actionCreator() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (prepareAction) { var prepared = prepareAction.apply(void 0, args); if (!prepared) { throw new Error("prepareAction did not return an object"); } return __spreadValues(__spreadValues({ type: type, payload: prepared.payload }, "meta" in prepared && { meta: prepared.meta }), "error" in prepared && { error: prepared.error }); } return { type: type, payload: args[0] }; } actionCreator.toString = function () { return "" + type; }; actionCreator.type = type; actionCreator.match = function (action) { return action.type === type; }; return actionCreator; } function isAction(action) { return isPlainObject(action) && "type" in action; } function isActionCreator(action) { return typeof action === "function" && "type" in action && hasMatchFunction(action); } function isFSA(action) { return isAction(action) && typeof action.type === "string" && Object.keys(action).every(isValidKey); } function isValidKey(key) { return ["type", "payload", "error", "meta"].indexOf(key) > -1; } function getType(actionCreator) { return "" + actionCreator; } // src/actionCreatorInvariantMiddleware.ts function getMessage(type) { var splitType = type ? ("" + type).split("/") : []; var actionName = splitType[splitType.length - 1] || "actionCreator"; return "Detected an action creator with type \"" + (type || "unknown") + "\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. `dispatch(" + actionName + "())` instead of `dispatch(" + actionName + ")`. This is necessary even if the action has no payload."; } function createActionCreatorInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) // removed by dead control flow {} var _c = options.isActionCreator, isActionCreator2 = _c === void 0 ? isActionCreator : _c; return function () { return function (next) { return function (action) { if (isActionCreator2(action)) { console.warn(getMessage(action.type)); } return next(action); }; }; }; } // src/utils.ts function getTimeMeasureUtils(maxDelay, fnName) { var elapsed = 0; return { measureTime: function (fn) { var started = Date.now(); try { return fn(); } finally { var finished = Date.now(); elapsed += finished - started; } }, warnIfExceeded: function () { if (elapsed > maxDelay) { console.warn(fnName + " took " + elapsed + "ms, which is more than the warning threshold of " + maxDelay + "ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that."); } } }; } var MiddlewareArray = /** @class */ (function (_super) { __extends(MiddlewareArray, _super); function MiddlewareArray() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; Object.setPrototypeOf(_this, MiddlewareArray.prototype); return _this; } Object.defineProperty(MiddlewareArray, Symbol.species, { get: function () { return MiddlewareArray; }, enumerable: false, configurable: true }); MiddlewareArray.prototype.concat = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } return _super.prototype.concat.apply(this, arr); }; MiddlewareArray.prototype.prepend = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } if (arr.length === 1 && Array.isArray(arr[0])) { return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))(); } return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))(); }; return MiddlewareArray; }(Array)); var EnhancerArray = /** @class */ (function (_super) { __extends(EnhancerArray, _super); function EnhancerArray() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; Object.setPrototypeOf(_this, EnhancerArray.prototype); return _this; } Object.defineProperty(EnhancerArray, Symbol.species, { get: function () { return EnhancerArray; }, enumerable: false, configurable: true }); EnhancerArray.prototype.concat = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } return _super.prototype.concat.apply(this, arr); }; EnhancerArray.prototype.prepend = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } if (arr.length === 1 && Array.isArray(arr[0])) { return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))(); } return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))(); }; return EnhancerArray; }(Array)); function freezeDraftable(val) { return (0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraftable)(val) ? (0,immer__WEBPACK_IMPORTED_MODULE_0__["default"])(val, function () { }) : val; } // src/immutableStateInvariantMiddleware.ts var isProduction = "development" === "production"; var prefix = "Invariant failed"; function invariant(condition, message) { if (condition) { return; } if (isProduction) { throw new Error(prefix); } throw new Error(prefix + ": " + (message || "")); } function stringify(obj, serializer, indent, decycler) { return JSON.stringify(obj, getSerialize(serializer, decycler), indent); } function getSerialize(serializer, decycler) { var stack = [], keys = []; if (!decycler) decycler = function (_, value) { if (stack[0] === value) return "[Circular ~]"; return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; }; return function (key, value) { if (stack.length > 0) { var thisPos = stack.indexOf(this); ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); if (~stack.indexOf(value)) value = decycler.call(this, key, value); } else stack.push(value); return serializer == null ? value : serializer.call(this, key, value); }; } function isImmutableDefault(value) { return typeof value !== "object" || value == null || Object.isFrozen(value); } function trackForMutations(isImmutable, ignorePaths, obj) { var trackedProperties = trackProperties(isImmutable, ignorePaths, obj); return { detectMutations: function () { return detectMutations(isImmutable, ignorePaths, trackedProperties, obj); } }; } function trackProperties(isImmutable, ignorePaths, obj, path, checkedObjects) { if (ignorePaths === void 0) { ignorePaths = []; } if (path === void 0) { path = ""; } if (checkedObjects === void 0) { checkedObjects = new Set(); } var tracked = { value: obj }; if (!isImmutable(obj) && !checkedObjects.has(obj)) { checkedObjects.add(obj); tracked.children = {}; for (var key in obj) { var childPath = path ? path + "." + key : key; if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) { continue; } tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath); } } return tracked; } function detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) { if (ignoredPaths === void 0) { ignoredPaths = []; } if (sameParentRef === void 0) { sameParentRef = false; } if (path === void 0) { path = ""; } var prevObj = trackedProperty ? trackedProperty.value : void 0; var sameRef = prevObj === obj; if (sameParentRef && !sameRef && !Number.isNaN(obj)) { return { wasMutated: true, path: path }; } if (isImmutable(prevObj) || isImmutable(obj)) { return { wasMutated: false }; } var keysToDetect = {}; for (var key in trackedProperty.children) { keysToDetect[key] = true; } for (var key in obj) { keysToDetect[key] = true; } var hasIgnoredPaths = ignoredPaths.length > 0; var _loop_1 = function (key) { var nestedPath = path ? path + "." + key : key; if (hasIgnoredPaths) { var hasMatches = ignoredPaths.some(function (ignored) { if (ignored instanceof RegExp) { return ignored.test(nestedPath); } return nestedPath === ignored; }); if (hasMatches) { return "continue"; } } var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath); if (result.wasMutated) { return { value: result }; } }; for (var key in keysToDetect) { var state_1 = _loop_1(key); if (typeof state_1 === "object") return state_1.value; } return { wasMutated: false }; } function createImmutableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) // removed by dead control flow {} var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore; ignoredPaths = ignoredPaths || ignore; var track = trackForMutations.bind(null, isImmutable, ignoredPaths); return function (_c) { var getState = _c.getState; var state = getState(); var tracker = track(state); var result; return function (next) { return function (action) { var measureUtils = getTimeMeasureUtils(warnAfter, "ImmutableStateInvariantMiddleware"); measureUtils.measureTime(function () { state = getState(); result = tracker.detectMutations(); tracker = track(state); invariant(!result.wasMutated, "A state mutation was detected between dispatches, in the path '" + (result.path || "") + "'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)"); }); var dispatchedAction = next(action); measureUtils.measureTime(function () { state = getState(); result = tracker.detectMutations(); tracker = track(state); result.wasMutated && invariant(!result.wasMutated, "A state mutation was detected inside a dispatch, in the path: " + (result.path || "") + ". Take a look at the reducer(s) handling the action " + stringify(action) + ". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)"); }); measureUtils.warnIfExceeded(); return dispatchedAction; }; }; }; } // src/serializableStateInvariantMiddleware.ts function isPlain(val) { var type = typeof val; return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject(val); } function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) { if (path === void 0) { path = ""; } if (isSerializable === void 0) { isSerializable = isPlain; } if (ignoredPaths === void 0) { ignoredPaths = []; } var foundNestedSerializable; if (!isSerializable(value)) { return { keyPath: path || "", value: value }; } if (typeof value !== "object" || value === null) { return false; } if (cache == null ? void 0 : cache.has(value)) return false; var entries = getEntries != null ? getEntries(value) : Object.entries(value); var hasIgnoredPaths = ignoredPaths.length > 0; var _loop_2 = function (key, nestedValue) { var nestedPath = path ? path + "." + key : key; if (hasIgnoredPaths) { var hasMatches = ignoredPaths.some(function (ignored) { if (ignored instanceof RegExp) { return ignored.test(nestedPath); } return nestedPath === ignored; }); if (hasMatches) { return "continue"; } } if (!isSerializable(nestedValue)) { return { value: { keyPath: nestedPath, value: nestedValue } }; } if (typeof nestedValue === "object") { foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache); if (foundNestedSerializable) { return { value: foundNestedSerializable }; } } }; for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { var _c = entries_1[_i], key = _c[0], nestedValue = _c[1]; var state_2 = _loop_2(key, nestedValue); if (typeof state_2 === "object") return state_2.value; } if (cache && isNestedFrozen(value)) cache.add(value); return false; } function isNestedFrozen(value) { if (!Object.isFrozen(value)) return false; for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) { var nestedValue = _c[_i]; if (typeof nestedValue !== "object" || nestedValue === null) continue; if (!isNestedFrozen(nestedValue)) return false; } return true; } function createSerializableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) // removed by dead control flow {} var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? ["meta.arg", "meta.baseQueryMeta"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k; var cache = !disableCache && WeakSet ? new WeakSet() : void 0; return function (storeAPI) { return function (next) { return function (action) { var result = next(action); var measureUtils = getTimeMeasureUtils(warnAfter, "SerializableStateInvariantMiddleware"); if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) { measureUtils.measureTime(function () { var foundActionNonSerializableValue = findNonSerializableValue(action, "", isSerializable, getEntries, ignoredActionPaths, cache); if (foundActionNonSerializableValue) { var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value; console.error("A non-serializable value was detected in an action, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the logic that dispatched this action: ", action, "\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)", "\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)"); } }); } if (!ignoreState) { measureUtils.measureTime(function () { var state = storeAPI.getState(); var foundStateNonSerializableValue = findNonSerializableValue(state, "", isSerializable, getEntries, ignoredPaths, cache); if (foundStateNonSerializableValue) { var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value; console.error("A non-serializable value was detected in the state, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the reducer(s) handling this action type: " + action.type + ".\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)"); } }); measureUtils.warnIfExceeded(); } return result; }; }; }; } // src/getDefaultMiddleware.ts function isBoolean(x) { return typeof x === "boolean"; } function curryGetDefaultMiddleware() { return function curriedGetDefaultMiddleware(options) { return getDefaultMiddleware(options); }; } function getDefaultMiddleware(options) { if (options === void 0) { options = {}; } var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e, _f = options.actionCreatorCheck, actionCreatorCheck = _f === void 0 ? true : _f; var middlewareArray = new MiddlewareArray(); if (thunk) { if (isBoolean(thunk)) { middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__["default"]); } else { middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__["default"].withExtraArgument(thunk.extraArgument)); } } if (true) { if (immutableCheck) { var immutableOptions = {}; if (!isBoolean(immutableCheck)) { immutableOptions = immutableCheck; } middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions)); } if (serializableCheck) { var serializableOptions = {}; if (!isBoolean(serializableCheck)) { serializableOptions = serializableCheck; } middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions)); } if (actionCreatorCheck) { var actionCreatorOptions = {}; if (!isBoolean(actionCreatorCheck)) { actionCreatorOptions = actionCreatorCheck; } middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions)); } } return middlewareArray; } // src/configureStore.ts var IS_PRODUCTION = "development" === "production"; function configureStore(options) { var curriedGetDefaultMiddleware = curryGetDefaultMiddleware(); var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h; var rootReducer; if (typeof reducer === "function") { rootReducer = reducer; } else if (isPlainObject(reducer)) { rootReducer = (0,redux__WEBPACK_IMPORTED_MODULE_1__.combineReducers)(reducer); } else { throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'); } var finalMiddleware = middleware; if (typeof finalMiddleware === "function") { finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware); if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) { throw new Error("when using a middleware builder function, an array of middleware must be returned"); } } if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== "function"; })) { throw new Error("each middleware provided to configureStore must be a function"); } var middlewareEnhancer = redux__WEBPACK_IMPORTED_MODULE_1__.applyMiddleware.apply(void 0, finalMiddleware); var finalCompose = redux__WEBPACK_IMPORTED_MODULE_1__.compose; if (devTools) { finalCompose = composeWithDevTools(__spreadValues({ trace: !IS_PRODUCTION }, typeof devTools === "object" && devTools)); } var defaultEnhancers = new EnhancerArray(middlewareEnhancer); var storeEnhancers = defaultEnhancers; if (Array.isArray(enhancers)) { storeEnhancers = __spreadArray([middlewareEnhancer], enhancers); } else if (typeof enhancers === "function") { storeEnhancers = enhancers(defaultEnhancers); } var composedEnhancer = finalCompose.apply(void 0, storeEnhancers); return (0,redux__WEBPACK_IMPORTED_MODULE_1__.createStore)(rootReducer, preloadedState, composedEnhancer); } // src/createReducer.ts // src/mapBuilders.ts function executeReducerBuilderCallback(builderCallback) { var actionsMap = {}; var actionMatchers = []; var defaultCaseReducer; var builder = { addCase: function (typeOrActionCreator, reducer) { if (true) { if (actionMatchers.length > 0) { throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`"); } if (defaultCaseReducer) { throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`"); } } var type = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type; if (!type) { throw new Error("`builder.addCase` cannot be called with an empty action type"); } if (type in actionsMap) { throw new Error("`builder.addCase` cannot be called with two reducers for the same action type"); } actionsMap[type] = reducer; return builder; }, addMatcher: function (matcher, reducer) { if (true) { if (defaultCaseReducer) { throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`"); } } actionMatchers.push({ matcher: matcher, reducer: reducer }); return builder; }, addDefaultCase: function (reducer) { if (true) { if (defaultCaseReducer) { throw new Error("`builder.addDefaultCase` can only be called once"); } } defaultCaseReducer = reducer; return builder; } }; builderCallback(builder); return [actionsMap, actionMatchers, defaultCaseReducer]; } // src/createReducer.ts function isStateFunction(x) { return typeof x === "function"; } var hasWarnedAboutObjectNotation = false; function createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) { if (actionMatchers === void 0) { actionMatchers = []; } if (true) { if (typeof mapOrBuilderCallback === "object") { if (!hasWarnedAboutObjectNotation) { hasWarnedAboutObjectNotation = true; console.warn("The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer"); } } } var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2]; var getInitialState; if (isStateFunction(initialState)) { getInitialState = function () { return freezeDraftable(initialState()); }; } else { var frozenInitialState_1 = freezeDraftable(initialState); getInitialState = function () { return frozenInitialState_1; }; } function reducer(state, action) { if (state === void 0) { state = getInitialState(); } var caseReducers = __spreadArray([ actionsMap[action.type] ], finalActionMatchers.filter(function (_c) { var matcher = _c.matcher; return matcher(action); }).map(function (_c) { var reducer2 = _c.reducer; return reducer2; })); if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) { caseReducers = [finalDefaultCaseReducer]; } return caseReducers.reduce(function (previousState, caseReducer) { if (caseReducer) { if ((0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraft)(previousState)) { var draft = previousState; var result = caseReducer(draft, action); if (result === void 0) { return previousState; } return result; } else if (!(0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraftable)(previousState)) { var result = caseReducer(previousState, action); if (result === void 0) { if (previousState === null) { return previousState; } throw Error("A case reducer on a non-draftable value must not return undefined"); } return result; } else { return (0,immer__WEBPACK_IMPORTED_MODULE_0__["default"])(previousState, function (draft) { return caseReducer(draft, action); }); } } return previousState; }, state); } reducer.getInitialState = getInitialState; return reducer; } // src/createSlice.ts var hasWarnedAboutObjectNotation2 = false; function getType2(slice, actionKey) { return slice + "/" + actionKey; } function createSlice(options) { var name = options.name; if (!name) { throw new Error("`name` is a required option for createSlice"); } if (typeof process !== "undefined" && "development" === "development") { if (options.initialState === void 0) { console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`"); } } var initialState = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState); var reducers = options.reducers || {}; var reducerNames = Object.keys(reducers); var sliceCaseReducersByName = {}; var sliceCaseReducersByType = {}; var actionCreators = {}; reducerNames.forEach(function (reducerName) { var maybeReducerWithPrepare = reducers[reducerName]; var type = getType2(name, reducerName); var caseReducer; var prepareCallback; if ("reducer" in maybeReducerWithPrepare) { caseReducer = maybeReducerWithPrepare.reducer; prepareCallback = maybeReducerWithPrepare.prepare; } else { caseReducer = maybeReducerWithPrepare; } sliceCaseReducersByName[reducerName] = caseReducer; sliceCaseReducersByType[type] = caseReducer; actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type); }); function buildReducer() { if (true) { if (typeof options.extraReducers === "object") { if (!hasWarnedAboutObjectNotation2) { hasWarnedAboutObjectNotation2 = true; console.warn("The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice"); } } } var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f; var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType); return createReducer(initialState, function (builder) { for (var key in finalCaseReducers) { builder.addCase(key, finalCaseReducers[key]); } for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) { var m = actionMatchers_1[_i]; builder.addMatcher(m.matcher, m.reducer); } if (defaultCaseReducer) { builder.addDefaultCase(defaultCaseReducer); } }); } var _reducer; return { name: name, reducer: function (state, action) { if (!_reducer) _reducer = buildReducer(); return _reducer(state, action); }, actions: actionCreators, caseReducers: sliceCaseReducersByName, getInitialState: function () { if (!_reducer) _reducer = buildReducer(); return _reducer.getInitialState(); } }; } // src/entities/entity_state.ts function getInitialEntityState() { return { ids: [], entities: {} }; } function createInitialStateFactory() { function getInitialState(additionalState) { if (additionalState === void 0) { additionalState = {}; } return Object.assign(getInitialEntityState(), additionalState); } return { getInitialState: getInitialState }; } // src/entities/state_selectors.ts function createSelectorsFactory() { function getSelectors(selectState) { var selectIds = function (state) { return state.ids; }; var selectEntities = function (state) { return state.entities; }; var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); }); var selectId = function (_, id) { return id; }; var selectById = function (entities, id) { return entities[id]; }; var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; }); if (!selectState) { return { selectIds: selectIds, selectEntities: selectEntities, selectAll: selectAll, selectTotal: selectTotal, selectById: createDraftSafeSelector(selectEntities, selectId, selectById) }; } var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities); return { selectIds: createDraftSafeSelector(selectState, selectIds), selectEntities: selectGlobalizedEntities, selectAll: createDraftSafeSelector(selectState, selectAll), selectTotal: createDraftSafeSelector(selectState, selectTotal), selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById) }; } return { getSelectors: getSelectors }; } // src/entities/state_adapter.ts function createSingleArgumentStateOperator(mutator) { var operator = createStateOperator(function (_, state) { return mutator(state); }); return function operation(state) { return operator(state, void 0); }; } function createStateOperator(mutator) { return function operation(state, arg) { function isPayloadActionArgument(arg2) { return isFSA(arg2); } var runMutator = function (draft) { if (isPayloadActionArgument(arg)) { mutator(arg.payload, draft); } else { mutator(arg, draft); } }; if ((0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraft)(state)) { runMutator(state); return state; } else { return (0,immer__WEBPACK_IMPORTED_MODULE_0__["default"])(state, runMutator); } }; } // src/entities/utils.ts function selectIdValue(entity, selectId) { var key = selectId(entity); if ( true && key === void 0) { console.warn("The entity passed to the `selectId` implementation returned undefined.", "You should probably provide your own `selectId` implementation.", "The entity that was passed:", entity, "The `selectId` implementation:", selectId.toString()); } return key; } function ensureEntitiesArray(entities) { if (!Array.isArray(entities)) { entities = Object.values(entities); } return entities; } function splitAddedUpdatedEntities(newEntities, selectId, state) { newEntities = ensureEntitiesArray(newEntities); var added = []; var updated = []; for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) { var entity = newEntities_1[_i]; var id = selectIdValue(entity, selectId); if (id in state.entities) { updated.push({ id: id, changes: entity }); } else { added.push(entity); } } return [added, updated]; } // src/entities/unsorted_state_adapter.ts function createUnsortedStateAdapter(selectId) { function addOneMutably(entity, state) { var key = selectIdValue(entity, selectId); if (key in state.entities) { return; } state.ids.push(key); state.entities[key] = entity; } function addManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) { var entity = newEntities_2[_i]; addOneMutably(entity, state); } } function setOneMutably(entity, state) { var key = selectIdValue(entity, selectId); if (!(key in state.entities)) { state.ids.push(key); } state.entities[key] = entity; } function setManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) { var entity = newEntities_3[_i]; setOneMutably(entity, state); } } function setAllMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); state.ids = []; state.entities = {}; addManyMutably(newEntities, state); } function removeOneMutably(key, state) { return removeManyMutably([key], state); } function removeManyMutably(keys, state) { var didMutate = false; keys.forEach(function (key) { if (key in state.entities) { delete state.entities[key]; didMutate = true; } }); if (didMutate) { state.ids = state.ids.filter(function (id) { return id in state.entities; }); } } function removeAllMutably(state) { Object.assign(state, { ids: [], entities: {} }); } function takeNewKey(keys, update, state) { var original2 = state.entities[update.id]; var updated = Object.assign({}, original2, update.changes); var newKey = selectIdValue(updated, selectId); var hasNewKey = newKey !== update.id; if (hasNewKey) { keys[update.id] = newKey; delete state.entities[update.id]; } state.entities[newKey] = updated; return hasNewKey; } function updateOneMutably(update, state) { return updateManyMutably([update], state); } function updateManyMutably(updates, state) { var newKeys = {}; var updatesPerEntity = {}; updates.forEach(function (update) { if (update.id in state.entities) { updatesPerEntity[update.id] = { id: update.id, changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes) }; } }); updates = Object.values(updatesPerEntity); var didMutateEntities = updates.length > 0; if (didMutateEntities) { var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0; if (didMutateIds) { state.ids = Object.keys(state.entities); } } } function upsertOneMutably(entity, state) { return upsertManyMutably([entity], state); } function upsertManyMutably(newEntities, state) { var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1]; updateManyMutably(updated, state); addManyMutably(added, state); } return { removeAll: createSingleArgumentStateOperator(removeAllMutably), addOne: createStateOperator(addOneMutably), addMany: createStateOperator(addManyMutably), setOne: createStateOperator(setOneMutably), setMany: createStateOperator(setManyMutably), setAll: createStateOperator(setAllMutably), updateOne: createStateOperator(updateOneMutably), updateMany: createStateOperator(updateManyMutably), upsertOne: createStateOperator(upsertOneMutably), upsertMany: createStateOperator(upsertManyMutably), removeOne: createStateOperator(removeOneMutably), removeMany: createStateOperator(removeManyMutably) }; } // src/entities/sorted_state_adapter.ts function createSortedStateAdapter(selectId, sort) { var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll; function addOneMutably(entity, state) { return addManyMutably([entity], state); } function addManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); }); if (models.length !== 0) { merge(models, state); } } function setOneMutably(entity, state) { return setManyMutably([entity], state); } function setManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); if (newEntities.length !== 0) { merge(newEntities, state); } } function setAllMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); state.entities = {}; state.ids = []; addManyMutably(newEntities, state); } function updateOneMutably(update, state) { return updateManyMutably([update], state); } function updateManyMutably(updates, state) { var appliedUpdates = false; for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) { var update = updates_1[_i]; var entity = state.entities[update.id]; if (!entity) { continue; } appliedUpdates = true; Object.assign(entity, update.changes); var newId = selectId(entity); if (update.id !== newId) { delete state.entities[update.id]; state.entities[newId] = entity; } } if (appliedUpdates) { resortEntities(state); } } function upsertOneMutably(entity, state) { return upsertManyMutably([entity], state); } function upsertManyMutably(newEntities, state) { var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1]; updateManyMutably(updated, state); addManyMutably(added, state); } function areArraysEqual(a, b) { if (a.length !== b.length) { return false; } for (var i = 0; i < a.length && i < b.length; i++) { if (a[i] === b[i]) { continue; } return false; } return true; } function merge(models, state) { models.forEach(function (model) { state.entities[selectId(model)] = model; }); resortEntities(state); } function resortEntities(state) { var allEntities = Object.values(state.entities); allEntities.sort(sort); var newSortedIds = allEntities.map(selectId); var ids = state.ids; if (!areArraysEqual(ids, newSortedIds)) { state.ids = newSortedIds; } } return { removeOne: removeOne, removeMany: removeMany, removeAll: removeAll, addOne: createStateOperator(addOneMutably), updateOne: createStateOperator(updateOneMutably), upsertOne: createStateOperator(upsertOneMutably), setOne: createStateOperator(setOneMutably), setMany: createStateOperator(setManyMutably), setAll: createStateOperator(setAllMutably), addMany: createStateOperator(addManyMutably), updateMany: createStateOperator(updateManyMutably), upsertMany: createStateOperator(upsertManyMutably) }; } // src/entities/create_adapter.ts function createEntityAdapter(options) { if (options === void 0) { options = {}; } var _c = __spreadValues({ sortComparer: false, selectId: function (instance) { return instance.id; } }, options), selectId = _c.selectId, sortComparer = _c.sortComparer; var stateFactory = createInitialStateFactory(); var selectorsFactory = createSelectorsFactory(); var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId); return __spreadValues(__spreadValues(__spreadValues({ selectId: selectId, sortComparer: sortComparer }, stateFactory), selectorsFactory), stateAdapter); } // src/nanoid.ts var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"; var nanoid = function (size) { if (size === void 0) { size = 21; } var id = ""; var i = size; while (i--) { id += urlAlphabet[Math.random() * 64 | 0]; } return id; }; // src/createAsyncThunk.ts var commonProperties = [ "name", "message", "stack", "code" ]; var RejectWithValue = /** @class */ (function () { function RejectWithValue(payload, meta) { this.payload = payload; this.meta = meta; } return RejectWithValue; }()); var FulfillWithMeta = /** @class */ (function () { function FulfillWithMeta(payload, meta) { this.payload = payload; this.meta = meta; } return FulfillWithMeta; }()); var miniSerializeError = function (value) { if (typeof value === "object" && value !== null) { var simpleError = {}; for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) { var property = commonProperties_1[_i]; if (typeof value[property] === "string") { simpleError[property] = value[property]; } } return simpleError; } return { message: String(value) }; }; var createAsyncThunk = (function () { function createAsyncThunk2(typePrefix, payloadCreator, options) { var fulfilled = createAction(typePrefix + "/fulfilled", function (payload, requestId, arg, meta) { return ({ payload: payload, meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, requestStatus: "fulfilled" }) }); }); var pending = createAction(typePrefix + "/pending", function (requestId, arg, meta) { return ({ payload: void 0, meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, requestStatus: "pending" }) }); }); var rejected = createAction(typePrefix + "/rejected", function (error, requestId, arg, payload, meta) { return ({ payload: payload, error: (options && options.serializeError || miniSerializeError)(error || "Rejected"), meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, rejectedWithValue: !!payload, requestStatus: "rejected", aborted: (error == null ? void 0 : error.name) === "AbortError", condition: (error == null ? void 0 : error.name) === "ConditionError" }) }); }); var displayedWarning = false; var AC = typeof AbortController !== "undefined" ? AbortController : /** @class */ (function () { function class_1() { this.signal = { aborted: false, addEventListener: function () { }, dispatchEvent: function () { return false; }, onabort: function () { }, removeEventListener: function () { }, reason: void 0, throwIfAborted: function () { } }; } class_1.prototype.abort = function () { if (true) { if (!displayedWarning) { displayedWarning = true; console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'."); } } }; return class_1; }()); function actionCreator(arg) { return function (dispatch, getState, extra) { var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid(); var abortController = new AC(); var abortReason; var started = false; function abort(reason) { abortReason = reason; abortController.abort(); } var promise2 = function () { return __async(this, null, function () { var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 4, , 5]); conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra }); if (!isThenable(conditionResult)) return [3 /*break*/, 2]; return [4 /*yield*/, conditionResult]; case 1: conditionResult = _c.sent(); _c.label = 2; case 2: if (conditionResult === false || abortController.signal.aborted) { throw { name: "ConditionError", message: "Aborted due to condition callback returning false." }; } started = true; abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener("abort", function () { return reject({ name: "AbortError", message: abortReason || "Aborted" }); }); }); dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra }))); return [4 /*yield*/, Promise.race([ abortedPromise, Promise.resolve(payloadCreator(arg, { dispatch: dispatch, getState: getState, extra: extra, requestId: requestId, signal: abortController.signal, abort: abort, rejectWithValue: function (value, meta) { return new RejectWithValue(value, meta); }, fulfillWithValue: function (value, meta) { return new FulfillWithMeta(value, meta); } })).then(function (result) { if (result instanceof RejectWithValue) { throw result; } if (result instanceof FulfillWithMeta) { return fulfilled(result.payload, requestId, arg, result.meta); } return fulfilled(result, requestId, arg); }) ])]; case 3: finalAction = _c.sent(); return [3 /*break*/, 5]; case 4: err_1 = _c.sent(); finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg); return [3 /*break*/, 5]; case 5: skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition; if (!skipDispatch) { dispatch(finalAction); } return [2 /*return*/, finalAction]; } }); }); }(); return Object.assign(promise2, { abort: abort, requestId: requestId, arg: arg, unwrap: function () { return promise2.then(unwrapResult); } }); }; } return Object.assign(actionCreator, { pending: pending, rejected: rejected, fulfilled: fulfilled, typePrefix: typePrefix }); } createAsyncThunk2.withTypes = function () { return createAsyncThunk2; }; return createAsyncThunk2; })(); function unwrapResult(action) { if (action.meta && action.meta.rejectedWithValue) { throw action.payload; } if (action.error) { throw action.error; } return action.payload; } function isThenable(value) { return value !== null && typeof value === "object" && typeof value.then === "function"; } // src/matchers.ts var matches = function (matcher, action) { if (hasMatchFunction(matcher)) { return matcher.match(action); } else { return matcher(action); } }; function isAnyOf() { var matchers = []; for (var _i = 0; _i < arguments.length; _i++) { matchers[_i] = arguments[_i]; } return function (action) { return matchers.some(function (matcher) { return matches(matcher, action); }); }; } function isAllOf() { var matchers = []; for (var _i = 0; _i < arguments.length; _i++) { matchers[_i] = arguments[_i]; } return function (action) { return matchers.every(function (matcher) { return matches(matcher, action); }); }; } function hasExpectedRequestMetadata(action, validStatus) { if (!action || !action.meta) return false; var hasValidRequestId = typeof action.meta.requestId === "string"; var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1; return hasValidRequestId && hasValidRequestStatus; } function isAsyncThunkArray(a) { return typeof a[0] === "function" && "pending" in a[0] && "fulfilled" in a[0] && "rejected" in a[0]; } function isPending() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["pending"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isPending()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isRejected() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["rejected"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isRejected()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isRejectedWithValue() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } var hasFlag = function (action) { return action && action.meta && action.meta.rejectedWithValue; }; if (asyncThunks.length === 0) { return function (action) { var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag); return combinedMatcher(action); }; } if (!isAsyncThunkArray(asyncThunks)) { return isRejectedWithValue()(asyncThunks[0]); } return function (action) { var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag); return combinedMatcher(action); }; } function isFulfilled() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["fulfilled"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isFulfilled()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isAsyncThunkAction() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["pending", "fulfilled", "rejected"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isAsyncThunkAction()(asyncThunks[0]); } return function (action) { var matchers = []; for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) { var asyncThunk = asyncThunks_1[_i]; matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled); } var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } // src/listenerMiddleware/utils.ts var assertFunction = function (func, expected) { if (typeof func !== "function") { throw new TypeError(expected + " is not a function"); } }; var noop = function () { }; var catchRejection = function (promise2, onError) { if (onError === void 0) { onError = noop; } promise2.catch(onError); return promise2; }; var addAbortSignalListener = function (abortSignal, callback) { abortSignal.addEventListener("abort", callback, { once: true }); return function () { return abortSignal.removeEventListener("abort", callback); }; }; var abortControllerWithReason = function (abortController, reason) { var signal = abortController.signal; if (signal.aborted) { return; } if (!("reason" in signal)) { Object.defineProperty(signal, "reason", { enumerable: true, value: reason, configurable: true, writable: true }); } ; abortController.abort(reason); }; // src/listenerMiddleware/exceptions.ts var task = "task"; var listener = "listener"; var completed = "completed"; var cancelled = "cancelled"; var taskCancelled = "task-" + cancelled; var taskCompleted = "task-" + completed; var listenerCancelled = listener + "-" + cancelled; var listenerCompleted = listener + "-" + completed; var TaskAbortError = /** @class */ (function () { function TaskAbortError(code) { this.code = code; this.name = "TaskAbortError"; this.message = task + " " + cancelled + " (reason: " + code + ")"; } return TaskAbortError; }()); // src/listenerMiddleware/task.ts var validateActive = function (signal) { if (signal.aborted) { throw new TaskAbortError(signal.reason); } }; function raceWithSignal(signal, promise2) { var cleanup = noop; return new Promise(function (resolve, reject) { var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); }; if (signal.aborted) { notifyRejection(); return; } cleanup = addAbortSignalListener(signal, notifyRejection); promise2.finally(function () { return cleanup(); }).then(resolve, reject); }).finally(function () { cleanup = noop; }); } var runTask = function (task2, cleanUp) { return __async(void 0, null, function () { var value, error_1; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 3, 4, 5]); return [4 /*yield*/, Promise.resolve()]; case 1: _c.sent(); return [4 /*yield*/, task2()]; case 2: value = _c.sent(); return [2 /*return*/, { status: "ok", value: value }]; case 3: error_1 = _c.sent(); return [2 /*return*/, { status: error_1 instanceof TaskAbortError ? "cancelled" : "rejected", error: error_1 }]; case 4: cleanUp == null ? void 0 : cleanUp(); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; var createPause = function (signal) { return function (promise2) { return catchRejection(raceWithSignal(signal, promise2).then(function (output) { validateActive(signal); return output; })); }; }; var createDelay = function (signal) { var pause = createPause(signal); return function (timeoutMs) { return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); })); }; }; // src/listenerMiddleware/index.ts var assign = Object.assign; var INTERNAL_NIL_TOKEN = {}; var alm = "listenerMiddleware"; var createFork = function (parentAbortSignal, parentBlockingPromises) { var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); }; return function (taskExecutor, opts) { assertFunction(taskExecutor, "taskExecutor"); var childAbortController = new AbortController(); linkControllers(childAbortController); var result = runTask(function () { return __async(void 0, null, function () { var result2; return __generator(this, function (_c) { switch (_c.label) { case 0: validateActive(parentAbortSignal); validateActive(childAbortController.signal); return [4 /*yield*/, taskExecutor({ pause: createPause(childAbortController.signal), delay: createDelay(childAbortController.signal), signal: childAbortController.signal })]; case 1: result2 = _c.sent(); validateActive(childAbortController.signal); return [2 /*return*/, result2]; } }); }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); }); if (opts == null ? void 0 : opts.autoJoin) { parentBlockingPromises.push(result); } return { result: createPause(parentAbortSignal)(result), cancel: function () { abortControllerWithReason(childAbortController, taskCancelled); } }; }; }; var createTakePattern = function (startListening, signal) { var take = function (predicate, timeout) { return __async(void 0, null, function () { var unsubscribe, tuplePromise, promises, output; return __generator(this, function (_c) { switch (_c.label) { case 0: validateActive(signal); unsubscribe = function () { }; tuplePromise = new Promise(function (resolve, reject) { var stopListening = startListening({ predicate: predicate, effect: function (action, listenerApi) { listenerApi.unsubscribe(); resolve([ action, listenerApi.getState(), listenerApi.getOriginalState() ]); } }); unsubscribe = function () { stopListening(); reject(); }; }); promises = [ tuplePromise ]; if (timeout != null) { promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); })); } _c.label = 1; case 1: _c.trys.push([1, , 3, 4]); return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))]; case 2: output = _c.sent(); validateActive(signal); return [2 /*return*/, output]; case 3: unsubscribe(); return [7 /*endfinally*/]; case 4: return [2 /*return*/]; } }); }); }; return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); }; }; var getListenerEntryPropsFrom = function (options) { var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect; if (type) { predicate = createAction(type).match; } else if (actionCreator) { type = actionCreator.type; predicate = actionCreator.match; } else if (matcher) { predicate = matcher; } else if (predicate) { } else { throw new Error("Creating or removing a listener requires one of the known fields for matching an action"); } assertFunction(effect, "options.listener"); return { predicate: predicate, type: type, effect: effect }; }; var createListenerEntry = function (options) { var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect; var id = nanoid(); var entry = { id: id, effect: effect, type: type, predicate: predicate, pending: new Set(), unsubscribe: function () { throw new Error("Unsubscribe not initialized"); } }; return entry; }; var cancelActiveListeners = function (entry) { entry.pending.forEach(function (controller) { abortControllerWithReason(controller, listenerCancelled); }); }; var createClearListenerMiddleware = function (listenerMap) { return function () { listenerMap.forEach(cancelActiveListeners); listenerMap.clear(); }; }; var safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) { try { errorHandler(errorToNotify, errorInfo); } catch (errorHandlerError) { setTimeout(function () { throw errorHandlerError; }, 0); } }; var addListener = createAction(alm + "/add"); var clearAllListeners = createAction(alm + "/removeAll"); var removeListener = createAction(alm + "/remove"); var defaultErrorHandler = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } console.error.apply(console, __spreadArray([alm + "/error"], args)); }; function createListenerMiddleware(middlewareOptions) { var _this = this; if (middlewareOptions === void 0) { middlewareOptions = {}; } var listenerMap = new Map(); var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c; assertFunction(onError, "onError"); var insertEntry = function (entry) { entry.unsubscribe = function () { return listenerMap.delete(entry.id); }; listenerMap.set(entry.id, entry); return function (cancelOptions) { entry.unsubscribe(); if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) { cancelActiveListeners(entry); } }; }; var findListenerEntry = function (comparator) { for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) { var entry = _c[_i]; if (comparator(entry)) { return entry; } } return void 0; }; var startListening = function (options) { var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; }); if (!entry) { entry = createListenerEntry(options); } return insertEntry(entry); }; var stopListening = function (options) { var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate; var entry = findListenerEntry(function (entry2) { var matchPredicateOrType = typeof type === "string" ? entry2.type === type : entry2.predicate === predicate; return matchPredicateOrType && entry2.effect === effect; }); if (entry) { entry.unsubscribe(); if (options.cancelActive) { cancelActiveListeners(entry); } } return !!entry; }; var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () { var internalTaskController, take, autoJoinPromises, listenerError_1; return __generator(this, function (_c) { switch (_c.label) { case 0: internalTaskController = new AbortController(); take = createTakePattern(startListening, internalTaskController.signal); autoJoinPromises = []; _c.label = 1; case 1: _c.trys.push([1, 3, 4, 6]); entry.pending.add(internalTaskController); return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, { getOriginalState: getOriginalState, condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); }, take: take, delay: createDelay(internalTaskController.signal), pause: createPause(internalTaskController.signal), extra: extra, signal: internalTaskController.signal, fork: createFork(internalTaskController.signal, autoJoinPromises), unsubscribe: entry.unsubscribe, subscribe: function () { listenerMap.set(entry.id, entry); }, cancelActiveListeners: function () { entry.pending.forEach(function (controller, _, set) { if (controller !== internalTaskController) { abortControllerWithReason(controller, listenerCancelled); set.delete(controller); } }); } })))]; case 2: _c.sent(); return [3 /*break*/, 6]; case 3: listenerError_1 = _c.sent(); if (!(listenerError_1 instanceof TaskAbortError)) { safelyNotifyError(onError, listenerError_1, { raisedBy: "effect" }); } return [3 /*break*/, 6]; case 4: return [4 /*yield*/, Promise.allSettled(autoJoinPromises)]; case 5: _c.sent(); abortControllerWithReason(internalTaskController, listenerCompleted); entry.pending.delete(internalTaskController); return [7 /*endfinally*/]; case 6: return [2 /*return*/]; } }); }); }; var clearListenerMiddleware = createClearListenerMiddleware(listenerMap); var middleware = function (api) { return function (next) { return function (action) { if (!isAction(action)) { return next(action); } if (addListener.match(action)) { return startListening(action.payload); } if (clearAllListeners.match(action)) { clearListenerMiddleware(); return; } if (removeListener.match(action)) { return stopListening(action.payload); } var originalState = api.getState(); var getOriginalState = function () { if (originalState === INTERNAL_NIL_TOKEN) { throw new Error(alm + ": getOriginalState can only be called synchronously"); } return originalState; }; var result; try { result = next(action); if (listenerMap.size > 0) { var currentState = api.getState(); var listenerEntries = Array.from(listenerMap.values()); for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) { var entry = listenerEntries_1[_i]; var runListener = false; try { runListener = entry.predicate(action, currentState, originalState); } catch (predicateError) { runListener = false; safelyNotifyError(onError, predicateError, { raisedBy: "predicate" }); } if (!runListener) { continue; } notifyListener(entry, action, api, getOriginalState); } } } finally { originalState = INTERNAL_NIL_TOKEN; } return result; }; }; }; return { middleware: middleware, startListening: startListening, stopListening: stopListening, clearListeners: clearListenerMiddleware }; } // src/autoBatchEnhancer.ts var SHOULD_AUTOBATCH = "RTK_autoBatch"; var prepareAutoBatched = function () { return function (payload) { var _c; return ({ payload: payload, meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c) }); }; }; var promise; var queueMicrotaskShim = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () { throw err; }, 0); }); }; var createQueueWithTimer = function (timeout) { return function (notify) { setTimeout(notify, timeout); }; }; var rAF = typeof window !== "undefined" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10); var autoBatchEnhancer = function (options) { if (options === void 0) { options = { type: "raf" }; } return function (next) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var store = next.apply(void 0, args); var notifying = true; var shouldNotifyAtEndOfTick = false; var notificationQueued = false; var listeners = new Set(); var queueCallback = options.type === "tick" ? queueMicrotaskShim : options.type === "raf" ? rAF : options.type === "callback" ? options.queueNotification : createQueueWithTimer(options.timeout); var notifyListeners = function () { notificationQueued = false; if (shouldNotifyAtEndOfTick) { shouldNotifyAtEndOfTick = false; listeners.forEach(function (l) { return l(); }); } }; return Object.assign({}, store, { subscribe: function (listener2) { var wrappedListener = function () { return notifying && listener2(); }; var unsubscribe = store.subscribe(wrappedListener); listeners.add(listener2); return function () { unsubscribe(); listeners.delete(listener2); }; }, dispatch: function (action) { var _a; try { notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]); shouldNotifyAtEndOfTick = !notifying; if (shouldNotifyAtEndOfTick) { if (!notificationQueued) { notificationQueued = true; queueCallback(notifyListeners); } } return store.dispatch(action); } finally { notifying = true; } } }); }; }; }; // src/index.ts (0,immer__WEBPACK_IMPORTED_MODULE_0__.enableES5)(); //# sourceMappingURL=redux-toolkit.esm.js.map /***/ }), /***/ "../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js": /*!***********************************************************************************!*\ !*** ../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***! \***********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var reactIs = __webpack_require__(/*! react-is */ "../node_modules/hoist-non-react-statics/node_modules/react-is/index.js"); /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var REACT_STATICS = { childContextTypes: true, contextType: true, contextTypes: true, defaultProps: true, displayName: true, getDefaultProps: true, getDerivedStateFromError: true, getDerivedStateFromProps: true, mixins: true, propTypes: true, type: true }; var KNOWN_STATICS = { name: true, length: true, prototype: true, caller: true, callee: true, arguments: true, arity: true }; var FORWARD_REF_STATICS = { '$$typeof': true, render: true, defaultProps: true, displayName: true, propTypes: true }; var MEMO_STATICS = { '$$typeof': true, compare: true, defaultProps: true, displayName: true, propTypes: true, type: true }; var TYPE_STATICS = {}; TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; function getStatics(component) { // React v16.11 and below if (reactIs.isMemo(component)) { return MEMO_STATICS; } // React v16.12 and above return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; } var defineProperty = Object.defineProperty; var getOwnPropertyNames = Object.getOwnPropertyNames; var getOwnPropertySymbols = Object.getOwnPropertySymbols; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var getPrototypeOf = Object.getPrototypeOf; var objectPrototype = Object.prototype; function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components if (objectPrototype) { var inheritedComponent = getPrototypeOf(sourceComponent); if (inheritedComponent && inheritedComponent !== objectPrototype) { hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); } } var keys = getOwnPropertyNames(sourceComponent); if (getOwnPropertySymbols) { keys = keys.concat(getOwnPropertySymbols(sourceComponent)); } var targetStatics = getStatics(targetComponent); var sourceStatics = getStatics(sourceComponent); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { var descriptor = getOwnPropertyDescriptor(sourceComponent, key); try { // Avoid failures from read-only properties defineProperty(targetComponent, key, descriptor); } catch (e) {} } } } return targetComponent; } module.exports = hoistNonReactStatics; /***/ }), /***/ "../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js": /*!*************************************************************************************************!*\ !*** ../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js ***! \*************************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { (function() { 'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "../node_modules/hoist-non-react-statics/node_modules/react-is/index.js": /*!******************************************************************************!*\ !*** ../node_modules/hoist-non-react-statics/node_modules/react-is/index.js ***! \******************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "../node_modules/immer/dist/immer.esm.mjs": /*!************************************************!*\ !*** ../node_modules/immer/dist/immer.esm.mjs ***! \************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Immer: () => (/* binding */ un), /* harmony export */ applyPatches: () => (/* binding */ pn), /* harmony export */ castDraft: () => (/* binding */ K), /* harmony export */ castImmutable: () => (/* binding */ $), /* harmony export */ createDraft: () => (/* binding */ ln), /* harmony export */ current: () => (/* binding */ R), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ enableAllPlugins: () => (/* binding */ J), /* harmony export */ enableES5: () => (/* binding */ F), /* harmony export */ enableMapSet: () => (/* binding */ C), /* harmony export */ enablePatches: () => (/* binding */ T), /* harmony export */ finishDraft: () => (/* binding */ dn), /* harmony export */ freeze: () => (/* binding */ d), /* harmony export */ immerable: () => (/* binding */ L), /* harmony export */ isDraft: () => (/* binding */ r), /* harmony export */ isDraftable: () => (/* binding */ t), /* harmony export */ nothing: () => (/* binding */ H), /* harmony export */ original: () => (/* binding */ e), /* harmony export */ produce: () => (/* binding */ fn), /* harmony export */ produceWithPatches: () => (/* binding */ cn), /* harmony export */ setAutoFreeze: () => (/* binding */ sn), /* harmony export */ setUseProxies: () => (/* binding */ vn) /* harmony export */ }); function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||"object"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return false||U||n(0),U}function j(n,r){r&&(b("Patches"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b("ES5").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b("Patches").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b("Patches").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if( true&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b("MapSet").F(r,t):v(r)?b("MapSet").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b("ES5").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b("ES5").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return true&&f(r),en.get(r,n)},set:function(r){var t=this[Q]; true&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&"replace"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b("Patches").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (fn); //# sourceMappingURL=immer.esm.js.map /***/ }), /***/ "../node_modules/react-is/cjs/react-is.development.js": /*!************************************************************!*\ !*** ../node_modules/react-is/cjs/react-is.development.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** * @license React * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { (function() { 'use strict'; // ATTENTION // When adding new symbols to this file, // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' // The Symbol used to tag the ReactElement-like types. var REACT_ELEMENT_TYPE = Symbol.for('react.element'); var REACT_PORTAL_TYPE = Symbol.for('react.portal'); var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode'); var REACT_PROFILER_TYPE = Symbol.for('react.profiler'); var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); var REACT_CONTEXT_TYPE = Symbol.for('react.context'); var REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context'); var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense'); var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list'); var REACT_MEMO_TYPE = Symbol.for('react.memo'); var REACT_LAZY_TYPE = Symbol.for('react.lazy'); var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen'); // ----------------------------------------------------------------------------- var enableScopeAPI = false; // Experimental Create Event Handle API. var enableCacheElement = false; var enableTransitionTracing = false; // No known bugs, but needs performance testing var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber // stuff. Intended to enable React core members to more easily debug scheduling // issues in DEV builds. var enableDebugTracing = false; // Track which Fiber(s) schedule render work. var REACT_MODULE_REFERENCE; { REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); } function isValidElementType(type) { if (typeof type === 'string' || typeof type === 'function') { return true; } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { return true; } if (typeof type === 'object' && type !== null) { if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object // types supported by any Flight configuration anywhere since // we don't know which Flight build this will end up being used // with. type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { return true; } } return false; } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: case REACT_SUSPENSE_LIST_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_SERVER_CONTEXT_TYPE: case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var SuspenseList = REACT_SUSPENSE_LIST_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); } } return false; } function isConcurrentMode(object) { { if (!hasWarnedAboutDeprecatedIsConcurrentMode) { hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); } } return false; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } function isSuspenseList(object) { return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; } exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.SuspenseList = SuspenseList; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isSuspenseList = isSuspenseList; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "../node_modules/react-is/index.js": /*!*****************************************!*\ !*** ../node_modules/react-is/index.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "../node_modules/react-redux/es/components/Context.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/components/Context.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ReactReduxContext: () => (/* binding */ ReactReduxContext), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); const ContextKey = Symbol.for(`react-redux-context`); const gT = typeof globalThis !== "undefined" ? globalThis : /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */ {}; function getContext() { var _gT$ContextKey; if (!react__WEBPACK_IMPORTED_MODULE_0__.createContext) return {}; const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map(); let realContext = contextMap.get(react__WEBPACK_IMPORTED_MODULE_0__.createContext); if (!realContext) { realContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); if (true) { realContext.displayName = 'ReactRedux'; } contextMap.set(react__WEBPACK_IMPORTED_MODULE_0__.createContext, realContext); } return realContext; } const ReactReduxContext = /*#__PURE__*/getContext(); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactReduxContext); /***/ }), /***/ "../node_modules/react-redux/es/components/Provider.js": /*!*************************************************************!*\ !*** ../node_modules/react-redux/es/components/Provider.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ "../node_modules/react-redux/es/utils/Subscription.js"); /* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js"); function Provider({ store, context, children, serverState, stabilityCheck = 'once', noopCheck = 'once' }) { const contextValue = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => { const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store); return { store, subscription, getServerState: serverState ? () => serverState : undefined, stabilityCheck, noopCheck }; }, [store, serverState, stabilityCheck, noopCheck]); const previousState = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => store.getState(), [store]); (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(() => { const { subscription } = contextValue; subscription.onStateChange = subscription.notifyNestedSubs; subscription.trySubscribe(); if (previousState !== store.getState()) { subscription.notifyNestedSubs(); } return () => { subscription.tryUnsubscribe(); subscription.onStateChange = undefined; }; }, [contextValue, previousState]); const Context = context || _Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider, { value: contextValue }, children); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Provider); /***/ }), /***/ "../node_modules/react-redux/es/components/connect.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/components/connect.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ initializeConnect: () => (/* binding */ initializeConnect) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ "../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"); /* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js"); /* harmony import */ var _connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../connect/selectorFactory */ "../node_modules/react-redux/es/connect/selectorFactory.js"); /* harmony import */ var _connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../connect/mapDispatchToProps */ "../node_modules/react-redux/es/connect/mapDispatchToProps.js"); /* harmony import */ var _connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../connect/mapStateToProps */ "../node_modules/react-redux/es/connect/mapStateToProps.js"); /* harmony import */ var _connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../connect/mergeProps */ "../node_modules/react-redux/es/connect/mergeProps.js"); /* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/Subscription */ "../node_modules/react-redux/es/utils/Subscription.js"); /* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js"); /* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/shallowEqual */ "../node_modules/react-redux/es/utils/shallowEqual.js"); /* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/warning */ "../node_modules/react-redux/es/utils/warning.js"); /* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ "../node_modules/react-redux/es/utils/useSyncExternalStore.js"); const _excluded = ["reactReduxForwardedRef"]; /* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */ let useSyncExternalStore = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__.notInitialized; const initializeConnect = fn => { useSyncExternalStore = fn; }; // Define some constant arrays just to avoid re-creating these const EMPTY_ARRAY = [null, 0]; const NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given // for logging in an error message const stringifyComponent = Comp => { try { return JSON.stringify(Comp); } catch (err) { return String(Comp); } }; // This is "just" a `useLayoutEffect`, but with two modifications: // - we need to fall back to `useEffect` in SSR to avoid annoying warnings // - we extract this to a separate function to avoid closing over values // and causing memory leaks function useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) { (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => effectFunc(...effectArgs), dependencies); } // Effect callback, extracted: assign the latest props values to refs for later usage function captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown, childPropsFromStoreUpdate, notifyNestedSubs) { // We want to capture the wrapper props and child props we used for later comparisons lastWrapperProps.current = wrapperProps; renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update if (childPropsFromStoreUpdate.current) { childPropsFromStoreUpdate.current = null; notifyNestedSubs(); } } // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor, // check for updates after dispatched actions, and trigger re-renders. function subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch, additionalSubscribeListener) { // If we're not subscribed to the store, nothing to do here if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts let didUnsubscribe = false; let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component const checkForUpdates = () => { if (didUnsubscribe || !isMounted.current) { // Don't run stale listeners. // Redux doesn't guarantee unsubscriptions happen until next dispatch. return; } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it const latestStoreState = store.getState(); let newChildProps, error; try { // Actually run the selector with the most recent store state and wrapper props // to determine what the child props should be newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current); } catch (e) { error = e; lastThrownError = e; } if (!error) { lastThrownError = null; } // If the child props haven't changed, nothing to do here - cascade the subscription update if (newChildProps === lastChildProps.current) { if (!renderIsScheduled.current) { notifyNestedSubs(); } } else { // Save references to the new child props. Note that we track the "child props from store update" // as a ref instead of a useState/useReducer because we need a way to determine if that value has // been processed. If this went into useState/useReducer, we couldn't clear out the value without // forcing another re-render, which we don't want. lastChildProps.current = newChildProps; childPropsFromStoreUpdate.current = newChildProps; renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used // Trigger the React `useSyncExternalStore` subscriber additionalSubscribeListener(); } }; // Actually subscribe to the nearest connected ancestor (or store) subscription.onStateChange = checkForUpdates; subscription.trySubscribe(); // Pull data from the store after first render in case the store has // changed since we began. checkForUpdates(); const unsubscribeWrapper = () => { didUnsubscribe = true; subscription.tryUnsubscribe(); subscription.onStateChange = null; if (lastThrownError) { // It's possible that we caught an error due to a bad mapState function, but the // parent re-rendered without this component and we're about to unmount. // This shouldn't happen as long as we do top-down subscriptions correctly, but // if we ever do those wrong, this throw will surface the error in our tests. // In that case, throw the error from here so it doesn't get lost. throw lastThrownError; } }; return unsubscribeWrapper; } // Reducer initial state creation for our update reducer const initStateUpdates = () => EMPTY_ARRAY; function strictEqual(a, b) { return a === b; } /** * Infers the type of props that a connector will inject into a component. */ let hasWarnedAboutDeprecatedPureOption = false; /** * Connects a React component to a Redux store. * * - Without arguments, just wraps the component, without changing the behavior / props * * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior * is to override ownProps (as stated in the docs), so what remains is everything that's * not a state or dispatch prop * * - When 3rd param is passed, we don't know if ownProps propagate and whether they * should be valid component props, because it depends on mergeProps implementation. * As such, it is the user's responsibility to extend ownProps interface from state or * dispatch props or both when applicable * * @param mapStateToProps A function that extracts values from state * @param mapDispatchToProps Setup for dispatching actions * @param mergeProps Optional callback to merge state and dispatch props together * @param options Options for configuring the connection * */ function connect(mapStateToProps, mapDispatchToProps, mergeProps, { // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence. // @ts-ignore pure, areStatesEqual = strictEqual, areOwnPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__["default"], areStatePropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__["default"], areMergedPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__["default"], // use React's forwardRef to expose a ref of the wrapped component forwardRef = false, // the context consumer to use context = _Context__WEBPACK_IMPORTED_MODULE_13__.ReactReduxContext } = {}) { if (true) { if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) { hasWarnedAboutDeprecatedPureOption = true; (0,_utils_warning__WEBPACK_IMPORTED_MODULE_12__["default"])('The `pure` option has been removed. `connect` is now always a "pure/memoized" component'); } } const Context = context; const initMapStateToProps = (0,_connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__.mapStateToPropsFactory)(mapStateToProps); const initMapDispatchToProps = (0,_connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__.mapDispatchToPropsFactory)(mapDispatchToProps); const initMergeProps = (0,_connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__.mergePropsFactory)(mergeProps); const shouldHandleStateChanges = Boolean(mapStateToProps); const wrapWithConnect = WrappedComponent => { if ( true && !(0,react_is__WEBPACK_IMPORTED_MODULE_4__.isValidElementType)(WrappedComponent)) { throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`); } const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component'; const displayName = `Connect(${wrappedComponentName})`; const selectorFactoryOptions = { shouldHandleStateChanges, displayName, wrappedComponentName, WrappedComponent, // @ts-ignore initMapStateToProps, // @ts-ignore initMapDispatchToProps, initMergeProps, areStatesEqual, areStatePropsEqual, areOwnPropsEqual, areMergedPropsEqual }; function ConnectFunction(props) { const [propsContext, reactReduxForwardedRef, wrapperProps] = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { // Distinguish between actual "data" props that were passed to the wrapper component, // and values needed to control behavior (forwarded refs, alternate context instances). // To maintain the wrapperProps object reference, memoize this destructuring. const { reactReduxForwardedRef } = props, wrapperProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, _excluded); return [props.context, reactReduxForwardedRef, wrapperProps]; }, [props]); const ContextToUse = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext. // Memoize the check that determines which context instance we should use. return propsContext && propsContext.Consumer && // @ts-ignore (0,react_is__WEBPACK_IMPORTED_MODULE_4__.isContextConsumer)( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(propsContext.Consumer, null)) ? propsContext : Context; }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available const contextValue = react__WEBPACK_IMPORTED_MODULE_3__.useContext(ContextToUse); // The store _must_ exist as either a prop or in context. // We'll check to see if it _looks_ like a Redux store first. // This allows us to pass through a `store` prop that is just a plain value. const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch); const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store); if ( true && !didStoreComeFromProps && !didStoreComeFromContext) { throw new Error(`Could not find "store" in the context of ` + `"${displayName}". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`); } // Based on the previous check, one of these must be true const store = didStoreComeFromProps ? props.store : contextValue.store; const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState; const childPropsSelector = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { // The child props selector needs the store reference as an input. // Re-create this selector whenever the store changes. return (0,_connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__["default"])(store.dispatch, selectorFactoryOptions); }, [store]); const [subscription, notifyNestedSubs] = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component // connected to the store via props shouldn't use subscription from context, or vice versa. const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_9__.createSubscription)(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in // the middle of the notification loop, where `subscription` will then be null. This can // probably be avoided if Subscription's listeners logic is changed to not call listeners // that have been unsubscribed in the middle of the notification loop. const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription); return [subscription, notifyNestedSubs]; }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary, // and memoize that value to avoid unnecessary context updates. const overriddenContextValue = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { if (didStoreComeFromProps) { // This component is directly subscribed to a store from props. // We don't want descendants reading from this store - pass down whatever // the existing context value is from the nearest connected ancestor. return contextValue; } // Otherwise, put this component's subscription instance into context, so that // connected descendants won't update until after this component is done return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contextValue, { subscription }); }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic const lastChildProps = react__WEBPACK_IMPORTED_MODULE_3__.useRef(); const lastWrapperProps = react__WEBPACK_IMPORTED_MODULE_3__.useRef(wrapperProps); const childPropsFromStoreUpdate = react__WEBPACK_IMPORTED_MODULE_3__.useRef(); const renderIsScheduled = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false); const isProcessingDispatch = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false); const isMounted = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false); const latestSubscriptionCallbackError = react__WEBPACK_IMPORTED_MODULE_3__.useRef(); (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => { isMounted.current = true; return () => { isMounted.current = false; }; }, []); const actualChildPropsSelector = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { const selector = () => { // Tricky logic here: // - This render may have been triggered by a Redux store update that produced new child props // - However, we may have gotten new wrapper props after that // If we have new child props, and the same wrapper props, we know we should use the new child props as-is. // But, if we have new wrapper props, those might change the child props, so we have to recalculate things. // So, we'll use the child props from store update only if the wrapper props are the same as last time. if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) { return childPropsFromStoreUpdate.current; } // TODO We're reading the store directly in render() here. Bad idea? // This will likely cause Bad Things (TM) to happen in Concurrent Mode. // Note that we do this because on renders _not_ caused by store updates, we need the latest store state // to determine what the child props should be. return childPropsSelector(store.getState(), wrapperProps); }; return selector; }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns // about useLayoutEffect in SSR, so we try to detect environment and fall back to // just useEffect instead to avoid the warning, since neither will run anyway. const subscribeForReact = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { const subscribe = reactListener => { if (!subscription) { return () => {}; } return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener); }; return subscribe; }, [subscription]); useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]); let actualChildProps; try { actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props, // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`. actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector); } catch (err) { if (latestSubscriptionCallbackError.current) { ; err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n`; } throw err; } (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => { latestSubscriptionCallbackError.current = undefined; childPropsFromStoreUpdate.current = undefined; lastChildProps.current = actualChildProps; }); // Now that all that's done, we can finally try to actually render the child component. // We memoize the elements for the rendered child component as an optimization. const renderedWrappedComponent = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { return ( /*#__PURE__*/ // @ts-ignore react__WEBPACK_IMPORTED_MODULE_3__.createElement(WrappedComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, actualChildProps, { ref: reactReduxForwardedRef })) ); }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate. const renderedChild = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { if (shouldHandleStateChanges) { // If this component is subscribed to store updates, we need to pass its own // subscription instance down to our descendants. That means rendering the same // Context instance, and putting a different value into the context. return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(ContextToUse.Provider, { value: overriddenContextValue }, renderedWrappedComponent); } return renderedWrappedComponent; }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]); return renderedChild; } const _Connect = react__WEBPACK_IMPORTED_MODULE_3__.memo(ConnectFunction); // Add a hacky cast to get the right output type const Connect = _Connect; Connect.WrappedComponent = WrappedComponent; Connect.displayName = ConnectFunction.displayName = displayName; if (forwardRef) { const _forwarded = react__WEBPACK_IMPORTED_MODULE_3__.forwardRef(function forwardConnectRef(props, ref) { // @ts-ignore return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(Connect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, { reactReduxForwardedRef: ref })); }); const forwarded = _forwarded; forwarded.displayName = displayName; forwarded.WrappedComponent = WrappedComponent; return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(forwarded, WrappedComponent); } return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(Connect, WrappedComponent); }; return wrapWithConnect; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (connect); /***/ }), /***/ "../node_modules/react-redux/es/connect/invalidArgFactory.js": /*!*******************************************************************!*\ !*** ../node_modules/react-redux/es/connect/invalidArgFactory.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createInvalidArgFactory: () => (/* binding */ createInvalidArgFactory) /* harmony export */ }); function createInvalidArgFactory(arg, name) { return (dispatch, options) => { throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`); }; } /***/ }), /***/ "../node_modules/react-redux/es/connect/mapDispatchToProps.js": /*!********************************************************************!*\ !*** ../node_modules/react-redux/es/connect/mapDispatchToProps.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ mapDispatchToPropsFactory: () => (/* binding */ mapDispatchToPropsFactory) /* harmony export */ }); /* harmony import */ var _utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/bindActionCreators */ "../node_modules/react-redux/es/utils/bindActionCreators.js"); /* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapMapToProps */ "../node_modules/react-redux/es/connect/wrapMapToProps.js"); /* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ "../node_modules/react-redux/es/connect/invalidArgFactory.js"); function mapDispatchToPropsFactory(mapDispatchToProps) { return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(dispatch => // @ts-ignore (0,_utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__["default"])(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(dispatch => ({ dispatch })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mapDispatchToProps, 'mapDispatchToProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/mapStateToProps.js": /*!*****************************************************************!*\ !*** ../node_modules/react-redux/es/connect/mapStateToProps.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ mapStateToPropsFactory: () => (/* binding */ mapStateToPropsFactory) /* harmony export */ }); /* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrapMapToProps */ "../node_modules/react-redux/es/connect/wrapMapToProps.js"); /* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./invalidArgFactory */ "../node_modules/react-redux/es/connect/invalidArgFactory.js"); function mapStateToPropsFactory(mapStateToProps) { return !mapStateToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsConstant)(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__.createInvalidArgFactory)(mapStateToProps, 'mapStateToProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/mergeProps.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/connect/mergeProps.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ defaultMergeProps: () => (/* binding */ defaultMergeProps), /* harmony export */ mergePropsFactory: () => (/* binding */ mergePropsFactory), /* harmony export */ wrapMergePropsFunc: () => (/* binding */ wrapMergePropsFunc) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/verifyPlainObject */ "../node_modules/react-redux/es/utils/verifyPlainObject.js"); /* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ "../node_modules/react-redux/es/connect/invalidArgFactory.js"); function defaultMergeProps(stateProps, dispatchProps, ownProps) { // @ts-ignore return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, ownProps, stateProps, dispatchProps); } function wrapMergePropsFunc(mergeProps) { return function initMergePropsProxy(dispatch, { displayName, areMergedPropsEqual }) { let hasRunOnce = false; let mergedProps; return function mergePropsProxy(stateProps, dispatchProps, ownProps) { const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps); if (hasRunOnce) { if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps; } else { hasRunOnce = true; mergedProps = nextMergedProps; if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(mergedProps, displayName, 'mergeProps'); } return mergedProps; }; }; } function mergePropsFactory(mergeProps) { return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mergeProps, 'mergeProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/selectorFactory.js": /*!*****************************************************************!*\ !*** ../node_modules/react-redux/es/connect/selectorFactory.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ finalPropsSelectorFactory), /* harmony export */ pureFinalPropsSelectorFactory: () => (/* binding */ pureFinalPropsSelectorFactory) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var _verifySubselectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verifySubselectors */ "../node_modules/react-redux/es/connect/verifySubselectors.js"); const _excluded = ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"]; function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, { areStatesEqual, areOwnPropsEqual, areStatePropsEqual }) { let hasRunAtLeastOnce = false; let state; let ownProps; let stateProps; let dispatchProps; let mergedProps; function handleFirstCall(firstState, firstOwnProps) { state = firstState; ownProps = firstOwnProps; stateProps = mapStateToProps(state, ownProps); dispatchProps = mapDispatchToProps(dispatch, ownProps); mergedProps = mergeProps(stateProps, dispatchProps, ownProps); hasRunAtLeastOnce = true; return mergedProps; } function handleNewPropsAndNewState() { stateProps = mapStateToProps(state, ownProps); if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps); mergedProps = mergeProps(stateProps, dispatchProps, ownProps); return mergedProps; } function handleNewProps() { if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps); if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps); mergedProps = mergeProps(stateProps, dispatchProps, ownProps); return mergedProps; } function handleNewState() { const nextStateProps = mapStateToProps(state, ownProps); const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps); stateProps = nextStateProps; if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps); return mergedProps; } function handleSubsequentCalls(nextState, nextOwnProps) { const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps); const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps); state = nextState; ownProps = nextOwnProps; if (propsChanged && stateChanged) return handleNewPropsAndNewState(); if (propsChanged) return handleNewProps(); if (stateChanged) return handleNewState(); return mergedProps; } return function pureFinalPropsSelector(nextState, nextOwnProps) { return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps); }; } // TODO: Add more comments // The selector returned by selectorFactory will memoize its results, // allowing connect's shouldComponentUpdate to return false if final // props have not changed. function finalPropsSelectorFactory(dispatch, _ref) { let { initMapStateToProps, initMapDispatchToProps, initMergeProps } = _ref, options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref, _excluded); const mapStateToProps = initMapStateToProps(dispatch, options); const mapDispatchToProps = initMapDispatchToProps(dispatch, options); const mergeProps = initMergeProps(dispatch, options); if (true) { (0,_verifySubselectors__WEBPACK_IMPORTED_MODULE_1__["default"])(mapStateToProps, mapDispatchToProps, mergeProps); } return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options); } /***/ }), /***/ "../node_modules/react-redux/es/connect/verifySubselectors.js": /*!********************************************************************!*\ !*** ../node_modules/react-redux/es/connect/verifySubselectors.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ verifySubselectors) /* harmony export */ }); /* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/warning */ "../node_modules/react-redux/es/utils/warning.js"); function verify(selector, methodName) { if (!selector) { throw new Error(`Unexpected value for ${methodName} in connect.`); } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') { if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) { (0,_utils_warning__WEBPACK_IMPORTED_MODULE_0__["default"])(`The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`); } } } function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) { verify(mapStateToProps, 'mapStateToProps'); verify(mapDispatchToProps, 'mapDispatchToProps'); verify(mergeProps, 'mergeProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/wrapMapToProps.js": /*!****************************************************************!*\ !*** ../node_modules/react-redux/es/connect/wrapMapToProps.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDependsOnOwnProps: () => (/* binding */ getDependsOnOwnProps), /* harmony export */ wrapMapToPropsConstant: () => (/* binding */ wrapMapToPropsConstant), /* harmony export */ wrapMapToPropsFunc: () => (/* binding */ wrapMapToPropsFunc) /* harmony export */ }); /* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/verifyPlainObject */ "../node_modules/react-redux/es/utils/verifyPlainObject.js"); function wrapMapToPropsConstant( // * Note: // It seems that the dispatch argument // could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing) // and a state object in some others (ex: whenMapStateToPropsIsMissing) // eslint-disable-next-line no-unused-vars getConstant) { return function initConstantSelector(dispatch) { const constant = getConstant(dispatch); function constantSelector() { return constant; } constantSelector.dependsOnOwnProps = false; return constantSelector; }; } // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args // to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine // whether mapToProps needs to be invoked when props have changed. // // A length of one signals that mapToProps does not depend on props from the parent component. // A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and // therefore not reporting its length accurately.. // TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps? function getDependsOnOwnProps(mapToProps) { return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1; } // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction, // this function wraps mapToProps in a proxy function which does several things: // // * Detects whether the mapToProps function being called depends on props, which // is used by selectorFactory to decide if it should reinvoke on props changes. // // * On first call, handles mapToProps if returns another function, and treats that // new function as the true mapToProps for subsequent calls. // // * On first call, verifies the first result is a plain object, in order to warn // the developer that their mapToProps function is not returning a valid result. // function wrapMapToPropsFunc(mapToProps, methodName) { return function initProxySelector(dispatch, { displayName }) { const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) { return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined); }; // allow detectFactoryAndVerify to get ownProps proxy.dependsOnOwnProps = true; proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) { proxy.mapToProps = mapToProps; proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps); let props = proxy(stateOrDispatch, ownProps); if (typeof props === 'function') { proxy.mapToProps = props; proxy.dependsOnOwnProps = getDependsOnOwnProps(props); props = proxy(stateOrDispatch, ownProps); } if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(props, displayName, methodName); return props; }; return proxy; }; } /***/ }), /***/ "../node_modules/react-redux/es/exports.js": /*!*************************************************!*\ !*** ../node_modules/react-redux/es/exports.js ***! \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Provider: () => (/* reexport safe */ _components_Provider__WEBPACK_IMPORTED_MODULE_0__["default"]), /* harmony export */ ReactReduxContext: () => (/* reexport safe */ _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext), /* harmony export */ connect: () => (/* reexport safe */ _components_connect__WEBPACK_IMPORTED_MODULE_1__["default"]), /* harmony export */ createDispatchHook: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.createDispatchHook), /* harmony export */ createSelectorHook: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.createSelectorHook), /* harmony export */ createStoreHook: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.createStoreHook), /* harmony export */ shallowEqual: () => (/* reexport safe */ _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__["default"]), /* harmony export */ useDispatch: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.useDispatch), /* harmony export */ useSelector: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.useSelector), /* harmony export */ useStore: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore) /* harmony export */ }); /* harmony import */ var _components_Provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Provider */ "../node_modules/react-redux/es/components/Provider.js"); /* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/connect */ "../node_modules/react-redux/es/components/connect.js"); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks/useDispatch */ "../node_modules/react-redux/es/hooks/useDispatch.js"); /* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ "../node_modules/react-redux/es/hooks/useSelector.js"); /* harmony import */ var _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useStore */ "../node_modules/react-redux/es/hooks/useStore.js"); /* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/shallowEqual */ "../node_modules/react-redux/es/utils/shallowEqual.js"); /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ "../node_modules/react-redux/es/types.js"); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useDispatch.js": /*!***********************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useDispatch.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createDispatchHook: () => (/* binding */ createDispatchHook), /* harmony export */ useDispatch: () => (/* binding */ useDispatch) /* harmony export */ }); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useStore */ "../node_modules/react-redux/es/hooks/useStore.js"); /** * Hook factory, which creates a `useDispatch` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useDispatch` hook bound to the specified context. */ function createDispatchHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext) { const useStore = // @ts-ignore context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useStore__WEBPACK_IMPORTED_MODULE_1__.useStore : (0,_useStore__WEBPACK_IMPORTED_MODULE_1__.createStoreHook)(context); return function useDispatch() { const store = useStore(); // @ts-ignore return store.dispatch; }; } /** * A hook to access the redux `dispatch` function. * * @returns {any|function} redux store's `dispatch` function * * @example * * import React, { useCallback } from 'react' * import { useDispatch } from 'react-redux' * * export const CounterComponent = ({ value }) => { * const dispatch = useDispatch() * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), []) * return ( *
* {value} * *
* ) * } */ const useDispatch = /*#__PURE__*/createDispatchHook(); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useReduxContext.js": /*!***************************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useReduxContext.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createReduxContextHook: () => (/* binding */ createReduxContextHook), /* harmony export */ useReduxContext: () => (/* binding */ useReduxContext) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /** * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level * hook that you should usually not need to call directly. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useReduxContext` hook bound to the specified context. */ function createReduxContextHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext) { return function useReduxContext() { const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context); if ( true && !contextValue) { throw new Error('could not find react-redux context value; please ensure the component is wrapped in a '); } return contextValue; }; } /** * A hook to access the value of the `ReactReduxContext`. This is a low-level * hook that you should usually not need to call directly. * * @returns {any} the value of the `ReactReduxContext` * * @example * * import React from 'react' * import { useReduxContext } from 'react-redux' * * export const CounterComponent = () => { * const { store } = useReduxContext() * return
{store.getState()}
* } */ const useReduxContext = /*#__PURE__*/createReduxContextHook(); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useSelector.js": /*!***********************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useSelector.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSelectorHook: () => (/* binding */ createSelectorHook), /* harmony export */ initializeUseSelector: () => (/* binding */ initializeUseSelector), /* harmony export */ useSelector: () => (/* binding */ useSelector) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ "../node_modules/react-redux/es/hooks/useReduxContext.js"); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ "../node_modules/react-redux/es/utils/useSyncExternalStore.js"); let useSyncExternalStoreWithSelector = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__.notInitialized; const initializeUseSelector = fn => { useSyncExternalStoreWithSelector = fn; }; const refEquality = (a, b) => a === b; /** * Hook factory, which creates a `useSelector` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useSelector` hook bound to the specified context. */ function createSelectorHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext) { const useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : (0,_useReduxContext__WEBPACK_IMPORTED_MODULE_1__.createReduxContextHook)(context); return function useSelector(selector, equalityFnOrOptions = {}) { const { equalityFn = refEquality, stabilityCheck = undefined, noopCheck = undefined } = typeof equalityFnOrOptions === 'function' ? { equalityFn: equalityFnOrOptions } : equalityFnOrOptions; if (true) { if (!selector) { throw new Error(`You must pass a selector to useSelector`); } if (typeof selector !== 'function') { throw new Error(`You must pass a function as a selector to useSelector`); } if (typeof equalityFn !== 'function') { throw new Error(`You must pass a function as an equality function to useSelector`); } } const { store, subscription, getServerState, stabilityCheck: globalStabilityCheck, noopCheck: globalNoopCheck } = useReduxContext(); const firstRun = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true); const wrappedSelector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)({ [selector.name](state) { const selected = selector(state); if (true) { const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck; if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) { const toCompare = selector(state); if (!equalityFn(selected, toCompare)) { let stack = undefined; try { throw new Error(); } catch (e) { ; ({ stack } = e); } console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', { state, selected, selected2: toCompare, stack }); } } const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck; if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) { // @ts-ignore if (selected === state) { let stack = undefined; try { throw new Error(); } catch (e) { ; ({ stack } = e); } console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', { stack }); } } if (firstRun.current) firstRun.current = false; } return selected; } }[selector.name], [selector, globalStabilityCheck, stabilityCheck]); const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn); (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState); return selectedState; }; } /** * A hook to access the redux store's state. This hook takes a selector function * as an argument. The selector is called with the store state. * * This hook takes an optional equality comparison function as the second parameter * that allows you to customize the way the selected state is compared to determine * whether the component needs to be re-rendered. * * @param {Function} selector the selector function * @param {Function=} equalityFn the function that will be used to determine equality * * @returns {any} the selected state * * @example * * import React from 'react' * import { useSelector } from 'react-redux' * * export const CounterComponent = () => { * const counter = useSelector(state => state.counter) * return
{counter}
* } */ const useSelector = /*#__PURE__*/createSelectorHook(); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useStore.js": /*!********************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useStore.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createStoreHook: () => (/* binding */ createStoreHook), /* harmony export */ useStore: () => (/* binding */ useStore) /* harmony export */ }); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ "../node_modules/react-redux/es/hooks/useReduxContext.js"); /** * Hook factory, which creates a `useStore` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useStore` hook bound to the specified context. */ function createStoreHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext) { const useReduxContext = // @ts-ignore context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : // @ts-ignore (0,_useReduxContext__WEBPACK_IMPORTED_MODULE_1__.createReduxContextHook)(context); return function useStore() { const { store } = useReduxContext(); // @ts-ignore return store; }; } /** * A hook to access the redux store. * * @returns {any} the redux store * * @example * * import React from 'react' * import { useStore } from 'react-redux' * * export const ExampleComponent = () => { * const store = useStore() * return
{store.getState()}
* } */ const useStore = /*#__PURE__*/createStoreHook(); /***/ }), /***/ "../node_modules/react-redux/es/index.js": /*!***********************************************!*\ !*** ../node_modules/react-redux/es/index.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Provider: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.Provider), /* harmony export */ ReactReduxContext: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.ReactReduxContext), /* harmony export */ batch: () => (/* reexport safe */ _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates), /* harmony export */ connect: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.connect), /* harmony export */ createDispatchHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createDispatchHook), /* harmony export */ createSelectorHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createSelectorHook), /* harmony export */ createStoreHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createStoreHook), /* harmony export */ shallowEqual: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.shallowEqual), /* harmony export */ useDispatch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useDispatch), /* harmony export */ useSelector: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useSelector), /* harmony export */ useStore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useStore) /* harmony export */ }); /* harmony import */ var use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sync-external-store/shim */ "../node_modules/use-sync-external-store/shim/index.js"); /* harmony import */ var use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector */ "../node_modules/use-sync-external-store/shim/with-selector.js"); /* harmony import */ var _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/reactBatchedUpdates */ "../node_modules/react-redux/es/utils/reactBatchedUpdates.js"); /* harmony import */ var _utils_batch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/batch */ "../node_modules/react-redux/es/utils/batch.js"); /* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ "../node_modules/react-redux/es/hooks/useSelector.js"); /* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/connect */ "../node_modules/react-redux/es/components/connect.js"); /* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./exports */ "../node_modules/react-redux/es/exports.js"); // The primary entry point assumes we're working with standard ReactDOM/RN, but // older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x). // Because of that, the useSyncExternalStore compat shim is needed. (0,_hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.initializeUseSelector)(use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__.useSyncExternalStoreWithSelector); (0,_components_connect__WEBPACK_IMPORTED_MODULE_5__.initializeConnect)(use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__.useSyncExternalStore); // Enable batched updates in our subscriptions for use // with standard React renderers (ReactDOM, React Native) (0,_utils_batch__WEBPACK_IMPORTED_MODULE_3__.setBatch)(_utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates); /***/ }), /***/ "../node_modules/react-redux/es/types.js": /*!***********************************************!*\ !*** ../node_modules/react-redux/es/types.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /***/ }), /***/ "../node_modules/react-redux/es/utils/Subscription.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/utils/Subscription.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSubscription: () => (/* binding */ createSubscription) /* harmony export */ }); /* harmony import */ var _batch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./batch */ "../node_modules/react-redux/es/utils/batch.js"); // encapsulates the subscription logic for connecting a component to the redux store, as // well as nesting subscriptions of descendant components, so that we can ensure the // ancestor components re-render before descendants function createListenerCollection() { const batch = (0,_batch__WEBPACK_IMPORTED_MODULE_0__.getBatch)(); let first = null; let last = null; return { clear() { first = null; last = null; }, notify() { batch(() => { let listener = first; while (listener) { listener.callback(); listener = listener.next; } }); }, get() { let listeners = []; let listener = first; while (listener) { listeners.push(listener); listener = listener.next; } return listeners; }, subscribe(callback) { let isSubscribed = true; let listener = last = { callback, next: null, prev: last }; if (listener.prev) { listener.prev.next = listener; } else { first = listener; } return function unsubscribe() { if (!isSubscribed || first === null) return; isSubscribed = false; if (listener.next) { listener.next.prev = listener.prev; } else { last = listener.prev; } if (listener.prev) { listener.prev.next = listener.next; } else { first = listener.next; } }; } }; } const nullListeners = { notify() {}, get: () => [] }; function createSubscription(store, parentSub) { let unsubscribe; let listeners = nullListeners; // Reasons to keep the subscription active let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?) let selfSubscribed = false; function addNestedSub(listener) { trySubscribe(); const cleanupListener = listeners.subscribe(listener); // cleanup nested sub let removed = false; return () => { if (!removed) { removed = true; cleanupListener(); tryUnsubscribe(); } }; } function notifyNestedSubs() { listeners.notify(); } function handleChangeWrapper() { if (subscription.onStateChange) { subscription.onStateChange(); } } function isSubscribed() { return selfSubscribed; } function trySubscribe() { subscriptionsAmount++; if (!unsubscribe) { unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper); listeners = createListenerCollection(); } } function tryUnsubscribe() { subscriptionsAmount--; if (unsubscribe && subscriptionsAmount === 0) { unsubscribe(); unsubscribe = undefined; listeners.clear(); listeners = nullListeners; } } function trySubscribeSelf() { if (!selfSubscribed) { selfSubscribed = true; trySubscribe(); } } function tryUnsubscribeSelf() { if (selfSubscribed) { selfSubscribed = false; tryUnsubscribe(); } } const subscription = { addNestedSub, notifyNestedSubs, handleChangeWrapper, isSubscribed, trySubscribe: trySubscribeSelf, tryUnsubscribe: tryUnsubscribeSelf, getListeners: () => listeners }; return subscription; } /***/ }), /***/ "../node_modules/react-redux/es/utils/batch.js": /*!*****************************************************!*\ !*** ../node_modules/react-redux/es/utils/batch.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getBatch: () => (/* binding */ getBatch), /* harmony export */ setBatch: () => (/* binding */ setBatch) /* harmony export */ }); // Default to a dummy "batch" implementation that just runs the callback function defaultNoopBatch(callback) { callback(); } let batch = defaultNoopBatch; // Allow injecting another batching function later const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings const getBatch = () => batch; /***/ }), /***/ "../node_modules/react-redux/es/utils/bindActionCreators.js": /*!******************************************************************!*\ !*** ../node_modules/react-redux/es/utils/bindActionCreators.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ bindActionCreators) /* harmony export */ }); function bindActionCreators(actionCreators, dispatch) { const boundActionCreators = {}; for (const key in actionCreators) { const actionCreator = actionCreators[key]; if (typeof actionCreator === 'function') { boundActionCreators[key] = (...args) => dispatch(actionCreator(...args)); } } return boundActionCreators; } /***/ }), /***/ "../node_modules/react-redux/es/utils/isPlainObject.js": /*!*************************************************************!*\ !*** ../node_modules/react-redux/es/utils/isPlainObject.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ isPlainObject) /* harmony export */ }); /** * @param {any} obj The object to inspect. * @returns {boolean} True if the argument appears to be a plain object. */ function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false; let proto = Object.getPrototypeOf(obj); if (proto === null) return true; let baseProto = proto; while (Object.getPrototypeOf(baseProto) !== null) { baseProto = Object.getPrototypeOf(baseProto); } return proto === baseProto; } /***/ }), /***/ "../node_modules/react-redux/es/utils/reactBatchedUpdates.js": /*!*******************************************************************!*\ !*** ../node_modules/react-redux/es/utils/reactBatchedUpdates.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ unstable_batchedUpdates: () => (/* reexport safe */ react_dom__WEBPACK_IMPORTED_MODULE_0__.unstable_batchedUpdates) /* harmony export */ }); /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ "react-dom"); /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_0__); /***/ }), /***/ "../node_modules/react-redux/es/utils/shallowEqual.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/utils/shallowEqual.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ shallowEqual) /* harmony export */ }); function is(x, y) { if (x === y) { return x !== 0 || y !== 0 || 1 / x === 1 / y; } else { return x !== x && y !== y; } } function shallowEqual(objA, objB) { if (is(objA, objB)) return true; if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { return false; } const keysA = Object.keys(objA); const keysB = Object.keys(objB); if (keysA.length !== keysB.length) return false; for (let i = 0; i < keysA.length; i++) { if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { return false; } } return true; } /***/ }), /***/ "../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js": /*!*************************************************************************!*\ !*** ../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ canUseDOM: () => (/* binding */ canUseDOM), /* harmony export */ useIsomorphicLayoutEffect: () => (/* binding */ useIsomorphicLayoutEffect) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); // React currently throws a warning when using useLayoutEffect on the server. // To get around it, we can conditionally useEffect on the server (no-op) and // useLayoutEffect in the browser. We need useLayoutEffect to ensure the store // subscription callback always has the selector from the latest render commit // available, otherwise a store update may happen between render and the effect, // which may cause missed updates; we also must ensure the store subscription // is created synchronously, otherwise a store update may occur before the // subscription is created and an inconsistent state may be observed // Matches logic in React's `shared/ExecutionEnvironment` file const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined'); const useIsomorphicLayoutEffect = canUseDOM ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect; /***/ }), /***/ "../node_modules/react-redux/es/utils/useSyncExternalStore.js": /*!********************************************************************!*\ !*** ../node_modules/react-redux/es/utils/useSyncExternalStore.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ notInitialized: () => (/* binding */ notInitialized) /* harmony export */ }); const notInitialized = () => { throw new Error('uSES not initialized!'); }; /***/ }), /***/ "../node_modules/react-redux/es/utils/verifyPlainObject.js": /*!*****************************************************************!*\ !*** ../node_modules/react-redux/es/utils/verifyPlainObject.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ verifyPlainObject) /* harmony export */ }); /* harmony import */ var _isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPlainObject */ "../node_modules/react-redux/es/utils/isPlainObject.js"); /* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warning */ "../node_modules/react-redux/es/utils/warning.js"); function verifyPlainObject(value, displayName, methodName) { if (!(0,_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(value)) { (0,_warning__WEBPACK_IMPORTED_MODULE_1__["default"])(`${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`); } } /***/ }), /***/ "../node_modules/react-redux/es/utils/warning.js": /*!*******************************************************!*\ !*** ../node_modules/react-redux/es/utils/warning.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ warning) /* harmony export */ }); /** * Prints a warning in the console if it exists. * * @param {String} message The warning message. * @returns {void} */ function warning(message) { /* eslint-disable no-console */ if (typeof console !== 'undefined' && typeof console.error === 'function') { console.error(message); } /* eslint-enable no-console */ try { // This error was thrown as a convenience so that if you enable // "break on all exceptions" in your console, // it would pause the execution at this line. throw new Error(message); /* eslint-disable no-empty */ } catch (e) {} /* eslint-enable no-empty */ } /***/ }), /***/ "../node_modules/redux-thunk/es/index.js": /*!***********************************************!*\ !*** ../node_modules/redux-thunk/es/index.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** A function that accepts a potential "extra argument" value to be injected later, * and returns an instance of the thunk middleware that uses that value */ function createThunkMiddleware(extraArgument) { // Standard Redux middleware definition pattern: // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware var middleware = function middleware(_ref) { var dispatch = _ref.dispatch, getState = _ref.getState; return function (next) { return function (action) { // The thunk middleware looks for any functions that were passed to `store.dispatch`. // If this "action" is really a function, call it and return the result. if (typeof action === 'function') { // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" return action(dispatch, getState, extraArgument); } // Otherwise, pass the action down the middleware chain as usual return next(action); }; }; }; return middleware; } var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version // with whatever "extra arg" they want to inject into their thunks thunk.withExtraArgument = createThunkMiddleware; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (thunk); /***/ }), /***/ "../node_modules/redux/es/redux.js": /*!*****************************************!*\ !*** ../node_modules/redux/es/redux.js ***! \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __DO_NOT_USE__ActionTypes: () => (/* binding */ ActionTypes), /* harmony export */ applyMiddleware: () => (/* binding */ applyMiddleware), /* harmony export */ bindActionCreators: () => (/* binding */ bindActionCreators), /* harmony export */ combineReducers: () => (/* binding */ combineReducers), /* harmony export */ compose: () => (/* binding */ compose), /* harmony export */ createStore: () => (/* binding */ createStore), /* harmony export */ legacy_createStore: () => (/* binding */ legacy_createStore) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ "../node_modules/@babel/runtime/helpers/esm/objectSpread2.js"); /** * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js * * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes * during build. * @param {number} code */ function formatProdErrorMessage(code) { return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. '; } // Inlined version of the `symbol-observable` polyfill var $$observable = (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })(); /** * These are private action types reserved by Redux. * For any unknown actions, you must return the current state. * If the current state is undefined, you must return the initial state. * Do not reference these action types directly in your code. */ var randomString = function randomString() { return Math.random().toString(36).substring(7).split('').join('.'); }; var ActionTypes = { INIT: "@@redux/INIT" + randomString(), REPLACE: "@@redux/REPLACE" + randomString(), PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() { return "@@redux/PROBE_UNKNOWN_ACTION" + randomString(); } }; /** * @param {any} obj The object to inspect. * @returns {boolean} True if the argument appears to be a plain object. */ function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false; var proto = obj; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(obj) === proto; } // Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of function miniKindOf(val) { if (val === void 0) return 'undefined'; if (val === null) return 'null'; var type = typeof val; switch (type) { case 'boolean': case 'string': case 'number': case 'symbol': case 'function': { return type; } } if (Array.isArray(val)) return 'array'; if (isDate(val)) return 'date'; if (isError(val)) return 'error'; var constructorName = ctorName(val); switch (constructorName) { case 'Symbol': case 'Promise': case 'WeakMap': case 'WeakSet': case 'Map': case 'Set': return constructorName; } // other return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); } function ctorName(val) { return typeof val.constructor === 'function' ? val.constructor.name : null; } function isError(val) { return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; } function isDate(val) { if (val instanceof Date) return true; return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; } function kindOf(val) { var typeOfVal = typeof val; if (true) { typeOfVal = miniKindOf(val); } return typeOfVal; } /** * @deprecated * * **We recommend using the `configureStore` method * of the `@reduxjs/toolkit` package**, which replaces `createStore`. * * Redux Toolkit is our recommended approach for writing Redux logic today, * including store setup, reducers, data fetching, and more. * * **For more details, please read this Redux docs page:** * **https://redux.js.org/introduction/why-rtk-is-redux-today** * * `configureStore` from Redux Toolkit is an improved version of `createStore` that * simplifies setup and helps avoid common bugs. * * You should not be using the `redux` core package by itself today, except for learning purposes. * The `createStore` method from the core `redux` package will not be removed, but we encourage * all users to migrate to using Redux Toolkit for all Redux code. * * If you want to use `createStore` without this visual deprecation warning, use * the `legacy_createStore` import instead: * * `import { legacy_createStore as createStore} from 'redux'` * */ function createStore(reducer, preloadedState, enhancer) { var _ref2; if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') { throw new Error( false ? 0 : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.'); } if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { enhancer = preloadedState; preloadedState = undefined; } if (typeof enhancer !== 'undefined') { if (typeof enhancer !== 'function') { throw new Error( false ? 0 : "Expected the enhancer to be a function. Instead, received: '" + kindOf(enhancer) + "'"); } return enhancer(createStore)(reducer, preloadedState); } if (typeof reducer !== 'function') { throw new Error( false ? 0 : "Expected the root reducer to be a function. Instead, received: '" + kindOf(reducer) + "'"); } var currentReducer = reducer; var currentState = preloadedState; var currentListeners = []; var nextListeners = currentListeners; var isDispatching = false; /** * This makes a shallow copy of currentListeners so we can use * nextListeners as a temporary list while dispatching. * * This prevents any bugs around consumers calling * subscribe/unsubscribe in the middle of a dispatch. */ function ensureCanMutateNextListeners() { if (nextListeners === currentListeners) { nextListeners = currentListeners.slice(); } } /** * Reads the state tree managed by the store. * * @returns {any} The current state tree of your application. */ function getState() { if (isDispatching) { throw new Error( false ? 0 : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.'); } return currentState; } /** * Adds a change listener. It will be called any time an action is dispatched, * and some part of the state tree may potentially have changed. You may then * call `getState()` to read the current state tree inside the callback. * * You may call `dispatch()` from a change listener, with the following * caveats: * * 1. The subscriptions are snapshotted just before every `dispatch()` call. * If you subscribe or unsubscribe while the listeners are being invoked, this * will not have any effect on the `dispatch()` that is currently in progress. * However, the next `dispatch()` call, whether nested or not, will use a more * recent snapshot of the subscription list. * * 2. The listener should not expect to see all state changes, as the state * might have been updated multiple times during a nested `dispatch()` before * the listener is called. It is, however, guaranteed that all subscribers * registered before the `dispatch()` started will be called with the latest * state by the time it exits. * * @param {Function} listener A callback to be invoked on every dispatch. * @returns {Function} A function to remove this change listener. */ function subscribe(listener) { if (typeof listener !== 'function') { throw new Error( false ? 0 : "Expected the listener to be a function. Instead, received: '" + kindOf(listener) + "'"); } if (isDispatching) { throw new Error( false ? 0 : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.'); } var isSubscribed = true; ensureCanMutateNextListeners(); nextListeners.push(listener); return function unsubscribe() { if (!isSubscribed) { return; } if (isDispatching) { throw new Error( false ? 0 : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.'); } isSubscribed = false; ensureCanMutateNextListeners(); var index = nextListeners.indexOf(listener); nextListeners.splice(index, 1); currentListeners = null; }; } /** * Dispatches an action. It is the only way to trigger a state change. * * The `reducer` function, used to create the store, will be called with the * current state tree and the given `action`. Its return value will * be considered the **next** state of the tree, and the change listeners * will be notified. * * The base implementation only supports plain object actions. If you want to * dispatch a Promise, an Observable, a thunk, or something else, you need to * wrap your store creating function into the corresponding middleware. For * example, see the documentation for the `redux-thunk` package. Even the * middleware will eventually dispatch plain object actions using this method. * * @param {Object} action A plain object representing “what changed”. It is * a good idea to keep actions serializable so you can record and replay user * sessions, or use the time travelling `redux-devtools`. An action must have * a `type` property which may not be `undefined`. It is a good idea to use * string constants for action types. * * @returns {Object} For convenience, the same action object you dispatched. * * Note that, if you use a custom middleware, it may wrap `dispatch()` to * return something else (for example, a Promise you can await). */ function dispatch(action) { if (!isPlainObject(action)) { throw new Error( false ? 0 : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples."); } if (typeof action.type === 'undefined') { throw new Error( false ? 0 : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.'); } if (isDispatching) { throw new Error( false ? 0 : 'Reducers may not dispatch actions.'); } try { isDispatching = true; currentState = currentReducer(currentState, action); } finally { isDispatching = false; } var listeners = currentListeners = nextListeners; for (var i = 0; i < listeners.length; i++) { var listener = listeners[i]; listener(); } return action; } /** * Replaces the reducer currently used by the store to calculate the state. * * You might need this if your app implements code splitting and you want to * load some of the reducers dynamically. You might also need this if you * implement a hot reloading mechanism for Redux. * * @param {Function} nextReducer The reducer for the store to use instead. * @returns {void} */ function replaceReducer(nextReducer) { if (typeof nextReducer !== 'function') { throw new Error( false ? 0 : "Expected the nextReducer to be a function. Instead, received: '" + kindOf(nextReducer)); } currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT. // Any reducers that existed in both the new and old rootReducer // will receive the previous state. This effectively populates // the new state tree with any relevant data from the old one. dispatch({ type: ActionTypes.REPLACE }); } /** * Interoperability point for observable/reactive libraries. * @returns {observable} A minimal observable of state changes. * For more information, see the observable proposal: * https://github.com/tc39/proposal-observable */ function observable() { var _ref; var outerSubscribe = subscribe; return _ref = { /** * The minimal observable subscription method. * @param {Object} observer Any object that can be used as an observer. * The observer object should have a `next` method. * @returns {subscription} An object with an `unsubscribe` method that can * be used to unsubscribe the observable from the store, and prevent further * emission of values from the observable. */ subscribe: function subscribe(observer) { if (typeof observer !== 'object' || observer === null) { throw new Error( false ? 0 : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'"); } function observeState() { if (observer.next) { observer.next(getState()); } } observeState(); var unsubscribe = outerSubscribe(observeState); return { unsubscribe: unsubscribe }; } }, _ref[$$observable] = function () { return this; }, _ref; } // When a store is created, an "INIT" action is dispatched so that every // reducer returns their initial state. This effectively populates // the initial state tree. dispatch({ type: ActionTypes.INIT }); return _ref2 = { dispatch: dispatch, subscribe: subscribe, getState: getState, replaceReducer: replaceReducer }, _ref2[$$observable] = observable, _ref2; } /** * Creates a Redux store that holds the state tree. * * **We recommend using `configureStore` from the * `@reduxjs/toolkit` package**, which replaces `createStore`: * **https://redux.js.org/introduction/why-rtk-is-redux-today** * * The only way to change the data in the store is to call `dispatch()` on it. * * There should only be a single store in your app. To specify how different * parts of the state tree respond to actions, you may combine several reducers * into a single reducer function by using `combineReducers`. * * @param {Function} reducer A function that returns the next state tree, given * the current state tree and the action to handle. * * @param {any} [preloadedState] The initial state. You may optionally specify it * to hydrate the state from the server in universal apps, or to restore a * previously serialized user session. * If you use `combineReducers` to produce the root reducer function, this must be * an object with the same shape as `combineReducers` keys. * * @param {Function} [enhancer] The store enhancer. You may optionally specify it * to enhance the store with third-party capabilities such as middleware, * time travel, persistence, etc. The only store enhancer that ships with Redux * is `applyMiddleware()`. * * @returns {Store} A Redux store that lets you read the state, dispatch actions * and subscribe to changes. */ var legacy_createStore = createStore; /** * Prints a warning in the console if it exists. * * @param {String} message The warning message. * @returns {void} */ function warning(message) { /* eslint-disable no-console */ if (typeof console !== 'undefined' && typeof console.error === 'function') { console.error(message); } /* eslint-enable no-console */ try { // This error was thrown as a convenience so that if you enable // "break on all exceptions" in your console, // it would pause the execution at this line. throw new Error(message); } catch (e) {} // eslint-disable-line no-empty } function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) { var reducerKeys = Object.keys(reducers); var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; if (reducerKeys.length === 0) { return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; } if (!isPlainObject(inputState)) { return "The " + argumentName + " has unexpected type of \"" + kindOf(inputState) + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\""); } var unexpectedKeys = Object.keys(inputState).filter(function (key) { return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; }); unexpectedKeys.forEach(function (key) { unexpectedKeyCache[key] = true; }); if (action && action.type === ActionTypes.REPLACE) return; if (unexpectedKeys.length > 0) { return "Unexpected " + (unexpectedKeys.length > 1 ? 'keys' : 'key') + " " + ("\"" + unexpectedKeys.join('", "') + "\" found in " + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ("\"" + reducerKeys.join('", "') + "\". Unexpected keys will be ignored."); } } function assertReducerShape(reducers) { Object.keys(reducers).forEach(function (key) { var reducer = reducers[key]; var initialState = reducer(undefined, { type: ActionTypes.INIT }); if (typeof initialState === 'undefined') { throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined."); } if (typeof reducer(undefined, { type: ActionTypes.PROBE_UNKNOWN_ACTION() }) === 'undefined') { throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle '" + ActionTypes.INIT + "' or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null."); } }); } /** * Turns an object whose values are different reducer functions, into a single * reducer function. It will call every child reducer, and gather their results * into a single state object, whose keys correspond to the keys of the passed * reducer functions. * * @param {Object} reducers An object whose values correspond to different * reducer functions that need to be combined into one. One handy way to obtain * it is to use ES6 `import * as reducers` syntax. The reducers may never return * undefined for any action. Instead, they should return their initial state * if the state passed to them was undefined, and the current state for any * unrecognized action. * * @returns {Function} A reducer function that invokes every reducer inside the * passed object, and builds a state object with the same shape. */ function combineReducers(reducers) { var reducerKeys = Object.keys(reducers); var finalReducers = {}; for (var i = 0; i < reducerKeys.length; i++) { var key = reducerKeys[i]; if (true) { if (typeof reducers[key] === 'undefined') { warning("No reducer provided for key \"" + key + "\""); } } if (typeof reducers[key] === 'function') { finalReducers[key] = reducers[key]; } } var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same // keys multiple times. var unexpectedKeyCache; if (true) { unexpectedKeyCache = {}; } var shapeAssertionError; try { assertReducerShape(finalReducers); } catch (e) { shapeAssertionError = e; } return function combination(state, action) { if (state === void 0) { state = {}; } if (shapeAssertionError) { throw shapeAssertionError; } if (true) { var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache); if (warningMessage) { warning(warningMessage); } } var hasChanged = false; var nextState = {}; for (var _i = 0; _i < finalReducerKeys.length; _i++) { var _key = finalReducerKeys[_i]; var reducer = finalReducers[_key]; var previousStateForKey = state[_key]; var nextStateForKey = reducer(previousStateForKey, action); if (typeof nextStateForKey === 'undefined') { var actionType = action && action.type; throw new Error( false ? 0 : "When called with an action of type " + (actionType ? "\"" + String(actionType) + "\"" : '(unknown type)') + ", the slice reducer for key \"" + _key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined."); } nextState[_key] = nextStateForKey; hasChanged = hasChanged || nextStateForKey !== previousStateForKey; } hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length; return hasChanged ? nextState : state; }; } function bindActionCreator(actionCreator, dispatch) { return function () { return dispatch(actionCreator.apply(this, arguments)); }; } /** * Turns an object whose values are action creators, into an object with the * same keys, but with every function wrapped into a `dispatch` call so they * may be invoked directly. This is just a convenience method, as you can call * `store.dispatch(MyActionCreators.doSomething())` yourself just fine. * * For convenience, you can also pass an action creator as the first argument, * and get a dispatch wrapped function in return. * * @param {Function|Object} actionCreators An object whose values are action * creator functions. One handy way to obtain it is to use ES6 `import * as` * syntax. You may also pass a single function. * * @param {Function} dispatch The `dispatch` function available on your Redux * store. * * @returns {Function|Object} The object mimicking the original object, but with * every action creator wrapped into the `dispatch` call. If you passed a * function as `actionCreators`, the return value will also be a single * function. */ function bindActionCreators(actionCreators, dispatch) { if (typeof actionCreators === 'function') { return bindActionCreator(actionCreators, dispatch); } if (typeof actionCreators !== 'object' || actionCreators === null) { throw new Error( false ? 0 : "bindActionCreators expected an object or a function, but instead received: '" + kindOf(actionCreators) + "'. " + "Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?"); } var boundActionCreators = {}; for (var key in actionCreators) { var actionCreator = actionCreators[key]; if (typeof actionCreator === 'function') { boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); } } return boundActionCreators; } /** * Composes single-argument functions from right to left. The rightmost * function can take multiple arguments as it provides the signature for * the resulting composite function. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing the argument functions * from right to left. For example, compose(f, g, h) is identical to doing * (...args) => f(g(h(...args))). */ function compose() { for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } if (funcs.length === 0) { return function (arg) { return arg; }; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce(function (a, b) { return function () { return a(b.apply(void 0, arguments)); }; }); } /** * Creates a store enhancer that applies middleware to the dispatch method * of the Redux store. This is handy for a variety of tasks, such as expressing * asynchronous actions in a concise manner, or logging every action payload. * * See `redux-thunk` package as an example of the Redux middleware. * * Because middleware is potentially asynchronous, this should be the first * store enhancer in the composition chain. * * Note that each middleware will be given the `dispatch` and `getState` functions * as named arguments. * * @param {...Function} middlewares The middleware chain to be applied. * @returns {Function} A store enhancer applying the middleware. */ function applyMiddleware() { for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) { middlewares[_key] = arguments[_key]; } return function (createStore) { return function () { var store = createStore.apply(void 0, arguments); var _dispatch = function dispatch() { throw new Error( false ? 0 : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); }; var middlewareAPI = { getState: store.getState, dispatch: function dispatch() { return _dispatch.apply(void 0, arguments); } }; var chain = middlewares.map(function (middleware) { return middleware(middlewareAPI); }); _dispatch = compose.apply(void 0, chain)(store.dispatch); return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])({}, store), {}, { dispatch: _dispatch }); }; }; } /***/ }), /***/ "../node_modules/reselect/es/defaultMemoize.js": /*!*****************************************************!*\ !*** ../node_modules/reselect/es/defaultMemoize.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createCacheKeyComparator: () => (/* binding */ createCacheKeyComparator), /* harmony export */ defaultEqualityCheck: () => (/* binding */ defaultEqualityCheck), /* harmony export */ defaultMemoize: () => (/* binding */ defaultMemoize) /* harmony export */ }); // Cache implementation based on Erik Rasmussen's `lru-memoize`: // https://github.com/erikras/lru-memoize var NOT_FOUND = 'NOT_FOUND'; function createSingletonCache(equals) { var entry; return { get: function get(key) { if (entry && equals(entry.key, key)) { return entry.value; } return NOT_FOUND; }, put: function put(key, value) { entry = { key: key, value: value }; }, getEntries: function getEntries() { return entry ? [entry] : []; }, clear: function clear() { entry = undefined; } }; } function createLruCache(maxSize, equals) { var entries = []; function get(key) { var cacheIndex = entries.findIndex(function (entry) { return equals(key, entry.key); }); // We found a cached entry if (cacheIndex > -1) { var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top if (cacheIndex > 0) { entries.splice(cacheIndex, 1); entries.unshift(entry); } return entry.value; } // No entry found in cache, return sentinel return NOT_FOUND; } function put(key, value) { if (get(key) === NOT_FOUND) { // TODO Is unshift slow? entries.unshift({ key: key, value: value }); if (entries.length > maxSize) { entries.pop(); } } } function getEntries() { return entries; } function clear() { entries = []; } return { get: get, put: put, getEntries: getEntries, clear: clear }; } var defaultEqualityCheck = function defaultEqualityCheck(a, b) { return a === b; }; function createCacheKeyComparator(equalityCheck) { return function areArgumentsShallowlyEqual(prev, next) { if (prev === null || next === null || prev.length !== next.length) { return false; } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible. var length = prev.length; for (var i = 0; i < length; i++) { if (!equalityCheck(prev[i], next[i])) { return false; } } return true; }; } // defaultMemoize now supports a configurable cache size with LRU behavior, // and optional comparison of the result value with existing values function defaultMemoize(func, equalityCheckOrOptions) { var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions }; var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck; var comparator = createCacheKeyComparator(equalityCheck); var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons function memoized() { var value = cache.get(arguments); if (value === NOT_FOUND) { // @ts-ignore value = func.apply(null, arguments); if (resultEqualityCheck) { var entries = cache.getEntries(); var matchingEntry = entries.find(function (entry) { return resultEqualityCheck(entry.value, value); }); if (matchingEntry) { value = matchingEntry.value; } } cache.put(arguments, value); } return value; } memoized.clearCache = function () { return cache.clear(); }; return memoized; } /***/ }), /***/ "../node_modules/reselect/es/index.js": /*!********************************************!*\ !*** ../node_modules/reselect/es/index.js ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSelector: () => (/* binding */ createSelector), /* harmony export */ createSelectorCreator: () => (/* binding */ createSelectorCreator), /* harmony export */ createStructuredSelector: () => (/* binding */ createStructuredSelector), /* harmony export */ defaultEqualityCheck: () => (/* reexport safe */ _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultEqualityCheck), /* harmony export */ defaultMemoize: () => (/* reexport safe */ _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultMemoize) /* harmony export */ }); /* harmony import */ var _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultMemoize */ "../node_modules/reselect/es/defaultMemoize.js"); function getDependencies(funcs) { var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs; if (!dependencies.every(function (dep) { return typeof dep === 'function'; })) { var dependencyTypes = dependencies.map(function (dep) { return typeof dep === 'function' ? "function " + (dep.name || 'unnamed') + "()" : typeof dep; }).join(', '); throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]"); } return dependencies; } function createSelectorCreator(memoize) { for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { memoizeOptionsFromArgs[_key - 1] = arguments[_key]; } var createSelector = function createSelector() { for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { funcs[_key2] = arguments[_key2]; } var _recomputations = 0; var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`. // So, start by declaring the default value here. // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.) var directlyPassedOptions = { memoizeOptions: undefined }; // Normally, the result func or "output selector" is the last arg var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object if (typeof resultFunc === 'object') { directlyPassedOptions = resultFunc; // and pop the real result func off resultFunc = funcs.pop(); } if (typeof resultFunc !== 'function') { throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]"); } // Determine which set of options we're using. Prefer options passed directly, // but fall back to options given to createSelectorCreator. var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer // is an array. In most libs I've looked at, it's an equality function or options object. // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full // user-provided array of options. Otherwise, it must be just the _first_ arg, and so // we wrap it in an array so we can apply it. var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions]; var dependencies = getDependencies(funcs); var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() { _recomputations++; // apply arguments instead of spreading for performance. return resultFunc.apply(null, arguments); }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again. var selector = memoize(function dependenciesChecker() { var params = []; var length = dependencies.length; for (var i = 0; i < length; i++) { // apply arguments instead of spreading and mutate a local list of params for performance. // @ts-ignore params.push(dependencies[i].apply(null, arguments)); } // apply arguments instead of spreading for performance. _lastResult = memoizedResultFunc.apply(null, params); return _lastResult; }); Object.assign(selector, { resultFunc: resultFunc, memoizedResultFunc: memoizedResultFunc, dependencies: dependencies, lastResult: function lastResult() { return _lastResult; }, recomputations: function recomputations() { return _recomputations; }, resetRecomputations: function resetRecomputations() { return _recomputations = 0; } }); return selector; }; // @ts-ignore return createSelector; } var createSelector = /* #__PURE__ */createSelectorCreator(_defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultMemoize); // Manual definition of state and output arguments var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) { if (selectorCreator === void 0) { selectorCreator = createSelector; } if (typeof selectors !== 'object') { throw new Error('createStructuredSelector expects first argument to be an object ' + ("where each property is a selector, instead received a " + typeof selectors)); } var objectKeys = Object.keys(selectors); var resultSelector = selectorCreator( // @ts-ignore objectKeys.map(function (key) { return selectors[key]; }), function () { for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { values[_key3] = arguments[_key3]; } return values.reduce(function (composition, value, index) { composition[objectKeys[index]] = value; return composition; }, {}); }); return resultSelector; }; /***/ }), /***/ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js": /*!***********************************************************************************************!*\ !*** ../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***! \***********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * @license React * use-sync-external-store-shim.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ true && (function () { function is(x, y) { return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y); } function useSyncExternalStore$2(subscribe, getSnapshot) { didWarnOld18Alpha || void 0 === React.startTransition || ((didWarnOld18Alpha = !0), console.error( "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." )); var value = getSnapshot(); if (!didWarnUncachedGetSnapshot) { var cachedValue = getSnapshot(); objectIs(value, cachedValue) || (console.error( "The result of getSnapshot should be cached to avoid an infinite loop" ), (didWarnUncachedGetSnapshot = !0)); } cachedValue = useState({ inst: { value: value, getSnapshot: getSnapshot } }); var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; useLayoutEffect( function () { inst.value = value; inst.getSnapshot = getSnapshot; checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst }); }, [subscribe, value, getSnapshot] ); useEffect( function () { checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst }); return subscribe(function () { checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst }); }); }, [subscribe] ); useDebugValue(value); return value; } function checkIfSnapshotChanged(inst) { var latestGetSnapshot = inst.getSnapshot; inst = inst.value; try { var nextValue = latestGetSnapshot(); return !objectIs(inst, nextValue); } catch (error) { return !0; } } function useSyncExternalStore$1(subscribe, getSnapshot) { return getSnapshot(); } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); var React = __webpack_require__(/*! react */ "react"), objectIs = "function" === typeof Object.is ? Object.is : is, useState = React.useState, useEffect = React.useEffect, useLayoutEffect = React.useLayoutEffect, useDebugValue = React.useDebugValue, didWarnOld18Alpha = !1, didWarnUncachedGetSnapshot = !1, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; exports.useSyncExternalStore = void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); })(); /***/ }), /***/ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js": /*!*************************************************************************************************************!*\ !*** ../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js ***! \*************************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * @license React * use-sync-external-store-shim/with-selector.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ true && (function () { function is(x, y) { return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y); } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); var React = __webpack_require__(/*! react */ "react"), shim = __webpack_require__(/*! use-sync-external-store/shim */ "../node_modules/use-sync-external-store/shim/index.js"), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore = shim.useSyncExternalStore, useRef = React.useRef, useEffect = React.useEffect, useMemo = React.useMemo, useDebugValue = React.useDebugValue; exports.useSyncExternalStoreWithSelector = function ( subscribe, getSnapshot, getServerSnapshot, selector, isEqual ) { var instRef = useRef(null); if (null === instRef.current) { var inst = { hasValue: !1, value: null }; instRef.current = inst; } else inst = instRef.current; instRef = useMemo( function () { function memoizedSelector(nextSnapshot) { if (!hasMemo) { hasMemo = !0; memoizedSnapshot = nextSnapshot; nextSnapshot = selector(nextSnapshot); if (void 0 !== isEqual && inst.hasValue) { var currentSelection = inst.value; if (isEqual(currentSelection, nextSnapshot)) return (memoizedSelection = currentSelection); } return (memoizedSelection = nextSnapshot); } currentSelection = memoizedSelection; if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection; var nextSelection = selector(nextSnapshot); if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) return (memoizedSnapshot = nextSnapshot), currentSelection; memoizedSnapshot = nextSnapshot; return (memoizedSelection = nextSelection); } var hasMemo = !1, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; return [ function () { return memoizedSelector(getSnapshot()); }, null === maybeGetServerSnapshot ? void 0 : function () { return memoizedSelector(maybeGetServerSnapshot()); } ]; }, [getSnapshot, getServerSnapshot, selector, isEqual] ); var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]); useEffect( function () { inst.hasValue = !0; inst.value = value; }, [value] ); useDebugValue(value); return value; }; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); })(); /***/ }), /***/ "../node_modules/use-sync-external-store/shim/index.js": /*!*************************************************************!*\ !*** ../node_modules/use-sync-external-store/shim/index.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim.development.js */ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"); } /***/ }), /***/ "../node_modules/use-sync-external-store/shim/with-selector.js": /*!*********************************************************************!*\ !*** ../node_modules/use-sync-external-store/shim/with-selector.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim/with-selector.development.js */ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"); } /***/ }), /***/ "react": /*!************************!*\ !*** external "React" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = React; /***/ }), /***/ "react-dom": /*!***************************!*\ !*** external "ReactDOM" ***! \***************************/ /***/ ((module) => { "use strict"; module.exports = ReactDOM; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be in strict mode. (() => { "use strict"; /*!*************************************************!*\ !*** ../core/common/assets/js/vendors-redux.js ***! \*************************************************/ var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); var reduxToolkit = _interopRequireWildcard(__webpack_require__(/*! @reduxjs/toolkit */ "../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js")); var reactRedux = _interopRequireWildcard(__webpack_require__(/*! react-redux */ "../node_modules/react-redux/es/index.js")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } window.elementorVendors = window.elementorVendors || {}; window.elementorVendors.reduxToolkit = reduxToolkit; window.elementorVendors.reactRedux = reactRedux; })(); /******/ })() ; //# sourceMappingURL=vendors-redux.js.map "use strict";(self.webpackChunkelementorFrontend=self.webpackChunkelementorFrontend||[]).push([[215],{4328:(t,e,i)=>{var n=i(6784);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,i(4846),i(7458),i(6211);var s=n(i(7224)),a=i(7557);class NestedTabs extends s.default{getTabTitleFilterSelector(t){return`[${this.getSettings("dataAttributes").tabIndex}="${t}"]`}getTabContentFilterSelector(t){return`*:nth-child(${t})`}getTabIndex(t){return t.getAttribute(this.getSettings("dataAttributes").tabIndex)}getActiveTabIndex(){const t=this.getSettings(),e=t.ariaAttributes.activeTitleSelector,i=t.dataAttributes.tabIndex;return this.elements.$tabTitles.filter(e).attr(i)||null}getWidgetNumber(){return this.$element.find("> .elementor-widget-container > .e-n-tabs, > .e-n-tabs").attr("data-widget-number")}getDefaultSettings(){const t=this.getWidgetNumber();return{selectors:{widgetContainer:`[data-widget-number="${t}"]`,tabTitle:`[aria-controls*="e-n-tab-content-${t}"]`,tabTitleIcon:`[data-tab-title-id*="e-n-tab-title-${t}"] > .e-n-tab-icon`,tabTitleText:`[data-tab-title-id*="e-n-tab-title-${t}"] > .e-n-tab-title-text`,tabContent:`[data-widget-number="${t}"] > .e-n-tabs-content > .e-con`,headingContainer:`[data-widget-number="${t}"] > .e-n-tabs-heading`,activeTabContentContainers:`[id*="e-n-tab-content-${t}"].e-active`},classes:{active:"e-active"},dataAttributes:{tabIndex:"data-tab-index"},ariaAttributes:{titleStateAttribute:"aria-selected",activeTitleSelector:'[aria-selected="true"]'},showTabFn:"show",hideTabFn:"hide",toggleSelf:!1,hidePrevious:!0,autoExpand:!0}}getDefaultElements(){const t=this.getSettings("selectors");return{$widgetContainer:this.findElement(t.widgetContainer),$tabTitles:this.findElement(t.tabTitle),$tabContents:this.findElement(t.tabContent),$headingContainer:this.findElement(t.headingContainer)}}getKeyboardNavigationSettings(){return this.getSettings()}activateDefaultTab(){const t=this.getSettings(),e=this.getEditSettings("activeItemIndex")||1,i={showTabFn:t.showTabFn,hideTabFn:t.hideTabFn};this.setSettings({showTabFn:"show",hideTabFn:"hide"}),this.changeActiveTab(e),this.setSettings(i),this.elements.$widgetContainer.addClass("e-activated")}deactivateActiveTab(t){const e=this.getSettings(),i=e.classes.active,n=e.ariaAttributes.activeTitleSelector,s="."+i,a=this.elements.$tabTitles.filter(n),o=this.elements.$tabContents.filter(s);return this.setTabDeactivationAttributes(a,t),o.removeClass(i),o[e.hideTabFn](0,()=>this.onHideTabContent(o)),o}getTitleActivationAttributes(){const t=this.getSettings("ariaAttributes").titleStateAttribute;return{tabindex:"0",[t]:"true"}}setTabDeactivationAttributes(t){const e=this.getSettings("ariaAttributes").titleStateAttribute;t.attr({tabindex:"-1",[e]:"false"})}onHideTabContent(){}activateTab(t){const e=this.getSettings(),i=e.classes.active,n="show"===e.showTabFn?0:400;let s=this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(t)),a=this.elements.$tabContents.filter(this.getTabContentFilterSelector(t));if(!s.length){const e=Math.max(t-1,1);s=this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(e)),a=this.elements.$tabContents.filter(this.getTabContentFilterSelector(e))}s.attr(this.getTitleActivationAttributes()),a.addClass(i),a[e.showTabFn](n,()=>this.onShowTabContent(a))}onShowTabContent(t){elementorFrontend.elements.$window.trigger("elementor-pro/motion-fx/recalc"),elementorFrontend.elements.$window.trigger("elementor/nested-tabs/activate",t),elementorFrontend.elements.$window.trigger("elementor/bg-video/recalc")}isActiveTab(t){const e=this.getSettings(),i="true"===this.elements.$tabTitles.filter(`[${e.dataAttributes.tabIndex}="${t}"]`).attr(e.ariaAttributes.titleStateAttribute),n=this.elements.$tabContents.filter(this.getTabContentFilterSelector(t)).hasClass(this.getActiveClass());return i&&n}onTabClick(t){t.preventDefault(),this.changeActiveTab(t.currentTarget?.getAttribute(this.getSettings("dataAttributes").tabIndex),!0)}getTabEvents(){return{click:this.onTabClick.bind(this)}}getHeadingEvents(){const t=this.elements.$headingContainer[0];return{mousedown:a.changeScrollStatus.bind(this,t),mouseup:a.changeScrollStatus.bind(this,t),mouseleave:a.changeScrollStatus.bind(this,t),mousemove:a.setHorizontalTitleScrollValues.bind(this,t,this.getHorizontalScrollSetting())}}bindEvents(){this.elements.$tabTitles.on(this.getTabEvents()),this.elements.$headingContainer.on(this.getHeadingEvents()),elementorFrontend.elements.$window.on("resize",this.onResizeUpdateHorizontalScrolling.bind(this)),elementorFrontend.elements.$window.on("resize",this.setTouchMode.bind(this)),elementorFrontend.elements.$window.on("elementor/nested-tabs/activate",this.reInitSwipers),elementorFrontend.elements.$window.on("elementor/nested-elements/activate-by-keyboard",this.changeActiveTabByKeyboard.bind(this)),elementorFrontend.elements.$window.on("elementor/nested-container/atomic-repeater",this.linkContainer.bind(this))}unbindEvents(){this.elements.$tabTitles.off(),this.elements.$headingContainer.off(),this.elements.$tabContents.children().off(),elementorFrontend.elements.$window.off("resize",this.onResizeUpdateHorizontalScrolling.bind(this)),elementorFrontend.elements.$window.off("resize",this.setTouchMode.bind(this)),elementorFrontend.elements.$window.off("elementor/nested-tabs/activate",this.reInitSwipers),elementorFrontend.elements.$window.off("elementor/nested-elements/activate-by-keyboard",this.changeActiveTabByKeyboard.bind(this)),elementorFrontend.elements.$window.off("elementor/nested-container/atomic-repeater",this.linkContainer.bind(this))}reInitSwipers(t,e){const i=e.querySelectorAll(".swiper");for(const t of i){if(!t.swiper)return;t.swiper.initialized=!1,t.swiper.init()}}onInit(...t){super.onInit(...t),this.getSettings("autoExpand")&&this.activateDefaultTab(),(0,a.setHorizontalScrollAlignment)(this.getHorizontalScrollingSettings()),this.setTouchMode(),"nested-tabs.default"===this.getSettings("elementName")&&i.e(304).then(i.bind(i,7469)).then(({default:t})=>{new t(this.getKeyboardNavigationSettings())}).catch(t=>{console.error("Error importing module:",t)})}onEditSettingsChange(t,e){"activeItemIndex"===t&&this.changeActiveTab(e,!1)}onElementChange(t){this.checkSliderPropsToWatch(t)&&(0,a.setHorizontalScrollAlignment)(this.getHorizontalScrollingSettings())}checkSliderPropsToWatch(t){return 0===t.indexOf("horizontal_scroll")||"breakpoint_selector"===t||0===t.indexOf("tabs_justify_horizontal")||0===t.indexOf("tabs_title_space_between")}changeActiveTab(t,e=!1){if(e&&this.isEdit&&this.isElementInTheCurrentDocument())return window.top.$e.run("document/repeater/select",{container:elementor.getContainer(this.$element.attr("data-id")),index:parseInt(t)});const i=this.isActiveTab(t),n=this.getSettings();if(!n.toggleSelf&&i||!n.hidePrevious||this.deactivateActiveTab(t),!n.hidePrevious&&i&&this.deactivateActiveTab(t),!i){if(this.isAccordionVersion())return void this.activateMobileTab(t);this.activateTab(t)}}changeActiveTabByKeyboard(t,e){e.widgetId.toString()===this.getID().toString()&&this.changeActiveTab(e.titleIndex,!0)}activateMobileTab(t){setTimeout(()=>{this.activateTab(t),this.forceActiveTabToBeInViewport(t)},10)}forceActiveTabToBeInViewport(t){if(!elementorFrontend.isEditMode())return;const e=this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(t));elementor.helpers.isInViewport(e[0])||e[0].scrollIntoView({block:"center"})}getActiveClass(){return this.getSettings().classes.active}getTabsDirection(){const t=elementorFrontend.getCurrentDeviceMode();return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(),"tabs_justify_horizontal","",t)}getHorizontalScrollSetting(){const t=elementorFrontend.getCurrentDeviceMode();return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(),"horizontal_scroll","",t)}isAccordionVersion(){return"contents"===this.elements.$headingContainer.css("display")}setTouchMode(){const t=this.getSettings("selectors").widgetContainer;if(elementorFrontend.isEditMode()||"resize"===event?.type){const e=["mobile","mobile_extra","tablet","tablet_extra"],i=elementorFrontend.getCurrentDeviceMode();if(-1!==e.indexOf(i))return void this.$element.find(t).attr("data-touch-mode","true")}else if("ontouchstart"in window)return void this.$element.find(t).attr("data-touch-mode","true");this.$element.find(t).attr("data-touch-mode","false")}linkContainer(t){const{container:e}=t.detail,i=e.model.get("id"),n=this.$element.data("id"),s=e.view.$el;if(i===n&&(this.updateIndexValues(),this.updateListeners(s),elementor.$preview[0].contentWindow.dispatchEvent(new CustomEvent("elementor/elements/link-data-bindings"))),!this.getActiveTabIndex()){const e=t.detail.index+1||1;this.changeActiveTab(e)}}updateListeners(t){this.elements.$tabContents=t.find(this.getSettings("selectors.tabContent")),this.elements.$tabTitles=t.find(this.getSettings("selectors.tabTitle")),this.elements.$tabTitles.on(this.getTabEvents())}updateIndexValues(){const{$widgetContainer:t,$tabContents:e,$tabTitles:i}=this.getDefaultElements(),n=this.getSettings(),s=n.dataAttributes.tabIndex,a=t.data("widgetNumber");i.each((t,i)=>{const o=t+1,r=`e-n-tab-title-${a}${o}`,l=`e-n-tab-content-${a}${o}`;i.setAttribute("id",r),i.setAttribute("style",`--n-tabs-title-order: ${o}`),i.setAttribute(s,o),i.setAttribute("aria-controls",l),i.querySelector(n.selectors.tabTitleIcon)?.setAttribute("data-binding-index",o),i.querySelector(n.selectors.tabTitleText).setAttribute("data-binding-index",o),e[t].setAttribute("aria-labelledby",r),e[t].setAttribute(s,o),e[t].setAttribute("id",l),e[t].setAttribute("style",`--n-tabs-title-order: ${o}`)})}onResizeUpdateHorizontalScrolling(){(0,a.setHorizontalScrollAlignment)(this.getHorizontalScrollingSettings())}getHorizontalScrollingSettings(){return{element:this.elements.$headingContainer[0],direction:this.getTabsDirection(),justifyCSSVariable:"--n-tabs-heading-justify-content",horizontalScrollStatus:this.getHorizontalScrollSetting()}}}e.default=NestedTabs},7557:(t,e)=>{function getChildrenWidth(t){let e=0;const i=t[0].parentNode,n=getComputedStyle(i),s=parseFloat(n.gap)||0;for(let i=0;it.clientWidth;if(!n||!s||!a)return;i.preventDefault();const o=parseFloat(t.dataset.pageX),r=i.pageX-o;let l=0;l=20r?-5:r;t.scrollLeft=t.scrollLeft-l,t.classList.add("e-scroll-active")}}}]);

Blog

No posts found

Urgencias archivos - Adoptamestizos.com https://adoptamestizos.com/category/urgencias/ Protectora de animales en Sevilla y Córdoba ¡Salva una vida, adopta un amigo! Mon, 24 Aug 2026 13:48:09 +0000 es hourly 1 https://adoptamestizos.com/wp-content/uploads/2020/05/cropped-Logo-color-32x32.png Urgencias archivos - Adoptamestizos.com https://adoptamestizos.com/category/urgencias/ 32 32 Panettone, la realidad del abandono https://adoptamestizos.com/panettone/ Mon, 24 Oct 2022 18:14:58 +0000 https://adoptamestizos.com/?p=70586 La entrada Panettone, la realidad del abandono se publicó primero en Adoptamestizos.com.

]]>

Urgencias

Pannetone es todo un luchador, un perro que a pesar de su juventud ya se ha enfrentado a un cruel abandono dónde casi pierde la vida por desnutrición. Si la vida ya no había sido bastante cruel con él, cuando comenzó a recuperarse enfermó de parvovirus, debatiéndose entre la vida y la muerte durante varios días. Para luego, a los meses, partirse la pata jugando con otro perro.

A pesar de todo eso, él nunca ha perdido la alegría ni las ganas de vivir. Su rabito no ha dejado de moverse en ningún momento y siempre nos agradece con grandes lametones.

Ahora, muchos meses después, Pannetone vive en una residencia dónde a pesar de que lo cuidan muy bien y tiene muchos amigos perrunos no puede ser su destino. Pannetone necesita una familia que le haga sentir como el perrito especial que es, aunque sea una familia temporal de acogida que le de todo el cariño que necesita.

¿Alguien dispuesto a adoptar a este angelito peludo?

Lee la última actualización

04 de Mayo de 2021

Lo de que estamos hasta arriba y no podemos más se queda en simples palabras vacías que se van volando con el viento tal como salen de nuestra boca en cuanto te envían imágenes como estas.
Esta tarde, una compañera ha visto cómo una persona llevaba a este pequeño al que ha dejado dentro de un parque. Creemos, por el estado del animal, que lo ha encontrado abandonado y ha pensado que allí, en un parque frecuentado por papis y mamis perrunos, alguien se apiadaría de él y lo cierto es que no estaba equivocado. Ha sido Raquel la que, en cuanto le ha visto, nos ha llamado para pedir ayuda por si teníamos un huequito en el que cobijar a un saquito de huesos y piel.
Esta noche la pasará con Raquel porque dejarle en la calle en ese estado no es opción, pero en su casa no puede quedarse y por eso buscamos urgente y desesperadamente una casa de acogida en Sevilla para, al menos, ofrecerle los primeros cuidados y buscar con más tranquilidad un lugar en el que pueda recuperarse como es debido.
Es un macho joven, medianito. En las fotos apenas puede apreciarse un pequeño atisbo del estado en el que se encuentra. No tiene más que piel y huesos, y una mirada apagada que lucha por encontrar un rastro de esperanza al que aferrarse para seguir viviendo. Apenas tiene fuerzas para tenerse en pie. Y aun así, la criatura las saca de donde no las tiene para mover su rabito en agradecimiento por las caricias sinceras y el platito de comida que ha devorado como si le fuese la vida en ello. Y es que, literalmente, es así.
No queda otra que prepararse para otro caso de los que cuesta superar, pero confiamos en vuestro apoyo para, de nuevo, salir adelante juntxs.
Por favor, urgentísimo encontrar una casa de acogida para él, aunque sea temporal, para darnos tiempo a saber a qué nos enfrentamos y a construir los cimientos de su nueva vida.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 05 de Mayo de 2021
No nos ha escrito ni un alma para acoger a este pequeño. De verdad, ¿nadie en toda Sevilla tiene hueco en casa? ¿Dónde están todas las personas que se ofrecieron para acoger a los galgos? ¿Acaso es que algunos tienen más derechos que otros? O explicadnos el problema, porque no somos capaces de entenderlo…
Esta criatura fue recogida prácticamente en las últimas. Es todo huesos y piel, y aunque podemos contar con sitio en la residencia para urgencias, donde tendría que estar este animal es en una casa, tranquilito, con alimentación controlada, mimos y alguien diciéndole cada día que se va a recuperar y que todo lo que ha sufrido no será más que una mala pesadilla.
En serio, ¿nadie puede? Si sus ojitos no os conmueven, nada de lo que digamos lo hará…
Es un machito de un año, medianito, muy noble, bueno y cariñoso y sociable con otros perros.
Buscamos MUY urgentemente casa de acogida en Sevilla y en este caso ampliamos también a Córdoba.
La acogida no afrontará ningún gasto y se pondrá a su disposición todo lo que el animal necesite.
Por favor, ayudadnos a ayudarle.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 07 de Mayo de 2021
Se llama PANETTONE.
Lo encontraron abandonado en un parque con una delgadez tan extrema que parecía mentira que pudiera estar en pie. Un auténtico saquito de piel y huesos, en cuyo interior lo único que había era amor.
Nos ha costado ubicarle porque vale, es el típico perro que nadie acoge y eso nos pone un poco de los nervios, pero lo bueno es que, cuando aparece alguien dispuesta a ayudar a un animal que realmente lo necesita sin mirar nada más que su necesidad, suele ser alguien especial; alguien que acoge con el corazón y con la firme convicción de traer esperanza a quien sin remedio la ha perdido.
Ha sido María José la encargada de cargar esa esperanza que ha depositado en el corazón de Panettone y ha traído sosiego a los nuestros, pues su ilusión, sus nervios y el cariño que brotaba de cada una de sus palabras nos han dejado con la bendita tranquilidad de saber que nadie podrá cuidar a Panettone mejor que ella, mientras nosotras hacemos nuestra parte para, entre todas, devolverle su dignidad y construirle un futuro que nunca imaginó tan cerca.
Aunque ya tiene una perrita adoptada (prácticamente gemela de Panettone), es la primera vez que se lanza a la aventura de la acogida y de corazón esperamos estar a la altura de su ilusión para poder ofrecerle una experiencia que no olvidará jamás.
María José, devolviéndole a su pareja Fernando la sorpresa que le dio cuando trajo a su perrita sin ella saber nada, no le contó que esta noche serían uno más en casa. Nos ha mandado el vídeo de la reacción de Fernando a la sorpresa y nos ha encantado tanto que teníamos que compartirlo con todxs ?
Muchísimas gracias María José y Fernando por acoger a nuestro nuevo amor. Estamos seguras de que, con vosotrxs, se va a recuperar en seguida y podremos buscarle muy pronto una familia tan bonita como la vuestra.
El camino acaba de comenzar para Panettone y todavía tenemos que saber el resultado de sus analíticas para saber a qué nos enfrentamos.
Os iremos contando ?

Actualización 07 de Mayo de 2021
Pannetone, contra tooooodo pronóstico, es negativo a enfermedades y es la mejor noticia que podríamos haber recibido porque estábamos casi seguras de que iba a tener leishmaniosis. Pero no, está sano. Es una alegría a la par que una gran tristeza, porque eso significa que el estado de delgadez tan extremo que padece es debido a que ha sido privado de alimento y no alcanzamos a imaginar el infierno que habrá vivido. Preferimos no pensarlo y centrarnos en la bonita y maravillosa vida que le espera 🙂

Muchas gracias a Angy y Kevin por acoger en su precioso hogar a tres de los mini galguitos de la familia Jolie-Pitt y al guapo de #PANETTONE después de que su primera acogida no terminara de cuajar. Nos han salvado la vida a todos, literalmente ?

Todavía no nos podemos creer que #PANETONNE esté sanito. Estábamos seguras de que tendríamos que enfrentarnos a otro caso de leishmaniosis con él pero que va, ahí está el tío, sanote y bien contento ?
Eso sí, el hambre que arrastra la criatura no es ni medio normal. Hay que andar con mil ojos porque si tiene posibilidad te roba cualquier pedazo de comida que tengas en las manos ? Pero es que no nos extraña… ¿Dónde habrá estado para llegar a un estado tan extremo de delgadez estando sano? No queremos ni pensar el hambre que habrá pasado.No sé si os lo hemos contado, pero #Panetonne es un amor absoluto. No pierde una sola oportunidad para dar besos y hacerse una rosquita en cualquier regazo disponible. Aunque aún está muy débil, va dejando al descubierto la gran energía que tiene y lo bonito que es su carácter. En unas semanas estará listo para encontrar una buena familia y ojalá haya alguien esperándole para entonces ?Gracias Angy y Kevin por cuidar tan bien de nuestro guapo ?

Actualización 30 de Mayo de 2021
Cien formas de dormir incómodamente.
Por #Panettone.No nos vamos a cansar de daros los buenos días con estos personajes ?
No os contamos que el otro día pasamos el día ancá la Angy con nuestros niños y volvimos encantadas de verles tan bien y más enamoradas todavía, si es que se puede, de todos ellos
Los mini galguis son la sensación, como es normal. Os hablaremos de ellos en otra publicación. Pero es que #Panettone se hace notar y mucho. Además de ser extremadamente sociable y llevarse bien y querer jugar con todos los perros, lo que siente por las personas es devoción absoluta, y ante esto se nos cae la cara de vergüenza porque una criatura así, tan cariñosa y buena, no merece el trato que ha sufrido por parte de los seres que tanto adora.
#Panettone es el típico perro que no puede vivir sin contacto humano; de estos que aprovechan cualquier ocasión para dormir en tu regazo y comerte la cara a besos; de los que aprenden todo muy rápido porque se pierden por obtener tu reconocimiento. De los que van al fin del mundo contigo si se lo pides, vaya.La semana que viene vamos a repetir sus analíticas porque no estamos conformes con los resultados; creemos que ha podido haber algún error en el laboratorio, porque Panettone muestra signos claros de leishmaniosis. Os contaremos cuando sepamos.Por cierto, que nos habéis escrito muchxs pensando que #Panettone es un bodeguero y hemos alucinado. ¿Cómo estará de delgado el pobre para que confundáis un stafford con un bodeguero? ? Si es que ahora mismo es todo cabeza…

Actualización 31 de Mayo de 2021

PANETTONE está malito y lo hace saber, pero ni aun así pierde las fuerzas para mover su rabito ?
No parece grave. Ha vuelto a dar negativo a leishmaniosis y barajamos algún problema intestinal que valoraremos mañana con ecografía. Os contamos en cuanto sepamos.

Los mini galguis ahí, de enfermeros ?

Actualización 04 de Junio de 2021

El malestar que os contamos de Panettone no era ninguna tontería. Era parvovirus. Inmediatamente se llevó a hospitalizar, y como los tres mini galguis conviven con él y aún no estaban vacunados, se hospitalizaron igualmente por precaución porque estábamos seguras de que iban a enfermar en las próximas horas. Así ha sido. No os hemos contado nada porque estábamos esperando a recibir los resultados, pero ya no importa. Los tres peques son positivos y están muy graves.
Necesitan, para ESTA TARDE, plasma de un donante sano y sus vidas dependen de encontrarlo.
#Panettone, dentro de la gravedad, está estable y en principio no necesita transfusión, pero tampoco lo descartamos.

Buscamos:
Perro de más de 25 kg totalmente sano, a ser posible joven, con analíticas recientes. Si no las tiene, se le harán de forma gratuita esta tarde en nuestro veterinario (clínica veterinaria La Motilla, en Dos Hermanas).

Veroadopciones@hotmail.com

Actualización 07 de Junio de 2020

No os podéis imaginar el dolor que nos provoca todo esto.El dolor de haberles sacado de la calle prometiéndoles un futuro y una vida en la que no tuvieran que sufrir ni un solo día, para que ahora, por una maldita enfermedad, las promesas se conviertan en ilusiones vacías y sus vidas se estén escapando entre transfusiones, vías y medicamentos sin darnos posibilidad de agarrarlas fuerte para no dejar que se vayan. Por una maldita enfermedad que no sabemos de dónde han podido salir ni cómo leches la han contraído porque ninguno de los cuatro ha salido de su hogar de acogida.
No os podéis imaginar lo que duele el no poder decirles, viendo sus caritas de sufrimiento y sus miradas de no entender lo que les pasa, que no tengan miedo,que van a salir de esta y van a volver a dormir apelotonaditos en su sillón favorito.
No os hacéis una idea del dolor que sentimos por esa familia de acogida que,siendo su primera vez, habían puesto todas sus ilusiones en recuperar a nuestros pequeños y verles marchar pronto a esos bonitos hogares que les prometimos.Esa familia que está destrozada, preguntándose cada día si volverán a verlos y qué podrían haber hecho para evitarlo, incapaces de desterrar la culpa,aunque sepan más que de sobra que esto se escapaba al control de cualquiera.
No os imagináis lo que duele esta impotencia de no poder ofrecerles más y tranquilizar los corazones de todos con una esperanza que ya estamos perdiendo.

Esta noche hemos perdido a #Maddox y #Pax, dos de los galguitos…
Sus vidas se han apagado y con ellas se marchan promesas, ilusiones y la poquita esperanza que nos quedaba de volver a verles juntitos en su sillón alegrándonos la vida con cada imagen que nos mandaban sus papás de acogida.Todo se va con ellos.
En estos momentos una compañera esta llevando a su perro a la clínica para realizar otra transfusión a #Knox, y solo queda rezar, a lo que sea que haya que rezarle, para que salga de esta y no tengamos que lamentar otra pérdida.

No hemos hablado de dinero porque ni nos apetecía ni nos parecía importante, pero lo cierto es que con esto ya no podemos solas. Ni con el dolor, ni con los gastos, ni con la carga de haber perdido dos vidas que apena ni con la carga de haber perdido dos vidas que apenas habían dado comienzo.

Actualización 11 de Junio de 2021

Esta es la cara que pones cuando te dan el alta después de superar la parvo ?
#Panettone es un luchador y, por muy difícil que se lo ponga la vida, siempre sale adelante.

Muchísimas gracias Angy y Kevin por estar ahí para él ?

Actualización 23 de Junio de 2021

Ayer estuvimos todo el día hablando de campeones y poco os estamos contando del luchador número uno: #PANETTONE. Nuestro ser de luz, nuestro solete, que si es más bueno ya, le sale un arito y se convierte en santo.
Ha sobrevivido al abandono, a una inanición extrema que podría haberle matado y al parvovirus. Y ahí está el tío, peleando como un jabato sin que nada pueda con él, cada día más gordito y más precioso.

Ojalá una familia para nuestro guapo.
Tiene un añito y es, de verdad, el ser más noble e inocente que hemos conocido ?

¡Buenos días!

Actualización 19 de Agosto de 2021
Lo de contar sólo noticias bonitas esta semana sonaba de maravilla en nuestras cabezas, pero anoche, un lamentable accidente nos tiró de la nube de los mundos de yupi y nos dimos de bruces contra la realidad de tener tantísimos animales a nuestro cargo.
A ver por dónde empezamos, porque lo de este perro es mala suerte no, lo siguiente.
Panettone tuvo ayer un percance con un perrete mientras jugaban con un juguete y se ha facturado una pata. Todavía no sabemos el alcance de la lesión. Está ahora mismo en el veterinario, donde le están realizando un estudio radiográfico, pero que hay fractura es seguro y que necesita cirugía, también…
Esto nos viene ahora como una patada en el estómago. Con todos los casos complicados que asumimos los últimos meses, no nos ha quedado dinero para afrontar urgencias como la de Panettone. El poco que tenemos ahorrado lo necesitamos para imprevistos que puedan surgir, por ejemplo, con Himalaya, que visita al veterinario mínimo una vez por semana. Más o menos vamos tirando como podemos, pero esto nos rompe todos los planes y nos desestabiliza todas las cuentas ?
Sea como sea, no podemos dejar a Panettone sin la atención que necesita. Nuestro superviviente número 1, que ya se ha ganado el título a pulso porque más cosas no le pueden pasar, vuelve a ponerse a prueba y a necesitar vuestra ayuda para conseguirlo.

Todavía no sabemos cuánto nos va a costar arreglar este desastre, pero ya sabéis lo caras que son las cirugías de trauma. Por ahora, tenemos 120 euros que nos envió Jana la semana pasada «para lo que necesitáramos» (gracias bonita). Y lo que necesitamos es esto. Por favor, si alguien puede ayudarnos, aunque sea con un par de euros, lo agradeceríamos infinitamente.

Panettone cariño, te queremos un montón, pero deja esta cruzada que tienes contigo mismo e intenta vivir algún mesecillo con tu salud íntegra ??

Actualización 19 de Agosto de 2021
¡¡PANETTONE está en quirófano!!
La Clinica Veterinaria Viana nos ha hecho el tremendo favor de operar a Panettone HOY, ya que en nuestra clínica no disponían del material que necesitaban para esta cirugía y esperar su pedido y llegada significaba esperar hasta la semana que viene. Además, nos han dejado una cirugía que cuesta al menos 900 euros en 780 (adjuntamos presupuesto en comentarios). Una grandísima ayuda teniendo en cuenta que no es nuestra clínica habitual. ¡Muchísimas gracias! ?
Gracias a ello y especialmente a VOSOTXS nos hemos lanzado de cabeza a la cirugía, ya que FALTA MUY POQUITO para recaudar la cantidad que necesitamos para pagarla entera.
Es que sois MUY GRANDES de verdad. No os imagináis la tranquilidad que nos ofrecéis con esto, sabiendo que, ante urgencias y cuando os necesitamos, SIEMPRE estáis ahí. ¡Nunca encontraremos palabras de agradecimiento para todo lo que hacéis por nuestros animales! ?
Ahora solo queda esperar que todo vaya bien, que Panettone sea fuerte para que todo esto quede pronto en una mala pesadilla, y podamos recaudar el poquito que nos falta para poder pagar a la clínica. ¿Nos ayudáis? ?

Actualización 20 de Agosto de 2021
Todo fue de maravilla ?
PANETTONE ya está en casa descansando, comenzando su postoperatorio y la cirugía está TOTALMENTE PAGADA gracias a vuestra ayuda ?
Infinitas gracias por responder tan rápido a nuestra desesperación. Todavía no nos creemos la suerte que tenemos con vosotrxs ?
Vamos a darle unos días al cabezón para que se reponga y olvide el mal trago que ha sufrido. Os iremos contando cómo avanza y esperamos no tener que necesitar nada más… Aunque con este flipao de la vida ya no sabemos a qué atenernos ?
Gracias de todo corazón por ayudar a nuestro guapo ?

Actualización 20 de Agosto de 2021
PANETTONE ha tenido hoy su primera revisión tras la cirugía y todo va como la seda ?
Poco a poco vuelve a ser el que era y, ¿sabéis una cosa? Está deseando recuperarse por completo para retomar lo que hemos dejado a medias: la búsqueda de su familia ideal.
¿No sería genial tener a alguien esperándole cuando esta mala pesadilla acabe? Panettone promete dejar de ser un pupas y centrarse en hacer a su futura familia la más afortunada del mundo ?
Está en Sevilla, pero puede viajar a donde sea necesario.
veroadopciones@hotmail.com
ireneadopciones@gmail.com
Todavía no encontramos palabras para agradeceros lo que habéis hecho por él. De corazón, gracias ?

Actualización 14 de Octubre de 2021
Al habla PANETTONE.
Me asomo por aquí para contaros que estoy totalmente recuperado de mi pata chula, y os lo debo toooodo a vosotrxs porque sin vuestra ayuda nunca podría haber ahorrado lo suficiente como para pagar la operación. Así que os mando un guau muy grande y un montón de besitos que en eso soy todo un experto ?
Tengo que contaros, también, que recientemente me han matriculado en una escuela privada de perritos con alojamiento, desayuno, almuerzo y cena incluidos.
Mis papis de acogida, aunque son unos cracks, trabajan mucho y no disponen de tiempo para enseñarme todo lo que debo aprender, y además necesito un profe cualificado que certifique mi título de «Perrito Excelente». Así que he hecho mi maletita y me he mudado a la residencia del centro.
Me dicen que el curso durará unos dos meses, y el temario se compone de una serie de asignaturas teóricas con sus correspondientes sesiones prácticas en las que tendré que demostrar lo aprendido.
Yo no es por dármelas de empollón ni nada, pero la teoría me la sé de pe a pa. El problema es que soy una mijita cabezón (literal y figuradamente) y me emociono un poco con todo (un pelín demasiao) y me cuesta centrarme cuando hay muchos estímulos y cosas guays para hacer. Qué queréis que os diga, después de la mierda de vida que he tenido, a mí todo lo bueno que me pasa me parece una pasada y hay que aprovecharlo al máximo.
Algunas asignaturas en las que me he matriculado son:
– Gestión de la euforia: flipar con todo está bien, pero sin pasarse.
– Autocontrol: vivir a base de impulsos es un estrés.
– Besitos vs bocaitos: en el amor no todo vale.
– Gestión de la soledad: porque quedar a solas con tus pensamientos también mola.
– La vía del diálogo: si un colega te chulea, pasar de su culo es la mejor opción.
– Relaciones sociales: hay que aceptar a todo el mundo tal como es.
Mi profe dice que soy un crack, que soy muy sociable y bueno tanto con personas como con otros perros y que apunto maneras para sacar matrícula de honor en todas las asignaturas; sólo necesito canalizar mis nervios y aprender a centrarme. Así que estoy muy contento y dispuesto a dar lo mejor de mí ?
Cuando finalice el curso, necesitaré una beca de prácticas en alguna casa de acogida en la que, con el asesoramiento de mi profe, me ayuden a conseguir mi tan ansiado título de » Perrito Excelente». Con él, y con un poco de suerte, podré alcanzar lo que llevo toda la vida buscando: el mejor hogar del mundo ?
Así que, si alguien está interesado en ofrecerme la beca para entonces, puede enviar su solicitud a los siguientes correos y mis tutoras os explicarán las bases y condiciones.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 27 de Agosto de 2022
Esta mañana, Mónica, la chica que cuida de PANETTONE en su residencia, nos envió esta foto seguida de las palabras «a ver si alguien se apiada de él», y las mismas se quedaron rondando en nuestra cabeza durante todo el día. Porque sí, lo que Panettone necesita es, tristemente, compasión…
Este chico, por muy guapísimo que nos parezca, no es un perro que entre por los ojos. No tiene un color llamativo, ni ojos azules. Su raza es de las menos «demandadas» en lo que a adopción se refiere y, de hecho, la mayoría de posibles adoptantes la esquivan, amparándose en prejuicios alimentados por la desinformación. Bien cierto es que Panettone no es un perro para todo el mundo, que tiene sus cosillas, como todos aquellos que han sufrido lo inimaginable y necesitan tiempo para entender que la vida es bella, pero alguien tiene que haber, en alguna parte, que se apiade de él.
La única motivación que encontramos para haceros llegar a Panettone al corazón es la compasión. Porque es un perro que, como muchos de su raza, está condenado a vivir entre esas rejas. Sin posibilidad de adopción ni oportunidad de esperarla en una casa de acogida, porque nadie pregunta por él ni se quiere complicar la vida con un perro que necesita algo de tiempo y comprensión.
Panettone es un perro MUY bueno. Mónica nos cuenta que su ansiedad ha disminuido considerablemente y está aprendiendo a gestionar sus emociones. Nunca ha sido un perro conflictivo ni complicado. Simplemente es un animal joven, con un pasado muy duro y ninguna oportunidad para entender la vida como se espera que hagan.
Con las personas es extremadamente cariñoso, cercano, noble y juguetón. Es bruto y tiene mucha energía, sí, como buen cabezón que se precie. Pero es que ahí reside el encanto tan extraordinario que tienen. Son perros que podrían matarte a besos o de calor, porque podrían pasarse el día pegados a ti aunque en el ambiente se destilen 50 grados.
Con otros perros es sociable. Le gusta relacionarse con ellos y jugar, pero es aquí donde Panettone necesita un guía que sepa controlarle: su delicada capacidad para gestionar su intensidad puede desembocar en reacciones que se vayan de madre. Panettone puede convivir con otros perros, pero necesita que sean compañeros tranquilos, con buenas dotes de comunicación, que sepan transmitirle calma y un oportuno «colega, relaja que te estás viniendo arriba», sin desembocar en conflicto. Necesita perros que sepan poner normas en el juego y no le sigan la corriente en exceso. Para esto es esencial, también, un guía que sepa leerle y transmitirle calma cuando toque.
Y todo suena muy complicado pero no lo es. Panettone es un perro extraordinario y todavía no ha tenido oportunidad de demostrarlo. Puede vivir en cualquier entorno y en cualquier hogar, pero para eso necesitamos que alguien quiera intentarlo.
Buscamos hogar en cualquier provincia o, a ser posible y muy necesariamente, una casa de acogida en Sevilla o Córdoba que quiera ayudarnos a sacar de Panettone todo su potencial como mejor compañero de vida. Para ello pondremos a disposición de la acogida todas las herramientas a nuestro alcance, incluyendo educador si es necesario.
Vamos a ayudar a Panettone, que no es más que un chaval ansioso por caer bien y disfrutar de una vida que aún no sabe que existe.
695 81 57 88 (SÓLO WhatsApp)
ireneadopciones@gmail.com
adopta_mestizos@hotmail.com

Actualización 14 de Septiembre de 2022
PANETTONE ya se ha mudado a la nueva residencia y el cambio no le ha podido sentar mejor. Estamos casi, casi tan contentas como él, porque superar esa espléndida sonrisa y ese buen rollo que transmite es imposible 🙂
Allí disponen de más tiempo para dedicarle a sus incansables juegos y a su relación con otros perros, que os tenemos que decir, con mucho orgullo, que es incluso mejor de lo que esperábamos. Panettone sabe comunicarse muy bien, está aprendiendo a medir sus reacciones y a gestionar su estrés y hasta ahora no ha tenido un sólo mal gesto con ninguno de los compis que le han presentado.
Como veníamos diciendo en anteriores publicaciones, Panettone no es un perro conflictivo y en general responde bastante bien a todo lo que se le presenta, pero necesita un guía que sepa transmitirle calma y jugar con compañeros que sepan medirle y no sobreestimularle en exceso para permitirle gestionar adecuadamente su energía. Su carácter no es en absoluto difícil. No es más que un chaval con mucha energía y demasiadas ganas de ser feliz.
El resumen es que Panettone es un santo, lo mires por donde lo mires. Es un perrete con el que da gusto compartir tiempo porque se lo pasa pipa con todo, agradece cualquier muestra de atención, se derrite con los cariños y siempre está dispuesto a pasar un buen rato con quien se lo ofrezca.
Estamos encantadísimas de verle así, tan guapo, agradecido y feliz 🥲
Creemos que ya es hora de encontrar un buen hogar para él, aunque sea de acogida. Una acogida que nos permita seguir ayudándole, prepararle para su futura vida y nos dé un suspirito al bolsillo, que ya no sabemos de dónde sacar más dinero para pagar tantas residencias.
Si quieres ayudar a Panettone, escríbenos. Para su acogida nos hacemos cargo de todo lo que necesite, incluyendo la ayuda de un educador/a si es necesario.
ireneadopciones@gmail.com
adopta_mestizos@hotmail.com
Y por favor, POR FAVOR, necesitamos AYUDA para sufragar sus gastos de residencia y los de todos los peques que tenemos también esperando en la de Córdoba. La residencia de Panettone nos supone un gasto mensual de 180 euros al mes, y muchos meses no sabemos de dónde sacarlos.
Estamos recibiendo muy poquita ayuda (muchísimas gracias María Gisela y Ainoa por vuestros donativos 💜) y la situación sigue siendo tan insostenible como hace unos meses. Tenemos que quitarnos algo de deuda para poder seguir rescatando bichines 🙏
Podéis ayudar:
✔ Enviando un donativo por transferencia bancaria 👉 LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Ayuda residencia
✔ Enviando un donativo por Bizum: 695 81 57 88
✔ Por PayPal: Adopta_Mestizos@hotmail.com
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Grupo TEAMING (salva vidas por un euro al mes): https://www.teaming.net/adoptamestizos

Última actualización

Actualización 24 de Octubre de 2022

La de #Sable no es la única alegría que hemos tenido estas semanas; la de #PANETTONE nos tiene, también, dando saltitos de alegría y grititos de emoción. Y es que nuestro queridísimo guapo ha encontrado, al fin y después de un año dando tumbos de residencia en residencia y tras todo lo que ha sufrido, una maravillosa casa de acogida gracias a Toni 💙
#Panettone en una camita, por fin, ¿os lo podéis creer? 🥺

Toni le está ofreciendo a #Panettone toda la estabilidad que necesitaba y está haciendo las cosas mejor que bien, y Panettone no se queda atrás, porque se está portando de diez. Alguna que otra travesura nos ha regalado, claro, pero en general está siendo increíble. Se está relacionando de maravilla con todo tipo de perros, en casa es bueno y educado, adora a Toni, responde a sus comandos y está, básicamente, disfrutando de la vida, de la estabilidad y el cariño que tanto demandaba.
Estamos que no nos lo creemos.
Qué importante es ofrecerles oportunidades, por muchos prejuicios que se tengan 💙

Muchísimas gracias Toni por intentarlo. Ya sólo por eso, y por elegir a Panettone como ahijado, tienes todo nuestro respeto y cariño. Pero es que encima te lo estás currando un montón y estás dejando el listón bien alto. ¡Te adoramos tanto como Panettone! 💙

En breve nuestro guapo empezará a buscar adopción. Y ahora sí, con todas las garantías y sabiendo el tipo de familia y hogar que necesita 🙂
Si te has enamorado, escríbenos.
Panettone está en Sevilla, pero puede viajar a donde sea necesario.
ireneadopciones@gmail.com
adopta_mestizos@hotmail.com

La entrada Panettone, la realidad del abandono se publicó primero en Adoptamestizos.com.

]]>
India, abandonada paralítica en el veterinario por su propia familia https://adoptamestizos.com/india-abandonada-paralitica-en-el-veterinario-por-su-propia-familia/ Sun, 23 Oct 2022 12:12:33 +0000 https://adoptamestizos.com/?p=72104 La entrada India, abandonada paralítica en el veterinario por su propia familia se publicó primero en Adoptamestizos.com.

]]>

Urgencias

India fue abandonada en el veterinario por su propia familia tras recibir un golpe que le dañó su columna. Tras diez días de espera, la clínica denunció el abandono y nosotros nos hemos hecho cargo de su caso.

Los resultados del TAC han sido devastadores, efectivamente, ya es tarde para operar a India. Las vértebras afectadas se han soldado y la médula se ha quedado atrapada en medio. Sus antiguos propietarios, ya que no se les puede llamar familia, la han destinado a vivir en silla de ruedas.

¿Nos acompañáis en su recuperación?

Lee la última actualización

02 de Octubre de 2022

¿Queréis flipar?
Pues bien. Tomad asiento, leed tranquilamente, intentad entender la situación como nosotras llevamos días intentando y, después de conocer la situación de esta criatura, tratad de que no os estallen las venas de rabia.
A esta cachorra de poco más de 5 meses la llevaron de urgencia a nuestra clínica de Córdoba hace más de una semana. La habían atropellado y en un principio todo fue normal: sus propietarios pagaron las primeras pruebas, estaban preocupados por su perra y parecían dispuestos a salvarla.
En las radiografías se vio claro el diagnóstico: una fractura en una vértebra lumbar que había dejado a la cachorra sin posibilidad de mover el cuarto trasero. Tenía sensibilidad y reflejos en ambas patas y todo parecía indicar que, con suerte y con la cirugía correspondiente, INDIA, que así se llama la pobre, podría volver a caminar. Cuando hay fracturas de columna y posible compromiso de la médula espinal, es necesario realizar al menos un TAC para conocer el alcance de la lesión y poder plantear la cirugía.
Se remitió el caso al hospital veterinario de Córdoba que dispone de este servicio y los propietarios quedaron en recogerla a la mañana siguiente para llevarla.
No aparecieron.
Llamaron desde el hospital preguntando por el animal porque nadie les había llamado para anular la cita.
Desde nuestro veterinario se les volvió a llamar y dijeron que irían a recogerla esa tarde.
No aparecieron.
Al día siguiente, tampoco.
Cuando se les llamaba, o no contestaban, o ponían cualquier excusa ridícula para retrasar la recogida un día más.
Fueron pasando los días y, con ellos, las posibilidades de recuperación de una cachorra que hacía días que debía estar operada y, con suerte, andando.
La última vez que nuestros veterinarios hablaron con ellos hace un par de días para informarles sobre la perrita y saber qué iban a hacer con ella, recibieron contestaciones irrespetuosas, les llamaron pesados, les dijeron que «qué querían» y que «ya irían a por la perra cuando vieran».

Por supuesto no han vuelto a aparecer. Ni han llamado para preguntar por ella. Ni han pagado el pufo que han dejado a la clínica por los días de hospitalización y medicación que necesita porque la criatura no puede con el dolor que sufre.
No han dado explicaciones. Ni siquiera un «no podemos asumirlo, preferimos la eutanasia», que igualmente no se habría llevado a cabo porque la perra se puede recuperar pero al menos habría dado a la clínica la posibilidad de pedir ayuda antes y buscar opciones para el animal. No han querido saber nada más de ella.
Han abandonado a INDIA en la clínica y allí sigue, con esos ojazos de no entender nada, con mucho dolor, con las posibilidades de recuperarse cada vez más turbias.
Antes de acudir a la policía, se les ha vuelto a llamar desde la clínica para informarles de que se iba a proceder a interponer una denuncia por abandono y la respuesta de los propietarios ha sido, literalmente, «pues vale»… 😐
Hoy se ha interpuesto la denuncia y la policía de Córdoba ha dado el visto bueno para que nuestra asociación se haga cargo de INDIA (ya en la policía tienen que estar flipando por vernos allí cada semana). En este caso, todo es mucho más fácil porque India tampoco tiene chip.
Y eso vamos a hacer.
Después de 10 días ya no sabemos si será posible recuperar la movilidad de sus patas. Quizás ya sea demasiado tarde y por culpa de la dejadez, India ya no pueda volver a caminar.
Pero vamos a intentarlo.
Y lo primero que necesitamos es el TAC que tendrían que haberle hecho hace una semana.
Necesitamos recaudar 360 euros antes del martes, que ya tenemos cita con el hospital para una valoración neurológica y el TAC.
Si hay posibilidades, pediremos presupuesto para la cirugía y esperamos, deseamos y rezamos por que no sea demasiado tarde.
Necesitamos, también, CASA DE ACOGIDA EN CÓRDOBA para sacarla de la clínica lo antes posible asumiendo, por supuesto, todos sus gastos y necesidades.
Necesitamos TODA LA AYUDA POSIBLE para salvar a INDIA de este sinsentido y este abandono tan ruin.
Os necesitamos de nuevo porque con este caso de verdad que no podemos solas pero INDIA se merece ayuda y no vamos a negársela.

Actualización 03 de Octubre de 2022
Un acto sincero de bondad, siempre provoca otro.
Con esta premisa partimos siempre cuando intentamos ayudar a un animal necesitado.
Lo único imposible es aquello que no intentas, nos dijimos un día cuando tratamos de ayudar a un pequeño cuya recuperación parecía imposible, y desde entonces la hicimos nuestro más preciado mantra, al que nos aferramos fuerte cuando la vida parece no tener opciones para aquellos de los que nos hacemos cargo con todo nuestro cariño.
La primera premisa la habéis convertido en una realidad. El primer acto de bondad, el de salvar a INDIA tras haber sido abandonada en una clínica veterinaria con una vértebra rota y sin poder andar, ha provocado una montaña de pequeñas acciones que ha hecho posible recaudar, en tiempo récord, todo el dinero que necesitamos para el TAC y mucho, mucho más. Nuestra pequeña luchadora va a tener cobertura económica para TODO lo que necesite hasta que sepamos cuánto va a costar, si es posible realizarla, la cirugía que esperamos que la ayude a volver a caminar.
No tenemos palabras para agradeceros tantísimo apoyo, tantísimo cariño y tantísima confianza.
El mundo no lo vamos a cambiar aún, aunque poco a poco, gente, todo se andará. Pero el mundo de esta perrita vaya si vamos a cambiarlo 😊
La solidaridad y la bondad han obrado su magia e INDIA podrá hacerse este próximo martes el TAC que necesita.
Ahora, vamos a aferrarnos a nuestro mantra. No sabemos si India podrá volver a andar, pero desde luego no será por no intentarlo 💪
Actualizamos donaciones, sin palabras, con el corazón en la mano y todo nuestro agradecimiento y el de India: 1630 euros.
Ahí es na. Flipamos mucho con el caso de INDIA pero con vosotrxs flipamos más. Sois increíbles. India tiene mucha suerte de teneros a su lado.
Os iremos contando cómo avanza su caso y el martes en cuanto tengamos la factura la subimos, así como el presupuesto de la operación si finalmente se puede realizar. Si no se puede y al final nos tenemos que resignar, obviamente daremos la opción de devolver el dinero a quien lo solicite 🙂
Esperamos haber sumado bien y que no nos falte nadie, que no nos funcionan bien las cabezas a estas horas 🙃 Si hay algún error o nos falta alguien, no dudéis en decírnoslo!
Vamos a por todas, pequeña. Con cuatro patas o con dos, VAMOS A POR TODO!

Actualización 04 de Octubre de 2022
Ya no tendré que estar más días en la jaulita del hospital. Allí me han cuidado muy bien, me decían que era la mimada de la clínica y todos los días me acariciaban y me recordaban lo guapa que soy y maldecían a las personas que me habían dejado en ella sin importarles lo que me sucediera. Pero aquello tenía que ser temporal.
Una de esas personitas, que visten de azul y huelen a medicina, me ha invitado a pasar unos días en su hogar. Me ha dicho que será poco tiempo. Sólo mientras me llevan a ese chisme que se llama TAC y para que me acostumbre a vivir la buena vida, porque también me ha dicho que, después de ella, vendrán otras personitas que han prometido cuidarme y mimarme igual de bien. Estoy deseando conocerles.
Aquí he descubierto una cosa que se llama sofá. Yo pensaba que estaba cómoda con mis mantitas en la jaulita, pero ay, cuántas cosas me estaba perdiendo. Ni punto de comparación, vaya. De aquí no hay quien me baje se ponga como se ponga. He decidido que quiero vivir en el sofá, y si las piernas de Marta me sirven de almohada, el resto del mundo me sobra.
Sólo quiero estar con ella, sentir su olor a buena gente, sus manos cariñosas y sus piropos sinceros.
Yo, a cambio y como agradecimiento, me estoy portando mejor que bien. Aunque necesito muchos cuidados, intento ponerlo todo muy fácil para quedarme aquí o donde me quieran el máximo tiempo posible. Aún no tienen claro si puedo controlar mis cositas por mí misma, pero yo aguanto todo lo que puedo hasta que me ayudan a levantarme y me aprietan un poquito la barriguita.
En fin, que mañana me meten en el TAC y estoy toda nerviosa. Lo bueno es que no voy sola. Me acompaña un amiguito que también necesita uno y hemos dicho bueno pues aprovechamos el viaje y nos damos besitos por el camino para tranquilizarnos 🙃
Cruzad deditos y patitas por mí.
Me han dicho que me queréis mucho y me estáis enviando mucha ayuda para que pueda recuperarme, muchas personas y desde todas partes.
Así que muchos, muchos lametones. En la vida hubiera imaginado que podría importarle a tantos humanos 🥲

Actualización 04 de Octubre de 2022
Posiblemente, el palo que nos hemos llevado con el caso de INDIA sea uno de los más tochos que recordamos y que vamos a recordar toda la vida.
No os vamos a engañar, sabíamos que era difícil, muy difícil. Tratar una fractura así después de más de diez días y tratándose de un cachorro es una locura, porque ahí ya se ha formado callo óseo y para arreglarlo habría que destruirlo. Pero es que, aún así, íbamos con la esperanza bien encendida en el corazón. Que ha habido un momento, cuando le estaban haciendo su examen neurológico y veíamos que India tenía reflejos y algo de sensibilidad, que pensábamos que salía andando al día siguiente. Pero no. Ya no hay nada que hacer. Hemos llegado tarde…
El problema es que lo de romper el callo óseo para arreglar bien la vértebra no se puede hacer en el caso de India, porque la fractura está en muy mal sitio y los dos trozos de vértebra se han montado uno encima del otro y la médula está ahí como haciendo el pino puente. Para arreglar una fractura así el único acceso posible es ventral (por debajo, accediendo desde la tripita) y es que tampoco es posible porque por ahí pasa la arteria más importante del cuerpo, la aorta, e intentarlo siquiera es un riesgo muy grande.
Nos han dicho que operar esto es un sinsentido. Y que, aunque queramos intentarlo poniendo en riesgo su vida y por muy bien que salga la cirugía, no va a volver a andar.
Nunca nos había dolido tanto perder una batalla, joder.
Porque además la hemos perdido por culpa del tiempo. Si India se hubiera operado el día que sus propietarios tenían que venir a la maldita cita, o al siguiente, hoy estaría andando. Pero no. Tenían que dar largas día sí y día también sin dar posibilidad a la pequeña de nada. Como el perro del hortelano vaya…
Perdón, pero es que estamos muy cabreadas.
Afortunadamente, INDIA no.
Y vamos a intentar quedarnos con eso.
Con esa sonrisa sincera, ingenua y ajena a la maldita mala suerte que ha tenido.
Vamos a centrarnos en buscarle la silla más molona del mundo y vamos a hacer todo lo posible por dar con una familia que quiera compartir su vida con ella a pesar de su condición, ahora ya para siempre.
Vamos a seguir dándolo todo, pequeña, pero ahora sí, a dos patitas 😢
Muchísimas gracias de corazón a todos los corazones bonitos que habéis donado para ayudarla. Adjuntamos la factura del tac (se han portado de maravilla en el hospital, la verdad, les comemos la cara) y fotos del tac.
Con vuestro permiso vamos a guardar el dinero sobrante para pagar una posible silla (aceptamos sugerencias, pues nunca hemos tenido que usarlas) y para pagar todos sus gastos, que no son pocos porque gasta empapaderas, pienso y demás como agua (hoy le hemos comprado una cama y empapaderas, que han costado 39 euros).
Así que seguimos necesitando ayuda para ella o yo que sé, para los 5.000 euros de dueda que tenemos en veterinarios 😔

Actualización 06 de Octubre de 2022
Anoche fui a provocar a todo el mundo lo que vienen siendo varios ataques de ansiedad y un principio de infarto.
Llevo apenas dos días con mis nuevos chavales de acogida, unxs chicxs la mar de simpáticxs y apañaos que me tienen entre algodones pero yo, que soy un culo inquieto y me va la marcha dije «vamos a darles un sustillo, que no se me relajen que tienen que estar pendientes de mí todo el día». Y es que resulta que me he acostumbrado a esto de ser el centro de atención y claro, cuando he visto que se había dejado de publicar sobre mi guapura he dicho nope, por ahí no paso. ¿Qué hago para asustar a mis chavales y de paso llamar la atención? Obvio. Ponerme a vomitar como si se me fuera a salir el hígado por la boca.
Mi responsable es una mijita desastre y eso de estar pendiente del móvil lo lleva regular, así que, cuando supo de mi primer vómito, le dijo a mis chavales que la mantuvieran informada por whastapp y que si la cosa iba a más o se me empezaban a salir las tripas la llamaran hasta quemarle el teléfono. Y eso hicieron. Cuando le dio por mirar el móvil y vio 5 o 6 llamadas seguidas ya se echó las manos a la cabeza. Que no paraba de vomitar, le dijeron, estaba muy apática y hacía ascos al jamoncito que me ofrecían.
Por el camino al veterinario iba calumniándome como posesa en plan «verás como hayas cogido la parvo, es que no puede ser. ¿Y si te has comido algo, cochina, y lo tienes atascado ? ¿A que te tenemos que operar de urgencia? No tienes vergüenza ni piedad ninguna».
Que ya veis qué ganas tendré yo de volver a mi jaulita de hospital, pero en fin, todo sea por llamar la atención.
Al llegar al veterinario no tuve ni un vómito. Di negativo a corona, parvo y giardias. Me hice cacota pa saludar y era un mojón perfecto y maravilloso de los que da gusto recoger. Me ofrecieron una latita y me la comí con todo el ansia.
Vamos, que no me pasa na. Pero como no se fían de mí y entiendo que como pequeño castigo por infartar a medio mundo, me dejaron hospitalizada toda la noche para vigilarme.
Y aquí estoy. Sana como una pera, pero acaparando muro para que no os olvidéis de mí 🙃
Soy una sinvergüenza y no me arrepiento de nada, que lo sepáis. Eso sí, una ayudita para seguir cubriendo gastos nunca viene mal, porque a este paso, me como mi fondo de ahorros tan rápido como me papeo las latitas.

Actualización 16 de Octubre de 2022
INDIA vuelve a estar hospitalizada.
Lleva en nuestro veterinario desde ayer, pero la verdad es que no hemos sacado fuerzas ni ganas para contaros porque nos ha jodido tanto que no sabemos ni por dónde empezar.
Nos la llevamos a realizar curas de una úlcera que le había salido, algo que bueno, aunque no debería pasar, es una complicación frecuente en pacientes como ella. India es capaz de moverse y de cambiar de decúbito sola, pero aún así hay que controlarla mucho y mantener una higiene extra porque al hacer pis se mancha y con su pelito largo se queda húmeda. Además nos decían que la notaban muy molesta y ya quisimos aprovechar para hacerle una valoración general.
Lo que nos encontramos ahí detrás cuando la rapamos para hacer las curas sobrepasa todos los límites de nuestra comprensión. Tiene una fístula que le comunica por varias zonas distintas. Un boquete en el que caben tres dedos. Una irritación brutal de haber estado días empapada, con diarrea y no haber sido limpiada. Y lo peor es que va a seguir perdiendo tejido.
Sabéis que siempre contamos y enseñamos las cosas tal como son por muy escabrosas que sean, pero es que esta fístula es tan horrible que hasta nosotras, que ya hemos visto de todo, nos estamos pensando si enseñarla. Y también es que India nos duele mucho…
India está, con razón, extremadamente dolorida. Tanto que apenas quiere comer. Va a permanecer en la clínica con fluidos, analgesia y antibióticos el tiempo que necesite hasta reponerse y controlar esa fístula, que no sabemos ni cómo vamos a cerrar, porque además está en una zona muy complicada. Pero después va a necesitar una casa de acogida porque ahora sí que no sabemos dónde llevarla y va a necesitar a alguien con cierta experiencia en perritos como ella para que esto no vuelva a pasar. O al menos alguien que pueda estar muy pendiente de ella durante el mes que necesitamos que guarde reposo casi absoluto, porque nuestro planteamiento y según las indicaciones que hemos recibido de gente experta, en cuanto su fractura esté bien soldada vamos a empezar con rehabilitación intensa con cierta esperanza de poder recuperar la movilidad de, aunque sea, una de sus patitas. Si no podemos, pues empezaremos la adaptación a su silla de ruedas, que ya está fabricándose, en cuanto sea posible.
Por ahora no os vamos a pedir más que ánimos y fuerza para ella, mientras pensamos si merece la pena enseñaros el desastre y hacemos cuentas con su fondo para saber si llegamos a todo con la ayuda que ya le habéis enviado.
Mil gracias a todxs por preocuparos por ella y un lametón de parte de India 💜

Actualización 23 de Octubre de 2022
INDIA está algo mejor, y este fin de semana Marta la ha invitado a su casa para que pueda salir unos días de la clínica, desestresarse un poco y disfrutar de todas las atenciones para ella.
En nuestro centro veterinario tenemos que decir que es la niña mimada. Todo el mundo la quiere y hace lo posible por tenerla entretenida y atendida, pero es que, como en las piernas de mami Marta, en ningún sitio 🙃Finalmente, ahora que estamos algo más tranquilas y vemos algo de luz al final del túnel, hemos decidido enseñaros el estado en el que llegó India. Sólo de pasada y de lejos, porque no creemos que sea necesario que veáis de cerca algo tan desagradable y que nos tiene tan jodidamente tristes y cabreadas. Las úlceras eran tremendas, le han salido algunas más que le duelen horrores y el tejido que había entre una y otra se abrió, pero parece que las vamos controlando. No hay infección y cada día están más cerraditas y curadas.
Un alivio, de verdad.
No os podéis imaginar los días que hemos pasado con ella. No os hacéis una idea del dolor que ha sufrido. Los gritos, las ganas de comer que no tenía… De la impotencia, el cabreo, la tristeza… Por dios que hemos llegado a pensar que de esta no nos recuperábamos ☹
Pero aquí está nuestra luchadora, saliendo adelante una vez más. Sabemos que India puede con todo pero por favor, BASTA. Que no tenga que enfrentarse a nada más que no es más que una bebé ☹Muchísimas gracias a todxs lxs que os estáis preocupando por ella. GRACIAS de corazón por el apoyo. Sin él no seríamos capaces de seguir adelante porque de verdad que este caso se nos queda enormemente grande y nos hemos sentido muy solas. Pero en fin, por ella lo que haga falta.

Actualización 31 de Octubre de 2022

De verdad que lo de #INDIA no puede ser normal. Alguien ha tenido que maldecirla de alguna manera… ☹

Un par de días desconectadas porque no nos dan la vida ni las ganas y por una buena razón: #INDIA vuelve a estar hospitalizada. La primera vez que empezó con vómitos y diarrea la llevamos temiéndonos lo peor pero nos escapamos. Esta vez, ya como quien escucha a Pedro avisando del lobo, la llevamos entre risillas nerviosas y algunos «venga que no te pasa na no seas cuentista», para recibir otro mazazo fuerte de realidad porque esta vez sí es grave. #INDIA tiene parvo.

El cómo la ha contraído no nos lo preguntéis, porque no lo sabemos. Ha podido ser de mil formas e India todavía no tenía sus vacunas al día.
Lleva hospitalizada desde ayer, luchando, OTRA VEZ, contra la adversidad y contra el caos absoluto que es su vida.
Ahora, que su vida parecía encauzarse un poquito.
Ahora, que sus úlceras estaban ya casi curadas.
Ahora, que íbamos a empezar con su rehabilitación llenas de esperanza.
Justo ahora, cuando más ocupadas, agobiadas y jodidas estamos con todos los perros de la residencia y el dinero que debemos. Y con ella. Por supuesto, con ella, todos los días desde que nos hicimos cargo de su vida.

Ya no sabemos cómo pedir más ayuda y nos parece fatal tener que seguir pidiéndola por una perrita con la que ya nos habéis ayudado tanto, pero de verdad que os necesitamos. Os necesitamos mucho. India os necesita.

Actualización 31 de Octubre de 2022

Hoy #INDIA ha querido comer. Sus analíticas no son malas y no ha tenido vómitos ni diarrea en todo el día. Dentro de lo malo no podemos esperar nada mejor. Si sigue así y no tiene ninguna recaída, recibirá el alta muy pronto y de verdad que necesitamos que esta pesadilla que estamos viviendo con ella se acabe, nos dé un respiro y podamos verla muy pronto haciendo vida normal. Todo lo normal que pueda ser para ella.

Mañana vamos a darnos un respiro. No todo van a ser malas noticias, y tenemos algunas cosas buenas que contaros. Y hay que tirar palante, aunque a veces cueste.

Venga India, hija, bonita, querida nuestra. De que eres una luchadora no nos cabe duda. Ponte buena y acabemos con esto, que ya no te puede pasar nada más 🥲

Están llegando algunas donaciones para ella que agradecemos con todo nuestro corazón. En cuanto salga de la clínica y hagamos el pago, actualizaremos todo y os dejaremos la factura.
Muchísimas, muchísimas gracias por seguir a su lado en las buenas y en las malas.

Actualización 04 de Noviembre de 2022

LA GORDI ESTÁ EN CASA 😭💜

Una parvo de pega. Eso es lo que ha tenido #INDIA porque otra cosa no nos explicamos. Después del positivazo que dio en el test y de lo malita que estaba cuando la ingresamos nos temimos lo peor, pero la guerrera no ha necesitado más que unos diítas de tratamiento, fluidoterapia y mucho mimo en @clinicaveterinariavetsicor para volver a ser la estrellita brillante y sandunguera de siempre.
A las 24h de su hospitalización comenzó a comer, pero la dejamos un par de días más por si había recaída y no ha sido así. Ha ido a mejor cada día y ayer le dieron el alta para terminar de recuperarse en casa de Sara, su mami de acogida, que es un verdadero ángel.
De verdad que no ganamos para sustos con #India… Ya sí, ya tiene que ser lo último. No puede pasarle nada más 🥲
En una semanita, cuando no haya peligro y esté repuesta, empezamos con la rehabilitación 🤞

Adjuntamos el albarán de sus últimos gastos, correspondientes a estos días de hospitalización. Está todo pagado gracias a Victoria, Lorena, María, Natalia Rocío, Natalia, Andrés, Izabela, Inmaculada, Julia, Rafael Agustín, Elena, Ángel, Cristina, María del Pilar, José Rubén y por supuesto a nuestra queridísima, increíble y necesaria Margot. Muchísimas gracias a todxs por ayudarnos!!

Actualización 16 de Noviembre de 2022

uenas noches gente bonita.
Hace muchos soles que no me paso por aquí y eso no puede ser. No creáis que ha sido proque no haya yo querido, es que no me han dejado porque decían que había muchas prioridades y la mía tenía que esperar un poquito. Pero en fin que aquí estoy con muchas cosas que ladraros.
Lo primero que quiero enseñaros es esta maravilla de arnés ortopédico que me ha enviado mi madrina favorita, Margot, y aquí «ando» estrenándolo y adaptándome a él. Por ahora lo llevo regular, pero poco a poco. Con la paciencia de mi mami de acogida Sara pronto podré disfrutar de él como es debido 😊

Mirad, no os voy a engañar. Esto de ser una perrita paralítica no está siendo nada fácil. Madre mía qué de cosas me pasan. Lo que peor llevo es, sin duda, que la gente se compadezca de mí. Yo lo entiendo, de verdad. Entiendo que no es fácil ver a una cachorra de mi edad arrastrándose y sin poder disfrutar de las carreras que seguro que me encantarían. Pero algunos humanos llevan esa compasión un poco al extremo y dicen cosas como que «lo que me están haciendo no está bien», y que «esto no es calidad de vida». Y bueno, yo les digo que eso tendré que decidirlo yo, ¿no? Que yo estoy muy contenta y como, juego, ladro e intento seguir palante pero es que hay humanos que tienen el instinto de supervivencia justo para comer pa no morirse. Yo lo estoy intentando, gente. Que ganas de vivir no me faltan y a mí me han dicho que hay perritos con su sillita de ruedas que van al parque a la playa y a donde haga falta para disfrutar de la vida aunque sea sobre ruedas 🙃

Aunque, eso sí, para mantener a una perrita como yo hace falta mucha implicación, muchas ganas de ayudar y, por ahora, muchos gastos. Por eso hoy vengo a pedir un poquito más de ayuda. El otro día se hizo recuento de los gastos que he ido generando entre una cosa y otra y me he quedado patidifusa al ver que suman 1.600 euros (adjunto facturita). A eso hay que sumar el pienso, los medicamentos, las empapaderas y un montón de cositas más que han devorado mi fondo de ahorros. Ya no me queda nada y aunque tengo mucha ayuda y muchos humanos bonitos me están regalando cositas, como mi arnés y mi futura silla de ruedas, sigo generando gastos importantes.
Ahora mismo necesito una ayudita para pagar el saquito de pienso que necesito para este mes. Sé que es un poquito caro, pero es el que mejor me sienta y es de buena calidad, y para mí sería una alegría no tener que pasarme a uno más barato. Dejo por aquí foto del susodicho por si alguien quiere ayudarme a comer.
Por otra parte, el martes próximo tengo, al fin, mi primera valoración con la fisioterapeuta de perritos. En ella me van a decir lo que necesito y cómo se va a enfocar mi rehabilitación. No me han dado muchas esperanzas, pero bueno, hay que intentarlo todo, ¿no?
Así que, si alguien quiere ayudarme a pagar esta primera sesión, lo agradeceré con el corazón en la patita

Última actualización

Actualización 16 de Noviembre de 2022

Reventaita estoy, gente.
Acabo de empezar mis sesiones de rehabilitación y no sabéis la caña que me han dado. Que soy muy floja, me dicen. Como si fuera fácil moverse con estas patitas de palo que se me han quedado, y además soportar el peso de tanta belleza como gasto.
Pero ahí vamos. Y también estoy reventaita de felicidad. ¿Sabéis por qué?
Pues porque a mí ya me daban por perdida. Después de tanto tiempo postrada y habiendo perdido mucha musculatura y movimiento en las articulaciones, todo parecía indicar que mi futuro tendría que venir sobre ruedas. Que tampoco pasa nada; lo que venga bien estará mientras no me falten los juguetes, los juegos y los mimos. Pero resulta que me han dado esperanza, y a la esperanza es a lo que hay que aferrarse con todas nuestras fuerzas.
Las chicas del centro veterinario d’Qi me han dicho que es muy complicado. Que no, que no voy a volver a andar con todas las garantías pero sí tengo posibilidades de andar con marcha espinal. Esto es, que quizás, con mucho trabajo, rehabilitación y fisioterapia, voy a poder caminar «por inercia» porque mantengo algunos de mis reflejos y llegará un momento en el que mis patitas respondan de forma refleja a la marcha y eso es mucho, mucho más de lo que podía esperar. Y que como soy muy jovencita, las posibilidades de conseguirlo aumentan.
Por ahora me han desaconsejado la silla de ruedas porque soy un poco flojeta y si me acostumbro a la silla no voy a querer hacer el esfuerzo, así que por ahora me toca apañarme con el arnés de tita Margot y la fuerza y dedicación de mami Sara.
Me van a atender, por ahora, dos veces por semana y se van a centrar en recuperar mis músculos, mis articulaciones y en descontracturar el tercio anterior que lo tengo como un campeón de levantamiento de pesas.
Y quien sabe, lo mismo en unos meses/años estoy correteando como patito mareao por la playa, el monte o donde la vida me permita llegar 🙂

Adjunto factura de la primera sesión de valoración, que las chicas de d’Qi son un solete y van a incluir en el bono de 11 sesiones que tengo intención de comprar porque esto va para largo y han decidido ayudarme 😍 Me quedarían por pagar 236 euros Dinero que ahora mismo no tengo porque, como sabéis, me lo fundo todo en manutención porque soy una chica pobre con necesidades de rica.
Os dejo las formas de ayudar, para que, quien quiera, pueda hacerme llegar su amor.
✔ Enviando un donativo por transferencia bancaria 👉 LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: India
✔ Enviando un donativo por Bizum: 695 81 57 88
✔ Por PayPal: Adopta_Mestizos@hotmail.com
https://www.paypal.me/adoptamestizos
✔ Grupo TEAMING (salva vidas por un euro al mes): https://www.teaming.net/adoptamestizos
Infinitamente agradecida, también, a Sergio Dones por enviarme a casa nada más y nada menos que TRES sacos de mi comida favorita, que me van a dar para comer al menos durante 3 mesecitos. Y un juguetito que estoy deseando destrozar 🙃 Os quiero con toda mi alma 💜

La entrada India, abandonada paralítica en el veterinario por su propia familia se publicó primero en Adoptamestizos.com.

]]>
El infierno de SABLE y FLECHA https://adoptamestizos.com/sableyflecha/ https://adoptamestizos.com/sableyflecha/#respond Fri, 21 Oct 2022 14:40:05 +0000 https://adoptamestizos.com/?p=70319 La entrada El infierno de SABLE y FLECHA se publicó primero en Adoptamestizos.com.

]]>

Urgencias

Sable y Flecha son dos perros rescatados de un infierno. Vivían en una parcela, donde por disputas familiares, entraron a apuñalar a los perros por venganza, uno de ellos falleció y Flecha recibió una puñalada casi mortal. Sable, aunque no salió herido, tiene las consecuencias de vivir en el campo, Leishmaniosis y Filariariosis, para el cual ya está recibiendo tratamiento.

Aunque ahora están a salvo, queda lo más importante: recuperarse y encontrar familia ¿nos ayudas?

Lee la última actualización

26 de Abril de 2021

Vamos a empezar fuerte la semana…
No sabemos ni cómo empezar a contaros la odisea que hemos vivido estos días, que da para escribir una novela de terror, así que vamos a intentar resumir lo mejor y más objetivamente posible porque como empecemos a soltar todo lo que nos gustaría, nos mordemos la lengua y nos envenenamos.
Todo comenzó cuando nos llegó, a través de una compañera, una difusión que decía algo como «se necesita ayuda para sacar a un cachorro de un lugar donde han apuñalado a varios perros». Al inusual texto le acompañaba la foto de un perrete con una raja en el cuello y una cara de desconcierto que traspasaba pantallas; casi se podía sentir lo que estaba pasando por su cabeza en ese momento. Inmediatamente nos interesamos por el estado del animal y se nos puso en contacto con una compañera de la guardia civil para que nos contara exactamente qué había pasado y qué ayuda necesitaban.
Resulta que hay una «familia» en Córdoba cuyos miembros llevan con trifulcas desde hace meses. Las denuncias cruzadas se cuentan por decenas. Se increpan, se amenazan e incluso han llegado a agredirse. El nombre de uno de ellos es recurrente en los archivos policiales por acumular denuncias de toda índole y por tratarse de un ser peligroso que lleva meses en el punto de mira. En el punto de mira, pero en las calles y libre para seguir haciendo daño. Era cuestión de tiempo que su maldad llegase demasiado lejos…
Este ser, en la búsqueda enfermiza de hacer todo el daño posible a su familiar, se armó con un cuchillo y fue a buscar a los perros que este último tenía en una propiedad al aire libre. Que ya nos diréis que culpa tienen los pobres animales de las gilipolleces de los humanos… En fin. El caso es que su arrebato de locura terminó con un perro asesinado y otro con una puñalada en el cuello. El vídeo de la criatura asesinada a puñaladas nos lo guardamos para siempre en nuestra retina y esperamos no tener que verlo nunca más.
La urgencia era, pues, sacar al superviviente de allí porque este individuo seguía suelto y quién sabe si volvería para acabar lo que había comenzado. El supuesto propietario de los animales realmente ni era propietario ni era nada; los animales no estaban identificados y alegaba que los había acogido tras encontrarlos en las inmediaciones de su parcela, así que buscó, a través de la guardia civil, a alguien que se llevara al que quedaba vivo y ahí entramos nosotras.
Fuimos a por el pequeño sin tener ni idea de lo que nos íbamos a encontrar. Tanto fue así que, al llegar, nos encontramos con que no había un superviviente, sino dos. Realmente, en una situación así, si nos hubiéramos encontrado con treinta nos los habríamos llevado a todos…
Dos criaturas que han tenido que enfrentarse a un infierno en el que ni pinchan ni cortan; que han sido utilizadas para hacer daño a un humano porque a otro, que tiene serrín donde debería haber un cerebro, le da exactamente igual matar por conseguir un objetivo absurdo. Da escalofríos solo de pensarlo…
Finalmente resultaron ser un macho y una hembra, que no solo se habían enfrentado a un flipado peligroso, sino que también presentaban un estado lamentable de salud.
Una hembra de aproximadamente un año, cruce de pastor alemán pero muy pequeñita, que llegó traumatizada y con un corte en el cuello compatible con el arma que debió acabar con la vida de su compañero. Su suerte, según las veterinarias, es que la puñalada se realizó de abajo a arriba (si llega a ser al revés hubiera sido un gran problema), la herida es limpia y drena sola y no compromete ninguna de las estructuras importantes que pasan por el cuello.
Un pastor alemán gigantesco de unos 2-3 años, con heridas en diferentes zonas del cuerpo, un tajo en una pata que le cuesta mucho apoyar y, encima, enfermo de leishmaniosis y filariosis desde a saber cuándo.
Ambos pequeños han ingresado en la residencia porque no tenemos otro sitio al que llevarles y sacarles de allí era prioritario, pero allí no podemos tratarles las heridas y enfermedades adecuadamente. No podrán ser adoptados hasta que se celebre el juicio y dispongamos de vía libre para solucionar sus vidas, pero sí podemos, y debemos, ofrecerles atención veterinaria urgente y ubicarles en casas de acogida mientras se recuperan. Por eso necesitamos con muchísima urgencia CASAS DE ACOGIDA EN CÓRDOBA.
Si alguien puede abrir las puertas de su hogar a estas víctimas de la más pura maldad humana, que nos escriba de inmediato.
veroadopciones@hotmail.com
ireneadopciones@gmail.com
También agradeceríamos ayuda económica, especialmente para el macho, cuyas enfermedades como ya sabéis tienen tratamientos muy caros y ahora mismo se nos va de las manos completamente, pero ya nos hemos comprometido con ellos de lleno y no vamos a echarnos atrás.
Para terminar, cabe aclarar que el caso está en manos de las autoridades y que este miércoles próximo el autor de los hechos se someterá a juicio por esto y por las doscientas denuncias que arrastra. Casi con total seguridad irá a la cárcel porque un individuo así es un puñetero peligro para el mundo, pero de todas formas ya estamos elaborando un parte de lesiones para aportar lo que podamos al caso e intentar sumar agravantes a la condena.

Actualización 27 de Abril de 2021
Muchísimas gracias Carmen, Estrella e Itziar por vuestros donativos para los pastorcitos ?
El jueves tenemos cita en el veterinario con ellos para revisar heridas y sacar sangre al grandullón para empezar a plantear los tratamientos. Aún tenemos que valorar en qué fase está la filariosis, pero seguramente empecemos tratando la leishmaniosis porque ya está mostrando síntomas. Hay mucho que organizar con él y nos esperan meses duros de tratamientos, revisiones y lucha constante contra dos enfermedades que debemos mantener a raya y no dejar que nos saquen ventaja.
Además, el jueves ya se habrá celebrado el juicio contra su agresor y sabremos si podremos identificarles y comenzar a construir sus nuevas vidas ?
La de la foto es la hembrita. Aún no tiene nombre porque necesitamos que sea uno muy especial. Tan especial como ella, porque es una perrita muy dulce, muy inocente y buena que merece conocer nuestra mejor cara para poder olvidar el infierno que ha vivido. Seguimos necesitando ACOGIDA en Córdoba para ella y su compañero, por favor ?
Por otra parte, hemos hecho cálculos aproximados de los gastos que vamos a tener que afrontar con ellos y nos acongoja decir que rondarán los 1.000 euros entre tratamientos, analíticas y preparación. Un dinero que ahora mismo no tenemos ni de lejos.
Gracias a las chicas hemos recaudado por ahora 65 euros que, aunque agradecidísimos, no nos dan ni para pagar la primera consulta.
Y es que nos sabe fatal tener que andar siempre pidiendo y suplicando ayuda para casos que no somos capaces de asumir solas. Pero, ¿sabéis? nos ha costado muchísimo volver a retomar nuestra actividad después de estar a punto de dejarla por completo varias veces… Y ahora, que hemos vuelto de lleno, no tenemos intención de parar. Lo único que necesitamos es que estéis a nuestro lado y saquemos adelante juntxs, como hemos hecho siempre, a todos nuestros niños por complicada que sea su situación.

Actualización 27 de Abril de 2021
Con la llegada de los galguitos, el resto de peludos de nuestra manada se ha quedado en segundo plano y es normal, porque con la familia prácticamente hemos ocupado todo nuestro tiempo en ubicarles y estabilizarles. Sin embargo, no podemos olvidar a los demás.
Hemos recibido decenas de solicitudes de acogida para los galguitos y eso es maravilloso, pero estaría bien que alguien, aunque sea, preguntara también por el resto de animales que necesitan acogida. Como por ejemplo la pequeña Flecha, que es una perrita buenísima y agradecidísima que tendría que estar ya en una casita olvidando el infierno que ha tenido que vivir después de que trataran de asesinarla.
O como Sable, el grandullón del que os vamos a hablar, que tiene que comenzar ya los tratamiento porque las enfermedades que padece no van a darnos ninguna tregua.
Ya tenemos casi todos los resultados de las pruebas de SABLE.
Las analíticas en general están estupendas, salvo la anemia que, como es normal, le está causando la filaria. Lo importante, que son riñones e hígado, están estables. En la ecocardiografía no se han visto filarias en el corazón. Nos falta saber el resultado del proteinograma para determinar en qué estado está la leishmaniosis, pero en principio todo apunta a que estamos muy a tiempo de tener éxito rotundo con los tratamientos ?
Por ahora vamos a empezar:
Para la leishmaniosis, con alopurinol y domperidona. Cuando tengamos los resultados del proteinograma valoraremos si podemos usar glucantime en este caso concreto.
Para la filariosis ha tomado ya su primer Nexgard y empezamos el primer mes de tratamiento con doxiciclina y prednisona. Esta última se irá reajustando semana a semana y será en el tercer mes cuando empezaremos a pinchar la melarsomina. Adjuntamos las pautas del tratamiento para que quede más claro.
Nos esperan al menos seis meses de lucha para combatir ambas enfermedades, además de necesitar reposo casi absoluto. Y todo esto habrá que hacerlo en la residencia, como se pueda, porque aún no tenemos casa de acogida para el grandullón.
Ahora, las donaciones:
Hemos recaudado hasta hoy 600 eurazos gracias a Carmen, Estrella, Itziar, Manuel, Arantxa, Carolina, Amaia, Amparo, Ramón, Aranzazu y mención especial a Claudia y a nuestra queridísima Juani ? Es una pasada y no podemos estaros más agradecidas porque con esto tenemos, al menos, para empezar y hemos podido comprar la mayoría de medicamentos ?
Sin embargo, únicamente la melarsomina, el tratamiento para la filariosis, cuesta más de 200 euros, y alrededor de otros 200 que cuesta también el de la leishmaniosis. Así que os podéis imaginar lo que se nos viene encima y la tremenda ayuda que vamos a necesitar para tirar palante con este guapo.
Cualquier ayuda que se nos pueda ofrecer, ya sea en forma de donación económica o de medicamento, será gratamente bienvenida.
Muchísimas gracias a todxs por no dejarnos nunca solas ?
Os iremos contando cómo evoluciona Sable y, por favor, si alguien puede acogerle, que no dude en escribirnos.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 04 de Mayo de 2021
¿Qué hacemos con este par de guapos? ?
Esta mañana han ido a revisión SABLE y FLECHA.
A Sable le han quitado los puntitos que le dieron en una de sus heridas y tendrá que volver a revisión la semana que viene porque el corte es bastante profundo. Ya ha comenzado su tratamiento y seguimos esperando los resultados del proteinograma para saber si podemos meter también glucantime.
A Flecha le han hecho una ecografía porque cuando la recogimos nos dio la sensación de que podía estar preñada. Afortunadamente no es así ? pero de todas formas la vamos a castrar prontito antes de que entre en celo porque en la residencia es complicado controlarlo.
A propósito de la residencia, los dos siguen necesitando ACOGIDAS en CÓRDOBA ?
Fijaos en la diferencia de tamaño que tienen.
Sable es gigantesco; un pastor alemán de los que no se ven mucho. Parece más un oso que un perro y es absolutamente precioso.
Flecha es un suspirito, una dulzura de perrita de las que te llegan al alma en cuanto te echa las patitas encima para pedir cariño.
Entendemos que existan reparos para la acogida de Sable porque es un perro muy grande, muy fuerte y con mucho nervio, con carácter también fuerte, además, que necesita de manos expertas para no perder el frágil equilibrio emocional que tiene después de todo lo que ha sufrido. Y aun así, es un perro cariñosísimo y noble que agradece todas las atenciones que se le ofrezcan.
¿Pero Flecha? Flecha es un amor. Una perrita con un carácter muy fácil y apta para cualquier tipo de familia. Estamos seguras de que sería tremendamente feliz en una casita con todas las atenciones para ella, así que vamos a volver a intentarlo. Buscamos casa de acogida para Flecha en Córdoba ?
veroadopciones@hotmail.com
ireneadopciones@gmail.com
Y sin más remedio, seguimos pidiendo ayuda para sufragar todos los gastos que tenemos encima ?
Si alguien quiere ayudar, puede hacerlo:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES31 2100 6091 7902 0003 9666
Concepto: Ayuda Adopta Mestizos
✔ Enviando un donativo por Bizum: 695815788
✔ PayPal: Adopta_Mestizos@hotmail.com
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

Actualización 03 de Junio de 2021
FLECHA necesita casa de acogida en Córdoba ?
Aunque todavía no nos lo podemos creer, sí, nuestra pequeña tiene una visita pre adopción pendiente. Eso significa que hay una familia que espera ilusionada un veredicto positivo para preparar su llegada a casa y comenzar una aventura junto a ella como nueva compañera de vida.
Desde que Flecha llegó, no ha podido salir de la residencia porque no hay casas de acogida disponibles y eso nos ha imposibilitado prepararla como es debido. A Flecha hay que castrarla, y para nosotras es muy importante que se recupere de la cirugía en una casita con todas las comodidades y cuidados que necesitará los primeros días.
Buscamos casa de acogida en Córdoba para, al menos, un par de semanas. El tiempo que tarde la pequeña en recuperarse y hacer su maletita para viajar con su nueva familia si la visita es favorable. Nada más. Un par de semanitas para disfrutar de la compañía y el cariño de una perrita maravillosa y, de paso, ayudarla a prepararse para una nueva vida.
Flecha es una pastorcita de tamaño medianito que no llega a pesar 20 kg. Es muy, MUY buena. Se lleva de maravilla con otros perretes y con las personas es amor puro y absoluto. La persona que la acoja solo tendrá que encargarse de cuidarla y mimarla el poquito tiempo que la tenga en casa. Todo lo demás, cualquier cosa que necesite, se pondrá a su disposición.
¿Alguien se anima? ?
veroadopciones@hotmail.com
ireneadopciones@gmail.com – 695 81 57 88 (SÓLO WhatsApp)

Actualización 24 de Junio de 2021
Una puñalada tuvo que sufrir FLECHA para que su suerte cambiara para bien por primera vez en su vida. Una puñalada llevada a cabo por manos psicópatas que, por lo que sabemos, están cumpliendo condena por esto y por muchos otros crímenes y de corazón deseamos que se pudran tras las rejas. Su suerte cambió para bien porque, antes del suceso, tampoco es que tuviera la vida que un perro desearía. Flecha es de estos pobres que nacen para pasarlo mal y acaban peor. Pero en fin. «Gracias» a ese fatídico suceso que afortunadamente solo quedó en un mal susto y un duro recuerdo en forma de cicatriz, su historia llegó a nosotras y las ganas de ser el punto de inflexión en su vida, a partir del cual todo empezaría a ir mejor, se alzaron con determinación.
Efectivamente, después de todo lo que ha pasado, su vida solo podía ir a mejor. Y eso hemos procurado con todo nuestro cariño.
Cuesta creer que, después de todo esto, un perro no vea quebrada aunque sea mínimamente su confianza y destrozado su carácter; más aún tratándose de un pastor alemán o mestizo de este, pues quien los conoce sabe la inteligencia y sensibilidad que los caracteriza y lo fácil que es joderles emocionalmente. Pero Flecha, afortunadamente, es otro mundo. Flecha es tan, TAN buena, y es una perrita tan increíblemente maravillosa que, fijaos si es especial, hemos permitido que sea el primer contacto con la magia perruna que tengan Marta y su familia.
Familia sin experiencia, pero con muchísimas ganas y eso es lo importante, que necesitaba una compañera que le pusiera las cosas muy fáciles y esa era, sin duda alguna, nuestra querida Flecha.
Querida ahora más que nunca porque no ha podido calar más hondo en sus corazones ni haberse hecho querer más.
Gracias infinitas Marta y familia por atreveros. Por elegirla a ella. Por dejaros aconsejar y asesorar. Por hacerlo todo tan fácil y bonito.
Gracias Juani y Leyre por estar ahí, siempre, y ser la voz que necesitamos oír para saber que hacemos lo correcto.
Gracias Sergio por ser hogar cuando no tienen nada más.
FLECHA, adoptada en Madrid ?

Actualización 05 de Septiembre de 2021
SABLE está flipante. Ha ganado peso, músculo y, sobre todo, mucha confianza en sí mismo. Nada tiene que ver con aquella criatura desorientada y estresada que recogimos hace casi cinco meses, después de vivir una experiencia traumática a manos de un energúmeno que intentó asesinarle para vengarse de un familiar. Una locura que Sable ya casi ha olvidado.
Ha estado durante meses en tratamiento para la filariosis y ya nos acercamos a la recta final. La semana que viene le toca una PCR para verificar si el tratamiento ha funcionado y nuestro campeón se ha curado ?
Mientras tanto, sigue recuperándose y disfrutando de su libertad en la residencia de nuestro compañero Sergio, esperando encontrar una casa de acogida en la que pueda comenzar una nueva vida lejos del maltrato y el abandono.
Aunque allí le cuidan muy bien, sería ideal encontrar un hogar de acogida con personas con experiencia que nos ayuden a valorar correctamente su carácter y buscar el hogar definitivo que necesita. Sable no es un perro para todo el mundo; es MUY grande, enérgico y tiene un carácter fuerte, pero con las personas es un cachorrito tierno y bonachón que daría la vida por agradar a su guía.
Buscamos para él casa de acogida en Córdoba o Sevilla.
veroadopciones@hotmail.com
ireneadopciones@gmail.com
Debemos muchos meses de su residencia y el coste de la PCR que necesita es elevado, por eso también buscamos una mijita de ayuda económica para afrontarlo ? ¿Nos ayudáis?

Actualización 27 de Diciembre de 2021
Otra complicación que ahora mismo nos viene como un puñetazo en el estómago, es la situación de SABLE.
Sable llegó a nosotras a través del aviso de una agente de policía que había atendido una denuncia inusual: el conflicto de dos familiares se había saldado con la muerte a puñaladas de un perro y heridas a otros dos, a modo de venganza por parte de uno de los familiares, que a día de hoy se encuentra en prisión por delitos reiterados.
Los dos supervivientes, Sable y Flecha, fueron puestos a salvo bajo nuestra tutela y, pocos meses después, Flecha fue felizmente adoptada por una familia maravillosa.
Sable dio positivo a filariosis y dudoso a leishmaniosis, se puso en tratamiento para la filaria y se acordó repetir sus analíticas a finales de año, tanto para confirmar la curación de la primera como para valorar el estado de la segunda.
Afortunadamente y gracias a vuestra ayuda, hemos conseguido erradicar a los malditos gusanos, pero la leishmaniosis sigue dando resultados dudosos.
Tras valorar sus análisis de sangre, aunque no hay suficiente carga parasitaria como para dar un positivo claro y sus órganos funcionan bien, creemos que la leishmaniosis está activa y tenemos que ofrecerle tratamiento antes de que la cosa vaya a más.
Vamos a comenzar con un ciclo de glucantime. Ya sabéis que este medicamento es muy caro, más aún para un perro que pesa más de 35 kg… Pero Sable lo necesita y tenemos que conseguirlo.
A sus gastos hay que sumar también el tremendo atraso que llevamos en los pagos de su residencia, en la que Sable espera impaciente a que alguien quiera ofrecerle la oportunidad de conocer un hogar, aunque sea en forma de acogida temporal mientras se recupera.
Sable es un precioso e imponente pastor alemán de unos 4 años, muy cariñoso, simpático y bobalicón con quien conoce y absolutamente entregado con quien considera su guía.
Si eres de Córdoba y puedes acoger a Sable, no dudes en escribirnos:
ireneadopciones@gmail.com
veroadopciones@hotmail.com

Actualización 01 de Enero de 2022
SABLE está impresionante. Ha ganado peso y ha alcanzado ya los 35 kg de perro. Todavía tiene que engordar un poco más, así que va camino de convertirse en un oso 🙈
La semana que viene empezamos con el ciclo de glucantime que necesita para frenar la leishmaniosis, que lleva algunos meses amenazando con dar la cara y vamos a darle el alto antes de que suceda. Si todo va bien, en un par de meses nuestro leoncito estará totalmente recuperado y listo para encontrar un buen hogar.
Aunque seguimos buscando desesperadamente una casa de acogida en Córdoba o Sevilla, tanto para llevar un control más exhaustivo de su tratamiento como para valorar su relación con la ciudad.
Sabemos que Sable no es un perro fácil. Es muy grande, tiene muchísima energía y cierto carácter con otros perros, a los que tolera pero prefiere guardar las distancias. Con las personas, sin embargo, es un cachorrito. Muy tierno, cariñoso y entregado. Sería ideal encontrar una acogida con cierta experiencia con perros de su porte, que le ayude a pulir su relación con otros perros y le enseñe lo bien que se vive en un hogar. Os prometemos que conocer a Sable merece la pena. Es un diamante en bruto que, cuando esté recuperado y tenga un guía adecuado, va a ser un compañero envidiable.
Muchísimas gracias Marta, Isabel, María Luisa, Eva María, Cristina y Laia por vuestros donativos para Sable 💜 y también a Lucía por enviarnos algunas cajitas de glucantime para que podamos empezar el tratamiento 💜 Sable os lo agradece con sus 35 kg de amor y sus ojitos nobles 🙂
Si eres de Córdoba y puedes acoger a Sable, escríbenos:
ireneadopciones@gmail.com
veroadopciones@hotmail.com

Actualización 29 de Septiembre de 2022
SABLE tiene unos 5-6 años y es un bebé atrapado en un cuerpo imponente, más ingenuo y bobalicón que una piedra. Con otros perros tiene cierto carácter pero en momentos puntuales y se le puede manejar.
Necesita acogida porque le están saliendo heridas que creemos que se deben a la leishmaniosis, de la que fue tratado hace meses, y necesitamos valorar su estado de salud y mantenerle lo más vigilado, higiénico y estable posible durante algunas semanas.
Su estado de salud está decayendo un poco y necesitamos la ayuda de una casa de acogida para saber qué le pasa y cómo ayudarle.
Durante el tiempo que dure la acogida no tenéis que haceros cargo de nada más que de cuidarles. Nosotras nos encargamos de todos sus gastos y facilitaremos todo lo que sea posible para que la acogida sea una experiencia sencilla, gratificante y única.
Porfis, AYUDA, Córdoba 🙏
695 81 57 88 (SÓLO WhatsApp)
ireneadopciones@gmail.com
adopta_mestizos@hotmail.com

Actualización 07 de Octubre de 2022
SABLE se nos está consumiendo.
Mucho, muy rápido y nos estamos desesperando porque no podemos ofrecerle la ayuda que necesita.
SABLE no ha tenido ningún tipo de suerte en la vida y no parece que la vaya a tener nunca. Su caso llegó a nosotras a través de la policía, que había recibido una denuncia porque, en el fragor de una rencilla entre familiares, uno de ellos tomó la inaudita decisión de «putear» a otro matando a sus perros. Eran tres animales que vivían en un terreno semi abandonado, que tampoco es que estuvieran en las mejores condiciones del mundo antes del suceso, pero lo que hicieron con ellos no tiene nombre ni perdón.
El familiar agresor, una persona conflictiva que pasaba más tiempo en comisaría que en la calle, se cebó con uno de los perros provocándole la muerte a cuchilladas. A los otros dos, que eran Sable y Flecha, los dejó heridos con algunas puñaladas leves. Esta persona, por lo que sabemos, está entre rejas por esto y por muchos otros delitos.
Llevamos con Sable como un año y su situación nunca ha terminado de mejorar.
Fue tratado de filaria y leishmania, dos enfermedades que le tenían consumido y de las que se recuperó bien en su día, pero ahora volvemos a verle muy mal.
Comenzó hace unos días con una cojera que no remite con antiinflamatorios y está dejando de comer. Come, pero muy poquito y según el día. Está perdiendo mucho peso y su pelo no luce como debería, con todo el esplendor que debiera caracterizar a un animal tan extremadamente bello. Está triste, apagado y nos da la sensación de que ahora mismo le duele hasta la vida…
Sospechamos que la leishmania ha vuelto a cebarse con él y necesitamos analizarle y ponerle en tratamiento lo antes posible. Esta semana vamos a bajarle al veterinario y si se tiene que quedar hospitalizado unos días así se hará, pero nos preocupa mucho el después.
Sergio tiene a Sable dentro de su casa para controlarle, para procurar que coma y ofrecerle cuidados más individuales, pero es que allí, en la residencia e incluso dentro de su casa, hay muchos animales. Sergio no puede con todo y no puede cuidar de un animal que necesita atención y visitas al vet regularmente. Y es que tampoco tenemos otro sitio al que llevarle. Nadie ha preguntando nunca por él y nadie ha podido ofrecerle un hueco en casa, aunque sea temporal.
SABLE necesita CASA DE ACOGIDA y la necesita ya, más que nadie y con muchísima urgencia porque tememos que de este nuevo mal no se recupere.
Es un perro, de verdad, absolutamente maravilloso. Todo lo que tiene de grande lo tiene de noble, cariñoso y bonachón. Se desvive por agradar y nunca, jamás, aunque se le inflija daño para valorar su patita y sacarle sangre, ha tenido un solo mal gesto.
Con otros perros tiene una relación llevadera. Ni le caen bien ni le caen mal. Simplemente se ha acostumbrado a convivir con ellos y, salvo en ciertos momentos de estrés en los que hay que controlarle, nunca ha tenido conflictos. Y aparte ahora mismo no tiene ganas de nada y no le interesa relacionarse de ninguna forma con ellos. Simplemente pasa.
Por favor, ayudadnos a ayudar a Sable. Ayudadnos a encontrar una mijita de suerte para él, que ya le va tocando. Algo, lo que sea, antes de que sea tarde.
Buscamos casa de acogida en Córdoba o Sevilla, haciéndonos cargo de absolutamente todo lo que necesite.
ireneadopciones@gmail.com – 695 81 57 88 (SÓLO WhatsApp)
adopta_mestizos@hotmail.com

Actualización 07 de Octubre de 2022
Bueno, pues SABLE ya ha sido hospitalizado 😔
Está muy consumido pero afortunadamente sus analíticas no están tan mal como esperábamos: sus riñoncitos e hígado funcionan bien, que es lo que más nos preocupaba, y por ahora no tenemos anemia ni infección. Sí tenemos algunos hallazgos que indican lo que sospechábamos, que la leishmaniosis vuelve a estar activa y jodiendo. Hemos enviado sangre a laboratorio para confirmar, para saber cómo, cuánto y qué va a necesitar. Así que a esperar 🤞
De lo que peor está es, sin duda, de las articulaciones. Creemos que la leishmaniosis se ha cebado con ellas y está proliferando ahí y la criatura casi no puede caminar del dolor que tiene, al que también se suma seguramente algún gradito de artrosis debido a su tamaño y edad. Da pena verle, de verdad. Mañana os enseñamos un vídeo para que sepáis el estado real en el que se encuentra.
Al menos tenemos una alegría, y es que está comiendo muy bien y le vemos bastante animado. Y, ¿sabéis? Creemos que está así porque, por muy débil que esté, está flipando con tantas atenciones. Todo el que pasa por su lado le recuerda lo guapo que es y le regala un par de caricias y claro, está con el corazón rebosando ilusión. El mazazo de realidad que se va a llevar cuando en un par de días tenga que volver a la residencia va a ser estratosférico…
Sable está enfermo, sí, pero es que también creemos que estaba exageradamente triste. Y de eso no vamos a poder curarle si no encontramos una casa de acogida…
Seguimos buscando hogar temporal para nuestro guapo. Un mesecito, dos.. lo que se pueda, pero al menos un tiempecito en el que podamos tenerle atendido y cuidado mientras le devolvemos la salud y los kilos que le faltan. Nos hacemos cargo de todo e incluso estamos dispuestas a ofrecer retribución económica por su cuidado.
En fin, ¿sabéis lo que es estratosférico también?
Las deudas veterinarias. Sólo en el día de hoy se ha facturado a SABLE 238 euros y acabamos de empezar. Oh, poderoso Don Dinero, apiádate de nosotras 🤦
Si alguien quiere y puede ayudar a Sable, puede hacerlo:
✔ Enviando un donativo por transferencia bancaria 👉 LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Sable
✔ Enviando un donativo por Bizum: 695 81 57 88
✔ Por PayPal: Adopta_Mestizos@hotmail.com
✔ Grupo TEAMING (salva vidas por un euro al mes): https://www.teaming.net/adoptamestizos
Lo agradeceremos en el alma, hasta el infinito y para siempre.

Última actualización

Actualización 21 de Octubre de 2022

Aún no nos lo podemos creer y seguimos alucinando. #SABLE tiene una oportunidad que parecía que no iba a llegar nunca y se nos ha ido a pasar una temporada en un pueblito de Sevilla, que nos pilla muy lejos pero teníamos que aferrarnos a cualquier posibilidad buena que surgiera porque la otra opción era llevarle a residencia y eso habría sido una catástrofe. A estas alturas, para Sable nos valía ya lo que fuese. Pero ay, qué maravillosa suya que hemos tenido 💜

Gracias a Estefanía y su pareja, para quienes no tenemos palabras de agradecimiento porque han dejado a un lado los prejuicios y las complicaciones para cuidarle, nuestro grandullón podrá ser tratado, podrá ponerse fuerte y recuperarse en un hogar. En principio se quedará con ellos un par de meses, más que suficiente para ayudarle, y luego ya veremos.

Finalmente nuestro gordo grande lo que tenía era una recaída de la leishmaniosis, sumada, posiblemente, a una artrosis que ya vendría arrastrando desde hace tiempo o a una dolencia articular que ha sido causada por la misma enfermedad. Para esto hemos tirado de Librela, a ver si le funciona, y vamos a volver a ponerle en tratamiento, repitiendo un segundo ciclo de glucantime. Adjuntamos el tratamiento que va a necesitar. Ya tenemos casi todo, pero tenemos que buscar viales de glucantime, que ya sabéis que es el tratamiento más caro, y para eso necesitamos que nos volváis a echar un cable.
Su días de hospitalización los hemos dejado pagados casi por completo, y ya no nos queda nada para todo lo demás. También necesitamos comprarle un buen pienso urinario porque tiene cristales en la orina. Así que vamos a ello. Vamos a por todas con él, que al fin parece que su vida se está encauzando y vamos a darlo todo.
#SABLE por supuesto está dando la talla y se está portando tan bien como esperábamos. Es que es un perro, de verdad, del que te tienes que enamorar en cuanto le conoces 💜

Porfita, AYUDA.
Podéis hacerlo:
✔ Enviando un donativo por transferencia bancaria 👉 LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Sable

✔ Enviando un donativo por Bizum: 695 81 57 88

✔ Por PayPal: Adopta_Mestizos@hotmail.com
https://www.paypal.me/adoptamestizos

La entrada El infierno de SABLE y FLECHA se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/sableyflecha/feed/ 0
HIMALAYA, ¡lucha pequeña! https://adoptamestizos.com/himalaya-lucha-pequena/ https://adoptamestizos.com/himalaya-lucha-pequena/#respond Sun, 20 Mar 2022 14:24:58 +0000 https://adoptamestizos.com/?p=70951 La entrada HIMALAYA, ¡lucha pequeña! se publicó primero en Adoptamestizos.com.

]]>

Urgencias

Himalaya fue rescatada de una colonia como tantos otros gatos, ¿la diferencia? Himalaya no podía mover sus patitas de atrás, pero aún así, es una gatita muy cariñosa y sin miedos al humano. Después de varias pruebas veterinarias inicialmente se diagnosticó PIF neurológica, una enfermedad mortal para los gatitos.

Mejoró mucho cuando comenzó el tratamiento, pero su mejoría se estancó, sigue sin controlar esfínteres y sin movilidad posterior. En el TAC no se aprecia ninguna lesión estructural pero sí antiguas lesiones óseas, por lo que parece que el diagnóstico inicial de PIF fue erróneo.

Por lo que ahora, a esperas de una segunda opinión y alguna prueba complementaría, empezará con sesiones de fisioterapia para que pueda ir recuperando la movilidad cuanto antes, y así mejorar su calidad de vida.

Ahora viene lo difícil, pero estamos seguros de que, con vuestra ayuda, esta gran luchadora podrá con todo y más.

¿Nos acompañas en su recuperación?

Lee la última actualización

15 de Julio de 2021

Se llama HIMALAYA. Y sí, su escasa existencia de apenas dos mesecitos de vida es un «marrón». Un marrón de los gordos…
Esta gatita proviene de un CER (captura, esterilización y retorno), programa que se encarga de mantener controladas y sanas las colonias de gatitos ferales que viven en nuestras ciudades sin hacer daño a nadie; programa que es gestionado gracias a personas voluntarias y al presupuesto que ofrece para tal fin el ayuntamiento de Córdoba.
Sin embargo, con esta gatita había dos problemas.
El primero, es que Himalaya no es una gatita feral; Himalaya es sociable, cariñosa y una máquina de ronroneos que se activa en cuanto te acercas a ella, así que, con total seguridad, ha sido abandonada en una de las colonias gestionadas.
El segundo, es que fue capturada y trasladada de urgencia a nuestra clínica de confianza porque Himalaya es paralítica. Presenta parálisis total del tercio posterior, y es incapaz de orinar y defecar por sí misma. Situación que ha sido provocada por un fuerte golpe. ¿Una caída desde una ventana? ¿Una patada o golpe a mala leche? Nunca lo sabremos y preferimos no pensarlo. Tampoco sabemos si su situación es reversible y si podrá volver a caminar algún día. Lo primero es saber dónde se localiza la lesión, y para ello necesita con urgencia un TAC.

El problema es que el programa CER cubre esterilizaciones, vacunaciones, algunos tratamientos muy básicos y la eutanasia en caso de que sea necesaria. Pero ni de lejos cubre un TAC, ni el tratamiento que esta criatura necesita. Las personas que llevan a cabo los CER son voluntarias y no disponen de solvencia ni posibilidad para hacer lo propio. Así que HIMALAYA solo tenía dos opciones:
Ser devuelta a la colonia en un estado totalmente incompatible con su supervivencia, siendo, además, una auténtica crueldad…
O ser eutanasiada.
A Himalaya la conocimos en Vetsicor: Centro Veterinario Sierra de Córdoba , nuestra clínica de confianza. La pequeña llevaba días hospitalizada, esperando a que alguien tomase una decisión sobre su vida. Nos contaron su situación y nos echamos las manos a la cabeza.
No somos contrarias a autorizar eutanasia humanitaria cuando la situación es crítica, o cuando un animal está sufriendo innecesariamente. Pero es que conocimos a Himalaya y resulta que la pequeñita parece no tener dolor. No sufre, come como una lima, es MUY cariñosa y, qué leches, tiene ganas de vivir como la que más. ¿Quiénes somos nosotras para matar a una gatita que quiere luchar por vivir sin siquiera intentarlo?
Había, pues, una tercera opción. Que apareciera alguien que dijera «quietos paraos» y quisiera luchar por, quizás, una causa perdida pero igualmente válida.
Pues eso.
Quietos paraos. Vamos a darle una oportunidad. Vamos a intentar, al menos, saber si su parálisis es reversible y, si no lo es, valorar la calidad de vida que podrá tener. Vamos a luchar todo lo que ella quiera y, si finalmente nunca vuelve a andar, estaremos a su lado y trataremos de encontrar una familia que tenga suficiente amor en el corazón como para adoptarla.
No os vamos a mentir. La cosa está complicada porque Himalaya parece no tener ningún tipo de sensibilidad ni propiocepción. La incontinencia asociada es un gran problema y nos enfrentamos a una situación muy, muy difícil.
Pero es que mirad qué cara, por favor. Y ya veréis cuando la veáis restregarse y ronronear. Vais a querer estar a su lado tanto como nosotras.
Para empezar, hoy le hacen TAC y extracción de LCR por si la causa fuese algo infeccioso. El presupuesto es de casi 500 euros y, como sabéis, estamos al límite.
Una vez más, os pedimos apoyo aunque sabemos que el caso es de los más difíciles que vamos a afrontar y que la cosa se nos va totalmente de las manos. Pero no podíamos permitir que Himalaya no contara con una oportunidad.
Gracias inmensas a Vetsicor por no dejar que la pequeña se vaya sin haberlo intentado, y por permitirnos ayudarla. También a las madrinas del programa CER, que no han dudado en enviarnos la ayuda que han podido recaudar entre todas.
Y las gracias más infinitas son para Marina, por ofrecerse a ser su mami de acogida aún sabiendo lo difícil que va a ser y la locura en la que se ha metido con nosotras. Pero es que tiene un corazón tan bonito y especial que no ha dudado en ayudar a la pequeña. Eres muy grande bonita ?

Actualización 15 de Julio de 2021
Bueno, vamos allá…
Los resultados del TAC y el análisis del LCR de HIMALAYA nos han revelado la causa de la parálisis de sus patitas (ambas pruebas están pagadas, adjuntamos factura en comentarios).
Nuestra pequeña tiene PIF.
Quien se mueve por el complicado mundo de los gatitos, tiembla en cuando escucha esas temidas siglas. Para quien no, dichas siglas pertenecen a lo que se conoce como peritonitis infecciosa felina, una mutación del coronavirus felino que puede presentarse bajo varios disfraces, y que normalmente es una enfermedad incurable y mortal. O al menos eso se creía hasta hace muy poco.
Himalaya, en concreto, es víctima de una de las formas más crueles y complicadas: el PIF neurológico, que ha afectado a su sistema nervioso y ha provocado la parálisis total de su tercio posterior.
Quizás, si nos hubiera pillado hace algunos meses, habríamos tenido que tomar la dura decisión de dejarla marchar antes de que su organismo empezase a fallar y a ocasionarle sufrimiento. Sin embargo, hoy, gracias a la valentía de compañeras que se han enfrentado a esta misma situación, sabemos que hay esperanza para los gatitos que sufren esta enfermedad tan cabrona.
Existe un tratamiento experimental que está dando muy buenos resultados y está salvando la vida a muchos gatos que se desahuciaban en cuanto existía sospecha de PIF. Pero hay un problema importante. Muy importante.
El tratamiento es excesivamente caro.
Estamos hablando de, para empezar, un desembolso de más de 2.000 euros entre tratamiento, pruebas complementarias y posibles complicaciones.
Una exagerada cantidad de dinero que no tenemos ni de lejos.
La cagalera que nos entró en cuanto supimos que nos había tocado a nosotras enfrentarnos al pif, después de ver cómo compañeras de otras protes luchaban con sudor y lágrimas para conseguir pagar el tratamiento a sus gatos, es totalmente real. Nos ha costado muchísimo tomar una decisión, más aún teniendo en cuenta que son 84 días de tratamiento en los que Himalaya deberá llevar un seguimiento muy estricto y que, una vez que demos comienzo, no podemos dar marcha atrás ni cortar el tratamiento bajo ningún concepto. Si nos lanzamos, tenemos que ir con todo.
Y sí, llamadnos locas. Sabemos que es muchísimo dinero para un solo animal y que puede que nos quedemos a mitad de camino sin posibilidad de pagar los viales que necesita. Pero para que nos entendáis, y con una mijita de esperanza en que podáis sentir lo que nosotras sentimos cuando conocimos a Himalaya, os dejamos unos segundos de su corta y tristísima existencia. No podemos concebir que el dinero, aunque sea excesivo, sea un impedimento para salvarla. No podemos ponerle precio a su vida.

Himalaya es un bebé. Una criatura inocente y buena que ha tenido toda la mala suerte del mundo y que tiene la posibilidad, una posibilidad muy cara, eso sí, de curarse y tener la vida que siempre mereció.
Himalaya se puede curar y, aunque tome forma de milagro para conseguir todo el dinero que necesita, queremos, si nos lo permitís, intentarlo TODO.
Estamos cansadísimas de pedir y de tener que recurrir a vuestra ayuda con cada caso complicado que nos llega, pero son tantos los milagros que hemos hecho realidad juntxs, que la luz de esperanza que encendéis en nuestro corazón cada vez que os necesitamos brilla más fuerte que nunca.
Comenzamos con Himalaya una de las aventuras más complicadas que hemos vivido nunca. Una aventura que puede que se nos quede grande, pero vamos a hacer todo lo posible por estar a la altura y, para eso, os necesitamos a nuestro lado.
Por ti, pequeña, nos acabamos de enterrar hasta el cuello. Pero sabemos que merecerá la pena ?
Por favor, necesitamos TODA LA AYUDA POSIBLE Y MÁS PARA ELLA.
Podéis ayudar:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES31 2100 6091 7902 0003 9666
Concepto: Himalaya
✔ Enviando un donativo por Bizum: 675 94 66 96
✔ PayPal: Adopta_Mestizos@hotmail.com
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos
Por delante nos quedan 84 días de absoluta locura y os tendremos muy al tanto de cualquier novedad, avance o complicación.
Cerramos, eso sí, las puertas en Córdoba para dedicarnos exclusivamente a esta pequeña que se va a llevar prácticamente todo lo que tenemos ?
¡COMIENZA LA LUCHA PEQUEÑA! ?

Actualización 17 de Julio de 2021
Gracias a las compañeras de Gatitud hemos podido acceder a la medicación que Himalaya necesita. Ellas trataron hace unos meses a una gatita en las mismas circunstancias que la pequeña y les sobraron algunos viales que nos han vendido para que podamos empezar el tratamiento cuanto antes ?
Estos viales nos dan solo para un par de semanas, así que tenemos que buscar el resto inmediatamente porque no podemos cortar el tratamiento bajo ningún concepto.
Himalaya lleva un par de días recibiéndolo y por ahora no hay cambios significativos. Sigue sin sensibilidad ni propiocepción en sus patitas y mucha diarrea, pero nuestras veterinarias nos han dicho que hoy ha hecho pipí ella solita al estimularle la zona genital, así que eso lo podemos considerar un avance ?
Queda muchiiiisimo camino por recorrer, pero no podemos ocultar lo ilusionadísimas que estamos con esta gatita y con la posibilidad de verla andando algún día ☺
Estamos recibiendo, además, un montón de apoyo por parte de personas que también han luchado contra este maldito virus y sentir que hay esperanza y hombros en los que apoyarse es, de verdad, una gran suerte ?
Y para apoyo, el vuestro. Aún no hemos hecho recuento de donaciones, pero calculando por encima creemos que ya hemos alcanzado los 1.000 euros de donaciones para Himalaya y estamos que no nos cabe más emoción en el corazón. Como sabéis, el tratamiento que la pequeña necesita va a costar más de 2.000 euros y no podemos relajarnos. Hay que seguir, entre todas, y ganar esta batalla cueste lo que cueste.

Actualización 21 de Julio de 2021
HIMALAYA llegó a nosotras con parálisis del tercio posterior, sin ningún tipo de sensibilidad en sus patitas traseras. A todos los efectos, estaban prácticamente «muertas».
Tras un TAC, descartamos lesiones estructurales y daños en la médula espinal y todas las pruebas apuntaban a una PIF neurológica.
Gracias a vuestra ayuda hemos podido comprar el tratamiento que necesita para un mes (recordamos que son 84 días de tratamiento). Tras cinco días recibiéndolo, estas imágenes son las que grabamos ayer. Vais a alucinar ?
¡Lo vas a conseguir, pequeña! ?
Por favor, ayudadnos a salvarla. Necesitamos AYUDA para pagar el tratamiento completo de Himalaya. Ahora mismo tenemos cubierto un mes, pero el tratamiento dura tres meses y es excesivamente caro (rondará los 2.500 euros entre medicación, pruebas, controles y complicaciones). Solas no podemos hacer realidad este milagro ?
Podéis ayudar:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES31 2100 6091 7902 0003 9666
Concepto: Himalaya
✔ Enviando un donativo por Bizum: 675 34 94 77 (este teléfono es de nuestro veterinario, ya que el nuestro no permite más donaciones hasta agosto y nos hace el tremendo favor de ayudarnos. Rogamos que para cualquier información se dirijan al nuestro: 695 81 57 88)
✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

Actualización 06 de Agosto de 2021

Así de contenta se pone #HIMALAYA cuando le toca comer. Está siendo muy complicado, pero decidnos si no merece la pena luchar por ella ?

Su mejoría, esa de la que tan orgullosas estábamos, se ha estancado y eso, sumado a otras cosillas que ya os contaremos en otra publicación más detallada, nos hace pensar que hemos recibido un diagnóstico erróneo. En fin, ya sabéis que diagnosticar el pif es muy complicado. Aún así, el despiste absoluto fue la mejoría tan brutal que empezó a mostrar Himalaya, que llegó sin ningún tipo de sensibilidad y a día de hoy es capaz de mover levemente patitas y rabo. Así que vamos a tirar por ahí, y vamos a usar, si nos lo permitís, el dinero que teníamos para su tratamiento (unos 1.000 euros) para empezar sesiones de rehabilitación en una clínica especializada en fisioterapia.
No os vamos a mentir. Con #Himalaya vamos un poco a ciegas. En el TAC no se aprecia ninguna lesión estructural (únicamente una antigua costilla rota, que es indicativo de un traumatismo y eso también nos ha hecho replantearnos todo) y la mejor baza de diagnóstico que teníamos, el pif, empieza a desmoronarse por todas partes.

La pequeñita está muy bien y eso es lo importante, aunque sigue sin controlar esfínteres y ayer, que le realizamos una ecografía con una especialista, encontramos un hallazgo en las vías urinarias que no encontraron en el TAC y vamos a pedir una segunda revisión del mismo.
En cuanto nos deis el visto bueno, pedimos cita con la fisio y os contamos todo con más detalle, con sus informes y lo que nos pidáis. Sentimos no poder contaros mejor, pero esto es todo lo que sabemos y somos capaces de entender ahora mismo ?

Va a volver a andar.
Sea como sea.
Lo vamos a conseguir.

Actualización 11 de Agosto de 2021
HIMALAYA al habla ?
Estaba yo contentísima y agradecida en mi casita de acogida, comiendo mucho y poniéndome cada día más bonita y fuerte pero que sepáis que la felicidad me dura poquito. He tenido que volver a la cajita de estar mala porque volví a tener diarrea y perdí el apetito. Normalmente soy una gatita glotona y doy una de mis siete vidas por una latita de paté, así que, cuando dejé de comer, saltaron todas las alarmas y me llevaron otra vez con mis médicos. Les quiero mucho pero pa un ratito. Esto de verles las caras día sí y día también me tiene un pelín harta ?
Afortunadamente todo ha quedado en un susto. He vuelto a maullar como una posesa cuando huelo comida y en breve podré volver a casa con mami Marina, que me da muchos mimitos y la echo mucho de menos.
Las heridas de mis patitas van mejorando. A veces incluso siento que puedo moverlas y quiero salir corriendo, pero todavía no me obedecen. Así que me han apuntado a un cole en el que me van a ayudar a ponerlas fuertes y me van a enseñar, si es posible, a andar de nuevo ?
A final de mes tengo mi primera clase y en ella me dirán, tras una valoración, si hay esperanza para mis patitas o si, por el contrario, no podré contar con ellas nunca más. Maullo fuerte para que sea lo primero ?
En fin. Esto de estar más tiempo ancá los médicos que en mi casa de acogida se está llevando todos mis ahorros. Me han dicho que, o me pongo a trabajar, o tendré que empezar a practicar mi mejor cara de pena para conseguir toda la ayuda posible. El trabajo para los gatos está complicado, más aún si eres una gatita paralítica sin experiencia laboral alguna, así que allá va mi cara pena. Os prometo que la iré mejorando ?

Actualización 09 de Septiembre de 2021
Es que no os hacéis una idea de lo especial que es, de verdad. Es tan bonita, tan buena, tan guerrera… que no luchar por ella nunca ha sido opción. Ha aguantado estoicamente todos los golpes que le ha dado la vida y tiene intención de seguir haciéndolo.
A falta de pedir cita con la fisioterapeuta, que aún tiene que valorar sus patitas y aportar algo de luz, con suerte, a su paresia, las opciones para ayudar a #HIMALAYA a recuperar la movilidad de sus patitas son cada vez más escasas. Empezamos a resignarnos y a aceptar que #Himalaya va a ser una gatita paralítica 😔 Ella, en cambio, parece que lo ha aceptado desde el primer momento y cada día se esfuerza por adaptarse a su condición. Y no creáis que le cuesta mucho, porque no veáis cómo escala, la fuerza que tiene y las ganas de vivir que desprende. Al final, como siempre, son ellos los que nos dan lecciones de vida, aceptación y resiliencia.Sea como sea, a #Himalaya la vamos a querer siempre, tal como es. Nunca vamos a imponerle límites que ella no quiera y vamos a intentar, con el tiempo que haga falta y los medios que sean necesarios, encontrar una familia que le permita vivir la maravillosa vida que tiene por delante.Gracias pequeñita por enseñarnos tanto, y gracias Marina por cuidar de ella con todo el amor que sólo puede salir de una persona tan bonita como tú 💜

Actualización 07 de Octubre de 2021
Nuestra pequeñita está preciosa, guapísima, maravillosa, para comérsela entera y no dejar ni los bigotes ? Es un ser de luz con un algo muy especial y muy único y es que hay quererla porque no hemos conocido una gatita igual ? Sin embargo, nada ha cambiado respecto a sus patitas. Himalaya sigue sin poder moverlas y su recuperación, que parecía que avanzaba, se ha estancado. Necesita ir a rehabilitación y no hemos podido llevarla aún por motivos personales nuestros y porque no tenemos un duro ? Teníamos ahorrada una pequeña cantidad para ella de la que ya no queda nada porque hemos tenido que usarla, y nos tenéis que perdonar, en cosas más urgentes y, por supuesto, en ella misma. Porque Himalaya es un amorcete pero no pone las cosas nada fáciles. Himalaya sufre cada poco episodios de diarrea, imaginamos que relacionados con su parálisis, para los que necesita tratamiento (Daforte y probióticos), empapaderas a malsalva y pienso y latas gastrointestinales que toma de forma permanente porque en cuanto intentamos cambiarle de marca, vuelve la diarrea. Como sabéis, las dietas veterinarias no son baratas y entre una cosa y otra nos hemos fundido sus ahorros.
Nos gustaría llevarla a la fisioterapeuta la próxima semana, pero no nos atrevemos a empezar la rehabilitación, que seguramente necesite varias veces por semana, sin tener la seguridad de poder pagarla. Por eso su caso se nos ha quedado estancado.
Además, debido a la poca actividad que hemos tenido, llevamos varios meses sin recibir donaciones y nada ha cambiado en los últimos días. Únicamente hemos recibido 10 euros de Laia para las tapitas y nuestra incondicional Juani nos ha pagado la residencia de octubre de los pequeños y su madre. Y nada más. Estamos secas.
Así que bueno, ya que nos preguntáis por ella, aprovechamos para deciros que os necesitamos de nuevo y mucho.
Muchísimas gracias a todxs por preocuparos tanto por nuestra pequeña ?

Actualización 12 de Octubre de 2021
No se nos pueden complicar más las cosas…
Ayer, HIMALAYA tuvo que ir al veterinario porque le ha salido un enorme absceso en el culete que ha fistulizado y también una pequeña úlcera en una de sus patitas. Esto es algo que le viene pasando desde siempre, porque inevitablemente va arrastrando el tercio posterior y mantenerla limpita y seca es muy difícil. Pero esta vez va a necesitar cuidados más exigentes y plantear algunos cambios.
Le han pautado curas con clorhexidina, vetericyn y blastoestimulina, así como antibiótico, antiinflamatorio y Daforte para proteger su sistema digestivo. También van a plantear empezar tratamiento con gabapentina. Y todo esto, justo antes de empezar con su rehabilitación.
Por estas cosas, los ahorros de Himalaya se nos van tan rápido como llegan. El gasto de empapaderas, medicación, alimentación gastrointestinal y visitas al veterinario es constante. Y tenemos que pagar la gasolina a quien la va a llevar a Sevilla con su nueva acogida. Así que adiós a lo poquito que habíamos recaudado para su rehabilitación… ?
Desde el día 9, en el que teníamos recaudados 125 euros, han llegado más donaciones de parte de Adriana y María de las Nieves, sumando en total 150 euros de los que en breve no quedará nada y adiós también a poder pagar su rehabilitación (nos han dicho que el bono de 10 sesiones nos saldría por unos 300 euros).
Llegados a este punto, nos vemos en la obligación, por su bienestar y por nuestra incapacidad para ofrecerle la ayuda que necesita, de pedir ayuda a otras asociaciones que dispongan de infraestructura, medios y capacidad para afrontar un caso como el suyo ?
Os iremos contando todo, como siempre. Mientras buscamos ayuda y valoramos qué podemos hacer, por favor, os suplicamos que nos ayudéis con esta pequeña. Estamos con el agua al cuello pero Himalaya no puede quedar desamparada.

Actualización 17 de Octubre de 2021
Nuestra pequeñita no se ha visto en otra. Súper feliz y mimada en casa de mami Pili ?
El miércoles a las 17h tenemos cita en la clínica Rehabilitaria, especialista en rehabilitación. A ver qué nos cuentan y qué podemos hacer para ayudarla. Mandadle ánimos y fuerza ?
Por ahora tenemos para pagar la primera consulta y al menos diez sesiones si las necesita. Muchísimas gracias a todxs por la ayuda que nos estáis haciendo llegar para Himalaya ?
Podéis ayudar:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES31 2100 6091 7902 0003 9666
Concepto: Himalaya
✔ Enviando un donativo por Bizum: 695815788
✔ PayPal: Adopta_Mestizos@hotmail.com
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos
Buenas noches ?

?

Actualización 20 de Octubre de 2021
Estamos en @rehabilitaria_vet y yo tan a gustito 😊
A lo largo de lo que queda de semana me envían el informe, pero os adelanto que, aunque me han mandado ejercicios para casa y algunas cositas para fortalecerme, apenas pueden darme esperanzas. Todo apunta a que voy a ser una gatita paralítica el resto de mi vida. Y oye, ni tan mal. Estoy viva, soy muy feliz y eso es lo que importa.
Os contaré con más detalle en cuanto asimile toda la información y me eche un par de siestas, que con tanto toqueteo y ejercicio estoy agotada.
Himalaya 💙

Actualización 19 de Diciembre de 2021
Cuánto tiempo sin contaros sobre nuestra queridísima HIMALAYA… 💙
Lo último que os contamos fue que la llevamos a una clínica especializada en rehabilitación y fisioterapia para criaturas que, como ella, han perdido la movilidad de alguna parte de su cuerpo. Las noticias no fueron nada esperanzadoras, y quizás por eso, también, necesitamos tiempo para asimilarlo y enfrentarnos a una realidad que nos cuesta mucho aceptar.
HIMALAYA presenta parálisis flácida en su tercio posterior. La causa es totalmente desconocida, aunque imaginamos que pudo ser algún golpe cuyas circunstancias no alcanzamos a imaginar. Empezó de inmediato con rehabilitación y le proporcionamos toda la ayuda que fue posible, como complejos vitamínicos, pero es hora de aceptar que nuestra querida pequeña no volverá a poder usar sus patitas traseras.
Es hora, también, de dejar los dramas humanos a un lado y entender que Himalaya es una gatita absolutamente feliz, que hace vida totalmente normal y no necesita aceptar ninguna condición porque ellos, a diferencia de nosotros, no conocen la autocompasión ni se interponen límites de ningún tipo.
Himalaya corre, juega muchísimo con otros gatos y alcanza velocidades supersónicas cuando le dan arrebatos y hace rally por la casa. Escala a su sitio favorito del sofá sin ningún tipo de ayuda y hasta se atreve con las cortinas. Come cada día como si fuese el último, se pasa el día pidiendo mimos y los ronronea con todo el agradecimiento del mundo. Ha aprendido que maullando se consiguen cosas y mantiene entrañables conversaciones con su mami de acogida.
Y todo esto tiene un nombre: es felicidad, y así queremos que siga el resto de su vida.
A Himalaya la iban a eutanasiar cuando, con apenas dos meses, fue recogida de una colonia y no pudieron dar ninguna esperanza para su recuperación. Hoy no podemos alegrarnos más de haberle ofrecido la oportunidad de vivir. Porque Himalaya vive, y no os imagináis con qué intensidad 🙂
Aún así, somos conscientes de la complicación de su caso y de lo difícil que va a ser encontrar a un ángel humano que quiera compartir con ella sus ganas de vivir. No todo el mundo está preparado para tanta vida en forma de gatita paralítica. Pero alguien tiene que haber, donde sea, en cualquier lugar, que se atreva a poner su mundo patas arriba para hacer del suyo un cuento.
Os necesitamos para encontrar adopción a la gatita más especial que hemos conocido nunca. Tiene unos 6 meses y sí, su cuidado requiere sacrificio, pero no os imagináis lo muchísimo que lo compensa 💙
Está en Sevilla, pero puede viajar a donde sea necesario.

Actualización 06 de Enero de 2022
Las casas de acogida nos permiten tener a nuestros animales tan bien como si estuviesen en su propio hogar, y enseñarles, aunque sea de forma temporal, el cariño que ofrece una familia. Por eso, los que tienen la suerte de pasar la Navidad en un hogar de acogida, también tienen sus regalitos de Reyes. Como HIMALAYA, que este año se ha portado muy bien y sus majestades le han traído un plumero de juguete al que no ha hecho ni caso y ha preferido divertirse con los envoltorios y los caramelos 😂
Más buena no puede ser nuestra pequeña. Se lo merece TODO ❤
Aunque este año los Reyes se han olvidado de su regalo más importante: una familia para siempre…
Si quieres adoptar a nuestra pequeñita más especial, escríbenos:
ireneadopciones@gmail.com
veroadopciones@hotmail.com
Los niños que viven en la residencia no tienen tanta suerte y ellos siguen esperando poder conocer el amor. Si quieres vivir la maravillosa experiencia de cambiar la vida de un animal, aunque sea de forma temporal, te esperamos en el correo 🙂
Felices Reyes a todxs y que la ilusión impregne vuestros hogares en este día tan especial. Nosotras no la perdemos por ninguno de nuestros niños 💙💜

Última actualización

Actualización 20 de Marzo de 2022
Teníamos adopción para #HIMALAYA.
No nos lo podíamos creer. Parecía un sueño que, al fin, alguien se fijase en nuestra gatita más especial. Mirad que es difícil encontrar buenas adopciones para gatitos, pero encontrarla para una gatita paralítica es eso, un sueño. Un sueño del que no queríamos despertar para que siguiera siendo real hasta que llegase el momento de confirmarlo.
Todo iba muy bien y quisimos llevarlo despacio. Durante semanas intercambiamos opiniones, cuidados, información, protección y esperamos al momento adecuado para entregarla, también, por la persona que nos pedía tiempo para organizarse y recibirla cuando mejor le viniera. Para Himalaya no había ninguna prisa. Lo importante es que su adopción fuese segura, meditada y, sobre todo, real.
Llegó el día de fijar una fecha y la esperamos con toda la ilusión y nervios que merece una adopción como esta. Esperamos.
Y llegó el día.
Y seguimos esperando.
La persona con la que habíamos quedado para confiarle la vida de Himalaya desapareció sin dejar rastro. Ni una llamada. Ni un mensaje. Ni una excusa.
Los mensajes no llegaban y las llamadas quedaban sin respuesta.
Desapareció, sin más.
Y entonces despertamos y nos dimos cuenta de que todo no había sido más que eso, un sueño.
No quisimos pensar mal y preferimos dar algo de tiempo. «Quizás le haya pasado algo», pensamos. «Ya nos explicará cuando pueda».
Pero llevamos semanas, de nuevo, esperando una explicación que no nos llega. Los mensajes y las llamadas siguen sin respuesta. Y ya, la verdad, es que no podemos evitar pensar que nos han hecho perder el tiempo y han jugado con nosotras. Pero lo peor, sin duda, es que han hecho perder un tiempo valiosísimo a Himalaya y han jugado con sus sentimientos, su situación y su futuro.
Himalaya pronto cumplirá un año y hemos perdido meses esperando realizar un sueño del que nos hemos despertado de un porrazo bien fuerte. De los que duelen. De los que dejan cicatriz.
Y ahora, ¿qué?
Ahora vuelta a empezar. Pero con menos tiempo, menos ganas y menos oportunidades.
HIMALAYA es una gatita de unos 8-10 meses. Es exageradamente cariñosa, ronroneadora, parlanchina y agradable. Se lleva bien con otros gatos, en casa es súper buena y todo el mundo le cae bien. Es paralítica, sí, pero está totalmente sana, se ha adaptado de maravilla a su condición y hace vida totalmente normal, sin límites, sin obstáculos. Sin nada que le impida disfrutar de la vida como sólo sabe hacerlo quien ha sufrido lo indecible, ha estado a las puertas de la muerte y sabe que la oportunidad que tuvo ella no la tienen muchos.
Buscamos adopción para Himalaya.
Buscamos que, cuando despertemos, el sueño de encontrar su hogar sea tan real como sus ganas de vivir.
Está en Sevilla, pero puede viajar a donde sea necesario.
ireneadopciones@gmail.com
veroadopciones@hotmail.com

La entrada HIMALAYA, ¡lucha pequeña! se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/himalaya-lucha-pequena/feed/ 0
MARIPILI, una historia de 10 años de abandono https://adoptamestizos.com/maripili-una-historia-de-10-anos-de-abandono/ https://adoptamestizos.com/maripili-una-historia-de-10-anos-de-abandono/#respond Tue, 12 Oct 2021 09:00:55 +0000 http://adoptamestizos.com/?p=68733 La entrada MARIPILI, una historia de 10 años de abandono se publicó primero en Adoptamestizos.com.

]]>

Hace unos días llevaron a esta pequeñita a la tienda-consultorio de nuestra presidenta (Hocicos y Bigotes, en Tomares, si se nos permite un poquito de publicidad ?). Una familia la había encontrado en la calle y la llevaban para comprobar si tenía microchip y un hogar al que volver. De entrada pensamos que sí, porque bueno, una perrita pequeñita y peludita no es el típico perro que abandonan, pero su estado era realmente lamentable. Se trataba de una perrita mayor, asquerosamente sucia, con pulgas, tumores en ambas cadenas mamarias, la boca podrida y cojeaba de una pata delantera. Si estaba perdida, desde luego tenía que estarlo desde hacía tiempo. Tampoco tenía chip.
Publicamos su foto en las redes y, mientras esperamos, nuestra presi la bañó, la puso guapa y le ofreció las primeras atenciones veterinarias, tras las que, mediante radiografías, descubrimos que también tenía una fractura antigua y mal soldada en una patita y otra fractura reciente de radio y cúbito en la otra que necesitaba cirugía…
Tras unas horas, apareció una mujer que decía ser su propietaria. La conversación fue más o menos así:
– Pero, ¿cuánto tiempo lleva perdida?
– Nada, unas dos horas. Se salió de la casa esta tarde.
Imaginad la cara de nuestra compañera.
– Pero mujer, ¿y así tenéis a la perrita?
– Sí mira, es que la perrita en verdad es de mi madre y ella es muy dejada. Yo ya se lo he dicho muchas veces pero no hace caso.
– Pero vamos a ver, que este animal necesita atención veterinaria, que ni siquiera tiene microchip…
Y así, hasta que al final se presentan en la tienda reclamando a la perrita.
En principio nuestra compañera acepta a regañadientes, pidiendo que se lleven al animal chipado y paguen las poquitas pruebas que se le han podido realizar. Ellos, por supuesto, se niegan. Alegan que no tienen dinero, pero que la quieren mucho y su madre la echa de menos. Nuestra compañera, ya sospechando de la miseria que rodea la vida de la pequeña, aprovecha la situación para negarse y sacar algo de información. Conocemos, entonces, que la perrita tiene 10 años, que vive recluida en un patio sin haber pisado la calle ninguno de ellos. Dicen, ya subiendo el tono ante la negativa de nuestra compañera de entregar a animal en esas condiciones, que «en su vida ha pisado un veterinario y nunca le ha pasado nada». Que ni chip, ni vacunas, ni mucho menos atención veterinaria cuando tuvo la primera fractura. Que eso es otra… ¿cómo se rompe un perro ambas patas?…
Llegados a este punto nuestra Pili ya está que echa fuego y se niega en rotundo a devolverla, a lo que ellos responden cabreándose y poniéndose muy agresivos, así que Pili, por su seguridad y la de la perrita, llama a la policía.

Grata sorpresa nos llevamos cuando vimos que la policía, ante todas las evidencias que presentó Pili, se puso de parte de la perrita y fue la misma policía la que interpuso una denuncia por presunto maltrato animal. Aunque hicimos todo lo posible por evitarlo, la pequeña tuvo que ingresar en dependencias municipales (la perrera, vaya) hasta que se celebrara un juicio y pudiéramos sacarla. Pero una vez más, la policía, siendo consciente de que la perrita necesitaba atención veterinaria urgente, nos facilitó muchísimo las cosas y su ayuda nos ha permitido tutelar al animal en casa mientras se dicta sentencia. Así que LA TENEMOS  ya está fuera de la perrera y se nos va a permitir ofrecerle los cuidados que necesite, aunque no podrá ser adoptada hasta que el juicio se celebre y podamos ser sus responsables legalmente.

La pequeñita es un amor. Una preciosa bichón maltés de diez años que ha vuelto a nacer después de una vida de absoluta miseria. No sabe lo que es la calle, le da miedo absolutamente todo y, además de los daños físicos, tiene secuelas psicológicas con las que habrá que trabajar mucho, pero por ahora nos conformamos con verla disfrutar al sol sobre el césped recién cortado ?
Y ahora, lo difícil. Vamos a necesitar ayuda para pagar su operación porque esto nos ha venido de imprevisto y en un momento complicado.
Nos han dado un presupuesto de 645 euros que os enseñaremos en otra publicación, que haremos en breve porque hay que operarla cuando antes de la patita, la boca y los tumores. Que ya es hora de que alguien se preocupe por ella de una vez, ¿no? Diez años de miseria son demasiados para un cuerpo tan pequeño.

Por ahora no tiene nombre, pero es casi obligado que la llamemos MARIPILI ?

Formas de ayudar:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: perrita

✔ Enviando un donativo por Bizum: 695815788

✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)

✔ Haciendo una donación en nuestra recaudación de Facebook ? https://www.facebook.com/donate/584906538752279/?fundraiser_source=external_url

✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

Actualización 14/04/2020

Buenos días familia.
Sabemos que la situación actual, inevitablemente, relega a los animales abandonados a un segundo plano. Ellos también van a sufrir las consecuencias del parón porque hay muchas cosas de las que preocuparse. Y lo entendemos. Pero nuestra lucha es esta y tenemos que seguir intentándolo, dándolo todo para que la atenciones que necesitan no se vean mermadas.
Si todo va bien y nuestros veterinarios no se ven obligados a reducir sus servicios al mínimo, MARIPILI se opera de su patita el miércoles y PAPA de sus ojitos el jueves. Son operaciones importantes, sobre todo la de Maripili, y no podemos aplazarlas más.
Ahora mismo disponemos de 210 euros gracias a las donaciones de Mari, Montserrat, Leticia, María, Laura, Sandra, María Victoria y María Pilar. Todavía nos queda mucho por recaudar y no podemos hacerlo solas.
Por favor, si no puedes donar, comparte ?
Formas de ayudar:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Ayuda Adopta Mestizos

✔ Enviando un donativo por Bizum: 695815788

✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)

✔ Haciendo una donación en nuestra recaudación de Facebook ? https://www.facebook.com/donate/584906538752279/?fundraiser_source=external_url

✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

Actualización 17 de Marzo 2020

¡Ya tenemos todo el dinero para operar a PAPA y MARIPILI! ?
De verdad que alucinamos con vosotrxs. ¡Ni en momentos como este nos dejáis solas! ? Y no sólo hemos conseguido recaudar todo el dinero de ambas operaciones, sino que ha llegado de sobra! Casi 300 euros de más que, con vuestro permiso (si alguien quiere recuperar su donación puede mandar un privado), vamos a guardar para el resto de cirugías que va a necesitar Maripili más adelante. Ahora la más urgente es la de su patita, pero cuando se recupere de ella tendremos que volver a operarla de la boquita y de los tumores de mama, de los que adjuntamos foto para que veáis el tamaño que tienen…
Mañana subimos el recuento. Esperamos que con todas estas donaciones nos alcance para sufragarlo todo y no tengamos que volver a pedir más favores ?
MARIPILI se opera mañana y PAPA el jueves. Mucho ánimo y buenos deseos para nuestras niñas por favor ?

Aquí nuestra guapa os da las gracias con esta pedazo de sonrisa. En especial queremos dar las gracias a Margot, Nerea, David y Laura por las donaciones tan notables que nos han hecho llegar ?

Seguiremos informando. ¡ÁNIMO A TODXS!

Actualización 19 de Marzo 2020

MARIPILI fue operada ayer, y TODO HA SALIDO BIEN ?
Ya está en casita de reposo y en muy poquito tiempo, si no hay complicaciones, estará corriendo como nunca antes ha podido hacerlo.
Os recordamos que Maripili fue retirada a una pareja de Sevilla por malos tratos. Entre las mil cosas que padece por falta de atención veterinaria en sus 10 años de vida, tiene una fractura antigua en una pata delantera y otra reciente en la otra patita, de la que hemos podido operarla gracias a vuestra ayuda. Maripili ha vivido confinada en un patio casi toda su vida con las mínimas atenciones para que, simplemente, no muriera. Por ello, y por el descorazonador miedo que tiene a todo lo que la rodea, tenemos serias sospechas de que los malos tratos han ido más allá de privarla de las atenciones básicas, y por eso tiene fracturas en las patas…
En fin, todo se verá cuando se celebre el juicio.

¡Muchísimas gracias por apoyarla!

Actualización 28 de Marzo de 2020

Ojitos que vuelven a brillar.
MARIPILI se recupera poco a poco. Su patita va bien, de eso se va a curar muy rápido. Pero lo más importante es que sus heridas del alma también están curando, y ahora mira la vida con otros ojos.

Gracias a todxs por ayudarla ?

Actualización 20 de Mayo de 2020

La operación de su patita no ha ido bien.
Decir que no ha ido bien es quedarse cortas. Ha sido un auténtico desastre. Debido a su edad, a la naturaleza de la fractura y no sabemos a cuántas complicaciones más porque las ha sufrido prácticamente todas, los huesos no han soldado, y además se han roto más ☹
Todo iba más o menos bien hasta que empezó a complicarse la cosa hace unas semanas. Ha estado hospitalizada en el veterinario bajo supervisión estricta y reposo absoluto, y se ha intentado corregir la fractura con fijadores externos, férula y todo lo que se les ha ocurrido a nuestros veterinarios, pero no ha sido suficiente. El desastre ha llegado a tal punto que los veterinarios no han querido tocarla más, y nos han recomendado buscar al mejor traumatólogo que haya en la zona porque la situación de su patita ahora mismo es crítica.

Por supuesto lo hemos hecho.
Hemos pedido cita en el centro de referencia Bahía de Málaga, donde nos consta que trabajan profesionales de renombre y vamos a agotar todas las opciones posibles antes de tomar la decisión más drástica para su pata.

En cuanto sepamos la opinión de los traumatólogos y las posibles soluciones que nos den, os contamos.
La cosa pinta fea, no os vamos a mentir. E igual de feo pinta el desorbitado gasto que va a suponer que tengamos que volver a operarla… Ahora mismo esto nos revienta económicamente, pero ya, a estas alturas, no hay otra opción que seguir adelante e intentar salvar su patita a toda costa.

Cuando tengamos la factura la subimos, pero desde ya necesitamos ayuda económica para hacer frente a este nuevo bache. La consulta no sabemos cuánto va a ser, pero si finalmente hay que operarla nos han adelantando un presupuesto de 1600 euros ?
Formas de ayudar:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Maripili

✔ Enviando un donativo por Bizum: 695815788

✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)

✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

MARIPILI, dentro de lo que cabe, está muy bien. Ya casi ha desterrado todos sus miedos y se ha acostumbrado a lo bueno que da gusto, y ahora, que a sus diez años de vida empieza a ser feliz de verdad tras sufrir años de maltrato, le pasa todo esto. Nos cabrea sobremanera que la vida se cebe tantísimo con los animales más desfavorecidos. Es que siempre pasa igual: cuando más jodido está un animal, más difícil se le pone todo.
Ojalá podamos verla muy pronto disfrutar de la vida que se está perdiendo entre una cosa y otra 
Ánimo pequeñita. Lo vamos a dar todo ?

Actualización 03/06/2020

Os prometimos una actualización con detalle de Maripili, pero no tenemos mucho tiempo y hay que seguir adelante con ella aunque no os podamos contar todo, así que os hacemos un resumen de lo que estamos pasando con ella y esperamos que podáis ayudarnos a seguir adelante con su caso ?

Básicamente, cuando la llevamos al mejor especialista que nos recomendaron, nos dijo que su patita rota le importaba lo que viene siendo un pimiento; que los tumores de mama que tenía estaban tan feos que no entendía cómo podíamos haberlos pasado por alto, y que si no tomábamos medidas cuanto antes, le calculaba de seis meses a un año de vida. Contando, por supuesto, con que no tuviera metástasis, porque de ser así, podíamos olvidarnos de cualquier tratamiento e irnos preparando para ofrecerle la mejor calidad de vida posible hasta que su cuerpecito aguantase.
En aquellos días el mundo se nos cayó encima; especialmente a Pili, que es su cuidadora y máxima responsable, y el sentimiento de culpa y la impotencia de sentir que no podía hacer nada más, casi terminan hundiéndola. Después de diez años de sufrimiento, maltrato y abandono, lo último que esperábamos era que su vida estuviera a punto de terminar de esa manera.
Pero Pili, que es una persona que no conoce el significado de rendirse, siguió adelante con todas las posibilidades que nos ofrecieron.

Confirmamos, para nuestro descanso, que no había metástasis, y que todavía no había nada perdido. Así que no hemos esperado ni un segundo y hoy hemos operado a Maripili de los tumores. Una cirugía que ha sido realmente complicada por la extensión de los mismos y por la escasez de piel que la pobre criatura tiene para poder cerrar la herida.

Ha sido un rotundo éxito.
Maripili ya no tiene tumores y en estos momentos se recupera de la que ha sido una de las cirugías más complicadas que hemos tenido.
Disculpad que no hayamos ido actualizando, pero como decimos, la intervención era urgente y ahora mismo no tenemos mucho tiempo.

La foto es de ayer, y os dejamos también lo que nos ha costado la cirugía por si alguien quiere ayudarnos a sufragarla.

Os iremos contando cómo avanza, ahora sí, algo más tranquilas y esperando poder enfocarnos en su patita cuando esté totalmente recuperada y fuera de peligro ?

Su caso nos ha traído de cabeza desde el primer día. Es una perra mayor a la que la dejadez que ha sufrido durante toda su vida ha dejado secuelas importantes, pero mientras siga ofreciéndonos una sonrisa cada día, y sintamos sus ganas de seguir adelante, lucharemos con ella lo que sea necesario.

Gracias a todxs por preocuparos tanto por ella ❤

Si quieres ayudarnos a sufragar sus gastos, puedes hacerlo:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Maripili

✔ Enviando un donativo por Bizum: 695815788

✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)

✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

Actualización 04//06/2020
Así ha quedado nuestra chiquitina después de la cirugía de ayer. Como podéis ver, ha sido complicada y le esperan semanas de reposo absoluto y muchos, muchos mimos.
Afortunadamente ha sido un éxito y ya solo queda esperar a que se recupere para empezar a preocuparnos por su pata.

Cuando la veamos sana y totalmente recuperada no nos lo vamos a creer ? Ánimo pequeñita ❤
Y ánimo a Pili y a su casa de acogida por todo lo que están sufriendo con ella.

¿Nos ayudáis a pagar su cirugía? ?
Podéis hacerlo:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES04 2100 8448 0121 0058 4573
Concepto: Maripili

✔ Enviando un donativo por Bizum: 695815788

✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)

✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

Actualización 12//10/2021

Con todo el dolor de nuestro corazón, tenemos que anunciar que hemos tenido que ayudar a MARIPILI a dejar esta vida ?
Maripili es una perrita que vivió sus más de diez años de vida confinada en un patio, sin pisar la calle ninguno de ellos y sin haber recibido, jamás, atención veterinaria, ni siquiera cuando se partió sus dos patitas delanteras. Nunca tuvo chip, ni vacunas, ni tratamientos, y cuando la encontramos estaba tan llena de pulgas y garrapatas que pensábamos que llevaba meses abandonada. Resultó que no, que tenía una «familia» a la que, cuando la conocimos, hacía apenas dos horas se le había escapado.
Maripili pudo quedarse con nosotras gracias a que la policía, que se personó en el lugar cuando la familia quiso reclamarla con gritos y amenazas, interpuso una denuncia por presunto maltrato animal y, siendo consciente del estado en el que se encontraba el animal, permitió que Maripili permaneciese bajo nuestra tutela, en lugar de ir a la perrera, hasta que se celebrase el juicio por su custodia.
De aquello hace ya más de un año, y a día de hoy seguimos esperando la celebración de dicho juicio. Ya no se celebrará jamás. No se nos ha permitido, por interminable burocracia y flemática justicia, ofrecerle unos últimos años rodeada del amor de una familia que la quisiese de verdad. En este aspecto sentimos que le hemos fallado.
Durante este último año, Maripili se ha sometido a todo tipo de cirugías; desde la reconstrucción de una de sus patitas (la otra ya estaba prácticamente soldada; mal, pero soldada), hasta la extirpación de varios tumores de mama. Lo ha aguantado todo, y todo ha salido mal. Sus huesos ya eran demasiado viejos para cicatrizar bien y se volvieron a romper. Su piel estaba tan desgastada por el paso de los años y los malos cuidados, que apenas podía curar adecuadamente. Un día, dijimos BASTA.
Ya era suficiente. Maripili había sufrido demasiado y no podíamos permitir que siguiera haciéndolo los años que le quedaban. En este aspecto, pues también le hemos fallado.
Decidimos parar, dejarla descansar y disfrutar de la vida el tiempo que su cuerpecillo quisiese.
Hoy, a sus 12 años, ya no ha podido más.
Los tumores de mama siguieron reproduciéndose y la hemos mantenido estable, alimentada y cuidada hasta que, hace unos días, dejó de comer y apenas tenía fuerzas para levantarse. La recomendación de nuestro veterinario fue muy clara: «Ya está lista para irse. No permitáis que siga sufriendo».
El consuelo que nos queda es que, aunque no ha podido ser junto a una familia adoptiva, durante este último año ha sido inmensamente feliz en su casita de acogida y ha recibido todos los cuidados y atenciones del mundo por parte de nuestra Pili, que lo ha dado absolutamente todo por ella.
La vamos a recordar así.
Pidiendo comidita o descansando, en paz tras una larga vida de maltrato, en la arena de la playa.
Descansa en paz, querida nuestra.
No te vamos a olvidar ?

La entrada MARIPILI, una historia de 10 años de abandono se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/maripili-una-historia-de-10-anos-de-abandono/feed/ 0
HOPE, ser una cachorrita no te salvó de la maldad humana https://adoptamestizos.com/hope-ser-una-cachorrita-no-te-salvo-de-la-maldad-humana/ https://adoptamestizos.com/hope-ser-una-cachorrita-no-te-salvo-de-la-maldad-humana/#comments Wed, 06 Oct 2021 11:26:11 +0000 https://adoptamestizos.com/?p=70927 La entrada HOPE, ser una cachorrita no te salvó de la maldad humana se publicó primero en Adoptamestizos.com.

]]>

Urgencias

Hope llegó a una clínica veterinaria para ser sacrificada, sus propietarios no tenían pensado gastarse dinero en operarla. Hope llegó con la mandíbula destrozada, la inflamación casi era más grande que su cabecita, pero ¿cómo pudo pasar esto?. Hope nació con labio leporino, pero eso no explicaba la rotura de mandíbula tan bestial que tenía, varios veterinarios coincidieron en que fue provocada por una patada ¿Qué pudo hacer esta tierna cachorrita para merecer ese destino?

Por suerte, ahora está en manos de personas que lo van a dar todo por ella, ese mismo día fue trasladada al hospital veterinario de Córdoba para su intervención. Fue difícil, pero tras la hospitalización de un mes y varias operaciones, esta campeona pudo con todo.

Ahora está adoptada por una maravillosa familia, muchas gracias a todos los que han hecho posible esta realidad.

¿Quieres leer su historia?

Lee la última actualización

21 de Junio de 2021

¡¡MÁXIMA URGENCIA!! CACHORRITA CON LA MANDÍBULA ROTA NECESITA NUESTRA AYUDA ?
Pues a ver, no sabemos ni por dónde empezar. Nuestra compañera Espe, que trabaja en una clínica veterinaria, recibió esta mañana a esta criatura que tiene, parece ser, labio leporino y fractura múltiple de mandíbula. Las causas no están claras pero nos ponemos a pensar y nos imaginamos cosas que ojalá no sean reales porque nos ponemos malas. Tiene la mandíbula rota, al menos, por tres sitios distintos; no puede cerrar la boca, apenas puede comer y tiene muchísimo dolor. No puede quedarse así de ninguna manera y tiene que ser intervenida de urgencia.
El problema es que la persona que la ha recogido no puede hacerse cargo de ella ni de los gastos que supone una operación como la que necesita, así que la ha dejado en la clínica y Espe nos ha llamado pidiendo socorro y no hemos podido decir que no porque es que miradla. Miradla por dios, que tiene poco más de dos meses y la cara prácticamente reventada ?
Mañana un especialista en cirugía maxilofacial va a realizar una primera valoración del caso y vamos a ver cómo podemos ayudarla, pero necesitamos varias cosas:
La primera y más urgente, CASA DE ACOGIDA en Córdoba para mañana. Al menos, mientras planteamos la posible cirugía y después, para su recuperación.
La segunda e igualmente importante, AYUDA ECONÓMICA para las primeras pruebas y para la posible cirugía, que no va a ser barata.
Si alguien en Córdoba puede hacerle un huequito en casa, que no dude en escribirnos. Pondremos a disposición de la acogida cualquier cosa que necesite y que facilite su cuidado.
veroadopciones@hotmail.com
ireneadopciones@gmail.com – 695 81 57 88 (SÓLO WhatsApp)

Actualización 21 de Junio de 2021
Este es el vídeo que nos envió Espe esta mañana para explicarnos lo que había pasado. La cachorrita llegó a la clínica así, con la cara tan hinchada como un globo y un terrible dolor. Las circunstancias que han llevado a una cachorrita que ha nacido con labio leporino (una malformación congénita) a tener la mandíbula destrozada por tres partes no dejan de parecernos una jodida incógnita. ¿Qué posibilidades había? ¿Es posible la maldita mala suerte que tienen algunos?
Pero no, es imposible que la pequeña haya nacido así ni que haya sido mala suerte y lo sabemos porque, primero, la fractura es reciente (está inflamada y sangrante) y segundo, porque una locura así solo ha podido ocasionarla un golpe muy, muy fuerte y a mala leche. ¿Un atropello? Quizás, pero un golpe con un coche capaz de hacer esto, a una cachorrita de 2 kg la habría matado prácticamente seguro.
Nos queda pensar, y en esto coinciden los varios veterinarios que la han visto, que le han propinado una patada a mala hostia y le han reventado la mandíbula.
Mañana la ve el especialista y todavía no tenemos sitio al que llevarla cuando salga de consulta. Por favor, necesitamos CASA DE ACOGIDA en Córdoba aunque sea para unos días mientras valoramos qué hacer.
Contacto: 695 81 57 88 (SÓLO WhatsApp)

Actualización 07 de Mayo de 2021
Se llama HOPE.
Hope significa esperanza, porque eso es lo que sentimos cuando la vimos y lo que nos ha transmitido el veterinario que se va a encargar de su cirugía que, aunque es delicada y nos ha adelantado las muchas complicaciones que pueden surgir, no ha podido ser más positivo.
Se llama esperanza porque así se llama la persona que, haciendo honor a su nombre, no miró a otro lado y ha movido cielo y tierra para ofrecerle a la pequeña la oportunidad de luchar y de salir adelante.
Esperanza, porque se dice que es lo último que se pierde, y con ella no la vamos a perder en ningún momento.
Como es una perrita tan joven y tenemos el contratiempo de tener que operar sabiendo que, en aproximadamente un mes, va a empezar a cambiar los dientes, vamos un poco a contrarreloj. Desde el Hospital Clínico de Córdoba nos han hecho el tremendo favor de hacer hoy un hueco en la apretada agenda para operar a Hope. Aún hay mucho que valorar porque hasta que no le hagan radiografías y abran su boquita para ver exactamente dónde están las fracturas, las cosas pueden ir cambiando sobre la marcha; pero nos han explicado la idea que tienen en mente, en principio, para corregir el tremendo destrozo que tiene en la mandíbula.
La perrita pesa unos 2 kg y tiene apenas 2 meses de vida; es minúscula. En esa boquita de piñón no hay tornillo ni placa que pueda ponerse, y además es difícil porque hay que tener en cuenta el crecimiento de la pequeña y la inminencia del cambio de dentición que sufrirá de aquí a poco tiempo. Así que van a ponerle una férula intraoral: básicamente van a introducir cerclajes (alambres) en la mandíbula para estabilizar el hueso y van a fijarla con un cemento quirúrgico que hará las veces de férula para inmovilizarla mientras cicatriza.
Las posibles complicaciones son varias. Primero, el elevado riesgo de infección que existe siempre en una cirugía intraoral, debido al gran número de bacterias que, como sabéis, existen en la boca. Frente a esto solo queda esperar que no tengamos que enfrentarnos a ello y prevenir lo máximo posible con antibiótico. Después, tenemos el problema de los dientes de leche, que pueden dañarse e incluso romperse y hay que tener cuidado para no dañar a los que están por venir. Es posible que más adelante presente algún defecto en los dientes, pero eso ya lo iremos valorando según la pequeña vaya creciendo. Respecto al labio leporino, que ahora mismo es lo que menos nos preocupa, valoraremos corregirlo cuando las fracturas estén curadas y Hope sea más mayorcita.
Tendrá que llevar bozal durante varias semanas y evitar en la medida de lo posible la contaminación en la boca, así que se ha planteado la alimentación por sonda al menos durante unos días para que no haga esfuerzos ni se llene todo de suciedad.
A la pequeña le espera un postoperatorio complicado, pero, no nos preguntéis por qué, estamos seguras de que todo va a salir muy, muy bien ?
La van a intervenir dentro de un ratito y estaremos pendientes para contaros todo.
Sobre ella qué os vamos a decir. Enamoramiento instantáneo. A pesar de tener la boca partida por tres zonas y al dolor que con total seguridad está padeciendo, se muestra cariñosísima y hasta intenta pegar bocaítos con la insconciencia e ingenuidad de una cachorrita de su edad. Que se esté quieta que se la va a liar más, le decimos, pero ella solo quiere dar cariño ?
Adjuntamos fotos de la gordi para que babeéis a gusto y el presupuesto de la operación. Tenemos que hacer recuento de donaciones aún, aunque os habéis volcado increíblemente con su caso y estamos seguras de que vamos a poder pagarlo todo ?
En principio creemos que no vamos a necesitar más donaciones, pero vaya, si alguien más quiere ayudar y si se nos permite, no os vamos a negar que nos vendría de perlas tanto para ella como para el resto de animales de los que cuidamos y las altas deudas que seguimos teniendo.
Seguimos necesitando CASA DE ACOGIDA EN CÓRDOBA para cuando salga de la clínica y pueda estar lo más cerca posible del hospital por si surge algún contratiempo. Ni qué decir tiene que se pondrá a disposición de la acogida cualquier cosa que la pequeña necesite para facilitar las cosas lo máximo posible.
GRACIAS DE CORAZÓN POR PERMITIRNOS AYUDARLA ?

Actualización 22 de Junio de 2021
La operación de HOPE ha sido un ÉXITO ?
Aunque aún hay que esperar un poco para saber si todo ha ido bien y si sus dientecillos de leche aguantan la «férula», el cirujano está muy contento con el resultado porque han conseguido reducir y estabilizar muy bien las fracturas. Ahí está la niña, como si tuviese un aparatillo dental. Le han puesto también una sonda nasogástrica para que pueda recibir alimentación sin comprometer la boquita hasta que las fracturas empiecen a curar.
Preocupación: en las analíticas previas a la cirugía, han detectado que tiene los neutrófilos (glóbulos blancos) bajitos y hay que prestar mucha atención a eso porque puede ser indicio de enfermedad. En el hospital están todos muy pendientes y preparados para iniciar el protocolo de parvovirus a la mínima. Dedos y patas cruzados para que no sea necesario y la pequeña no tenga que enfrentarse ahora también a una enfermedad ??
Permanecerá hospitalizada mínimo 48 horas para valorar evolución y, si todo va bien, tenemos ya una buenísima casa de acogida esperándola para iniciar un durísimo postoperatorio con el que estaremos todas volcadas.
Mañana sobre las 10 de la mañana nos llaman para contarnos cómo ha pasado la noche.
La cirugía ya ha pasado y Hope ha sido una CAMPEONA. Ahora toca esperar y asumir las complicaciones que puedan ir surgiendo, que esperamos que no sea ninguna.
¡Ánimo gordita!
Muchísimas gracias a toooooodos los ángeles que nos habéis enviado ayuda. Una vez más nos dejáis sin palabras. Qué bonito todo lo que podemos conseguir juntxs ?

Actualización 25 de Junio de 2021
Lamentablemente, a las 48 horas de la operación nos enfrentamos a la peor complicación que, aunque estaba contemplada, podía fastidiarlo todo y esperábamos no tener que hacerlo. Sus dientecillos de leche, blanditos e inestables, no soportaron la férula y terminó cayéndose. Prácticamente vuelta a empezar. Esto no es culpa de nadie y, como os decimos, era la primera complicación que se esperaba porque Hope es una perrita MUY pequeña, su boquita tiene muy poco margen de actuación, los dientes de leche son una jodienda importante y la fractura es muy, muy complicada. Cuando pasó, el cirujano hizo un apaño con un bozalito para mantener la fractura lo más estable posible mientras pensaba en una posible solución, y la única que hemos encontrado es volver a repetir el proceso proporcionando mayor refuerzo teniendo en cuenta lo sucedido y manteniendo a Hope lo más quieta posible.
Total, que nuestra pequeñita vuelve a entrar en quirófano esta tarde y necesita que sigáis mandándole ánimos y fuerza ?
Tenemos que decir que esto nos jode tanto como a ella, pues, aunque está contenta y muy animada, ningún bebé debería pasar por lo que está pasando ella. Pero nos ponemos en manos de los profesionales y, después de valorarlo todo, creemos que tenemos que agotar todas las opciones y seguir intentándolo.
En cuanto tengamos noticias de la operación, os contamos.
Ya hemos hecho recuento de donaciones y MADRE MÍA, que os comemos las caras. ¡Vaya si os habéis volcado con la pequeña! ?
Nos resulta imposible nombrar a todas y cada una de las personas que le habéis enviado ayuda porque, de verdad, habéis sido muchísimas y hacer un listado nos ocuparía post y medio. Dejamos la cifra total recaudada hasta ahora, aunque si alguien quiere disponer del listado, lo tenemos escrito a mano y no tiene más que pedirlo ?
En total, se ha recaudado la friolera de 1.813,86 EUROS ?
O SEA, con eso tenemos más que de sobra para pagar la primera operación, las primeras pruebas y los días de hospitalización que nos presupuestaron en un principio. Aunque todavía no sabemos cuál será el presupuesto final, creemos que con todo ese dinero tendremos de sobra para ofrecerle a Hope todo lo que necesite. Incluso es posible que sobre, así que, cuando hagamos el pago, subiremos la factura y devolveremos el dinero a toda persona que lo solicite de vuelta. Y si preferís donarlo al resto de animales de la protectora, detallaremos igualmente a qué pequeños vamos a destinarlo ?
No hay palabra en el mundo que pueda transmitir el agradecimiento tan grande que sentimos, de verdad. Hope no puede tener más suerte por contar con la solidaridad de tantísimas personas bonitas, ni nosotras por apoyarnos en una familia tan increíble. Muchísimas, muchísimas de corazón por permitirnos ayudarla y estar a nuestro lado siempre.
Ahora, a esperar. A esperar que la cirugía vuelva a ir bien y el arreglo funcione para que nuestra pequeña pueda volver pronto con nosotras ?
Sé fuerte pimpollita. Estás en muy buenas manos y muy pronto todo esto no será más que el recuerdo de una mala pesadilla ?

Actualización 25 de Junio de 2021
Bueno, pues segundo intento y rezando por conseguirlo esta vez. La cirugía ha vuelto a ir muy bien y la pequeña ya está despierta y recuperándose.
La situación de Hope no es fácil. Ni la fractura, ni su edad. Todo con Hope está siendo más complicado de lo esperado. A todo esto, se suma que esta mañana ha tenido diarrea con un poco de sangre y, aunque puede deberse a muchas cosas, se han activado todas las alarmas. Por prevención y por intentar adelantarnos a los acontecimientos, va a ser tratada directamente como causa infecciosa y solo queda esperar que no sea eso a lo que tanto miedo tenemos. Hope es muy bebé y por eso cualquier prevención que se tome con ella es poca.
No os vamos a mentir. Estamos acojonadas y tristes.
Pero pase lo que pase no nos vamos a rendir. Vamos con todo con ella; lo que sea, lo que necesite y lo que esté a nuestro alcance y fuera de él ofrecerle.
La están tratando muy buenos profesionales y está atendida las 24 horas del día, así que, dentro del miedo inevitable, estamos tranquilas y, como su nombre, cargadas de esperanza.
Durante el finde iremos a verla y le haremos llegar todo vuestro cariño y buenos deseos.
Vamos campeona.

Actualización 01 de Julio de 2021
¡¡NOS VAMOS A CASA!!
HOPE está contentísima y nosotras ni os contamos ?
Después de tantos días de hospitalización, tantas complicaciones y tantos nervios, no nos podemos creer que ya estemos en la recta final de su recuperación. Aún hay mucho que cuidar, controlar y muchas cosas que pueden salir mal, pero al menos ya vemos luz al final del túnel ?
Tenemos revisión en dos semanitas. Esperamos que todo vaya bien y no tengamos que ir antes ?
La persona bonita que sale con HOPE es Cristina. Ella será la encargada de cuidarla y controlar que todo vaya bien, y creednos que tiene mucho trabajo por delante; el postoperatorio es difícil y Hope no pretende ponerlo fácil porque NO PARA ? ¡Mucho ánimo Cristina y millones de gracias por ofrecerte para cuidarla! ?
Os hemos dado las gracias infinitas veces, pero es que merecéis mucho más que cualquier palabra. La factura de su cirugía y hospitalización está totalmente pagada y los ánimos y el cariño que hemos recibido con el caso de Hope no hay dinero que lo pague. Sois enormes ?
Gracias también a Andrés, su cirujano, y al equipo del hospital veterinario de Córdoba por el trato que nos han ofrecido, la ayuda que nos han brindado y el cariño con el que han cuidado a Hope ?
Vamos, Hope. En muy poquito tiempo podrás buscar la familia bonita que te mereces ?

Actualización 09 de Julio de 2021
Queremos que sepáis que vuestra queridísima HOPE está estupenda. La semana pasada tuvimos un sustillo porque la férula se movió, pero afortunadamente no fue grave, pudo ser recolocada y la pequeña sigue recuperándose con muchísima fuerza y vitalidad, acompañada en todo momento por su súper mami de acogida Cristina, que se lo está currando muchísimo. El lunes volvemos a revisión ?
Hay que seguir. Por Hope. Por todos.
Gracias por estar siempre a nuestro lado ?

Actualización 22 de Julio de 2021
Bueno, bueno… ¿A quién le han dado el alta y está prácticamente recuperada? ?
Hoy, tras una complicadísima operación y muchas semanas de espera, pasando por algún que otro contratiempo que la hizo volver a quirófano, a nuestra HOPE le han retirado la férula, han confirmado que su boquita ha quedado como nueva y ha recibido el alta definitiva ?
Todavía nos cuesta creer que una criatura tan pequeña haya podido superar una situación como la que vivió y una cirugía que nos ha traído de cabeza a todas, incluido a su cirujano, que se lo ha currado de lo lindo y ha visto como su implecable trabajo ha dado frutos ? Sin olvidar, por supuesto, la increíble implicación de Cristina, su súper mami de acogida, que ha cargado con todo el peso de un complicado postoperatorio y ha cuidado a la pequeña tan bien que nada ha podido salir mal. Y también, cómo no, vuestra impresionante ayuda que nos ha permitido salvar a una cachorrita que lo tenía todo en contra. ¡Trabajazo en equipo y una cadena humana que ha salvado la vida de HOPE! ?
Ahora tenemos que cuidar que Hope no haga muchas locuras todavía, que está deseando pero aún debe guardar reposo y empezar a comer sólido poco a poco para no cagarla en el último momento. Más adelante, cuando sea más mayor y haya descansado de tanto quirófano, valoraremos la corrección del labio leporino y la extracción de algunos dientes que puede que le salgan a voleo, pero en general, nuestra pequeña no necesitará nada más ?
Su última factura ya está pagada y pronto empezaremos a prepararla para una maravillosa futura vida. ¡Te queremos campeona! ?

Actualización 06 de Agosto de 2021
¿Sabéis qué?
HOPE ya puede ser adoptada, y además es una mijita urgente porque su acogida se acaba a finales de agosto y sería ideal no hacerle pasar por más cambios, que ya bastante ha tenido la criatura en su vida, ¿no creéis?
Así que vamos a darle caña y a encontrar una súper familia para ella, que se lo merece to!
HOPE es una bebé de unos cuatro meses de vida, posiblemente cruce de pinscher y tamaño pequeño cuando sea adulta. Ha sido operada de una fractura múltiple de mandíbula y de eso está totalmente recuperada. Padece, además, labio leporino. Este, aunque no le ocasiona problemas y hace vida normal, presenta una pequeña comunicación con la cavidad nasal y eso hay que corregirlo. La idea es hacerlo cuando la pequeñina sea más mayor, aprovechando la castración, por ejemplo, para ahorrarle entrar en quirófano todo lo posible. Y de esto, si tenemos suerte, se tendrán que encargar sus futuros papás ?
Hope es una luchadora. Una verdadera superviviente y una de las perritas más fuertes que hemos conocido. Es, además, muy peculiar y es posible que quede algo diferente al resto y eso la hará más especial todavía si se puede.
Es una cachorrita exageradamente cariñosa, obediente y muy, muy inteligente, con una gran sensibilidad y unas ganas de vivir que contagia a cualquiera que la conoce ?
Está en Córdoba, pero puede viajar a donde sea necesario.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 17 de Agosto de 2021
Lo primero, pedir disculpas a todas las personas que os habéis interesado por ella. El correo lo tenemos a full solicitando su adopción y estamos que no nos lo creemos. No esperábamos que tantísimas personas quisieran adoptar a nuestra pequeña ? a lo largo de la mañana vamos a contestaros a todxs, pero tenemos que deciros que la chiquitina ya está en trámites de adopción, no podemos aceptar más solicitudes y esperamos traeros maravillosas noticias muy pronto ?De verdad, qué fácil nos lo habéis puesto todo con ella ?
Ha estado malita con traqueítis, de ahí que hayamos paralizado un poco todo, pero ya está perfecta y deseando seguir dando guerra. Y como no podía ser de otra manera, cada día más guapísima ?

Última actualización

Actualización 06 de Octubre de 2021
Posiblemente este sea uno de los momentos más esperados de este año y no es para menos; la historia de nuestra pequeña HOPE nos congeló el corazón al principio y lo fue llenando de esperanza a medida que fue superando cada uno de los obstáculos a los que tuvo que enfrentarse. Al final e inevitablemente, todas estábamos enamoradas de ella hasta las trancas.
A Hope le partieron la mandíbula de un golpe y tuvo que someterse a una durísima cirugía que la mantuvo hospitalizada casi un mes, superando todas las complicaciones que fueron surgiendo porque no era más que un bebé de dos meses cuando pasó. Pero aquí está la campeona, totalmente recuperada, sin secuelas y dispuesta a disfrutar de la maravillosa vida que le espera.
Aún cuesta creer que haya tanta fuerza y determinación en un cuerpo tan pequeñito, pero por eso la llamamos Hope, porque si algo vimos en sus ojos cuando la conocimos, era esperanza.
Ahora nuestra pequeña ha sido adoptada por una preciosa familia y no es una familia cualquiera, sino la increíble familia de nuestro Grundy, otro gran luchador al que tuvimos la suerte de ayudar el año pasado. Ya son inseparables y no os imagináis lo afortunadas que nos sentimos por poder vivir historias como estas.
Muchísimas GRACIAS a todxs lxs que nos ayudasteis a salvar a Hope. Su caso no fue fácil ni barato pero ahí estuvisteis, a la altura, como siempre, para hacer posible otro milagro.
Infinitas gracias a Cristina, Espe y Saúl por cuidar de nuestra pequeñita el tiempo que nos ha necesitado, especialmente a ti, Cristina, por ser su mayor apoyo en los peores días de nuestra pequeña.
Ahora sí, pequeñita, llegó tu momento, y no te imaginas la de personas bonitas que están detrás de tu historia.

HOPE, adoptada en Cantabria ?

La entrada HOPE, ser una cachorrita no te salvó de la maldad humana se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/hope-ser-una-cachorrita-no-te-salvo-de-la-maldad-humana/feed/ 2
Valentino https://adoptamestizos.com/valentino/ https://adoptamestizos.com/valentino/#respond Tue, 07 Sep 2021 13:23:32 +0000 https://adoptamestizos.com/?p=69907 La entrada Valentino se publicó primero en Adoptamestizos.com.

]]>

24 de Noviembre de 2020

Había una vez, en un lugar no muy lejano, un pequeño príncipe que llegó al mundo sin corona ni palacio. Únicamente contaba con un abrigo peludo que lo protegía del frío, un instinto que lo mantuvo a salvo, un lugar resguardado del ser humano y una madre coraje que consiguió, con pocos medios y mucha fuerza, que creciera sano y fuerte. Y todo esto, para un gatito nacido en la calle, es más de lo que podría esperar.
El pequeño príncipe fue creciendo, y con el paso de los años se convirtió en un gato adulto, grande, fuerte y sabio. Con el tiempo se ganó el respeto de los demás gatos que compartían con él el austero paraíso que los resguardaba, convirtiéndose en el gato alfa; el rey, bajo cuya protección se amparaban sus compañeros de colonia. También se ganó el cariño y la admiración de los súbditos humanos que cuidaban de ellos cada día, encargándose de que no les faltara alimento, cariño y salud. Aunque se tomaron la libertad de cometer afrentas tan graves como impedir que nuestro rey tuviese descendencia, fueron perdonados porque él, un rey benévolo y comprensivo, había creado una bonita relación con ellos y confiaba plenamente en sus deseos de protegerlos.
La vida siguió su curso y nuestro rey cumplió muchos años en su cargo. Pero pasa que, cuando eres un rey sin palacio y sin más ayuda que la de unos poquitos humanos que quieren mantenerte a salvo, hay muchos peligros a los que enfrentarse y contra algunos, por desgracia, no se puede luchar. Por eso nuestro rey enfermó de inmunodeficiencia y su salud mermó hasta contraer una gingivoestomatitis, que le impidió comer y le dejó tan débil y destrozado, que sus súbditos humanos no tuvieron más remedio que anticipar su abdicación y poner su vida en manos de alguien que pudiera ofrecerle el retiro que merece.
Las personas que cuidaban del rey son pocas y no tienen recursos. Hacen lo que pueden con sus propias manos, su dinero y su tiempo, y el caso de un rey inmunodeficiente y enfermo implica mucho más de lo que pueden asumir.
Conocimos a VALENTINO y su historia de casualidad, mientras se hospedaba en una residencia donde siguen cuidando de él a día de hoy. En ella han hecho todo lo posible por ayudarle, pero tras semanas de tratamientos, Valentino no mejora y su estado empieza a ser muy grave. Nos enamoramos de él, de su templanza, su fuerza a pesar del dolor tan grande que padece y de las ganas que tiene de vivir. Y así, casi sin querer, entramos en su vida.
Valentino necesita que le extraigan prácticamente todas las piezas dentales. Necesita atención urgente y una casita de acogida donde poder recuperarse debidamente.
Somos conscientes de que es un gato de 8 años, con inmunodeficiencia y cuyo caso no va a despertar la empatía de nadie porque somos así de tristes. Pero, llamadnos locas, creemos que podemos conseguirlo. Eso, y que después de conseguir la recaudación para Mufasa en tiempo récord nos hemos venido arribísima y confiamos plenamente en vuestra ayuda.
Necesitamos 480 euros para operar a Valentino.
350 para la operación, y 130 para un vial de Virbagen que le ayudará a contrarrestar los estropicios de la inmunodeficiencia.
También es necesitamos casa de acogida para su recuperación, y más adelante, cuando se pueda, un hogar que se convierta en su palacio y donde pueda seguir siendo el rey que siempre ha sido.
Os prometemos que es un gato especial, sin temor al ser humano y con una paciencia infinita con nosotras.
Quizás nos hemos vuelto locas.
Pero venga, que podemos.

Actualización 25 de Noviembre de 2020

VALENTINO se opera hoy.

Para las exodoncias de Valentino no tenemos ni la mitad, pero no podemos esperar más porque lleva dolorido y sin poder apenas comer casi un mes, y está sufriendo. Mucho. Vale que sus fotos no son espectaculares y que su caso no despierta la empatía que esperábamos, pero de verdad que ver a un ser majestuoso y fuerte tan demacrado y derrotado, rompe el corazón. Valentino tiene ocho años, inmunodeficiencia y va a perder prácticamente todos los dientes. Cuando nos hicimos cargo de su vida, sabíamos que tendríamos que lidiar con la indiferencia que suelen sufrir casos como el suyo, pero no imaginábamos tanta. No esperábamos que, de casi 3.000 personas que han visto su publicación, apenas la hayan compartido 50. La verdad es que duele un poquito…
Aun así, la historia de Valentino ha conseguido conmover a dos ángeles que han enviado sus granitos de arena para salvarle la vida. Gracias Sara y María. Gracias por hacerle especial entre tantos casos.
Tenemos 110 euros gracias a estos dos ángeles.
Nos faltan 370 euros.
Está difícil la cosa, pero no vamos a rendirnos ?
Actualización:

Otro ángel llamado Mertxe nos acaba de enviar 100 más para hacer frente a las exodoncias que necesita. Con ellos sumamos 210. Nos acercamos al objetivo y ya solo nos faltan 270 euros ?
Siempre hablamos de granitos de arena, pero en este caso nos estáis enviando montañitas de ayuda que nos están dejando flipando ? ¡Muchísimas gracias!
Valentino está en quirófano ahora mismo. Os contamos en cuanto salga ?

Actualización 25 de Noviembre de 2020
VALENTINO ya ha sido operado y todo ha ido muy bien. ¡Estos mininos son unos verdaderos campeones! ?
Acabamos de ir a verle y está muy dolorido, pero lo normal después de extraerle prácticamente todas las piezas dentales. Aun así, no os dejéis engañar por su cara de estar tramando la venganza más terrorífica que ha visto la humanidad; lo primero que ha hecho nada más vernos, es ponerse a maullar para recibir sus mimitos a pesar del dolor tan grande que tiene que tener. De verdad que el mundo no se merece a este gato. Ni a él, ni a ninguno de los pobres que tienen que luchar cada día para sobrevivir en el mundo hostil que les dejamos.
Valentino tiene que salir de la clínica mañana y sería FANTASTIQUÍSIMO que pudiéramos llevarle a una casa de acogida en la que pueda recuperarse como es debido. Así que por favor, si alguien de Córdoba tiene espacio suficiente en casa y en el corazón, que nos escriba de inmediato para que podamos proporcionarle a Valentino los cuidados que necesita y merece.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 26 de Noviembre de 2020
Saluditos de VALENTINO ?
Necesita ACOGIDA EN CÓRDOBA.
695 81 57 88 (SÓLO WhatsApp)
Actualizamos las donaciones recibidas hasta ahora:
10 euros de María RS
100 euros de Mertxe
30 euros de Gemma
50 euros de Carlos
100 euros de Sara
50 euros de Nieves
15 euros de María J
20 euros de María SF
5 euros de María YP
100 euros de Juana
10 euros de Nora
10 euros de Josefa
En total, 500 euros.
Todo el dinero que necesitábamos CON SE GUI DO!!!!!!
De verdad que sois alucinantes ???

Actualización 1 de Diciembre de 2020
VALENTINO no lo está pasando nada bien en la residencia y empezamos a temer que su recuperación no sea adecuada debido al estrés. Valentino es un gatito muy cariñoso que disfruta del contacto humano y necesita mucha atención, así que creemos primordial encontrar una casa de acogida donde le cuiden y mimen como tanto nos demanda. Buscamos urgentemente una casita en Córdoba sin otros gatos (por ahora) y la buscamos desesperadamente, da igual si es hasta su recuperación o indefinida, pero que al menos pueda estar tranquilo y mimado mientras se encuentra convaleciente. Nos hacemos cargo de TODO lo que necesite.
Aprovechamos para dar las gracias a la residencia Ama Kat por cuidar tan bien de Valentino mientras se hospeda en ella ?

Actualización 18 de Diciembre de 2020
VALENTINO se está recuperando muy bien de su operación. Las veterinarias están muy contentas con el resultado y poco a poco vamos notándolo. La semana que viene le toca su segundo vial de Virbagen y para entonces sería maravilloso tener una casita de acogida esperándole con todas las comodidades que necesita y que nunca ha disfrutado.
En la residencia le han trasladado a la zona de los inmunos, y desde que tiene un poquito más de espacio y libertad está algo más contento, pero no es suficiente.
Valentino es un gatito muy cariñoso y sensible. Le gustan las caricias y los mimos y en la residencia no podemos darle todos los que demanda. Está triste, y estamos seguras de que por eso su recuperación está siendo más lenta.
En verdad nos da un poquito de coraje.
Conseguimos operar a Valentino con el esfuerzo de muchos corazones bonitos, pero nunca, en ningún momento, ha preguntado nadie por él. Ni para acogida, ni para saber cómo se encuentra. Aún nadie se ha ofrecido, siquiera, a escribir un relato sobre él, y eso que con su historia se podría escribir una novela dramática de las de llorar a moco tendido.
Es un gato y es invisible. Lo esperábamos desde el primer día, sí, pero eso no quita que nos dé un poquito de coraje.
Valentino es un gato de 8 años, con inmunodeficiencia, mucha tristeza y un futuro que a día de hoy sigue siendo incierto.
Buscamos una casa de acogida en CÓRDOBA para Valentino. Sin otros gatos en principio, pero donde sobre el amor y las ganas de ayudar a un ser al que la vida parece que ha dado de lado. De todo lo demás nos encargamos nosotras.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 28 de Enero de 2021
En un ratito le toca revisión a nuestro VALENTINO y a nosotras cruzar deditos y patitas para que no tenga que ser operado de nuevo. La infección de su boquita no termina de remitir y es posible que haya que extraer las pocas piezas dentales que le quedan ?
Sería maravilloso encontrar una casita de acogida sin otros gatetes donde pueda terminar de recuperarse en condiciones. En la residencia no remonta y necesita mucho más amor del que podemos ofrecerle. Es un gato maravilloso, sociable, casero y sobón que no lo está pasando nada bien, y después de 8 años ya le va tocando tener algo de suerte.
Si puedes acoger a Valentino, escríbenos. Está en Córdoba.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 02 de Febrero de 2021

Vaya por delante que sabíamos lo complicado que era hacernos cargo de un gatito de ocho años, inmuno positivo y con una infección de boca tan brutal que ha necesitado la exodoncia de casi todos sus dientes, pero no podemos evitar desanimarnos porque esperábamos encontrar, al menos, una casita de acogida donde pudiera recuperarse bien y feliz y no, no lo conseguimos.

La semana pasada Valentino fue a revisión porque no termina de remontar. Está feliz, agradecido y con apetito, pero sigue con muchísimo dolor en la boquita y así no hay manera. Así que va a pasar lo que nos temíamos: hay que volver a operarle para extraer los cuatro dientes que le quedan.
Aún no tenemos el presupuesto para subirlo, pero nuestras veterinarias nos han calculado una suma de unos 200 euros y no podemos esperar a conseguirlos porque Valentino no está para esperar nada. La cirugía tendrá lugar el próximo jueves a las 10 de la mañana y ahora sí, no le va a quedar ni un solo diente 🙁

De aquí a entonces esperamos conseguir dos cosas:
1. Los 200 y pico euros que va a costar volver a operarle (subiremos el presupuesto y la factura en cuanto las tengamos), que no es mucho pero ya sabéis que sin ayuda es imposible y ahora más, que llevamos semanas sin recibir un solo euro.
Y 2. Una CASA DE ACOGIDA en Córdoba o Sevilla, donde Valentino se pueda recuperar como debe y que nos permita descansar el corazón después de meses viéndole en un baño totalmente aislado, solito y sin los mimos que tanto tanto necesita.

#Valentino es un gato increíble. Un verdadero solete que no tiene culpa de haber nacido gato y haber pillado la maldita enfermedad que lo está condenando a la crueldad de la indiferencia. En nuestras manos está la posibilidad de cambiar su suerte y, cueste lo que cueste, vamos a conseguirlo.

Actualización 04 de Febrero de 2021

Hemos pedido fotos de #VALENTINO recién operado para daros las gracias por vuestra ayuda, pero es que lo que dice Rebeca es totalmente cierto: nuestro pequeño no está para fotos ?

En la residencia @ama_kat_hotel , donde se hospeda nuestro campeón, no le falta de nada; tiene camita, calorcito y todos los mimos que nuestra Rebe puede ofrecerle a él y a los otros 40 gatos que viven en su hotel. Pero esto no es lo que necesita #Valentino.
#Valentino es un gato de 8 años, inmuno positivo, que acaba de perder absolutamente TODOS sus dientes por una gingivoestomatitis que se ha complicado a consecuencia de vivir en la calle toda su vida.
Valentino lo que necesita es una casa.
Una casa donde le mimen, respeten y cuiden como merece.
Una casita donde vuelva a ser un rey.
Es compatible con otros gatos, pero ahora mismo no puede estar con ellos porque su enfermedad es contagiosa.
Y demanda mucho, mucho amor.
De verdad.
Si este vídeo no os parte el alma y os anima a ser casa de acogida del gato más noble que hemos conocido nunca, ya no sabemos qué más hacer.

Gracias Rebe por todo lo que haces por estos grandes olvidados ?

Si puedes acoger a #Valentino, escríbenos.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Te queremos, Valen.
Vamos a encontrar un hogar para ti, cueste lo que cueste ?

Actualización 16 de Marzo de 2021

Aún a riesgo de comernos los mocos como cada vez que lo hacemos, hoy queremos dedicar el día a los gatos.
Tenemos un montón de mininos completamente olvidados que están ahí, en segundo plano, por los que nadie pregunta y que tienen las mismas o más necesidades que el resto de animales y necesitan que les cuidemos.
Hoy le ha tocado veterinario a #VALENTINO.
Esta maravilla de gato, noble y bondadoso donde los haya, es positivo a inmunodeficiencia y está enfermo de calicivirus, por lo que tuvimos que extraerle todos los dientes y necesita revisiones cada poco porque, ni aun así, hemos conseguido que termine de remontar. Llevaba varios días más pachuchito que de costumbre y le hemos llevado al veterinario para que le exploren bien la boquita y le administren un vial de Virbagen para estimular su sistema inmune.
Es decir, solo hoy, en el tratamiento de Valentino se nos van casi 200 euros que no tenemos.

Entendemos que encontrar casa de acogida o adopción para un gato de 8 años que necesita estos cuidados no es tarea fácil, pero Valentino va a seguir con nosotras y mientras sea así, tenemos que seguir ofreciéndole todos los tratamientos y cuidados que necesite.
No vamos a centrarnos en buscar casa de acogida para él, aunque sería ideal, porque ya no sabemos cómo intentarlo ni cómo haceros llegar lo necesitadísimo que está, pero sí os vamos a pedir, si se nos permite, un poco de ayuda para que su manutención y tratamientos se nos hagan un pelín más llevaderos. Para él, y para los demás gatitos que esperan una oportunidad bajo nuestro cuidado. Mantener a tantos animales con necesidades especiales se nos hace muy cuesta arriba y por eso, por ahora, vamos a parar un poquito.

Actualización 07 de Septiembre de 2021
«Purr aquí andamos, esperando que alguien se fije en mí. Pero por más fuerte que maúllo, nunca, nadie, se para a escucharme. No me dejáis maullaros que yo, antaño, fui un poderoso rey que velaba por la seguridad de todos mis compañeros, y que un día, a mis 8 soles, fui derrocado por la enfermedad. Estuve tan malito que pensé que no viviría para maullarlo.
De eso hace ya muchas lunas y sigo aquí, vivito y ronroneando, pero sumamente triste. Cada día miro por la ventana y sueño con la vida que tuve y lo imponente y glorioso que fui, anhelando volver a aquellos días en los que brillaba tanto como la luna y era tan fuerte como el sol. Ahora soy un gato viejo, destronado y olvidado, incapaz de cuidar a nadie y luchando por mantener encendida la luz de la esperanza que me mantuvo con vida aun cuando tuve que perderlo todo, porque siempre fui un superviviente.
Ahora soy un gato viejo que comparte aposentos con otra docena de gatos como yo, enfermos y olvidados.
No me malinterpretéis. En mis aposentos se vive bien; nos traen buenas viandas todos los días, tenemos espacio, tomamos el sol y dedican tiempo a acariciarnos y alabarnos para que nunca olvidemos que un día fuimos reyes y reinas. Pero todo esto, para mí, que fui rey de reyes y protector de muchos reinos a lo largo de mis ya casi nueve soles, se queda muy pequeño.
Mi libertad ya no la quiero porque, seamos sinceros, no podría afrontarla. Ya no sé buscarme la vida, no puedo cazar porque no me queda un solo colmillo, ni defenderme de gatos más jóvenes y fuertes que busquen su propio trono. Tampoco sé ya vivir sin caricias ni halagos, de los que, he de admitir, soy un gran adicto. A día de hoy me conformo con un reino humano donde no me falten latitas para comer, ventanas protegidas para tomar el sol ni caricias y palabras bonitas todos los días. Si es menester, no me importa compartir trono con otros gatos, aunque sería digno disponer de todas las comodidades para mí solo. O, tal vez, junto a alguna gatita guapa que me ronronee de vez en cuando.
La verdad es que lo único que quiero es un lugar en el que poder descansar, tener el retiro que todo gran rey merece y, a ser posible, alguien a quien dedicarle mis ronroneos.
Mientas tanto seguiré aquí, en mi ventana, recordando mis días pasados y soñando con un futuro que, si escuchas mis maullidos, es posible que no tarde en llegar».
Buscamos casa de acogida en Córdoba o adopción en cualquier provincia para VALENTINO ?
veroadopciones@hotmail.com
ireneadopciones@gmail.com

La entrada Valentino se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/valentino/feed/ 0
La familia de Galguitos https://adoptamestizos.com/familia-galgos/ https://adoptamestizos.com/familia-galgos/#respond Fri, 03 Sep 2021 15:26:21 +0000 https://adoptamestizos.com/?p=70377 La entrada La familia de Galguitos se publicó primero en Adoptamestizos.com.

]]>

27 de Abril de 2021

Érase una vez que se era, en un lugar no muy lejano, una manada de perros vivía en armonía en un terreno junto a unos humanos cuyas intenciones para con ellos no llegamos a entender. Había perros de todas las razas y tamaños. Unos 20, según cuentan, entre adultos y cachorros que fueron naciendo al no tener a nadie que lo impidiera.
Un día, los humanos cogieron sus pertenencias y se marcharon, llevándose consigo a unos cuantos animales y dejando al resto en el terreno, sin comida ni agua, sin acceso al exterior y totalmenre abandonados a su suerte.
Pronto, los vecinos del lugar se dieron cuenta de lo sucedido y trataron de ayudar a los animales como buenamente les fue posible, llevándoles alimento y proporcionándoles hogar a todos los que pudieron.
Poco después, una pareja se instaló en la parcela colindante y no tardó en enterarse de lo sucedido. José Manuel y su pareja se encargaron junto a los demás vecinos de proporcionarles cuidados básicos e incluso adoptaron a dos de ellos, consiguiendo que, al poco, todos los animales fueran reubicados en nuevos hogares gracias a todos los vecinos. Todos, menos una parejita de galgos, que, como suele pasar, eran desconfiados y no permitían que ningún humano se acercase a ellos.
Pasó el tiempo y ocurrió lo inevitable: los galguitos se enamoraron e iniciaron una relación que culminó con el nacimiento de una camada de criaturas desamparadas que no tenían más cuidados que los que con mucho esfuerzo podía ofrecerles su madre.
Fue entonces cuando José Manuel y su pareja fueron conscientes de que necesitarían otro tipo de ayuda para sacar a aquella pequeña familia de allí. Y así fue como llegaron a nosotras.
Hemos organizado el rescate durante varios días, preparando rutinas, jaulas y acogidas, pensando que necesitaríamos tiempo para habituar a los animales a las preparaciones del rescate y, por suerte, no ha hecho falta.
José Manuel y su pareja han llevado a cabo un trabajazo ganándose la confianza de los galguitos hasta el punto de poder tocarlos y ponernos las cosas muy fáciles, pues hoy, al llegar, ya nos tenían a la familia al completo preparada para iniciar sus nuevas vidas.
Son una mamá, un papá e, inicialmente, pensábamos que cuatro cachorros. Al llegar allí ha aparecido un quinto y ahora sí, ya tenemos a la familia al completo bajo nuestro cuidado. Los bebés son tres machitos y dos hembritas, que presentan un estado realmente lamentable (especialmente una pequeña que está bastante mal) y necesitarán muchas atenciones durante los próximos días; atenciones que les proporcionarán las maravillosas casas de acogida que no han dudado en responder a nuestra petición de ayuda para dar cobijo y amor a todos los pequeños.

Actualización 28 de Abril de 2021
Los intensos días que estamos viviendo para nosotras se quedan. Hacía mucho tiempo que no nos sentíamos así, con estos nervios que son una mezcla entre la preocupación por que todo vaya bien y los peques estén a salvo, el agobio por todo lo que se nos viene encima y la alegría de tenerlos al fin con nosotras. Preocupación que se extiende a todos: galgos, pastores y gatitos luchando por salir adelante, además de nuestros veteranos.
Pero no hay agobio, preocupación ni malestar que no merezca la pena por ver imágenes como esta. De verdad que la sensación de saberles a salvo no hay nada que la pague, más que su agradecimiento y fuerzas para regalarnos momentos que no vamos a olvidar jamás.
La pequeñita de la foto es la que peor está y no se separa de su mamá, que ahora mismo es la única que puede ofrecerle calma y seguridad.

Actualización 29 de Abril de 2021
Nuestra galguifamilia ha visitado ya al veterinario y tenemos mucho que contar.
Tras varios días pensando nombres como locas y sin ponernos de acuerdo, la inspiración vino sola. O sea una pareja de galgos con un montón de hijos, todos rubios, guapísimos y a los que les espera una vida de ensueño. ¿Es que se podían llamar de otra manera? ? Os presentamos a los guapos de Brad Pitt y Angelina Jolie y a sus cinco preciosos hijos: Maddox, Pax y Knox, machos, y Zahara y Vivienne, hembras.
Para empezar, y como prioridad absoluta, necesitamos ACOGIDA urgentísima en Sevilla para Brad Pitt. Los cachorros necesitarán acogidas más adelante pero ahora mismo nuestra prioridad es él porque donde está no puede quedarse ni un día más. Así que por favor, si alguien puede abrirle las puertas de su casa aunque sea temporalmente, que no dude en escribirnos.
veroadopciones@hotmail.com
ireneadopciones@gmail.com
Sobre los papás: tienen entre 2 y 3 años, parecen bastante sanotes y ambos son un absoluto amor; muy sociables, sin miedos y exageradamente cariñosos y agradecidísimos.
Sobre los bebés: han sido repartidos en diferentes casas de acogida de dos en dos, salvo Zahara, que al ser la más débil hemos intentado que siga con su madre el máximo tiempo posible. Sabemos que aún son pequeños para separarse de su mamá, pero son muchos galgos y encontrar acogida para todos juntos es una utopía. Gracias a nuestras maravillosas chicas, al menos, están juntitos y preferimos que permanezcan así al menos unas semanas más.
Tienen unos 2 meses de vida y todos están alrededor de los 2 kg y medio, salvo Zahara, que es la más pequeña y débil con 1 kg 600 gramos. Todos han expulsado lo más grande de bichos por el culete tras la desparasitación, y especialmente Zahara está bastante malita, con unas diarras sangrientas bastante preocupantes. Se les ha realizado el test de parvovirus por si acaso y afortunadamente ha salido negativo, pero no podemos bajar la guardia y, si las diarreas no cesan, volverá a repetirse.
Se les ha recomendado dieta gastrointestinal y probióticos y cuando todos estén un poco mejor, serán vacunados.
Todavía no podemos entregarles en adopción ni están, obviamente, para viajar a ningún sitio. Así que os pedimos paciencia y comprensión y al menos unas cuantas semanas más hasta que todos estén fuera de peligro y podamos empezar a plantear sus futuras adopciones.
Sobra decir que estamos completamente enamoradas de toda la familia ?
Y que necesitamos mucha ayuda para ofrecerles todos los cuidados que necesitan. Agradecemos inmensamente a todas las personas bonitas que nos están enviando su ayuda, que detallaremos en los próximos post ?

Actualización 29 de Abril de 2021
La pequeña ZAHARA no remonta. Las diarras son tremendas y la hemos llevado al veterinario para ponerle una vía e hidratarla un poquito, a ver si conseguimos que se anime, se le corten las diarreas y arranque a comer bien.
Sus hermanos están todos estupendos, activos y con apetito, aunque es increíble la de cosas que están echando con la caca. Hoy nos hemos encontrado un globo en una de ellas. A saber lo que han estado comiendo ?
Mandadle ánimos y fuerza a nuestra pequeñita, que los va a necesitar… Y, si alguien puede ayudarnos con sus gastos, lo agradeceríamos en el alma. Tenemos unas cuantas donaciones para la familia que tenemos que actualizar, pero con tantos pequeños y tan mal estado, cualquier ayuda es poca…

Actualización 1 de Mayo de 2021
Ay nuestro gordi que ya tiene acogida gracias a Cristina y su pareja y no imagináis el peso que nos han quitado de encima.
Y él, que está encantado, parece que sonríe ?
Muchísimas gracias por toda la ayuda que nos brindáis.
Brad Pitt, el guapo, os desea buenas noches ?

Actualización 2 de Mayo de 2021
Nos vais a perdonar los escatológicos buenos días que os damos hoy, pero es que, cuando las caquitas de unos cachorros con diarrea hemorrágica horrible empiezan a coger forma, hay que celebrarlo por todo lo alto ?
Los estómagos de los peques empiezan a asentarse y Zahara, la más débil, está fuera de peligro por ahora ?
Muchísimas gracias a todas las personas bonitas que nos estáis enviando ayuda ?

Actualización 06 de Mayo de 2021
Las súper mamis de acogida que les han cuidado las primeras semanas, cuando no teníamos dónde ubicarles, y les han puesto fuera de peligro, necesitan relevos para poder descansar. Como os contamos en su día, estas mamis ofrecieron sus hogares de forma muy temporal, simplemente para darnos la tranquilidad de dejar a los cachorros en manos de confianza mientras buscábamos acogidas más estables y superaban los delicados primeros días que tuvieron que afrontar por si nos encontrábamos con algún imprevisto o enfermedad grave.
Todos están ya recuperados, fuera de peligro, bien sanotes y haciéndolo saber con sus tan esperadas travesuras ?
Así que vamos al lío: es hora de reubicar a nuestra pequeña familia.
Buscamos casas de acogida en SEVILLA para nuestros cinco galguitos. A ser posible, se dará prioridad a las acogidas de dos en dos porque preferimos no separarles y también por vuestra salud mental (os prometemos que, por raro que suene, dos cachorros dan menos guerra que uno).
Todavía no están listos para ser adoptados. Eso es algo que, cuando estén todos reubicados y puedan empezar sus protocolos veterinarios, iremos mirando sin prisa y con calma.
Si quieres que uno de nuestros bebés ponga tu hogar patas arriba y te llene el corazón de amor, escríbenos.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 08 de Mayo de 2021
Lo que más le gusta a #ZAHARA en el mundo es usar a su mamá de almohada ? Así se pasa los días y las noches. Y la pobre Angelina que tiene una paciencia de oro ?

Actualización 08 de Mayo de 2021

Geometría de galgos para los buenos días ?

Han pasado tantas cosas estos días que no sabemos ni por dónde empezar. Aunque quizás lo más importante que tenemos que hacer es dar las gracias más inmensas a Angy y Kevin por acoger en su precioso hogar a tres de los mini galguitos de la familia Jolie-Pitt. Además, por si nos parecía poca la ayuda, también han decidido llevarse a casa al guapo de #PANETTONE después de que su primera acogida no terminara de cuajar. Nos han salvado la vida a todos, literalmente ?

Respecto a los peques, tenemos cosas que contaros.
Los pequeños #MADDOX, #KNOX, #PAX y #ZAHARA ya están disponibles para adopción. Aún siguen teniendo parásitos pero la cosa va yendo a menos y en unos días podrán empezar a vacunarse, así que ya podemos comenzar a conocer mamás y papás que quieran compartir sus vidas con ellos.
#VIVIENNE, la hermanita que falta, ha sido la primera en independizarse y su aventura os la contamos en otra publicación 🙂

Actualización 16 de Mayo de 2021

Seguimos con la familia JOLIE-PITT ?

Como sabéis, #BRAD PITT, el papá, lleva algunas semanas disfrutando de una maravillosa casa de acogida. La adaptación ha sido tan buena y está tan a gusto en su hogar, que #Brad nos solicitó el otro día la adopción de Cristina y su pareja para que fuesen sus nuevos compañeros de vida. Estábamos esperando los resultados de sus analíticas para darle alguna contestación, y resulta que nuestro guapo está sano, feliz y sus papis encantados con él, así que no vemos ningún inconveniente para decirle que sí, que, a falta de liarnos con la burocracia y el papeleo, se puede quedar para siempre y comenzar una nueva vida con ellos ?

#ANGELINA, la mamá, estaba muy a gusto con la tita Amparo y han disfrutado mucho juntas, pero Amparo necesita respirar y era necesario encontrar una casa de acogida estable en la que Angelina pudiera quedarse mientras la preparamos. Y ahí apareció Yolanda, totalmente dispuesta a ayudar, cuidar y mimar a Angelina durante el tiempo que esté con nosotras 🙂
Angelina es una galguita de unos 2-3 años la mar de cariñosa, simpática y agradecida que va robando corazones por donde pasa. A falta de castrarla y vacunarla, ya está lista para ser adoptada y esperamos encontrarnos con una larga lista de candidatos a papás y mamás para ella.

Como decíamos en la publicación anterior, la primera en independizarse ha sido la pequeña #VIVIENNE, que ha hecho su maletita y se ha marchado a vivir con Tamara y su maravillosa familia en condición de acogida hasta que termine su protocolo veterinario, y podamos concluir una bonita adopción con todas las garantías para familia y galguita ?

En fin, a ver qué pasa y si dentro de unos días podemos daros buenas noticias, pero la cosa pinta bien ?

Actualización 16 de Mayo de 2021

Que estamos enamoradas de nuestros cinco galguitos es un hecho. Pero por #ZAHARA sentimos algo especial; quizás porque es la más pequeñita y frágil de la camada; quizás porque llegó muy malita y necesitó el doble de cuidados que sus hermanos. Quizás porque, a pesar de ser un suspirito, ha demostrado ser una cachorrita fuerte con muchas ganas de comerse el mundo. Quizás tenga que ver con esa carusa tan bonita que tiene. No sabemos. Pero #Zahara es otro mundo.

Buenos días ?

Actualización 04 de Junio de 2021

El malestar que os contamos de Panettone no era ninguna tontería. Era parvovirus. Inmediatamente se llevó a hospitalizar, y como los tres mini galguis conviven con él y aún no estaban vacunados, se hospitalizaron igualmente por precaución porque estábamos seguras de que iban a enfermar en las próximas horas. Así ha sido. No os hemos contado nada porque estábamos esperando a recibir los resultados, pero ya no importa. Los tres peques son positivos y están muy graves.
Necesitan, para ESTA TARDE, plasma de un donante sano y sus vidas dependen de encontrarlo.
#Panettone, dentro de la gravedad, está estable y en principio no necesita transfusión, pero tampoco lo descartamos.

Buscamos:
Perro de más de 25 kg totalmente sano, a ser posible joven, con analíticas recientes. Si no las tiene, se le harán de forma gratuita esta tarde en nuestro veterinario (clínica veterinaria La Motilla, en Dos Hermanas).

Actualización 04 de Junio de 2021
No os podéis imaginar el dolor que nos provoca todo esto. El dolor de haberles sacado de la calle prometiéndoles un futuro y una vida en la que no tuvieran que sufrir ni un solo día, para que ahora, por una maldita enfermedad, las promesas se conviertan en ilusiones vacías y sus vidas se estén escapando entre transfusiones, vías y medicamentos sin darnos posibilidad de agarrarlas fuerte para no dejar que se vayan. Por una maldita enfermedad que no sabemos de dónde han podido salir ni cómo leches la han contraído porque ninguno de los cuatro ha salido de su hogar de acogida.

No os podéis imaginar lo que duele el no poder decirles, viendo sus caritas de sufrimiento y sus miradas de no entender lo que les pasa, que no tengan miedo,que van a salir de esta y van a volver a dormir apelotonaditos en su sillón favorito.
No os hacéis una idea del dolor que sentimos por esa familia de acogida que,siendo su primera vez, habían puesto todas sus ilusiones en recuperar a nuestros pequeños y verles marchar pronto a esos bonitos hogares que les prometimos.Esa familia que está destrozada, preguntándose cada día si volverán a verlos y qué podrían haber hecho para evitarlo, incapaces de desterrar la culpa,aunque sepan más que de sobra que esto se escapaba al control de cualquiera.
No os imagináis lo que duele esta impotencia de no poder ofrecerles más y tranquilizar los corazones de todos con una esperanza que ya estamos perdiendo.

Esta noche hemos perdido a #Maddox y #Pax, dos de los galguitos…
Sus vidas se han apagado y con ellas se marchan promesas, ilusiones y la poquita esperanza que nos quedaba de volver a verles juntitos en su sillón alegrándonos la vida con cada imagen que nos mandaban sus papás de acogida.Todo se va con ellos.
En estos momentos una compañera esta llevando a su perro a la clínica para realizar otra transfusión a #Knox, y solo queda rezar, a lo que sea que haya que rezarle, para que salga de esta y no tengamos que lamentar otra pérdida.

No hemos hablado de dinero porque ni nos apetecía ni nos parecía importante, pero lo cierto es que con esto ya no podemos solas. Ni con el dolor, ni con los gastos, ni con la carga de haber perdido dos vidas que apena ni con la carga de haber perdido dos vidas que apenas habían dado comienzo.

Actualización 11 de Junio de 2021

Otra más para el veterinario….
#ANGELINA, la mamá, lleva días comiendo muy poco, ayer vomitó y hoy ha amanecido con diarrea con sangre.
En principio sospechamos de parásitos, pero ya… ya no nos fiamos. Preferimos que la vean y estudien en condiciones y si se tiene que quedar unos días hospitalizada, así será.

Ánimo #Angelina ?
Por favor, necesitamos vuestra ayuda, por pequeña que sea. Somos muchas personas y entre todas, con muy poquito de cada una, podemos salir a flote, pero sin ella nos hundimos en la mierda.

—

Falsa alarma.
#Angelina no tiene parvo.
Son parásitos y una gastroenteritis muy fea de los que se va a curar en nada porque su mami de acogida es gloria bendita y la tiene como a una reina.

Dicen que el suspiro de alivio ha provocado un huracán al otro lado del mundo ?

Muchísimas GRACIAS a todxs lxs que nos estáis enviando ayuda. Sois calma en mitad de la tormenta ?

Actualización 12 de Junio de 2021
Nos vamos a casa.
#Knox todavía no está fuera de peligro pero está comiendo y sus heces son cada vez más sólidas. Aunque con precaución, ya puede hacer vida en casa y esperamos dar mejores noticias muy pronto.
La sensación no puede ser más agridulce. La parvo, que nos ha pillado completamente por sorpresa, se ha cobrado dos vidas a las que queríamos con toda nuestra alma y el sentimiento de impotencia y fracaso sigue a flor de piel, paliado levemente por la recuperación, al menos, de nuestros pequeños #Panettone y #Knox. Para ellos la vida sigue y ahora toca coger aire, reponerse y seguir labrando su camino.
#Pax ?y #Maddox ? no les acompañarán, pero haremos todo lo posible por honrarles procurando el mejor futuro para sus hermanos ?Agradecimiento infinito a Sofía y Cristina que, una vez más, nos han sacado de un apuro monumental llevándose a #Knox a casa durante el finde.
Y a Patri por la llamada de auxilio para recogerlo ?Agradecimiento más que infinito a todxs vosotrxs, que habéis respondido a nuestra llamada de socorro y nos estáis haciendo llegar un montón de donaciones que nos van a permitir volver a respirar. Durante el finde haremos recuento y os agradeceremos la ayuda como es debido porque, de verdad, nos habéis dejado sin palabras.
Gracias por ser calma cuando más se necesita.
?

Actualización 15 de Junio de 2021

Otra vez al veterinario con #ANGELINA. No para de vomitar y diarrear ?
Gastroenterocolitis, nos han dicho tras una ecografía en la que se le veía todo el digestivo hinchado como una pelota. Algún virus o bacteria está causando estragos en su tripita y, ahora sí, se tiene que quedar hospitalizada para recibir medicación intravenosa y no seguir dañando su flora.
Al menos no es parvo, así que, sea lo que sea, esperamos que cure pronto.

Actualización 21 de Junio de 2021

Empezamos con nuestros mini galguis.
#KNOX, que salió hace una semana de la clínica tras pasar días hospitalizado con parvovirus, ya está totalmente fuera de peligro. Ha luchado como un campeón, y a pesar de tenerlo todo en contra y de perder a dos de sus queridos hermanos por esta maldita enfermedad, al fin podemos decir que lo ha conseguido y que nuestro bebé tendrá la maravillosa y larga vida que merece. Aún es pronto para vacunarle. Tendrán que pasar aún unas cuantas semanas para poder prepararle para su futura adopción, pero sería maravilloso que, cuando esté listo, haya una bonita familia esperándole con la misma ilusión que tiene él por conocerla.
#VIVIENNE, una de las hembritas que estaban en acogida con posibilidad de adopción, finalmente no podrá ser adoptada por motivos personales de la familia, así que hay que empezar a buscar el hogar que necesita. Ella está totalmente preparada para marcharse y podrá hacerlo en cuanto encontremos a la familia adecuada 🙂

Los dos son galguitos de unos tres mesecitos de edad. #Knox es macho y #Vivienne hembra. De adultos, como galgos que son, serán de tamaño grande. Están perfectamente socializados y son muy cariñosos y simpáticos, pero como buenos bebés de galgo, son también muy traviesos y están deseando poner vuestro mundo patas arriba hasta que les llegue la edad, si es que llega, de mutar en cojines de sofá.
Están en Sevilla, pero pueden viajar a donde sea necesario.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

#ZAHARA, la hembrita que queda y que nos tiene el corazón robao, pronto os contará una maravillosa noticia ?

Actualización 09 de Julio de 2021
¿Sabéis de otro bebé que está precioso y estupendísimo? 💙
Este año la parvo se ha cebado fuerte con los cachorros. Decenas de ellos luchan por sus vidas en los centros veterinarios, contra una enfermedad que lo pone muy, muy difícil y que en muchas ocasiones, como nos ha pasado con Maddox, Pax y Puchito, tiene un tristísimo desenlace. Por eso, aunque a veces es inevitable y especialmente con perritos que vienen de la calle, es muy importante seguir el calendario de vacunación de nuestros pequeños y extremar las precauciones cuando todavía no las tienen.
Nuestro querido KNOX es un superviviente. Estuvo hospitalizado muy malito, y al ver cómo morían sus hermanos casi perdimos la esperanza con él. Pero salió adelante, por él, que espera tener la mejor de las vidas, y por sus hermanos que no lo consiguieron.
Knox ya está más gordito y totalmente recuperado gracias a los cuidados de sus súper mamis de acogida Sofía y Cristina 🙂
Y ya está listo para encontrar una familia 🤞
Está en Sevilla, pero puede viajar a donde sea necesario.
veroadopciones@hotmail.com
ireneadopciones@gmail.com
Buenas noches 💙

Actualización 08 de Agosto de 2021
KNOX es EL ÚNICO miembro de la familia Jolie-Pitt que sigue esperando hogar (sí, se vienen noticiones 🙊).
Es un superviviente del parvovirus; un pequeño luchador que, tras ver cómo sus dos hermanos sucumbieron al maldito virus, se armó de fuerza y valentía y libró la batalla más dura de su cortísima vida. Lo logró. Venció a la enfermedad y salió adelante con toda su energía y la de sus hermanos que no lo consiguieron.
Cuando Pax y Maddox fallecieron, depositamos todas nuestras esperanzas en Knox y, cuando aún estaba malito, conectado a una vía y dependiendo de la medicina para mantenerse vivo, le hicimos una promesa: si salía de aquella, le buscaríamos la mejor familia del mundo y le procuraríamos la vida más feliz posible, por él, que se lo merece todo, y por sus hermanos, que cuidarán de él desde el otro lado del arcoíris y le acompañarán en todas las aventuras que nunca podrán vivir.
A día de hoy seguimos sin poder cumplir nuestra promesa porque aún no ha aparecido la familia que necesita. Nos tenéis que ayudar a encontrarla.
KNOX es un bebé galguito de cuatro meses, buenísimo, cariñoso y agradecido a la vida por la segunda oportunidad que le brinda para poder disfrutarla. Se nos hace grande y no queremos que pase un solo día más creciendo sin familia.
Está en Sevilla, pero puede viajar a donde sea necesario.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

Actualización 03 de Septiembre de 2021
En algún lugar de Sevilla, de cuyo nombre no queremos acordarnos, no ha mucho tiempo que vivía una bonita familia; una familia entera de galgos.
Un papá, una mamá y cinco hijos, que por caprichos del destino, fijaos qué cosas, ¿habrá galgos? eran todos de color castaño.
El papá, de nombre Brad, era un galgo alegre y fino.
La mamá, que por Angelina la conocimos, era una madre valiente y fuerte.
Los hijos, débiles y flacos, se llamaron Vivienne, Zahara, Knox, Pax y Maddox. Y aunque eran bebés que nacieron en el seno de una familia abandonada, salieron adelante, juntos, en manada.
Poco después, el destino daría un revés. Parvo se llamaría lo que la vida de dos se llevaría. Nada pudimos hacer para salvarles, aunque entre lágrimas y dolor, todo se intentó. Se intentó de corazón.
De ellos sólo se salvó Knox, y por él y los demás debíamos luchar.
A veces la vida es dura y mucho más para estas criaturas, que todo lo dan sin pedir nada y nunca, jamás, tienen culpa.
La lucha siguió y sí, al fin, la recompensa llegó.
Llegó en forma de familias que darían cobijo a almas perdidas, que traerían esperanza hasta entonces escondida y felicidad a vidas antes vacías.
El alegre Brad se queda con su acogida.
Angelina, quien defendió a su familia con dientes y uñas, viajó a Cataluña.
Vivienne se quedó con personas bonitas que conocemos muy bien.
Y Zahara, ay, Zahara… No imaginamos para ella mejor madraza.
A falta de contaros noticias de Knox, por el que al fin una persona se interesó, nos encontramos rozando el capítulo final de esta familia tan especial.
Y colorín colorado, este cuento, casi casi, ha terminado 🙂
Cuentico especialmente dedicado a nuestra querida Amparo, que ha sido capaz de abrir su corazón a una nueva vida aun cuando la suya se convirtió en ruina.
Te queremos 💜

La entrada La familia de Galguitos se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/familia-galgos/feed/ 0
Joker https://adoptamestizos.com/joker/ https://adoptamestizos.com/joker/#comments Mon, 02 Aug 2021 15:13:29 +0000 https://adoptamestizos.com/?p=69927 La entrada Joker se publicó primero en Adoptamestizos.com.

]]>

Urgencias

JOKER es un tierno Yorkshire que padece hidrocefalia, posiblemente congénita; es una enfermedad que le acompañará toda la vida y para la que necesitará medicación y atención especializada por si tiene recaídas. Ahora mismo está muy estable y con sus medicinas lleva una vida totalmente normal.

La única secuela que muestra es la de dar giros sobre sí mismo, que se acentúan cuando se estresa. Después de miles de correos de personas que solo querían adoptarlo por su raza y huían al enterarse de su enfermedad y necesidades, Jóker finalmente se queda con nosotros, se queda en la familia de Adopta Mestizos para siempre.

29 de Noviembre de 2020

Hace unos días recibimos el aviso de un perrito al que iban a llevar a la perrera. Nos contaron una historia y nos enseñaron fotos. Se trataba de una criatura minúscula con una carita de pillo que vamos, enamoramiento instantáneo. ¿Por qué no? Era pequeñito, guapo y peludito, lo que todo el mundo busca, y ahora mismo no tenemos perretes pequeños en la familia, así que palante con él.
Le compraron cuando era un cachorro y pilló la parvo. Se lo regalaron. Lo adoptó hace un mes y ya no puede cuidarlo. Son tantas las versiones que ha contado su anterior humana que no tenemos forma de saber cuál es su historia. Y ahora, realmente, eso es lo que menos importa. Cuando el pequeño llegó a nosotras, supimos de inmediato el motivo por el que ya no le querían.
No para de dar vueltas sobre sí mismo. Una vez, y otra, y otra, sin finalidad ni rumbo alguno, obsesiva y compulsivamente.
Lo primero que pensamos fue que padecía síndrome vestibular, que puede estar ocasionado por una otitis grave o tener origen neurológico. La primera visita al veterinario ha descartado la otitis. Después, observando más detenidamente su comportamiento, hemos empezado a valorar que pueda tratarse de una estereotipia, fruto de alguna situación de estrés que ha debido vivir y que ha tenido que somatizar de la manera que ha podido. Para saberlo tendremos que visitar a un neurólogo y hacerle algunas pruebas para descartar que se trate de una lesión neurológica. Aunque tenemos cierta esperanza en que, si se trata finalmente de una situación comportamental, podamos solucionarla con algo de trabajo y permitiéndole ser el perrito que creemos que nunca le han dejado ser.
Sea como sea, vamos a ayudarle y mucho. Vamos a ofrecerle todo lo que necesite y vamos a quererle pase lo que pase y siendo como tenga que ser. Y, cuando se pueda, encontraremos para él una súper familia que se enamore como nosotras de esas orejas peluditas.
Mañana os enseñamos un vídeo para que podáis ver cómo se mueve ?
Se llama JOKER.
Tiene un añito y pesa dos ridículos kilos.
?
¿Nos ayudáis a sufragar sus gastos? ?
Podéis hacerlo:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA (Sevilla): ES04 2100 8448 0121 0058 4573
Concepto: Joker
✔ Enviando un donativo por Bizum: 695815788
✔ Enviando un donativo por PayPal: Adopta_Mestizos@hotmail.com (importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

30 de Noviembre de 2020
Cuando hace unos días JOKER llegó a nosotras, tenía tanto miedo que pensábamos que iba a explotar como un globito. Era imposible que un cuerpecito tan pequeño pudiera albergar tantísimo pánico. Los primeros días Joker no paraba de temblar, lloraba cuando le cogías en brazos y lo que quiera que le pase para dar vueltas sobre sí mismo una y otra vez era mucho más acentuado. Todo eso nos hace pensar que se trata de una estereotipia, un movimiento repetitivo y automatizado que pueden presentar los animales debido al estrés que les supone no poder satisfacer sus necesidades conductuales más básicas. En pocas palabras, es muy posible que Joker haya estado encerrado y solo gran parte de su vida. También es posible que estemos ante una lesión neurológica o traumática que descartaremos con especialistas.
Sea como sea, ahora mismo y a saber desde cuándo, la vida de Joker se reduce a esto: dar vueltas sobre sí mismo sin finalidad ni rumbo durante todo el día, salvo cuando está durmiendo, comiendo o jugando (otra pista que nos decanta por el trastorno de comportamiento, aunque aún no podemos asegurar nada).
Durante estos días, mientras valoramos lo que va a necesitar, vamos a centrarnos en ofrecerle un ambiente adecuado con todos los estímulos posibles para reducir sus niveles de estrés y hacerle entender, si eso es lo que piensa la criatura, que dar vueltas no es el único entretenimiento al que puede recurrir en su vida.
Os iremos contando cómo avanza.
Y ya pues os podéis enamorar y tal, porque esas orejitas peludas y esa carita de pillo son lo más bonito que vais a ver hoy ?

Actualización 1 de Diciembre de 2020

A JOKER, al que, además del problema de dar vueltas sobre sí mismo, se le están sumando traumas consecuencia de una posible mala vida. Resulta que al pequeñín le da un miedo atroz la calle, hasta el punto de no parar de llorar y temblar en cuanto la pisa. No sabe andar con correa ni es capaz de relajarse durante un paseo que debería ser su momento de desestresarse y desfogar.

Creemos que tenemos dos problemas: uno físico y otro emocional; hay que detectar ambos y trabajarlos con los medios que requiera cada uno. Cuando visitemos al especialista y sepamos si el primero es real, es posible que necesitemos una casa de acogida que quiera implicarse con el segundo, ya que va a necesitar trabajo y ayuda profesional.

12 de Diciembre de 2020
JOKER el bailarín fue ayer al veterinario y, para empezar, le hicieron varias analíticas y radiografías. No encontramos nada. En estos días hemos estado observándole y cada vez tenemos más claro que nos enfrentamos a algún problema de base neurológica. Nuestro veterinario nos ha recomendado visitar al especialista y hacerle una resonancia magnética, así que ya hemos pedido la cita y estamos a la espera de que nos digan día.
En este vídeo os mostramos unos segundos de lo que es, básicamente, su día a día. Él está muy bien, come con normalidad, juega, da muchos besitos y es un perrito alegre y cariñoso, pero los giros sobre sí mismo no dan tregua. Los hace siempre y se acentúan aún más cuando se excita por cualquier motivo. Dudamos mucho que este problema tenga solución, pero necesitamos saber si existe algún daño estructural que podamos tratar de alguna forma para ofrecerle una mejor calidad de vida.
Sea lo que sea, vamos a intentar ayudarle cuanto nos sea posible.
Aún no sabemos cuánto va a costar la resonancia, pero ya sabéis que estas pruebas son muy caras y necesitamos ayuda para afrontar tanto gasto.
En cuanto tengamos el presupuesto y algún dato más sobre su dolencia, os contamos ?

13 de Diciembre de 2020
Ya tenemos el presupuesto para la resonancia de JOKER.
Y ya está, no tenemos nada más.
Al verlo hemos sufrido tres infartos. Que sabemos de sobra que estas pruebas son caras y es lo que hay, pero no deja de doler en el riñoncito que vamos a tener que vender para pagarlas.
Os explicamos.
El presupuesto inicial es de 639 euros. Ahí entra lo básico: consulta con especialista, la resonancia y su anestesia.
De no encontrar nada, y si queremos seguir con un estudio más a fondo, realizarían la resonancia con contraste, análisis del líquido cefalorraquídeo y PCR para estudiar posibles enfermedades infecciosas (lo que viene entre paréntesis rojitos). En ese caso, el presupuesto sería de 985 euros.
Y obviamente no tenemos ese dinero ahora mismo y la única forma que tenemos de conseguirlo es a través de vosotrxs. Tenemos la opción de dejar dos meses de Teaming únicamente para Joker, pero de hacer eso se nos acaba el presupuesto para todo lo demás. Es decir, estaremos dos meses sin pagar a nuestros veterinarios y residencia y eso significa parar de nuevo todo.
Volvemos a necesitar vuestra ayuda. Una ayuda grande porque otra vez se nos juntan casos caros y no nos gustaría parar ahora que hemos recuperado la ilusión por vivir y seguir ayudando.
En principio vamos a ir a por los 639 y a rezar porque ahí se vea algo y no necesite nada más. Y ya después veremos.
Vamos a intentarlo como hacemos siempre: con un poquitín de cada unx, un pequeño granito, y a crear una montaña ?

14 de Diciembre de 2020
STOP!!
¡Paren todo! ¡Que truenen los tambores! Busquen sus mejores galas y saquen el mejor vino para celebrar que… ¡Ya tenemos todo el dinero necesario para las pruebas de JOKER!
Habéis sido muchas las que habéis enviado vuestro granito de arena para construir la montaña que necesita nuestro pequeño y no os lo podemos agradecer más, porque como siempre respondéis de maravilla a nuestras peticiones de ayuda.
Pero es que…
MARGOT, la mami de nuestro Rasti y abueli de Silver, nos ha enviado nada más y nada menos que 1.000 EURAZOS para pagarle TODAS las pruebas que necesite ???
Se hicieron cargo de todos los gastos que necesitó Rasti. Pagaron la operación de Papa. Asumieron la factura al completo de Gamora y ahora nos alegran la existencia haciéndose cargo del presupuesto enterito de Joker.
Pero esto qué es. Qué hemos hecho para merecer a gente tan bonita. Cómo les damos las gracias por tanto por el amor de dios que nos da un algo fuerte… Estamos totalmente abrumadas y no nos salen las palabras.
INFINITAS GRACIAS MARGOT POR TODO LO QUE HACES POR NUESTROS NIÑOS ??
Porfa, porfa.
Hemos recibido muchas donaciones y os queremos mil por ello pero tenemos mucho más de lo que necesitamos para Joker. Con la donación de súper Margot tenemos más que suficiente para todo y no queremos quedarnos con más dinero del que necesita.
Personas preciosas que nos habéis enviado ayuda: Noe, Almudena, Juana, María, Roxana, Alba, Ruth, Susana, Clara, Inmaculada, Carol, Arancha, Julia, Lorena, Patricia, Rocío, Cristian, Marina, María I., Ana, María R, Irina y esperamos no olvidar a nadie… Enviadnos un privado para poder devolveros vuestro dinero ?
Si no queréis recuperarlo, tened seguro que se le dará el mejor uso posible. Hemos pensado destinarlo a los gastos de Persia y de residencia de Venezia y Véneto, pero preferimos que nos lo digáis vosotras ? Sea como sea con esto vamos a tener sustento para unos meses. Os queremos!! ?
El jueves tenemos la cita para la resonancia ?

18 de Diciembre de 2020
Las noticias no son buenas ?
Tenemos que decir que no es nada que no esperáramos porque en los últimos días los síntomas han empeorado ligeramente, pero confirmar las peores sospechas siempre duele a pesar de habernos preparado para lo peor.
JOKER padece hidrocefalia. El líquido cefalorraquídeo no puede reabsorberse y se le acumula en una de las cavidades del cerebro, concretamente en el ventrículo derecho. También algo en el izquierdo. Esto hace que los tejidos y estructuras cerebrales se estén atrofiando. Está totalmente ciego del ojito izquierdo, y todo esto explica los síntomas que hemos ido viendo durante las últimas semanas.
Las causas pueden ser muchas, pero todo apunta a que su origen es congénito. Posiblemente nació con ella, como nacen muchos otros perritos de razas miniatura en las que este problema es frecuente. Joker no ha sufrido golpes ni desatención, pero ha sido víctima de otro tipo de maltrato; un maltrato silencioso que a muchxs les cuesta entender, y que igualmente se cobra muchas vidas. Ese afán por tener perritos cada vez más pequeños, o con deformidades que suelen resultar atractivas, tiene como consecuencia el nacimiento de animales naturalmente inviables, con patologías que van transmitiendo y consolidando a lo largo de las generaciones, o que sus cuerpecillos, simplemente, no pueden soportar.
Vamos a intentar con tratamiento médico reducir el líquido que se acumula en su cerebro. En dos semanas tenemos revisión y esperamos ver mejoría, para no tener que valorar una posible cirugía que da escalofríos tan solo de imaginarla.
Sea como sea, su problema no tiene solución, y por ahora el pronóstico es reservado. Hay una buena noticia, y es que la mortalidad de esta afección es mayor en cachorritos de pocos meses. Es decir, cabe la posibilidad de que Joker pueda llevar una vida más o menos normal, con secuelas, pero feliz.
Por ahora vamos a poner todas nuestras esperanzas en el tratamiento farmacológico.
Y no sabemos qué más deciros, la verdad…
Esto es un palo.
Que lo esperábamos, vale. Pero es que la mala suerte que tienen algunos no es normal. Joker no se merece esto…
Lo que sí merece mucho muchísimo, cuando se pueda, es una familia. Una buena, que tenga un corazón grande y bondad suficiente para dar hogar a un perrito junto al que, casi con total seguridad, habrá que seguir luchando el resto de su vida.

27 de Diciembre de 2020

No creáis que esa carita de no haber roto un plato nos lo está poniendo fácil.
Cuando empezó con la medicación, perdió totalmente el apetito y empezó a tener unas crisis de vómitos que nos tuvieron varios días con las carnes abiertas. Estaba tan apático y triste que ni siquiera quería mimos. Añadimos Cerenia y un protector gástrico y afortunadamente mejoró, pero qué sinvivir.
Además es un granuja y sabe más que Lepe. Ahora se ha enterado de que le engañamos con comida rica para darle sus pastillas y ha decidido que por ahí no pasa. En cuanto se da cuenta de que un manjar lleva sorpresita dentro, ya puede ser el bocado más apetecible del mundo que no vuelve a probarlo.
Y así nos tiene cada día, de los nervios, exprimiendo nuestra creatividad para inventar nuevos engaños y que se tome sus medicinas sin descubrirlas.
Hace con nosotras lo que quiere porque sabe que nos pone ojitos y nos tiene a sus patas.
Pero es que hay que quererle.

La semana que viene toca revisión ?
#Joker ?

16 de Enero de 2021

Los últimos días con JOKER no han sido nada fáciles.
Desde que empezó con la medicación, hace ya unas tres semanas, no sólo no ha habido mejoría alguna, sino que empezó a ponerse peor. Como os mostramos en los primeros segundos de vídeo, las marchas en círculo empezaron a ser tan frecuentes, intensas y caóticas que la criatura, incapaz de parar, hasta se mareaba. No respondía a la voz ni tampoco podíamos detenerle cogiéndole en brazos. Dejó de comer y darle la medicación se convirtió en una lucha diaria porque no había manera de hacerle tragar una mísera pastilla. En fin. Unos días que para nosotras se quedan, porque empezábamos a temernos lo peor y, no os vamos a engañar, verle así nos hacía replantearnos su caso y pensar si la lucha estaba mereciendo la pena.

Pues resulta que, tras insistir en la mala situación en la que se encontraba el chiquitín, le han retirado un medicamento y añadido otros, y como por arte de magia las vueltas han parado, ha recuperado el apetito y, por primera vez en un mes, hemos visto a Joker andando en línea recta y jugando con un peluche. Ha podido jugar por PRIMERA vez.
Tiene días y esto no es constante. De vez en cuando da alguna vuelta y si se pone muy nervioso con cualquier cosa entra en crisis, pero al menos nos ha hecho saber que hay esperanza y que nuestro pequeñín está luchando por recuperarse.
Para calmarle, vamos a intentar plantear su castración y también va a valorar su caso el mejor neurólogo que conocemos para saber si estamos yendo por buen camino y si podemos hacer algo más.
Por ahora nos conformamos con verle feliz en sus momentos de relax ?
Si queréis ayudar a Joker, podéis hacerlo:
✔ Enviando un donativo por Bizum: 695815788

✔ PayPal: Adopta_Mestizos@hotmail.com
https://www.paypal.me/adoptamestizos
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)

✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

23 de Febrero de 2021
JOKER ha visitado hoy al neurólogo y, como se está manteniendo muy estable, ha decidido bajar la dosis de corticoides para ver cómo lo tolera por si podemos ir reduciendo medicación. La revisión será dentro de un mes, y para entonces, si sigue como hasta ahora, programaremos su esterilización. En su caso creemos que la esterilización será muy beneficiosa porque va a reducir considerablemente sus niveles de estrés, que suelen empeorar su condición. Con Joker hemos llegado al máximo de lo que, por ahora, podemos ofrecerle. Con medicación no podemos esperar más mejoría, y tampoco queremos plantear la cirugía porque las tasas de éxito en casos como el suyo, de origen posiblemente congénito, son escasas.

Si nuestro pequeño tolera bien la disminución de la dosis, y una vez que esté castrado, empezaremos a buscar la familia que necesita.

El caso de Joker y es especial y necesita familia así, especial.
En el caso de Joker, hay que tener claro que su enfermedad es incurable y le acompañará durante toda su vida. Hemos conseguido reducir al mínimo los síntomas que presenta y puede hacer vida totalmente normal; corre, juega, come y es un perrito feliz y adorable que tendrá para siempre la peculiaridad de dar giros sobre sí mismo. La familia que quiera adoptarle deberá asumir que necesitará medicación de por vida y control veterinario frecuente en caso de recaída. Joker es un perrito que se estresa y excita fácilmente, situaciones que empeoran ligeramente los síntomas, y por eso creemos que su hogar ideal sería en un entorno lo menos urbano posible, con patio, jardín o zonas abiertas donde no tenga que enfrentarse a muchos estímulos y pueda llevar una vida lo más tranquila posible.

29 de Marzo de 2021
Empezar la semana pidiendo no es bien para nadie, salvo para estos dos bribones, que tienen la tira de gastos y hasta que nos llegue el Teaming estamos con el agua al cuello a base de bocanadas que cada día aportan menos aire.
Necesitamos ayudita para pagar las medicinas de Joker y Persia. Suman entre los dos unos 130 euros de medicación aproximadamente, porque al final por una cosa o por otra siempre es más, y ahora mismo no los tenemos.
50 son para el Keppra de Persia, que se nos acaba en unos días, y unos 80 para todas las pastillitas de Joker (trazadona, omeprazol, gabapentina y prednisona), que además tenemos que pedir en fórmula magistral por la dosis que necesita.
Nos preguntáis mucho por ellos y nos alegra contaros que están muy bien ? A pesar de sus complicadas patologías, se están manteniendo muy estables. Joker especialmente está mejorando cada día, y aunque sigue siendo un perrito marchoso que va dando giros por la vida, está más feliz que nunca. Persia, por su parte, ha vuelto a tener otro ataque en los últimos días, pero ha sido leve y se ha recuperado muy rápido. Con ella tenemos que volver pronto a valoración y considerar el tratamiento con fenobarbital.
Deciros también que hemos recibido solicitudes de adopción para ambos y estamos valorándolas. Con perritos como ellos hay que tomarse las cosas con calma, pero esperamos que la suerte acompañe y podamos dar noticiones muy pronto ?
¿Alguien nos ayuda con sus tratamientos? ?
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES31 2100 6091 7902 0003 9666
Concepto: Persia o Joker
✔ Enviando un donativo por Bizum: 695815788
✔ PayPal: Adopta_Mestizos@hotmail.com
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

29 de Marzo de 2021
Una vez más nos dejáis sin palabras. Acabamos de lanzar una petición de ayuda para Joker y Persia y en na y menos ya hemos cubierto el tratamiento de los dos. Hay que agradecérselo a Emma, que nos ha enviado los 130 euros que necesitamos para mantener a estos dos petardos bien atendidos. También a Cecilia y Carmen, cuyas donaciones, con su permiso, usaremos para el chorreillo que siempre nos queda con los tratamientos. Muchísimas gracias de todo corazón, sois absolutamente increíbles ?
Hace unas semanas empezamos a buscar hogar a JOKER después de meses intentando estabilizar su hidrocefalia. En las publicaciones pedíamos cosas concretas: una familia que pueda permitirse el tratamiento que necesita de por vida (unos 80 euros al mes), que este preparada para afrontar recaídas y visitas regulares a veterinarios especialistas y, también, un hogar lo más alejado posible de la ciudad y en el que Joker pueda disfrutar de algo de terreno. Nos han escrito varias familias que han aceptado las primeras premisas, pero que no podían cumplir la última. Debido a ello hemos tenido que rechazar adopciones que en principio parecían perfectas, y la explicación os la dejamos con este vídeo.
En la primera parte podéis ver a Joker paseando por ciudad. En la segunda, en el campo. Parece que no es el mismo perro, ¿verdad?
Joker se estresa muchísimo cuando pasea con correa; también le estresan el ruido, los coches, las aglomeraciones y el montón de información que llega a su cerebro en entornos urbanos y que no es capaz de procesar ni gestionar. El estrés hace que su estado empeore y que los síntomas de su enfermedad se manifiesten de forma exagerada. No es capaz de dar ni tres pasos sin dar sus giros.
En cambio, cuando Joker pasea sin correa, en entornos tranquilos y a su aire, podéis ver que es capaz de andar con total normalidad. Aunque de vez en cuando da algún girito, y eso lo va a hacer siempre, ambas situaciones no tienen punto de comparación.
Entendemos que muchas queráis adoptar a nuestro pequeño porque es un perrito mini que encaja a la perfección en un piso por pequeño que sea, pero es que, en este caso, el bienestar y la salud de Joker nos exigen buscar el entorno en el que mejor se desenvuelve. ¿Qué opináis vosotrxs?
Recordamos que Joker tiene poco más de un añito y pesa poco más de 2 kg. Aunque siempre necesitará cuidados especiales, lleva una vida bastante normal y es un perrito exageradamente cariñoso, simpático, juguetón y divertido ?
Si crees que puedes ofrecer a Joker el hogar que necesita, no dudes en escribirnos.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

20 de Mayo de 2021
El pobre JOKER está tan acostumbrado a sus pastillitas que ya le encantan ?
Recordamos que JOKER padece hidrocefalia, posiblemente congénita; es una enfermedad que le acompañará toda la vida y para la que necesitará medicación y atención especializada por si tiene recaídas. Ahora mismo está muy estable y con sus medicinas lleva una vida totalmente normal. La única secuela que muestra es la de dar giros sobre sí mismo, que se acentúan cuando se estresa. Por eso le buscamos un hogar lo más tranquilo posible, en entorno alejado del bullicio de la ciudad y a ser posible con algo de terreno. Puede convivir con otros perros sin problemas; es muy sociable y juguetón con todos.
Es un yorki de un añito y medio y el perro más cariñoso, alegre y zalamero del mundo ?
Ojalá encontrar pronto un hogar donde pueda ser feliz, que bastante ha pasado ya ?
veroadopciones@hotmail.com
ireneadopciones@gmail.com

2 de Agosto de 2021
Joker sigue con nosotras por increíble que parezca. Es bien sabido que, si eres un yorki de poco más de un año y unos escasos 2 kg de peso y endiabladamente guapo, además, tienes la vida resuelta. Pero si eres todo eso y te acompaña una pesadísima mochila llamada hidrocefalia, la tienes bien, bien jodida.
Recibimos literalmente uno o dos correos diarios preguntando por Joker por parte de personas totalmente dispuestas a darle un hogar, pero cuando se les explica que Joker necesita medicación de por vida, controles veterinarios y llevar una vida lo más tranquila posible, todo el mundo huye despavorido.
Y no os imagináis la rabia que nos da. Porque Joker es un perro absolutamente maravilloso, muy cariñoso, alegre, juguetón, sociable y divertido, y hace vida totalmente normal. Porque es un amorcete que merece encontrar su lugar en el mundo, y no hay manera porque no conseguimos encontrar a una persona que quiera cargar con él el peso de su mochila y se la haga más llevadera. Porque pronto hará un año que está con nosotras y no, nos negamos a pensar que lo estará por siempre.
Lo intentamos una vez más. Joker está muy estable y lo que necesita es vivir, a ser posible, en un entorno tranquilo. Puede convivir con otros perros sin problemas, da igual tamaño y edad porque se lleva bien con todos. Lo que necesita es a alguien que pueda ofrecerle su medicación y sus controles y evitar todo el estrés posible en su vida. Lo que necesita es a alguien que le quiera, a él y a su mochila, y le acepte tal como es; con sus giros, su «locura» y sus inmensas ganas de vivir.
Está en Sevilla, pero podría viajar a otras provincias si se puede venir a recogerle.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

2 de Agosto de 2021
Una media de tres correos al día era lo que recibíamos por JOKER. Tres correos al día, durante un año entero, son muchos, muchos correos solicitando su adopción. Solicitudes que, tras explicar los cuidados que necesita Joker y las peculiaridades que tiene debido a su hidrocefalia, no seguían adelante. La mayoría la zanjaba con un «lo siento, no puedo»; otros muchos preferían el silencio sepulcral para dar a entender lo mismo. Una parte, pequeña pero muy, muy molesta, disparaba con total desvergüenza el doloroso «¿y no tenéis otro igual pero que esté bien?».
Os prometemos que esto es real. Tan real como que no, no existe otro igual porque Joker es ÚNICO, es ESPECIAL y por eso, y porque después de un año adaptando nuestra vida a sus necesidades y poniendo nuestro mundo patas arriba para que el suyo sea más fácil, ya no nos imaginamos la vida sin él.
Entendemos que no todo el mundo puede o tiene la capacidad para cuidar de un perrito con necesidades especiales, con medicación y revisiones de por vida y al que acompaña la incertidumbre de no saber si su enfermedad, algún día, pese más que su determinación y sus ganas de vivir. Lo entendemos de verdad. Lo que no entendemos, menos aún después de haber compartido con él un año entero y de haber creado el vínculo más bonito que hemos tenido la suerte de vivir, es que tengan la frialdad de seguir hablando de ellos como si fuesen muebles, que se puedan amoldar al color, tamaño o forma que convenga.
Como Joker no hay otro igual. Y todxs aquellxs que habéis rechazado su adopción porque buscabais simplemente un perrito de raza pequeña pero huisteis al saber que conllevaba más implicación de la que estáis dispuestxs a ofrecer a un animal que os necesita, no os imagináis lo que os habéis perdido.
Porque Joker se queda.

Se queda en la familia de Adopta Mestizos para siempre.

Nuestro loquito bailarín ya tiene familia y es la mejor ?

La entrada Joker se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/joker/feed/ 3
Persia ¡ADOPTADA! https://adoptamestizos.com/persia/ https://adoptamestizos.com/persia/#respond Sun, 25 Apr 2021 09:29:30 +0000 https://adoptamestizos.com/?p=69888 La entrada Persia ¡ADOPTADA! se publicó primero en Adoptamestizos.com.

]]>

8 de Diciembre de 2020

Con las miradas perdidas en el caos de quien no sabe qué será lo próximo que tendrá que afrontar. Incapaces de mirar a los ojos de quien sostiene el otro extremo de la correa porque no entienden, no imaginan, que esas manos sólo quieren ayudarles.

Con los huesos a flor de piel, las barrigas vacías de alimento y el corazón de sentimientos.
Con los cuerpos agarrotados, temblando, esperando recibir el siguiente golpe.
Así han llegado los cuatro galgos para los que pedíamos ayuda ayer.
Al final son tres hembras y un macho.
Están muy asustados y nos miran con ojitos que gritan «por favor, no me hagas daño», pero no será difícil ganarse de nuevo la confianza que les han quebrado. Todos, salvo la preciosidad negra y blanca a la que habrá que convencer con más cariño y atención, han dado sus primeros pasitos hacia el amor y parece que les está gustando.
La pequeña se llama PERSIA, tiene alrededor de un año y es una galguita diminuta. Directamente la hemos invitado a pasar unos días en casa porque su estado es realmente lamentable, con todas las papeletas para dar positivo a nuestra vieja amiga leishmaniosis y a la que, si finalmente está, vamos a echar por la fuerza.
La hembra atigrada se llama ONA, y las compañeras de Galgos del Sur le han abierto las puertas de su refugio para que pueda comenzar con ellas una nueva vida, lejos del maltrato de quien la abandonó y apoyando una labor que a nosotras solas nos hubiera costado la vida.
Los otros dos, un macho atigrado precioso e imponente y una hembra blanca y negra con un miedo que casi se puede palpar, de unos 2-3 años ambos, permanecerán en nuestra residencia de confianza hasta que consigamos casas de acogida para ellos. Todas las gracias del mundo a nuestro Sergio por atendernos cualquier día, y a cualquier hora, cuando de salvar una vida (o cuatro) se trata.
Aún no tienen nombre, y ese importante cometido de ofrecerles una identidad, lo vamos a dejar en vuestras manos ?
Pocas cosas en la vida nos duelen tanto como la mirada de un animal recién rescatado. También, son pocas las cosas que nos hacen más ilusión que ver el cambio que experimentan esas miradas cuando conocen el amor.
Bienvenidos a la vida ?
Si quieres ser casa de acogida, escríbenos:
veroadopciones@hotmail.com
ireneadopciones@gmail.com
Si quieres ayudar a sufragar sus gastos de residencia, analíticas y tratamientos, puedes hacerlo:
✔ Enviando un donativo por transferencia bancaria ? LA CAIXA: ES31 2100 6091 7902 0003 9666
Concepto: galgos
✔ Enviando un donativo por Bizum: 695815788
✔ PayPal: Adopta_Mestizos@hotmail.com
(importante indicar que es para familiares o amigos, si no, PayPal se queda con dinero)
✔ Uniéndote a nuestro grupo Teaming para ayudarnos a salvar vidas por un solo euro al mes ? https://www.teaming.net/adoptamestizos

8 de Diciembre de 2020
Lo primero que hizo al llegar a casa, fue quedarse paralizada frente a las escaleras de entrada. Para ella eran como un obstáculo que se creía incapaz de superar. Luego le dio miedo que de un cacharro del suelo saliera comida, pero era tal el hambre que tenía, que sacó valor suficiente para superarlo en cuestión de segundos. Le sorprendió también que el cacharrito de al lado tuviese agua. Metió el hocico y se lo empapó entero porque no se lo esperaba. Más tarde, inocente ella, intentó atravesar un espejo porque jamás habría esperado que pudiera existir una pared que reflejase lo que tenía detrás. Al final, tras dudar unos minutos, conoció el sofá y ahí se quedó toda la noche hasta que la invitamos a conocer su nueva cama, de la que todavía no se ha levantado mas que para hacer pis y caquita.
Y así es como una perrita que no ha pisado un hogar en su vida, se va acostumbrando a lo bueno poco a poco ?
Mañana vamos al veterinario con ella y toca cruzar dedos, patas y lo que se os ocurra para que lo que tenga sea sólo el susto, hambre y mala vida.
Buenas noches, PERSIA ?
Si quieres ser casa de acogida, escríbenos:
veroadopciones@hotmail.com
ireneadopciones@gmail.com

10 de Diciembre de 2020
Positiva a leishmaniosis y ahora, también, epiléptica.
El vídeo que grabamos anoche para sus veterinarias no lo vamos a subir porque no creemos necesario enseñar imágenes tan desgarradoras. Sufrió varios ataques en menos de tres horas…
Ahora toca esperar los resultados del laboratorio, decidir qué tratamiento seguirá y rezar para que lo que vivió anoche sea un episodio aislado y no otra enfermedad a la que enfrentarse.
Tiene unos dos años y pesa 12 kg.
Persia, ahora mismo, es tan frágil como cuentan sus ojos. Da cosita tocarla por si se rompe, pero vamos a luchar mucho para que a ellos llegue toda la fuerza que necesita para recuperarse. Ya se va dando cuenta de la maravillosa vida que la espera y no quiere perdérsela por nada del mundo.

12 de Diciembre de 2020
Todo listo para empezar nuestra lucha ?
El título de leishmania no es muy alto, los riñones están bien, tiene mucho apetito y por ahora no ha vuelto a sufrir más ataques epilépticos.
Tenemos anemia, las defensas por los suelos y una pododermatitis para la que ya está recibiendo sus curas. Dentro de lo malo, tenemos muchos puntos a nuestro favor y todas las esperanzas del mundo puestas en ella ?
PERSIA se va a poner bien y va a deleitarnos con la belleza más espectacular del mundo ?
Hoy comienza un camino difícil, lleno de medicinas, analíticas y visitas constantes al veterinario para que Persia pueda superar la enfermedad y disfrutar de la vida con la que hasta ahora solo ha podido soñar.

17 de Diciembre de 2020
PERSIA nos ha acompañado para una revisión exprés, y nos alegra decir que ha ganado UN KILAZO en apenas una semana que lleva con nosotras. Una muy buena señal de que el tratamiento está haciendo efecto. Mañana a las diez tenemos cita para hacerle un estudio más completo y buscar una posible causa a sus ataques epilépticos. Cabe la posibilidad de que sean de origen hepático, pero no se descarta que todo sea consecuencia de la maldita leishmania. Mañana sabremos más ?

8 de Febrero de 2021
Al final las que le provocaban las diarreas a doña PERSIA eran unas señoras giardias que claro, hay que tratar cuanto antes porque ya lo que le faltaba. No sabemos cuánto tiempo lleváis con nosotras, pero nuestra relación con las giardias se remonta a los albores de la humanidad o por ahí más o menos porque no hay manera de librarse de ellas. Porque no las podemos ver, si no las dábamos en adopción también ?
Ahora mismo vamos a ir a comprar sus pastillitas (Panacur), que deberá tomar durante 5 días y a ver si hay suerte y las desterramos a la primera ?
También deberá tomar durante algunos meses un piensito gastro, porque después de tantas semanas con diarrea tiene que tener el digestivo como si le hubiesen tirado bombas.
Piensito y pastillitas que claro, van a costar un riñón.

20 de Febrero de 2021
A falta de recibir los resultados de su última analítica, nos enorgullece anunciar que PERSIA ya está lista para ser adoptada ?
La leishmaniosis está muy controlada, no ha vuelto a tener ningún ataque y su aspecto es sano y fuerte. Ya casi, casi podemos cantar victoria y gritar bien fuerte que nuestra pequeña lo ha conseguido ?
Persia es una galguita de dos años, posiblemente menos.
Es de las galguitas más pequeñas que hemos acogido en la familia, con apenas 15 kg de peso. Un suspirito.
Su pelito es suave, sus ojos enormes y sus orejitas largas. Poco a poco va entendiendo que la vida puede ser bonita y ha descubierto los juegos, las carreras y lo guay que es robar comida cuando nadie te ve ?
De su carácter sólo podemos contaros maravillas, pues no ha dado un ruido desde que la tenemos.
Debido a sus dos apellidos, la adopción de Persia puede resultar difícil.
Es leishmaniósica y epiléptica. Lo que supone que tendrá que tomar medicación de por vida y llevar seguimiento veterinario varias veces al año.
Pero con lo buenísima que es, y después de todo lo que ha luchado, lo mínimo que esperamos es encontrar una familia que la merezca.
Está en Córdoba, pero puede viajar a donde sea necesario.
veroadopciones@hotmail.com
ireneadopciones@gmail.com

25 de Abril de 2021
Para ser sinceras, pensábamos que PERSIA se iba a convertir en una invisible y pasaría mucho tiempo con nosotras. Quienes habéis seguido su caso sabéis que, aunque nuestra niña es muy fuerte y ha superado como una campeona todos los baches que le ha puesto la vida, va a necesitar cuidados especiales para siempre. Por muy guapa, guapísima, y buena (la más buena del mundo) que sea, pocas personas están dispuestas a asumir la responsabilidad que conlleva el cuidado de una perrita con leishmania y, además, epiléptica. Una epilepsia que todavía no se ha llegado a controlar del todo y para la que sigue necesitando atenciones e ir barajando opciones para mejorar su calidad de vida. Os aseguramos que esas personas son muy, muy pocas. Y, aunque sabíamos que nuestra pequeña encontraría algún día a esa persona especial a quien no le importara poner su mundo patas arriba para traer esperanza al suyo, no imaginábamos que sería tan pronto.
Elena ha llegado en un momento en el que necesitábamos de verdad sentir que había esperanza para nuestra Persia, y que existía alguien que realmente estuviera dispuesta a enlazar su vida con la suya para ofrecerle los cuidados que necesita.
Elena llegó con las cosas muy claras, sabiendo a lo que se enfrentaba; con miedos, como es normal, pero totalmente dispuesta a asumirlos y superarlos junto a Persia. Sabiendo, también, que Persia todavía no está totalmente estable y que recaería sobre ella la responsabilidad de seguir ayudándola como nosotras hemos intentando hacerlo mientras ha estado bajo nuestro amparo.
Todavía no nos lo podemos creer…
La semana pasada vino a Córdoba a recoger a la pequeña y, desde entonces, se enfrentan juntas a una nueva aventura. Sabemos que no será fácil, que ambas tendrán que adaptarse a una vida nueva y que deberán seguir superando muchos baches porque con Persia cada día es una tómbola donde te puede tocar el mejor, o el peor. Pero las ganas que Elena le pone a todo lo que hace, el cariño con el que nos cuenta cada vivencia y la templanza que nos ha mostrado ante situaciones complicadas, nos han transmitido la confianza que necesitamos para apostar por ella y dejar en sus maravillosas manos a una de nuestras niñas más queridas y especiales.
No todo el mundo tiene el corazón tan grande y tantísimas ganas de ayudar a un animal necesitado como para adoptar, con todas las consecuencias, a un animal como Persia, por el que ya, de entrada, sabes que tendrás que asumir momentos duros, desembolsos de dinero, visitas rutinarias al veterinario y adaptar tu vida a la suya. Por eso no podemos estarle más agradecidas ni admirarla más. Ay, si el mundo estuviera lleno de Elenas… ?
Pero, si os decimos la verdad, también Persia lo pone todo muy fácil. Es tan buena y tan única que sabe compensar con creces todo lo que haya que hacer por ella. Es que no podemos quererla más…
Sólo queda dar las más inmensas gracias a Elena, una vez, y otra, y todas las que hagan falta porque en la vida hubiéramos esperado encontrar a una persona como ella, y hacerle saber que vamos a estar ahí, ahora y siempre, para apoyarlas a las dos cuando lo necesiten. También a vosotrxs, a todas y cada una de las personas que habéis formado parte de la vida de Persia y nos habéis ayudado a sacarla adelante aún teniéndolo todo en contra.
Sólo queda esperar que todo vaya bien y que Elena y Persia puedan disfrutar de una larga y maravillosa vida juntas.
Sólo queda esperar que seas feliz de una vez por todas, pequeña luchadora. Te queremos ?
PERSIA, adoptada en Cádiz.

La entrada Persia ¡ADOPTADA! se publicó primero en Adoptamestizos.com.

]]>
https://adoptamestizos.com/persia/feed/ 0