{"product_id":"goldensun-cat-toy-2-in-1-interactive-cat-toys-for-indoor-cats-automatic-cat-toy-8-holes-mice-whack-a-mole-moving-feather-usb-rechargeable-electronic-kitten-toys-for-all-breeds-black","title":"GoldenSun Cat Toy, 2-in-1 Interactive Cat Toys for Indoor Cats, Automatic Cat Toy, 8 Holes Mice Whack A Mole Moving Feather, USB Rechargeable Electronic Kitten Toys for All Breeds Black","description":"\u003cdiv\u003e\n\u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\u003e\n\u003cscript type=\"application\/javascript\"\u003e\/\/ \u003c![CDATA[\n    \/**\n     * Common event handler for click and keydown events.\n     * @param {Event} event - The event object.\n     * @param {Function} handleClickOrEnter - Function to handle click or Enter key events.\n     * @param {Function} handleEsc - Function to handle Esc key events.\n     *\/\n    \/\/ [TODO][AplusMantle-8064] Create common event handler util(key events, click events) in AplusModuleResources\n    function handleClickAndKeyEvents(event, handleClickOrEnterOrSpace) {\n        const ENTER_KEY_CODE = 13;\n        const ESCAPE_KEY_CODE = 27;\n        const SPACE_KEY_CODE = 32;\n        const isClick = event.type === 'click';\n        const isKeydown = event.type === 'keydown';\n        const isEnter = isKeydown \u0026\u0026 event.keyCode === ENTER_KEY_CODE;\n        const isSpace = isKeydown \u0026\u0026 event.keyCode === SPACE_KEY_CODE;\n        const isEsc = isKeydown \u0026\u0026 event.keyCode === ESCAPE_KEY_CODE;\n\n        if (isClick || isEnter || isSpace) {\n            handleClickOrEnterOrSpace();\n        } else if (isEsc) {\n            handleEsc(event);\n        }\n    }\n\n    \/**\n    * Function to handle esc key event.\n    * @param {Event} event - The event object.\n    *\/\n    function handleEsc(event) {\n        event.target.blur()  \/\/ force remove focus\n    }\n\/\/ ]]\u003e\u003c\/script\u003e\u003cscript type=\"text\/javascript\"\u003e\/\/ \u003c![CDATA[\n(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-5-comparison-table-scroller').execute(function(init){\n    if (init) {\n        return;\n    }\n    P.register('premium-module-5-comparison-table-scroller', function(){\n        return function() {\n            P.when('jQuery', 'a-popover', 'A', 'ready').execute(function($, popover, A) {\n                function initCompTable(module) {\n                    \/**\n                    * Premium comparison table: popover trigger module\n                    *\/\n                    var comparisonName = $(module).data('comparison-name');\n                    (function() {\n                        var $additionalInfo = $('.aplus-v2 .aplus-popover-trigger');\n                        $additionalInfo.each(function(i, trigger) {\n                            return popover.create(trigger, $(trigger).data());\n                        });\n                        $additionalInfo.hover(\n                            function() {\n                                $(this).focus();\n                            }\n                        );\n                    })();\n                    \/**\n                    * Premium comparison table: adjust column width module\n                    *\/\n                    (function() {\n                        var VISIBLE_COLUMNS = 4.2;  \/* How many visible columns on load *\/\n                        var MIN_WIDTH = 230;\n                        var getWidth = function() {\n                            return $(this).outerWidth();\n                        }\n                        \/* cache selectors *\/\n                        var\n                            $container = $('.aplus-v2 .comparison-table #'+comparisonName),\n                            $header = $('.aplus-v2 .comparison-table #'+comparisonName+' td.attribute'),\n                            $slider = $('.aplus-v2 .comparison-table #'+comparisonName+' .table-slider'),\n                            $columns = $('.aplus-v2 .comparison-table #'+comparisonName+' .aplus-data-column'),\n                            $activeColumn = $('.aplus-v2 .comparison-table #'+comparisonName+' .aplus-data-column.active.active-item');\n\n                        \/* Formula for determining desired column width *\/\n\n                        var calculatedColumnWidth = Math.floor(\n                            ($container.innerWidth() - $header.innerWidth()) \/ VISIBLE_COLUMNS\n                        );\n\n                        var childWidths = $activeColumn.map(getWidth).get();\n                        var maxChildWidth = Math.max(MIN_WIDTH, Math.max.apply(Math, childWidths));\n                        var minColumnWidth = $columns.innerWidth();\n\n                        \/* set the min-width of each column to the calulated width or minWidth *\/\n                        $columns.css(\n                            'min-width',\n                            Math.max(MIN_WIDTH, (calculatedColumnWidth \u003c minColumnWidth\n                                ? calculatedColumnWidth\n                                : minColumnWidth))\n                        );\n                        $activeColumn.css('width', maxChildWidth);\n\n                        \/* show the component *\/\n                        $container.removeClass('loading');\n                    })();\n\n                    \/**\n                     * Premium comparison table: sticky attribute \u0026 column\n                     *\/\n\n                    (function() {\n                        \/* cache selectors *\/\n                        const comparisonTable = document.querySelector('.aplus-v2 .comparison-table #'+comparisonName);\n                        const header = comparisonTable.querySelector('td.attribute');\n                        const fixedColumn = comparisonTable.querySelector('td.active');\n\n                        const attributeColumnObserver = new ResizeObserver((entries) =\u003e {\n                            for (let entry of entries) {\n                                const bounds = entry.target.getBoundingClientRect().width;\n                                const activeCellWidth = window.getComputedStyle(fixedColumn).left;\n                                if (bounds + \"px\" !== activeCellWidth) {\n                                    const activeCells = document.querySelectorAll('.aplus-data-column.active');\n                                    activeCells.forEach(cell =\u003e cell.style.left = bounds + \"px\");\n\n                                }\n                            }\n\n                        })\n\n                        attributeColumnObserver.observe(header)\n                    })();\n\n                    \/**\n                    * Premium comparison table: top scroll bar\n                    *\/\n                    (function() {\n                        \/* cache selectors *\/\n                        var\n                            $header = $('.aplus-v2 .comparison-table #'+comparisonName+' td.attribute'),\n                            $fixedColumn = $('.aplus-v2 .comparison-table #'+comparisonName+' td.active'),\n                            $scrollWrapperTop = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-wrapper-top'),\n                            $scrollWrapperBottom = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-wrapper-bottom'),\n                            $scrollWidth = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-width'),\n                            $scrollBar = $('.aplus-v2 .comparison-table #'+comparisonName+' .scroll-bar');\n                        \/* confirm fixed column exists and can add width to the total width of the scroll bar *\/\n                        var fixedColumnWidth = $fixedColumn.innerWidth();\n                        if ( fixedColumnWidth === null ) {\n                            fixedColumnWidth = 0;\n                        }\n                        \/* set width of scrollBar *\/\n                        $scrollBar.css('width', $scrollWidth.innerWidth() + fixedColumnWidth + $header.innerWidth());\n                        \/* connect scrolls together *\/\n                        $scrollWrapperTop.scroll(function() {\n                            $scrollWrapperBottom.scrollLeft($scrollWrapperTop.scrollLeft());\n                        });\n                        $scrollWrapperBottom.scroll(function() {\n                            $scrollWrapperTop.scrollLeft($scrollWrapperBottom.scrollLeft());\n                        });\n                    })();\n                }\n\n                $('.aplus-v2 .premium-aplus-module-5 .table-container').each(function(index, module) {\n                    initCompTable(module);\n                });\n            });\n        }\n    });\n});\n}));\n\/\/ ]]\u003e\u003c\/script\u003e\u003cscript type=\"text\/javascript\"\u003e\/\/ \u003c![CDATA[\n(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-11-faq').execute(function(init) {\n    if (init) {\n        return;\n    }\n    P.register('premium-module-11-faq', function() {\n        return function() {\n            P.when('A', 'jQuery', 'ready').execute(function(A, $){\n                function initFaq(module) {                   \n                    const MODULE_CLASS_NAME = 'premium-aplus-module-11';\n                    const FAQ_CONTAINER_CLASS_NAME = 'faqs-container';\n                    const FAQ_BLOCK_CLASS_NAME = 'faq-block';\n                    const moduleId = $(module).data('faq-block');\n                    const $faqBlocks = $('.aplus-v2 .' + MODULE_CLASS_NAME + ' .' + FAQ_CONTAINER_CLASS_NAME + '.' + moduleId + ' .' + FAQ_BLOCK_CLASS_NAME);\n\n                    \/**\n                    * Function to handle click or Enter or Space key events.\n                    * @param {Element} element - The this object from which the event is dispatched\n                    * @param {faqBlocks} faqBlocks - List of all the Question and Answer blocks.\n                    *\/\n                    function handleClickOrEnterOrSpace(element, faqBlocks) {\n                        const $element = $(element);\n                        const isActive = $element.hasClass('aplus-active');\n\n                        faqBlocks.removeClass('aplus-active');\n                        faqBlocks.find('[data-faq-question]').attr('aria-expanded', 'false');\n\n                        if (!isActive) {\n                            $element.addClass('aplus-active');\n                            $element.find('[data-faq-question]').attr('aria-expanded', 'true');\n                        }\n                    }\n\n                    \/* Using jQuery event namespace for preventing duplicate binding on twister refresh *\/\n                    $faqBlocks.unbind('click keydown.premiumAplusModule11ClickHandler').bind('click keydown.premiumAplusModule11ClickHandler', function(event) {\n                        handleClickAndKeyEvents(event, () =\u003e handleClickOrEnterOrSpace(this, $faqBlocks)); \n                    });\n                }\n                $(\".aplus-v2 .premium-aplus-module-11 .faqs-container\").each(function(index, module) {\n                    initFaq(module);\n                });\n            });\n        };\n    });\n});\n}));\n\/\/ ]]\u003e\u003c\/script\u003e\u003cscript type=\"text\/javascript\"\u003e\/\/ \u003c![CDATA[\n(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-12-nav-carousel').execute(function(init) {\n    if (init) {\n        return;\n    }\n    P.register('premium-module-12-nav-carousel', function(){\n        return function() {\n            P.when('A', 'jQuery', 'a-carousel-framework', 'ready').execute(function (A, $, framework) {\n                function initiateCarousel(module) {\n                    var MODULE_ID = $(module).data('module-id');\n                    \/**\n                    * Carousel button element classname\n                    * @const\n                    *\/\n                    var GOTO_BTN_CLASS_NAME = \"aplus-goto-btn-\" + MODULE_ID;\n                    \/**\n                    * Carousel button element active classname\n                    * @const\n                    *\/\n                    var GOTO_BTN_ACTIVE_CLASS_NAME = \"aplus-active\";\n                    \/**\n                    * AUI name for aui carousel\n                    * @const\n                    *\/\n                    var CAROUSEL_NAME = \"premium-aplus-12-carousel-\" + MODULE_ID;\n                    \/**\n                    * Module class name\n                    * @const\n                    *\/\n                    var MODULE_CLASS_NAME = \".aplus-v2 .premium-aplus-module-12\";\n                    \/**\n                    * Carousel text container class name\n                    * @const\n                    *\/\n                    var TEXT_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-carousel-text-container-\" + MODULE_ID;\n                    \/**\n                    * Carousel text hidden class name\n                    * @const\n                    *\/\n                    var TEXT_CONTAINER_HIDDEN = \"aplus-hidden\";\n                    \/**\n                    * Carousel horizontal scroll container class name\n                    * @const\n                    *\/\n                    var HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-horizontal-scroll-container-\" + MODULE_ID;\n\n                    function showCarouselText(oldIndex, newIndex) {\n                        var oldClass = TEXT_CONTAINER_CLASS_NAME + \"-\" + oldIndex;\n                        var newClass= TEXT_CONTAINER_CLASS_NAME + \"-\" + newIndex;\n                        $(oldClass).addClass(TEXT_CONTAINER_HIDDEN);\n                        $(newClass).removeClass(TEXT_CONTAINER_HIDDEN);\n                    }\n\n                    function scrollToCarouselButton(scrollLeft) {\n                        if ($(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).length) {\n                            $(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).animate({scrollLeft}, 200);\n                        }\n                    }\n\n                    \/**\n                    * Creates a CarouselButton class for provided carousel instance\n                    * @param {object} carousel - AUI Carousel instance\n                    * @returns {Class} - CarouselButton Class\n                    *\/\n                    function CarouselButtonTemplate(carousel) {\n                        \/**\n                        * Button for controlling the active slide\n                        * @constructor\n                        * @param {number} index - slide index\n                        * @param {DOMElement} [elem] - optional DOM element to use as this objects DOM representation\n                        *\/\n                        function CarouselButton(index, elem) {\n                            var self = this;\n                            this.index = index;\n                            this.carousel = carousel;\n\n                            \/* create the button element *\/\n                            this.elem = this.getElem(elem);\n                            this.$elem = $(this.elem);  \/* store jquery version *\/\n                            this.elem.addEventListener('click', self.handleClick.bind(self));\n                            this.elem.setAttribute('role', 'tab');\n\n                            \/* add this object to the object manager *\/\n                            CarouselButton.objects.byId[index] = this;\n                            CarouselButton.objects.all.push(this);\n                        }\n\n                        \/**\n                        * Describe behavior for click events on this.elem\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.handleClick = function(e) {\n                            e.preventDefault();\n                            this.carousel.gotoPage(this.index);\n                        };\n\n                        \/**\n                        * Enter active state\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.activate = function() {\n                            this.$elem.addClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'true');\n                        };\n\n                        \/**\n                        * Enter inactive state\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.deactivate = function() {\n                            this.$elem.removeClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'false');\n                        };\n\n                        \/**\n                        * Returns an existing or creates a new bound element for this object\n                        * @memberOf CarouselButton\n                        * @param {DOMElement} [elem] - optionally provide an existing element in the DOM to use\n                        * @returns {DOMElement} - this objects DOM representation\n                        *\/\n                        CarouselButton.prototype.getElem = function(elem) {\n                            if (this.elem) return this.elem;\n                            if (elem) return elem;\n\n                            var createdElem = document.createElement('span');\n                            createdElem.className = GOTO_BTN_CLASS_NAME;\n\n                            return createdElem;\n                        };\n\n                        \/** @const Object manager *\/\n                        CarouselButton.objects = {\n                            byId: {},\n                            all: [],\n                        };\n\n                        return CarouselButton;\n                    }\n\n                    framework.onInit(CAROUSEL_NAME, function(carousel) {\n                        \/** @const {Class} *\/\n                        var CarouselButton = CarouselButtonTemplate(carousel);\n\n                        \/* create carousel controls *\/\n                        var $carouselBtns = $(safeClassSelector(GOTO_BTN_CLASS_NAME));\n                        var btns = $carouselBtns.map(function(i, btnElem) {\n                            return new CarouselButton(i + 1, btnElem);\n                        });\n\n                        \/* activate first one *\/\n                        CarouselButton.objects.byId[1].activate();\n\n                        \/* Listen to slide changes *\/\n                        A.on(\"a:carousel:\" + CAROUSEL_NAME + \":change:pageNumber\", function (data) {\n                            var newCarouselButton = CarouselButton.objects.byId[data.newValue];\n                            var marginLeft = parseInt(getComputedStyle(newCarouselButton.elem).getPropertyValue('margin-left'));\n                            var positionLeft = newCarouselButton.elem.offsetLeft - marginLeft;\n\n                            newCarouselButton.activate();\n                            CarouselButton.objects.byId[data.oldValue].deactivate();\n                            scrollToCarouselButton(positionLeft);\n                            showCarouselText(data.oldValue, data.newValue);\n                        });\n                    });\n\n                    \/**\n                    * @returns {string} - css classname prefixed with module selector\n                    *\/\n                    function safeClassSelector(className) {\n                        return '.' + MODULE_CLASS_NAME + ' .' + className;\n                    }\n                }\n\n                $('.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container').each(function (index, module) {\n                    initiateCarousel(module);\n                });\n                framework.createAll();\n                framework.initializeAll();\n            });\n        }\n    })\n});\n}));\n\/\/ ]]\u003e\u003c\/script\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-8-hero-video aplus-premium\" cel_widget_id=\"aplus-premium-module-8-hero-video\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-8\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus-module-8-video\"\u003e\n\u003cdiv class=\"a-section a-spacing-none video-placeholder\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none video-container\"\u003e\n\u003cdiv id=\"1157423c-abae-4b93-9e77-7f4a686f9012\" style=\"width: 100%; height: 100%;\"\u003e\n\u003cdiv data-csa-c-component=\"aplus-vse-video-widget\" data-csa-c-content-id=\"amzn1.vse.video.13fd19f5cca34adea2e79013d248b43c\" data-csa-c-cs-type=\"vse\" data-csa-c-painter=\"vse-player\" data-csa-c-type=\"widget\" class=\"a-section vse-player-container\"\u003e\n\u003cscript type=\"a-state\" data-a-state='{\"key\":\"aplus-464125-player-86c0508f-2a79-4f69-94cb-3ad151c06a61-player-ps\"}'\u003e\/\/ \u003c![CDATA[\n{\"enableFullScreenByDefault\":false,\"clickstreamNexusMetricsConfig\":{\"actionType\":\"DISCOVERY\",\"producerId\":\"vsemetrics_playercards\",\"eventType\":\"IVEVideoView\",\"productId\":\"B0CGZBHYG6\",\"eventOwner\":\"vsemetrics_playercards\",\"schemaId\":\"clickstream.CustomerEvent.4\"},\"videoReferenceId\":\"sc|db7e63db-4acc-45f0-9774-6ebd54885661|A1F83G8C2ARO7P|A1F3E1ZQHYYV3\",\"contentId\":\"B0CGZBHYG6\",\"ccvDisclosure\":\"\",\"closedCaptionsConfig\":{\"captionsOnTexts\":{\"en\":\"English (Automated)\"},\"captionsOffText\":\"Captions off\",\"languageToLabelTexts\":{\"English\":\"English\"}},\"mimeType\":\"application\/x-mpegURL\",\"vendorCode\":\"APLUSSC\",\"videoHeight\":480,\"videoWidth\":854,\"initialClosedCaptions\":\"en,https:\/\/m.media-amazon.com\/images\/S\/vse-vms-closed-captions-artifact-eu-west-1-prod\/closedCaptions\/6d33b718-1d2b-4aeb-9986-5a19bf39962f.vtt\",\"videoUrl\":\"https:\/\/m.media-amazon.com\/images\/S\/vse-vms-transcoding-artifact-eu-west-1-prod\/9d9adf22-afe7-478e-ae5f-b456e80b14e4\/default.jobtemplate.hls.m3u8\",\"metricsEmissionMethod\":\"nexus\",\"imageUrl\":\"https:\/\/m.media-amazon.com\/images\/I\/91ysPL8zTHL.jpg\",\"needPlayerFactory\":false,\"isMobile\":false,\"showHotspots\":false,\"aciContentId\":\"amzn1.vse.video.13fd19f5cca34adea2e79013d248b43c\",\"altText\":\"hero-video\",\"creatorType\":\"Seller\",\"clientPrefix\":\"aplus-464125\",\"productAsin\":\"B0CGZBHYG6\",\"labelDetails\":{\"labelWeblabTreatment\":\"\",\"labelWeblabName\":\"\",\"labelType\":\"\",\"tooltipSelector\":\"\",\"labelName\":\"\",\"showLabel\":false},\"sushiMetricsConfig\":{\"isRobot\":false,\"clientId\":\"VSE-GB\",\"videoAsinList\":\"\",\"weblabIds\":\"\",\"eventSource\":\"Player\",\"sessionId\":\"258-5852574-7536918\",\"refMarkers\":\"aplus-464125_ref\",\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"marketplaceId\":\"A1F83G8C2ARO7P\",\"isInternal\":false,\"endpoint\":\"https:\/\/unagi-eu.amazon.com\/1\/events\/com.amazon.eel.vse.metrics.prod.events.test\",\"requestId\":\"M119TKJN79KWNND6DMJ1\",\"pageAsin\":\"B0CGZBHYG6\",\"customerId\":\"0\",\"sessionType\":1},\"videoTitle\":\"hero-video\",\"vendorName\":\"Merchant video\",\"nexusMetricsConfig\":{\"isInternal\":false,\"widgetMetricsSchemaId\":\"vse.VSECardsEvents.9\",\"clientId\":\"VSE-GB\",\"videoAsinList\":\"\",\"weblabIds\":\"\",\"pageAsin\":\"B0CGZBHYG6\",\"eventSource\":\"Player\",\"videoAsin\":\"13fd19f5cca34adea2e79013d248b43c\",\"producerId\":\"vsemetrics_playercards\",\"refMarkers\":\"aplus-464125_ref\",\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"playerTSMMetricsSchemaId\":\"vse.VSECardsPlayerEvents.9\"},\"awaConfig\":{\"useUpNextComponent\":false,\"clickstreamNexusMetricsConfig\":{\"actionType\":\"DISCOVERY\",\"producerId\":\"vsemetrics_playercards\",\"eventType\":\"IVEVideoView\",\"productId\":\"B0CGZBHYG6\",\"eventOwner\":\"vsemetrics_playercards\",\"schemaId\":\"clickstream.CustomerEvent.4\"},\"initialVideo\":\"13fd19f5cca34adea2e79013d248b43c\",\"shouldPreload\":true,\"enableClickBasedAttribution\":false,\"isChromelessPlayer\":false,\"closedCaptionsConfig\":{\"captionsOnTexts\":{\"en\":\"English (Automated)\"},\"captionsOffText\":\"Captions off\",\"languageToLabelTexts\":{\"English\":\"English\"}},\"enableDynamicBlur\":false,\"showPlayerPlayButton\":false,\"isVideoImmersivePlayer\":false,\"metricsEmissionMethod\":\"nexus\",\"skipInitialFocus\":false,\"playerSkin\":\"none\",\"disabledViewIds\":[\"replayHint\"],\"includeEarnsComissionDisclosure\":false,\"customerId\":\"0\",\"containerId\":\"aplus-464125-player-86c0508f-2a79-4f69-94cb-3ad151c06a61\",\"allowCrossOrigin\":false,\"requestMetadata\":{\"marketplaceId\":\"A1F83G8C2ARO7P\",\"clientId\":\"VSE-GB\",\"sessionId\":\"258-5852574-7536918\",\"method\":\"desktop_web.AplusWidget.aplusdp\",\"requestId\":\"M119TKJN79KWNND6DMJ1\",\"pageAsin\":\"\"},\"shouldLoop\":false,\"shouldDisableControls\":false,\"alwaysSetInitialVideo\":true,\"showPlayerCloseButton\":false,\"clientPrefix\":\"aplus-464125\",\"useAutoplayFallback\":false,\"sushiMetricsConfig\":{\"isRobot\":false,\"clientId\":\"VSE-GB\",\"videoAsinList\":\"\",\"weblabIds\":\"\",\"eventSource\":\"Player\",\"sessionId\":\"258-5852574-7536918\",\"refMarkers\":\"aplus-464125_ref\",\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"marketplaceId\":\"A1F83G8C2ARO7P\",\"isInternal\":false,\"endpoint\":\"https:\/\/unagi-eu.amazon.com\/1\/events\/com.amazon.eel.vse.metrics.prod.events.test\",\"requestId\":\"M119TKJN79KWNND6DMJ1\",\"pageAsin\":\"B0CGZBHYG6\",\"customerId\":\"0\",\"sessionType\":1},\"ospLinkCode\":\"vse\",\"showPosterImage\":true,\"languageCode\":\"en\",\"languageLocalization\":{\"play\":\"Play\",\"volumeLevel\":\"Volume Level\",\"subtitles\":\"Subtitles\",\"volumeSlider\":\"Volume Slider\",\"playVideo\":\"Click to play video\",\"fullscreen\":\"Fullscreen\",\"scrubberBar\":\"Scrubber bar\",\"mute\":\"Mute\",\"unmute\":\"Unmute\",\"pause\":\"Pause\",\"captions\":\"Captions\",\"nonfullscreen\":\"Non-Fullscreen\"},\"version\":\"\",\"isMoreVideosButtonEnabled\":false,\"nexusMetricsConfig\":{\"isInternal\":false,\"widgetMetricsSchemaId\":\"vse.VSECardsEvents.9\",\"clientId\":\"VSE-GB\",\"videoAsinList\":\"\",\"weblabIds\":\"\",\"pageAsin\":\"B0CGZBHYG6\",\"eventSource\":\"Player\",\"videoAsin\":\"13fd19f5cca34adea2e79013d248b43c\",\"producerId\":\"vsemetrics_playercards\",\"refMarkers\":\"aplus-464125_ref\",\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"playerTSMMetricsSchemaId\":\"vse.VSECardsPlayerEvents.9\"},\"shouldStartMuted\":false,\"airyVersion\":\"VideoJS\",\"languagePreferenceStrings\":{},\"enableInactiveFocus\":true,\"isReactFactory\":false,\"osaInstrumentationConfig\":{\"schemaId\":\"csa.VideoInteractions.2\",\"producerId\":\"vsemetrics_csa_instrumentation\"},\"enableDelphiAttribution\":false,\"includeReportWidget\":false,\"shouldAutoplay\":false}}\n\/\/ ]]\u003e\u003c\/script\u003e\n\u003cdiv class=\"vse-airy-container vse-player-container none \"\u003e\n\u003cdiv id=\"ive-aplus-464125-player-label-container\" data-element-id=\"ive-player-label-container\" class=\"a-section a-spacing-none ive-player-label-container\"\u003e\n\u003cspan class=\"a-declarative\" data-action=\"a-popover\" data-a-popover='{\"name\":\"ive-aplus-464125-label-type-tooltip\",\"width\":\"300\",\"position\":\"triggerRight\",\"dataStrategy\":\"preload\"}'\u003e\u003ca role=\"button\" class=\"a-popover-trigger a-declarative ive-player-label-name aok-hidden\"\u003e\u003ci class=\"a-icon a-icon-popover\"\u003e\u003c\/i\u003e\u003c\/a\u003e\u003c\/span\u003e\n\u003cdiv class=\"a-popover-preload\" id=\"a-popover-ive-aplus-464125-label-type-tooltip\"\u003e\n\u003cspan class=\"ive-demo-label-tooltip ive-player-label-tooltip aok-hidden\"\u003e\u003c\/span\u003e\u003cimg alt=\"2in1 cat toy\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/6e286a46-e86e-4be7-b8f6-eb0ffc852757.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-12-nav-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-12-nav-carousel\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-12 premium-aplus-module-12--top-nav\"\u003e\n\u003cdiv data-module-id=\"2\" class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n\u003cdiv id=\"premium-aplus-12-carousel-2-id\" data-a-carousel-options='{\"name\":\"premium-aplus-12-carousel-2\",\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"group\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular aplus-image-carousel-container\"\u003e\n\u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n\u003cdiv class=\"a-carousel-viewport\" role=\"group\" aria-roledescription=\"slide\"\u003e\n\u003col class=\"a-carousel\" role=\"list\"\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"5\"\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"5\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"kitten toy\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/8b6adaae-4905-4e57-8c38-25124d7a0cd0.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"5\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"Cat Toys for Indoor Cats\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/9b7a5e3e-36ce-4721-9851-1d48623f5328.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-12-regimen-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-12-regimen-carousel\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-12\"\u003e\n\u003cdiv data-module-id=\"4\" class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n\u003cdiv id=\"premium-aplus-12-carousel-4-id\" data-a-carousel-options='{\"name\":\"premium-aplus-12-carousel-4\",\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"group\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular aplus-image-carousel-container\"\u003e\n\u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n\u003cdiv class=\"a-carousel-viewport\" role=\"group\" aria-roledescription=\"slide\"\u003e\n\u003col class=\"a-carousel\" role=\"list\"\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"3\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"cat toys\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e18519ba-9b98-4bae-bb80-7155acb611eb.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"3\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"interactive cat toys\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/d677d752-26cb-4e93-9502-37f0847f2a87.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"3\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"cat toy\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/bf76f372-793e-4597-bf47-e6761e7fa20d.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-11-faq aplus-premium\" cel_widget_id=\"aplus-premium-module-11-faq\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-11\"\u003e\n\u003cdiv data-faq-block=\"5\" class=\"a-section a-spacing-none aplus-container-2 faqs-container 5\"\u003e\n\u003cul class=\"faq-list\"\u003e\n\u003cli id=\"faq-qa-pair-0\" class=\"faq-block\"\u003e\n\u003cp class=\"aplus-question aplus-p1\"\u003eIs this toy’s light harmful to cats’ eyes?\u003c\/p\u003e\n\u003cp class=\"aplus-answer aplus-p2\"\u003eThis cat toy has passed the top level of light certification and will not cause harm to cats or your eyes.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli id=\"faq-qa-pair-1\" class=\"faq-block\"\u003e\n\u003cp class=\"aplus-question aplus-p1\"\u003eAre cats attracted to this toy?\u003c\/p\u003e\n\u003cp class=\"aplus-answer aplus-p2\"\u003eThis cat toy features 2 of your cat’s favorite light patterns. There’s also a whack-a-mole feature that cats love. It is one of cats’ favorite toys.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli id=\"faq-qa-pair-2\" class=\"faq-block\"\u003e\n\u003cp class=\"aplus-question aplus-p1\"\u003eHow long does it take to charge this cat light toy?\u003c\/p\u003e\n\u003cp class=\"aplus-answer aplus-p2\"\u003eThis cat toy supports Type-C fast charging and only takes 2 hours to fully charge.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli id=\"faq-qa-pair-3\" class=\"faq-block\"\u003e\n\u003cp class=\"aplus-question aplus-p1\"\u003eHow long the cat wand toy will be lasting once charging?\u003c\/p\u003e\n\u003cp class=\"aplus-answer aplus-p2\"\u003eHi, GoldenSun cat light toy can play about 3-4days.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli id=\"faq-qa-pair-4\" class=\"faq-block\"\u003e\n\u003cp class=\"aplus-question aplus-p1\"\u003eIf the multi-functional interactive cat toy stop working, how can I get the SUPPORT?\u003c\/p\u003e\n\u003cp class=\"aplus-answer aplus-p2\"\u003eHi, Please go to Your Orders and Find your order in the list, then Select Problem with order, Choose your topic from list displayed, Select Contact-us\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-5-comparison-table-scroller aplus-premium\" cel_widget_id=\"aplus-premium-module-5-comparison-table-scroller\"\u003e\n\u003cdiv class=\"premium-aplus premium-aplus-module-5 aplus-container-3 comparison-table\"\u003e\n\u003cdiv id=\"comparison-table-container-6\" data-comparison-name=\"comparison-table-container-6\" class=\"a-section a-spacing-none table-container loading\"\u003e\n\u003cdiv class=\"table-slider scroll-wrapper-bottom\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript type=\"text\/javascript\"\u003e\/\/ \u003c![CDATA[\n(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when('premium-module-5-comparison-table-scroller', 'ready').execute(function(init){ init() });\n}));\n\/\/ ]]\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv id=\"feature-bullets\" class=\"a-section a-spacing-medium a-spacing-top-small\"\u003e\n\u003cul class=\"a-unordered-list a-vertical a-spacing-mini\"\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e 😺【2-In-1 Automatic Cat Toys】Unique dot and star double patterns, combined with automatic 360°random trajectory of Fast, Medium and Slow light, unpredictable movement stimulates cats to chase and play. Feathers shoot out randomly from 8 holes, encouraging your cat to pounce and flap. Perfectly match various scenarios, no need to worry about indoor cat hit anything that might fall or break. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e 😺【Sturdy and Smooth ABS Material】 The automatic cat toy is made of ABS material. The ball track is smooth and thick ensuring the safety of cats' paws. The toy surface is designed with no holes so cats' claws will not get stuck. Entertaining while keeping cats safe. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e 😺【Smart Indoor Cat Toy】 GoldenSun intelligent Interactive kitten toy features voice and touch control which can automatically run for 10 minutes every 3 hours, during which time the cat toy will also automatically activate when the toy detects your kitten or pet's touch or voice, allowing indoor cat to play alone. Not only that, the whack a mole cat toy also has a night mode, the toy will automatically turn off at night to make sure you families have a good sleeping. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e 🐱【Long Standby Power Supplies】 2-In-1 cat toy has a large-capacity power. Usually, it can be on standby for 3-4 days. The hide and seek cat toy is also equipped with Type-C fast charging, which can fully charge the power in only 2 hours. Rechargeable power protect environment. \u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e 🐱【Why GoldenSun】GoldenSun has devoted to pet research for over 30 years. GoldenSun provides 18 months after-sales service. If you have any problems with the 2-in-1 cat toy, please tell us and we will give you a satisfactory solution within 24 hours. \u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv id=\"product-details-jumplink\" class=\"a-section\"\u003e\n\u003cspan class=\"caretnext\"\u003e›\u003c\/span\u003e \u003ca id=\"seeMoreDetailsLink\" class=\"a-link-normal\" href=\"#productDetails\"\u003e See more product details \u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"a-section a-spacing-small a-spacing-top-small\"\u003e\n\u003ctable class=\"a-normal a-spacing-micro\"\u003e\n\u003ctbody\u003e\n\u003ctr class=\"a-spacing-small po-pet_toy_type\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003ePet toy type\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eTeaser Wand\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-theme\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eTheme\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eAnimals\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-breed_recommendation\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eBreed recommendation\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eLarge Breeds, Medium Breeds, All Breed Sizes\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-brand\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eBrand\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eGoldenSun\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr class=\"a-spacing-small po-recommended_uses_for_product\"\u003e\n\u003ctd class=\"a-span3\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eRecommended uses for product\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"a-span9\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003ePlaying\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"Sayby’s Sanctuary ","offers":[{"title":"Z-Replacement 12Pcs","offer_id":55890457919753,"sku":"B0D2VWCFQ5","price":9.45,"currency_code":"GBP","in_stock":false},{"title":"Perple","offer_id":55890457952521,"sku":"B0CGZCTKWY","price":31.5,"currency_code":"GBP","in_stock":true},{"title":"Black","offer_id":55890457985289,"sku":"B0CGZBHYG6","price":31.5,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0859\/0508\/0585\/files\/71I_zGQdUJL.jpg?v=1752590314","url":"https:\/\/www.saybys.com\/products\/goldensun-cat-toy-2-in-1-interactive-cat-toys-for-indoor-cats-automatic-cat-toy-8-holes-mice-whack-a-mole-moving-feather-usb-rechargeable-electronic-kitten-toys-for-all-breeds-black","provider":"Sayby’s Sanctuary ","version":"1.0","type":"link"}