@sontx/react-coverflow
Version:
Carousel of coverflow effect
1 lines • 147 kB
JavaScript
(function(t,c){'object'==typeof exports&&'object'==typeof module?module.exports=c(require('react-dom'),require('react')):'function'==typeof define&&define.amd?define(['react-dom','react'],c):'object'==typeof exports?exports['react-converflow']=c(require('react-dom'),require('react')):t['react-converflow']=c(t.ReactDOM,t.React)})(window,function(__WEBPACK_EXTERNAL_MODULE_react_dom__,__WEBPACK_EXTERNAL_MODULE_react__){return function(t){function c(l){if(e[l])return e[l].exports;var g=e[l]={i:l,l:!1,exports:{}};return t[l].call(g.exports,g,g.exports,c),g.l=!0,g.exports}var e={};return c.m=t,c.c=e,c.d=function(t,e,l){c.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:l})},c.r=function(t){'undefined'!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(t,'__esModule',{value:!0})},c.t=function(t,e){if(1&e&&(t=c(t)),8&e)return t;if(4&e&&'object'==typeof t&&t&&t.__esModule)return t;var l=Object.create(null);if(c.r(l),Object.defineProperty(l,'default',{enumerable:!0,value:t}),2&e&&'string'!=typeof t)for(var g in t)c.d(l,g,function(c){return t[c]}.bind(null,g));return l},c.n=function(t){var e=t&&t.__esModule?function(){return t['default']}:function(){return t};return c.d(e,'a',e),e},c.o=function(t,c){return Object.prototype.hasOwnProperty.call(t,c)},c.p='',c(c.s=0)}({"./node_modules/alloyfinger/alloy_finger.js":function(module,exports,__webpack_require__){eval('/* AlloyFinger v0.1.15\r\n * By dntzhang\r\n * Github: https://github.com/AlloyTeam/AlloyFinger\r\n */\r\n; (function () {\r\n function getLen(v) {\r\n return Math.sqrt(v.x * v.x + v.y * v.y);\r\n }\r\n\r\n function dot(v1, v2) {\r\n return v1.x * v2.x + v1.y * v2.y;\r\n }\r\n\r\n function getAngle(v1, v2) {\r\n var mr = getLen(v1) * getLen(v2);\r\n if (mr === 0) return 0;\r\n var r = dot(v1, v2) / mr;\r\n if (r > 1) r = 1;\r\n return Math.acos(r);\r\n }\r\n\r\n function cross(v1, v2) {\r\n return v1.x * v2.y - v2.x * v1.y;\r\n }\r\n\r\n function getRotateAngle(v1, v2) {\r\n var angle = getAngle(v1, v2);\r\n if (cross(v1, v2) > 0) {\r\n angle *= -1;\r\n }\r\n\r\n return angle * 180 / Math.PI;\r\n }\r\n\r\n var HandlerAdmin = function(el) {\r\n this.handlers = [];\r\n this.el = el;\r\n };\r\n\r\n HandlerAdmin.prototype.add = function(handler) {\r\n this.handlers.push(handler);\r\n }\r\n\r\n HandlerAdmin.prototype.del = function(handler) {\r\n if(!handler) this.handlers = [];\r\n\r\n for(var i=this.handlers.length; i>=0; i--) {\r\n if(this.handlers[i] === handler) {\r\n this.handlers.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n HandlerAdmin.prototype.dispatch = function() {\r\n for(var i=0,len=this.handlers.length; i<len; i++) {\r\n var handler = this.handlers[i];\r\n if(typeof handler === \'function\') handler.apply(this.el, arguments);\r\n }\r\n }\r\n\r\n function wrapFunc(el, handler) {\r\n var handlerAdmin = new HandlerAdmin(el);\r\n handlerAdmin.add(handler);\r\n\r\n return handlerAdmin;\r\n }\r\n\r\n var AlloyFinger = function (el, option) {\r\n\r\n this.element = typeof el == \'string\' ? document.querySelector(el) : el;\r\n\r\n this.start = this.start.bind(this);\r\n this.move = this.move.bind(this);\r\n this.end = this.end.bind(this);\r\n this.cancel = this.cancel.bind(this);\r\n this.element.addEventListener("touchstart", this.start, false);\r\n this.element.addEventListener("touchmove", this.move, false);\r\n this.element.addEventListener("touchend", this.end, false);\r\n this.element.addEventListener("touchcancel", this.cancel, false);\r\n\r\n this.preV = { x: null, y: null };\r\n this.pinchStartLen = null;\r\n this.zoom = 1;\r\n this.isDoubleTap = false;\r\n\r\n var noop = function () { };\r\n\r\n this.rotate = wrapFunc(this.element, option.rotate || noop);\r\n this.touchStart = wrapFunc(this.element, option.touchStart || noop);\r\n this.multipointStart = wrapFunc(this.element, option.multipointStart || noop);\r\n this.multipointEnd = wrapFunc(this.element, option.multipointEnd || noop);\r\n this.pinch = wrapFunc(this.element, option.pinch || noop);\r\n this.swipe = wrapFunc(this.element, option.swipe || noop);\r\n this.tap = wrapFunc(this.element, option.tap || noop);\r\n this.doubleTap = wrapFunc(this.element, option.doubleTap || noop);\r\n this.longTap = wrapFunc(this.element, option.longTap || noop);\r\n this.singleTap = wrapFunc(this.element, option.singleTap || noop);\r\n this.pressMove = wrapFunc(this.element, option.pressMove || noop);\r\n this.twoFingerPressMove = wrapFunc(this.element, option.twoFingerPressMove || noop);\r\n this.touchMove = wrapFunc(this.element, option.touchMove || noop);\r\n this.touchEnd = wrapFunc(this.element, option.touchEnd || noop);\r\n this.touchCancel = wrapFunc(this.element, option.touchCancel || noop);\r\n\r\n this._cancelAllHandler = this.cancelAll.bind(this);\r\n\r\n window.addEventListener(\'scroll\', this._cancelAllHandler);\r\n\r\n this.delta = null;\r\n this.last = null;\r\n this.now = null;\r\n this.tapTimeout = null;\r\n this.singleTapTimeout = null;\r\n this.longTapTimeout = null;\r\n this.swipeTimeout = null;\r\n this.x1 = this.x2 = this.y1 = this.y2 = null;\r\n this.preTapPosition = { x: null, y: null };\r\n };\r\n\r\n AlloyFinger.prototype = {\r\n start: function (evt) {\r\n if (!evt.touches) return;\r\n this.now = Date.now();\r\n this.x1 = evt.touches[0].pageX;\r\n this.y1 = evt.touches[0].pageY;\r\n this.delta = this.now - (this.last || this.now);\r\n this.touchStart.dispatch(evt, this.element);\r\n if (this.preTapPosition.x !== null) {\r\n this.isDoubleTap = (this.delta > 0 && this.delta <= 250 && Math.abs(this.preTapPosition.x - this.x1) < 30 && Math.abs(this.preTapPosition.y - this.y1) < 30);\r\n if (this.isDoubleTap) clearTimeout(this.singleTapTimeout);\r\n }\r\n this.preTapPosition.x = this.x1;\r\n this.preTapPosition.y = this.y1;\r\n this.last = this.now;\r\n var preV = this.preV,\r\n len = evt.touches.length;\r\n if (len > 1) {\r\n this._cancelLongTap();\r\n this._cancelSingleTap();\r\n var v = { x: evt.touches[1].pageX - this.x1, y: evt.touches[1].pageY - this.y1 };\r\n preV.x = v.x;\r\n preV.y = v.y;\r\n this.pinchStartLen = getLen(preV);\r\n this.multipointStart.dispatch(evt, this.element);\r\n }\r\n this._preventTap = false;\r\n this.longTapTimeout = setTimeout(function () {\r\n this.longTap.dispatch(evt, this.element);\r\n this._preventTap = true;\r\n }.bind(this), 750);\r\n },\r\n move: function (evt) {\r\n if (!evt.touches) return;\r\n var preV = this.preV,\r\n len = evt.touches.length,\r\n currentX = evt.touches[0].pageX,\r\n currentY = evt.touches[0].pageY;\r\n this.isDoubleTap = false;\r\n if (len > 1) {\r\n var sCurrentX = evt.touches[1].pageX,\r\n sCurrentY = evt.touches[1].pageY\r\n var v = { x: evt.touches[1].pageX - currentX, y: evt.touches[1].pageY - currentY };\r\n\r\n if (preV.x !== null) {\r\n if (this.pinchStartLen > 0) {\r\n evt.zoom = getLen(v) / this.pinchStartLen;\r\n this.pinch.dispatch(evt, this.element);\r\n }\r\n\r\n evt.angle = getRotateAngle(v, preV);\r\n this.rotate.dispatch(evt, this.element);\r\n }\r\n preV.x = v.x;\r\n preV.y = v.y;\r\n\r\n if (this.x2 !== null && this.sx2 !== null) {\r\n evt.deltaX = (currentX - this.x2 + sCurrentX - this.sx2) / 2;\r\n evt.deltaY = (currentY - this.y2 + sCurrentY - this.sy2) / 2;\r\n } else {\r\n evt.deltaX = 0;\r\n evt.deltaY = 0;\r\n }\r\n this.twoFingerPressMove.dispatch(evt, this.element);\r\n\r\n this.sx2 = sCurrentX;\r\n this.sy2 = sCurrentY;\r\n } else {\r\n if (this.x2 !== null) {\r\n evt.deltaX = currentX - this.x2;\r\n evt.deltaY = currentY - this.y2;\r\n\r\n //move\u4E8B\u4EF6\u4E2D\u6DFB\u52A0\u5BF9\u5F53\u524D\u89E6\u6478\u70B9\u5230\u521D\u59CB\u89E6\u6478\u70B9\u7684\u5224\u65AD\uFF0C\r\n //\u5982\u679C\u66FE\u7ECF\u5927\u4E8E\u8FC7\u67D0\u4E2A\u8DDD\u79BB(\u6BD4\u598210),\u5C31\u8BA4\u4E3A\u662F\u79FB\u52A8\u5230\u67D0\u4E2A\u5730\u65B9\u53C8\u79FB\u56DE\u6765\uFF0C\u5E94\u8BE5\u4E0D\u518D\u89E6\u53D1tap\u4E8B\u4EF6\u624D\u5BF9\u3002\r\n var movedX = Math.abs(this.x1 - this.x2),\r\n movedY = Math.abs(this.y1 - this.y2);\r\n\r\n if(movedX > 10 || movedY > 10){\r\n this._preventTap = true;\r\n }\r\n\r\n } else {\r\n evt.deltaX = 0;\r\n evt.deltaY = 0;\r\n }\r\n \r\n \r\n this.pressMove.dispatch(evt, this.element);\r\n }\r\n\r\n this.touchMove.dispatch(evt, this.element);\r\n\r\n this._cancelLongTap();\r\n this.x2 = currentX;\r\n this.y2 = currentY;\r\n \r\n if (len > 1) {\r\n evt.preventDefault();\r\n }\r\n },\r\n end: function (evt) {\r\n if (!evt.changedTouches) return;\r\n this._cancelLongTap();\r\n var self = this;\r\n if (evt.touches.length < 2) {\r\n this.multipointEnd.dispatch(evt, this.element);\r\n this.sx2 = this.sy2 = null;\r\n }\r\n\r\n //swipe\r\n if ((this.x2 && Math.abs(this.x1 - this.x2) > 30) ||\r\n (this.y2 && Math.abs(this.y1 - this.y2) > 30)) {\r\n evt.direction = this._swipeDirection(this.x1, this.x2, this.y1, this.y2);\r\n this.swipeTimeout = setTimeout(function () {\r\n self.swipe.dispatch(evt, self.element);\r\n\r\n }, 0)\r\n } else {\r\n this.tapTimeout = setTimeout(function () {\r\n if(!self._preventTap){\r\n self.tap.dispatch(evt, self.element);\r\n }\r\n // trigger double tap immediately\r\n if (self.isDoubleTap) {\r\n self.doubleTap.dispatch(evt, self.element);\r\n self.isDoubleTap = false;\r\n }\r\n }, 0)\r\n\r\n if (!self.isDoubleTap) {\r\n self.singleTapTimeout = setTimeout(function () {\r\n self.singleTap.dispatch(evt, self.element);\r\n }, 250);\r\n }\r\n }\r\n\r\n this.touchEnd.dispatch(evt, this.element);\r\n\r\n this.preV.x = 0;\r\n this.preV.y = 0;\r\n this.zoom = 1;\r\n this.pinchStartLen = null;\r\n this.x1 = this.x2 = this.y1 = this.y2 = null;\r\n },\r\n cancelAll: function () {\r\n this._preventTap = true\r\n clearTimeout(this.singleTapTimeout);\r\n clearTimeout(this.tapTimeout);\r\n clearTimeout(this.longTapTimeout);\r\n clearTimeout(this.swipeTimeout);\r\n },\r\n cancel: function (evt) {\r\n this.cancelAll()\r\n this.touchCancel.dispatch(evt, this.element);\r\n },\r\n _cancelLongTap: function () {\r\n clearTimeout(this.longTapTimeout);\r\n },\r\n _cancelSingleTap: function () {\r\n clearTimeout(this.singleTapTimeout);\r\n },\r\n _swipeDirection: function (x1, x2, y1, y2) {\r\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? \'Left\' : \'Right\') : (y1 - y2 > 0 ? \'Up\' : \'Down\')\r\n },\r\n\r\n on: function(evt, handler) {\r\n if(this[evt]) {\r\n this[evt].add(handler);\r\n }\r\n },\r\n\r\n off: function(evt, handler) {\r\n if(this[evt]) {\r\n this[evt].del(handler);\r\n }\r\n },\r\n\r\n destroy: function() {\r\n if(this.singleTapTimeout) clearTimeout(this.singleTapTimeout);\r\n if(this.tapTimeout) clearTimeout(this.tapTimeout);\r\n if(this.longTapTimeout) clearTimeout(this.longTapTimeout);\r\n if(this.swipeTimeout) clearTimeout(this.swipeTimeout);\r\n\r\n this.element.removeEventListener("touchstart", this.start);\r\n this.element.removeEventListener("touchmove", this.move);\r\n this.element.removeEventListener("touchend", this.end);\r\n this.element.removeEventListener("touchcancel", this.cancel);\r\n\r\n this.rotate.del();\r\n this.touchStart.del();\r\n this.multipointStart.del();\r\n this.multipointEnd.del();\r\n this.pinch.del();\r\n this.swipe.del();\r\n this.tap.del();\r\n this.doubleTap.del();\r\n this.longTap.del();\r\n this.singleTap.del();\r\n this.pressMove.del();\r\n this.twoFingerPressMove.del()\r\n this.touchMove.del();\r\n this.touchEnd.del();\r\n this.touchCancel.del();\r\n\r\n this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null;\r\n\r\n window.removeEventListener(\'scroll\', this._cancelAllHandler);\r\n return null;\r\n }\r\n };\r\n\r\n if (true) {\r\n module.exports = AlloyFinger;\r\n } else {}\r\n})();\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYWxsb3lmaW5nZXIvYWxsb3lfZmluZ2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3QtY29udmVyZmxvdy8uL25vZGVfbW9kdWxlcy9hbGxveWZpbmdlci9hbGxveV9maW5nZXIuanM/MTQwYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBBbGxveUZpbmdlciB2MC4xLjE1XHJcbiAqIEJ5IGRudHpoYW5nXHJcbiAqIEdpdGh1YjogaHR0cHM6Ly9naXRodWIuY29tL0FsbG95VGVhbS9BbGxveUZpbmdlclxyXG4gKi9cclxuOyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gZ2V0TGVuKHYpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHYueCAqIHYueCArIHYueSAqIHYueSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZG90KHYxLCB2Mikge1xyXG4gICAgICAgIHJldHVybiB2MS54ICogdjIueCArIHYxLnkgKiB2Mi55O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldEFuZ2xlKHYxLCB2Mikge1xyXG4gICAgICAgIHZhciBtciA9IGdldExlbih2MSkgKiBnZXRMZW4odjIpO1xyXG4gICAgICAgIGlmIChtciA9PT0gMCkgcmV0dXJuIDA7XHJcbiAgICAgICAgdmFyIHIgPSBkb3QodjEsIHYyKSAvIG1yO1xyXG4gICAgICAgIGlmIChyID4gMSkgciA9IDE7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguYWNvcyhyKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjcm9zcyh2MSwgdjIpIHtcclxuICAgICAgICByZXR1cm4gdjEueCAqIHYyLnkgLSB2Mi54ICogdjEueTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRSb3RhdGVBbmdsZSh2MSwgdjIpIHtcclxuICAgICAgICB2YXIgYW5nbGUgPSBnZXRBbmdsZSh2MSwgdjIpO1xyXG4gICAgICAgIGlmIChjcm9zcyh2MSwgdjIpID4gMCkge1xyXG4gICAgICAgICAgICBhbmdsZSAqPSAtMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhbmdsZSAqIDE4MCAvIE1hdGguUEk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIEhhbmRsZXJBZG1pbiA9IGZ1bmN0aW9uKGVsKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IFtdO1xyXG4gICAgICAgIHRoaXMuZWwgPSBlbDtcclxuICAgIH07XHJcblxyXG4gICAgSGFuZGxlckFkbWluLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihoYW5kbGVyKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIEhhbmRsZXJBZG1pbi5wcm90b3R5cGUuZGVsID0gZnVuY3Rpb24oaGFuZGxlcikge1xyXG4gICAgICAgIGlmKCFoYW5kbGVyKSB0aGlzLmhhbmRsZXJzID0gW107XHJcblxyXG4gICAgICAgIGZvcih2YXIgaT10aGlzLmhhbmRsZXJzLmxlbmd0aDsgaT49MDsgaS0tKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuaGFuZGxlcnNbaV0gPT09IGhhbmRsZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlcnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEhhbmRsZXJBZG1pbi5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBmb3IodmFyIGk9MCxsZW49dGhpcy5oYW5kbGVycy5sZW5ndGg7IGk8bGVuOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLmhhbmRsZXJzW2ldO1xyXG4gICAgICAgICAgICBpZih0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykgaGFuZGxlci5hcHBseSh0aGlzLmVsLCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB3cmFwRnVuYyhlbCwgaGFuZGxlcikge1xyXG4gICAgICAgIHZhciBoYW5kbGVyQWRtaW4gPSBuZXcgSGFuZGxlckFkbWluKGVsKTtcclxuICAgICAgICBoYW5kbGVyQWRtaW4uYWRkKGhhbmRsZXIpO1xyXG5cclxuICAgICAgICByZXR1cm4gaGFuZGxlckFkbWluO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBBbGxveUZpbmdlciA9IGZ1bmN0aW9uIChlbCwgb3B0aW9uKSB7XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHR5cGVvZiBlbCA9PSAnc3RyaW5nJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWwpIDogZWw7XHJcblxyXG4gICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLnN0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5tb3ZlID0gdGhpcy5tb3ZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5lbmQgPSB0aGlzLmVuZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsID0gdGhpcy5jYW5jZWwuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgdGhpcy5zdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMubW92ZSwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5lbmQsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoY2FuY2VsXCIsIHRoaXMuY2FuY2VsLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlViA9IHsgeDogbnVsbCwgeTogbnVsbCB9O1xyXG4gICAgICAgIHRoaXMucGluY2hTdGFydExlbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy56b29tID0gMTtcclxuICAgICAgICB0aGlzLmlzRG91YmxlVGFwID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHZhciBub29wID0gZnVuY3Rpb24gKCkgeyB9O1xyXG5cclxuICAgICAgICB0aGlzLnJvdGF0ZSA9IHdyYXBGdW5jKHRoaXMuZWxlbWVudCwgb3B0aW9uLnJvdGF0ZSB8fCBub29wKTtcclxuICAgICAgICB0aGlzLnRvdWNoU3RhcnQgPSB3cmFwRnVuYyh0aGlzLmVsZW1lbnQsIG9wdGlvbi50b3VjaFN0YXJ0IHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMubXVsdGlwb2ludFN0YXJ0ID0gd3JhcEZ1bmModGhpcy5lbGVtZW50LCBvcHRpb24ubXVsdGlwb2ludFN0YXJ0IHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMubXVsdGlwb2ludEVuZCA9IHdyYXBGdW5jKHRoaXMuZWxlbWVudCwgb3B0aW9uLm11bHRpcG9pbnRFbmQgfHwgbm9vcCk7XHJcbiAgICAgICAgdGhpcy5waW5jaCA9IHdyYXBGdW5jKHRoaXMuZWxlbWVudCwgb3B0aW9uLnBpbmNoIHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMuc3dpcGUgPSB3cmFwRnVuYyh0aGlzLmVsZW1lbnQsIG9wdGlvbi5zd2lwZSB8fCBub29wKTtcclxuICAgICAgICB0aGlzLnRhcCA9IHdyYXBGdW5jKHRoaXMuZWxlbWVudCwgb3B0aW9uLnRhcCB8fCBub29wKTtcclxuICAgICAgICB0aGlzLmRvdWJsZVRhcCA9IHdyYXBGdW5jKHRoaXMuZWxlbWVudCwgb3B0aW9uLmRvdWJsZVRhcCB8fCBub29wKTtcclxuICAgICAgICB0aGlzLmxvbmdUYXAgPSB3cmFwRnVuYyh0aGlzLmVsZW1lbnQsIG9wdGlvbi5sb25nVGFwIHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMuc2luZ2xlVGFwID0gd3JhcEZ1bmModGhpcy5lbGVtZW50LCBvcHRpb24uc2luZ2xlVGFwIHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMucHJlc3NNb3ZlID0gd3JhcEZ1bmModGhpcy5lbGVtZW50LCBvcHRpb24ucHJlc3NNb3ZlIHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMudHdvRmluZ2VyUHJlc3NNb3ZlID0gd3JhcEZ1bmModGhpcy5lbGVtZW50LCBvcHRpb24udHdvRmluZ2VyUHJlc3NNb3ZlIHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMudG91Y2hNb3ZlID0gd3JhcEZ1bmModGhpcy5lbGVtZW50LCBvcHRpb24udG91Y2hNb3ZlIHx8IG5vb3ApO1xyXG4gICAgICAgIHRoaXMudG91Y2hFbmQgPSB3cmFwRnVuYyh0aGlzLmVsZW1lbnQsIG9wdGlvbi50b3VjaEVuZCB8fCBub29wKTtcclxuICAgICAgICB0aGlzLnRvdWNoQ2FuY2VsID0gd3JhcEZ1bmModGhpcy5lbGVtZW50LCBvcHRpb24udG91Y2hDYW5jZWwgfHwgbm9vcCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NhbmNlbEFsbEhhbmRsZXIgPSB0aGlzLmNhbmNlbEFsbC5iaW5kKHRoaXMpO1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fY2FuY2VsQWxsSGFuZGxlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZGVsdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMubGFzdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ub3cgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudGFwVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVUYXBUaW1lb3V0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmxvbmdUYXBUaW1lb3V0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN3aXBlVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy54MSA9IHRoaXMueDIgPSB0aGlzLnkxID0gdGhpcy55MiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5wcmVUYXBQb3NpdGlvbiA9IHsgeDogbnVsbCwgeTogbnVsbCB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBBbGxveUZpbmdlci5wcm90b3R5cGUgPSB7XHJcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICAgICAgaWYgKCFldnQudG91Y2hlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLm5vdyA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIHRoaXMueDEgPSBldnQudG91Y2hlc1swXS5wYWdlWDtcclxuICAgICAgICAgICAgdGhpcy55MSA9IGV2dC50b3VjaGVzWzBdLnBhZ2VZO1xyXG4gICAgICAgICAgICB0aGlzLmRlbHRhID0gdGhpcy5ub3cgLSAodGhpcy5sYXN0IHx8IHRoaXMubm93KTtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFN0YXJ0LmRpc3BhdGNoKGV2dCwgdGhpcy5lbGVtZW50KTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJlVGFwUG9zaXRpb24ueCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RvdWJsZVRhcCA9ICh0aGlzLmRlbHRhID4gMCAmJiB0aGlzLmRlbHRhIDw9IDI1MCAmJiBNYXRoLmFicyh0aGlzLnByZVRhcFBvc2l0aW9uLnggLSB0aGlzLngxKSA8IDMwICYmIE1hdGguYWJzKHRoaXMucHJlVGFwUG9zaXRpb24ueSAtIHRoaXMueTEpIDwgMzApO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEb3VibGVUYXApIGNsZWFyVGltZW91dCh0aGlzLnNpbmdsZVRhcFRpbWVvdXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucHJlVGFwUG9zaXRpb24ueCA9IHRoaXMueDE7XHJcbiAgICAgICAgICAgIHRoaXMucHJlVGFwUG9zaXRpb24ueSA9IHRoaXMueTE7XHJcbiAgICAgICAgICAgIHRoaXMubGFzdCA9IHRoaXMubm93O1xyXG4gICAgICAgICAgICB2YXIgcHJlViA9IHRoaXMucHJlVixcclxuICAgICAgICAgICAgICAgIGxlbiA9IGV2dC50b3VjaGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NhbmNlbExvbmdUYXAoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NhbmNlbFNpbmdsZVRhcCgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHYgPSB7IHg6IGV2dC50b3VjaGVzWzFdLnBhZ2VYIC0gdGhpcy54MSwgeTogZXZ0LnRvdWNoZXNbMV0ucGFnZVkgLSB0aGlzLnkxIH07XHJcbiAgICAgICAgICAgICAgICBwcmVWLnggPSB2Lng7XHJcbiAgICAgICAgICAgICAgICBwcmVWLnkgPSB2Lnk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBpbmNoU3RhcnRMZW4gPSBnZXRMZW4ocHJlVik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpcG9pbnRTdGFydC5kaXNwYXRjaChldnQsIHRoaXMuZWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fcHJldmVudFRhcCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvbmdUYXBUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvbmdUYXAuZGlzcGF0Y2goZXZ0LCB0aGlzLmVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldmVudFRhcCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgNzUwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdmU6IGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICAgICAgaWYgKCFldnQudG91Y2hlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICB2YXIgcHJlViA9IHRoaXMucHJlVixcclxuICAgICAgICAgICAgICAgIGxlbiA9IGV2dC50b3VjaGVzLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRYID0gZXZ0LnRvdWNoZXNbMF0ucGFnZVgsXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50WSA9IGV2dC50b3VjaGVzWzBdLnBhZ2VZO1xyXG4gICAgICAgICAgICB0aGlzLmlzRG91YmxlVGFwID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc0N1cnJlbnRYID0gZXZ0LnRvdWNoZXNbMV0ucGFnZVgsXHJcbiAgICAgICAgICAgICAgICAgICAgc0N1cnJlbnRZID0gZXZ0LnRvdWNoZXNbMV0ucGFnZVlcclxuICAgICAgICAgICAgICAgIHZhciB2ID0geyB4OiBldnQudG91Y2hlc1sxXS5wYWdlWCAtIGN1cnJlbnRYLCB5OiBldnQudG91Y2hlc1sxXS5wYWdlWSAtIGN1cnJlbnRZIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHByZVYueCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBpbmNoU3RhcnRMZW4gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2dC56b29tID0gZ2V0TGVuKHYpIC8gdGhpcy5waW5jaFN0YXJ0TGVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpbmNoLmRpc3BhdGNoKGV2dCwgdGhpcy5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGV2dC5hbmdsZSA9IGdldFJvdGF0ZUFuZ2xlKHYsIHByZVYpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm90YXRlLmRpc3BhdGNoKGV2dCwgdGhpcy5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByZVYueCA9IHYueDtcclxuICAgICAgICAgICAgICAgIHByZVYueSA9IHYueTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy54MiAhPT0gbnVsbCAmJiB0aGlzLnN4MiAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV2dC5kZWx0YVggPSAoY3VycmVudFggLSB0aGlzLngyICsgc0N1cnJlbnRYIC0gdGhpcy5zeDIpIC8gMjtcclxuICAgICAgICAgICAgICAgICAgICBldnQuZGVsdGFZID0gKGN1cnJlbnRZIC0gdGhpcy55MiArIHNDdXJyZW50WSAtIHRoaXMuc3kyKSAvIDI7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGV2dC5kZWx0YVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2dC5kZWx0YVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy50d29GaW5nZXJQcmVzc01vdmUuZGlzcGF0Y2goZXZ0LCB0aGlzLmVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3gyID0gc0N1cnJlbnRYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zeTIgPSBzQ3VycmVudFk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy54MiAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV2dC5kZWx0YVggPSBjdXJyZW50WCAtIHRoaXMueDI7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZ0LmRlbHRhWSA9IGN1cnJlbnRZIC0gdGhpcy55MjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy9tb3Zl5LqL5Lu25Lit5re75Yqg5a+55b2T5YmN6Kem5pG454K55Yiw5Yid5aeL6Kem5pG454K555qE5Yik5pat77yMXHJcbiAgICAgICAgICAgICAgICAgICAgLy/lpoLmnpzmm77nu4/lpKfkuo7ov4fmn5DkuKrot53nprso5q+U5aaCMTApLOWwseiupOS4uuaYr+enu+WKqOWIsOafkOS4quWcsOaWueWPiOenu+Wbnuadpe+8jOW6lOivpeS4jeWGjeinpuWPkXRhcOS6i+S7tuaJjeWvueOAglxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBtb3ZlZFggPSBNYXRoLmFicyh0aGlzLngxIC0gdGhpcy54MiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVkWSA9IE1hdGguYWJzKHRoaXMueTEgLSB0aGlzLnkyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYobW92ZWRYID4gMTAgfHwgbW92ZWRZID4gMTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcmV2ZW50VGFwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBldnQuZGVsdGFYID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBldnQuZGVsdGFZID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXNzTW92ZS5kaXNwYXRjaChldnQsIHRoaXMuZWxlbWVudCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hNb3ZlLmRpc3BhdGNoKGV2dCwgdGhpcy5lbGVtZW50KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NhbmNlbExvbmdUYXAoKTtcclxuICAgICAgICAgICAgdGhpcy54MiA9IGN1cnJlbnRYO1xyXG4gICAgICAgICAgICB0aGlzLnkyID0gY3VycmVudFk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAobGVuID4gMSkge1xyXG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVuZDogZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICAgICAgICBpZiAoIWV2dC5jaGFuZ2VkVG91Y2hlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLl9jYW5jZWxMb25nVGFwKCk7XHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgaWYgKGV2dC50b3VjaGVzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwb2ludEVuZC5kaXNwYXRjaChldnQsIHRoaXMuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN4MiA9IHRoaXMuc3kyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9zd2lwZVxyXG4gICAgICAgICAgICBpZiAoKHRoaXMueDIgJiYgTWF0aC5hYnModGhpcy54MSAtIHRoaXMueDIpID4gMzApIHx8XHJcbiAgICAgICAgICAgICAgICAodGhpcy55MiAmJiBNYXRoLmFicyh0aGlzLnkxIC0gdGhpcy55MikgPiAzMCkpIHtcclxuICAgICAgICAgICAgICAgIGV2dC5kaXJlY3Rpb24gPSB0aGlzLl9zd2lwZURpcmVjdGlvbih0aGlzLngxLCB0aGlzLngyLCB0aGlzLnkxLCB0aGlzLnkyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zd2lwZS5kaXNwYXRjaChldnQsIHNlbGYuZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSwgMClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFwVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKCFzZWxmLl9wcmV2ZW50VGFwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXAuZGlzcGF0Y2goZXZ0LCBzZWxmLmVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGRvdWJsZSB0YXAgaW1tZWRpYXRlbHlcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5pc0RvdWJsZVRhcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvdWJsZVRhcC5kaXNwYXRjaChldnQsIHNlbGYuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXNEb3VibGVUYXAgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAwKVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICghc2VsZi5pc0RvdWJsZVRhcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2luZ2xlVGFwVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNpbmdsZVRhcC5kaXNwYXRjaChldnQsIHNlbGYuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjUwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy50b3VjaEVuZC5kaXNwYXRjaChldnQsIHRoaXMuZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnByZVYueCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMucHJlVi55ID0gMDtcclxuICAgICAgICAgICAgdGhpcy56b29tID0gMTtcclxuICAgICAgICAgICAgdGhpcy5waW5jaFN0YXJ0TGVuID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy54MSA9IHRoaXMueDIgPSB0aGlzLnkxID0gdGhpcy55MiA9IG51bGw7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYW5jZWxBbGw6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJldmVudFRhcCA9IHRydWVcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2luZ2xlVGFwVGltZW91dCk7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcFRpbWVvdXQpO1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5sb25nVGFwVGltZW91dCk7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnN3aXBlVGltZW91dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uIChldnQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWxBbGwoKVxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoQ2FuY2VsLmRpc3BhdGNoKGV2dCwgdGhpcy5lbGVtZW50KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIF9jYW5jZWxMb25nVGFwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxvbmdUYXBUaW1lb3V0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIF9jYW5jZWxTaW5nbGVUYXA6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2luZ2xlVGFwVGltZW91dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfc3dpcGVEaXJlY3Rpb246IGZ1bmN0aW9uICh4MSwgeDIsIHkxLCB5Mikge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoeDEgLSB4MikgPj0gTWF0aC5hYnMoeTEgLSB5MikgPyAoeDEgLSB4MiA+IDAgPyAnTGVmdCcgOiAnUmlnaHQnKSA6ICh5MSAtIHkyID4gMCA/ICdVcCcgOiAnRG93bicpXHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgb246IGZ1bmN0aW9uKGV2dCwgaGFuZGxlcikge1xyXG4gICAgICAgICAgICBpZih0aGlzW2V2dF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXNbZXZ0XS5hZGQoaGFuZGxlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBvZmY6IGZ1bmN0aW9uKGV2dCwgaGFuZGxlcikge1xyXG4gICAgICAgICAgICBpZih0aGlzW2V2dF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXNbZXZ0XS5kZWwoaGFuZGxlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5zaW5nbGVUYXBUaW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy5zaW5nbGVUYXBUaW1lb3V0KTtcclxuICAgICAgICAgICAgaWYodGhpcy50YXBUaW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy50YXBUaW1lb3V0KTtcclxuICAgICAgICAgICAgaWYodGhpcy5sb25nVGFwVGltZW91dCkgY2xlYXJUaW1lb3V0KHRoaXMubG9uZ1RhcFRpbWVvdXQpO1xyXG4gICAgICAgICAgICBpZih0aGlzLnN3aXBlVGltZW91dCkgY2xlYXJUaW1lb3V0KHRoaXMuc3dpcGVUaW1lb3V0KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCB0aGlzLnN0YXJ0KTtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdGhpcy5tb3ZlKTtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCB0aGlzLmVuZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hjYW5jZWxcIiwgdGhpcy5jYW5jZWwpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5yb3RhdGUuZGVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hTdGFydC5kZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5tdWx0aXBvaW50U3RhcnQuZGVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVsdGlwb2ludEVuZC5kZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5waW5jaC5kZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5zd2lwZS5kZWwoKTtcclxuICAgICAgICAgICAgdGhpcy50YXAuZGVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZG91YmxlVGFwLmRlbCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvbmdUYXAuZGVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlVGFwLmRlbCgpO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNzTW92ZS5kZWwoKTtcclxuICAgICAgICAgICAgdGhpcy50d29GaW5nZXJQcmVzc01vdmUuZGVsKClcclxuICAgICAgICAgICAgdGhpcy50b3VjaE1vdmUuZGVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hFbmQuZGVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hDYW5jZWwuZGVsKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnByZVYgPSB0aGlzLnBpbmNoU3RhcnRMZW4gPSB0aGlzLnpvb20gPSB0aGlzLmlzRG91YmxlVGFwID0gdGhpcy5kZWx0YSA9IHRoaXMubGFzdCA9IHRoaXMubm93ID0gdGhpcy50YXBUaW1lb3V0ID0gdGhpcy5zaW5nbGVUYXBUaW1lb3V0ID0gdGhpcy5sb25nVGFwVGltZW91dCA9IHRoaXMuc3dpcGVUaW1lb3V0ID0gdGhpcy54MSA9IHRoaXMueDIgPSB0aGlzLnkxID0gdGhpcy55MiA9IHRoaXMucHJlVGFwUG9zaXRpb24gPSB0aGlzLnJvdGF0ZSA9IHRoaXMudG91Y2hTdGFydCA9IHRoaXMubXVsdGlwb2ludFN0YXJ0ID0gdGhpcy5tdWx0aXBvaW50RW5kID0gdGhpcy5waW5jaCA9IHRoaXMuc3dpcGUgPSB0aGlzLnRhcCA9IHRoaXMuZG91YmxlVGFwID0gdGhpcy5sb25nVGFwID0gdGhpcy5zaW5nbGVUYXAgPSB0aGlzLnByZXNzTW92ZSA9IHRoaXMudG91Y2hNb3ZlID0gdGhpcy50b3VjaEVuZCA9IHRoaXMudG91Y2hDYW5jZWwgPSB0aGlzLnR3b0ZpbmdlclByZXNzTW92ZSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fY2FuY2VsQWxsSGFuZGxlcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gQWxsb3lGaW5nZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdpbmRvdy5BbGxveUZpbmdlciA9IEFsbG95RmluZ2VyO1xyXG4gICAgfVxyXG59KSgpO1xyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFFQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/alloyfinger/alloy_finger.js\n')},"./node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[name]__[local]__[hash:base64:5]!./node_modules/sass-loader/lib/loader.js?!./src/stylesheets/coverflow.scss":function(module,exports,__webpack_require__){eval('exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false);\n// imports\n\n\n// module\nexports.push([module.i, ".coverflow__container__2RGwF {\\n position: relative;\\n background: rgba(0, 0, 0, 0.1);\\n margin: 0 auto;\\n padding: 0;\\n overflow: hidden; }\\n\\n.coverflow__coverflow__262-9 {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n margin: 0; }\\n\\n.coverflow__stage__15AAc {\\n height: 100%;\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n margin: 0;\\n transform-style: preserve-3d;\\n perspective: 500px; }\\n\\n.coverflow__figure__zEOhf {\\n display: block;\\n position: relative;\\n margin: 0;\\n padding: 0;\\n flex: 0 0 auto;\\n cursor: pointer;\\n transition: transform 600ms ease;\\n backface-visibility: hidden;\\n z-index: 9;\\n align-self: center;\\n box-shadow: 0 50px 70px rgba(0, 0, 0, 0.5); }\\n\\n.coverflow__cover__3uJrO {\\n display: block;\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); }\\n\\n.coverflow__overlay__3HDs3 {\\n position: absolute; }\\n\\n.coverflow__preloader__2Ivp- {\\n display: hidden; }\\n\\n.coverflow__text__TAisD {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n text-align: center;\\n font-size: .9em;\\n color: white;\\n padding: 5px;\\n overflow: hidden;\\n background: rgba(0, 0, 0, 0.6); }\\n\\n.coverflow__actions__MMUtW {\\n position: absolute;\\n bottom: 30px;\\n left: 0;\\n right: 0;\\n display: flex;\\n justify-content: center; }\\n .coverflow__actions__MMUtW .coverflow__button__2hjX4 {\\n border: 1px solid #616161;\\n border-radius: 2px;\\n min-width: 120px;\\n padding: 5px;\\n margin: 2px;\\n background: #616161;\\n color: rgba(255, 255, 255, 0.9); }\\n .coverflow__actions__MMUtW .coverflow__button__2hjX4:hover {\\n background: black;\\n color: white; }\\n .coverflow__actions__MMUtW .coverflow__button__2hjX4:focus {\\n outline: none; }\\n\\n@keyframes coverflow__prevent__x4djo {\\n 0% {\\n pointer-events: none; }\\n 100% {\\n pointer-events: auto; } }\\n", ""]);\n\n// exports\nexports.locals = {\n\t"container": "coverflow__container__2RGwF",\n\t"coverflow": "coverflow__coverflow__262-9",\n\t"stage": "coverflow__stage__15AAc",\n\t"figure": "coverflow__figure__zEOhf",\n\t"cover": "coverflow__cover__3uJrO",\n\t"overlay": "coverflow__overlay__3HDs3",\n\t"preloader": "coverflow__preloader__2Ivp-",\n\t"text": "coverflow__text__TAisD",\n\t"actions": "coverflow__actions__MMUtW",\n\t"button": "coverflow__button__2hjX4",\n\t"prevent": "coverflow__prevent__x4djo"\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9tb2R1bGVzJmltcG9ydExvYWRlcnM9MSZsb2NhbElkZW50TmFtZT1bbmFtZV1fX1tsb2NhbF1fX1toYXNoOmJhc2U2NDo1XSEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzPyEuL3NyYy9zdHlsZXNoZWV0cy9jb3ZlcmZsb3cuc2Nzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0LWNvbnZlcmZsb3cvLi9zcmMvc3R5bGVzaGVldHMvY292ZXJmbG93LnNjc3M/ZDNiYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5jb3ZlcmZsb3dfX2NvbnRhaW5lcl9fMlJHd0Yge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgbWFyZ2luOiAwIGF1dG87XFxuICBwYWRkaW5nOiAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxcblxcbi5jb3ZlcmZsb3dfX2NvdmVyZmxvd19fMjYyLTkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBtYXJnaW46IDA7IH1cXG5cXG4uY292ZXJmbG93X19zdGFnZV9fMTVBQWMge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBtYXJnaW46IDA7XFxuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xcbiAgcGVyc3BlY3RpdmU6IDUwMHB4OyB9XFxuXFxuLmNvdmVyZmxvd19fZmlndXJlX196RU9oZiB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmbGV4OiAwIDAgYXV0bztcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA2MDBtcyBlYXNlO1xcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgei1pbmRleDogOTtcXG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcXG4gIGJveC1zaGFkb3c6IDAgNTBweCA3MHB4IHJnYmEoMCwgMCwgMCwgMC41KTsgfVxcblxcbi5jb3ZlcmZsb3dfX2NvdmVyX18zdUpyTyB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgb2JqZWN0LWZpdDogY292ZXI7XFxuICBib3gtc2hhZG93OiAycHggMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cXG5cXG4uY292ZXJmbG93X19vdmVybGF5X18zSERzMyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cXG5cXG4uY292ZXJmbG93X19wcmVsb2FkZXJfXzJJdnAtIHtcXG4gIGRpc3BsYXk6IGhpZGRlbjsgfVxcblxcbi5jb3ZlcmZsb3dfX3RleHRfX1RBaXNEIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogLjllbTtcXG4gIGNvbG9yOiB3aGl0ZTtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7IH1cXG5cXG4uY292ZXJmbG93X19hY3Rpb25zX19NTVV0VyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDMwcHg7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cXG4gIC5jb3ZlcmZsb3dfX2FjdGlvbnNfX01NVXRXIC5jb3ZlcmZsb3dfX2J1dHRvbl9fMmhqWDQge1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNjE2MTYxO1xcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XFxuICAgIG1pbi13aWR0aDogMTIwcHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgbWFyZ2luOiAycHg7XFxuICAgIGJhY2tncm91bmQ6ICM2MTYxNjE7XFxuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7IH1cXG4gICAgLmNvdmVyZmxvd19fYWN0aW9uc19fTU1VdFcgLmNvdmVyZmxvd19fYnV0dG9uX18yaGpYNDpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogYmxhY2s7XFxuICAgICAgY29sb3I6IHdoaXRlOyB9XFxuICAgIC5jb3ZlcmZsb3dfX2FjdGlvbnNfX01NVXRXIC5jb3ZlcmZsb3dfX2J1dHRvbl9fMmhqWDQ6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IG5vbmU7IH1cXG5cXG5Aa2V5ZnJhbWVzIGNvdmVyZmxvd19fcHJldmVudF9feDRkam8ge1xcbiAgMCUge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgMTAwJSB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOyB9IH1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5leHBvcnRzLmxvY2FscyA9IHtcblx0XCJjb250YWluZXJcIjogXCJjb3ZlcmZsb3dfX2NvbnRhaW5lcl9fMlJHd0ZcIixcblx0XCJjb3ZlcmZsb3dcIjogXCJjb3ZlcmZsb3dfX2NvdmVyZmxvd19fMjYyLTlcIixcblx0XCJzdGFnZVwiOiBcImNvdmVyZmxvd19fc3RhZ2VfXzE1QUFjXCIsXG5cdFwiZmlndXJlXCI6IFwiY292ZXJmbG93X19maWd1cmVfX3pFT2hmXCIsXG5cdFwiY292ZXJcIjogXCJjb3ZlcmZsb3dfX2NvdmVyX18zdUpyT1wiLFxuXHRcIm92ZXJsYXlcIjogXCJjb3ZlcmZsb3dfX292ZXJsYXlfXzNIRHMzXCIsXG5cdFwicHJlbG9hZGVyXCI6IFwiY292ZXJmbG93X19wcmVsb2FkZXJfXzJJdnAtXCIsXG5cdFwidGV4dFwiOiBcImNvdmVyZmxvd19fdGV4dF9fVEFpc0RcIixcblx0XCJhY3Rpb25zXCI6IFwiY292ZXJmbG93X19hY3Rpb25zX19NTVV0V1wiLFxuXHRcImJ1dHRvblwiOiBcImNvdmVyZmxvd19fYnV0dG9uX18yaGpYNFwiLFxuXHRcInByZXZlbnRcIjogXCJjb3ZlcmZsb3dfX3ByZXZlbnRfX3g0ZGpvXCJcbn07Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[name]__[local]__[hash:base64:5]!./node_modules/sass-loader/lib/loader.js?!./src/stylesheets/coverflow.scss\n')},"./node_modules/css-loader/lib/css-base.js":function(module,exports){eval('/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn "@media " + item[2] + "{" + content + "}";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join("");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === "string")\n\t\t\tmodules = [[null, modules, ""]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === "number")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = "(" + item[2] + ") and (" + mediaQuery + ")";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || \'\';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === \'function\') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn \'/*# sourceURL=\' + cssMapping.sourceRoot + source + \' */\'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join(\'\\n\');\n\t}\n\n\treturn [content].join(\'\\n\');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = \'sourceMappingURL=data:application/json;charset=utf-8;base64,\' + base64;\n\n\treturn \'/*# \' + data + \' */\';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdC1jb252ZXJmbG93Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzPzIzNTAiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN